Commit Graph

48 Commits

Author SHA1 Message Date
Raymond Hill 22022f636f
Modularize codebase with export/import
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/1664

The changes are enough to fulfill the related issue.

A new platform has been added in order to allow for building
a NodeJS package. From the root of the project:

    ./tools/make-nodejs

This will create new uBlock0.nodejs directory in the
./dist/build directory, which is a valid NodeJS package.

From the root of the package, you can try:

    node test

This will instantiate a static network filtering engine,
populated by easylist and easyprivacy, which can be used
to match network requests by filling the appropriate
filtering context object.

The test.js file contains code which is typical example
of usage of the package.

Limitations: the NodeJS package can't execute the WASM
versions of the code since the WASM module requires the
use of fetch(), which is not available in NodeJS.

This is a first pass at modularizing the codebase, and
while at it a number of opportunistic small rewrites
have also been made.

This commit requires the minimum supported version for
Chromium and Firefox be raised to 61 and 60 respectively.
2021-07-27 17:26:04 -04:00
Raymond Hill a4aced69dc
Reorganize platform directory to avoid Chromium-centric appearance
Though Firefox shares a lot of WebExtensions code with Chromium,
these platforms have their own specific code paths, for various
reasons.

The reorganization here makes it clear that Chromium platform is
just one flavor of WebExtensions, and as such all Chromium-specific
code paths should no longer be automatically pulled by other
platforms where these code paths are not needed.

Given that the filepath of many files changed, here is the
parent commit to quickly browse back to the previous directory
layout:

ec7db30b2f
2021-07-16 10:06:58 -04:00
Raymond Hill 5c68867b92
Deprecate pseudo user styles code
The pseudo user styles code served only browsers based
on Chromium 65 and earlier -- Chromium 66 supports
native user styles and was first released more than two
years ago.

In Chromium-based browsers, the pseudo user styles code
is being unconditionally injected in every page/frame
just in case the browser is version 65 or earlier.

Removing pseudo user styles reduce uBO's main content
script in Chromium-based browsers by more than 20K.

Related thread:
- https://github.com/NanoAdblocker/NanoCore/issues/348#issuecomment-653646507
2020-07-22 10:21:16 -04:00
Raymond Hill eec53c0154
Work toward modernizing code base: promisification
Swathes of code have been converted to use
Promises/async/await. More left to do.

Related commits:
- 915687fddb
- 55cc0c6997
- e27328f931
2019-09-16 09:45:17 -04:00
Raymond Hill 152cea2dfe
Refactor management of injectable resources
This is a first step, the ultimate goal is to remove
the need for resources.txt, or at least to reduce to
only hotfixes or for trivial resources targeting very
specific websites.

Most resources will become immutable, i.e. they will
be part of uBO's code base. Advantages include easier
code maintenance (jshint, syntax highlight), and to
make scriptlets more easy to code review by external
parties (for example extension store reviewers).

TODO:

- More scriptlets need to be imported before next
  release.
- Need to make legacy versions of uBO use a legacy
  version of resources.txt, as all the now obsolete
  scriptlets will have to be removed once uBO's
  next release become widespread.
- Possibly need to add code to load binary
  resources so that they can be injected as
  data: URI. So far it's unclear whether this is
  really needed. For example, this would be needed
  if a xmlhttprequest is redirected to an image
  resource.
2019-07-03 09:47:56 -04:00
Raymond Hill a038c8658f
Attempt to fix build script for Firefox 2018-12-23 18:19:16 -05:00
Raymond Hill d528f3811a
Use version number in the filename of packages 2018-12-23 10:16:08 -05:00
Raymond Hill 6dd6dc5f1d
fix https://www.reddit.com/r/uBlockOrigin/comments/9gwrna/when_you_right_click_and_go_to_options_it_keeps/ 2018-09-18 20:14:09 -04:00
Raymond Hill 89fd76ac39
use image data instead of paths for browser icons
When using paths, platform implementations of setIcon typically
will fetch the resource then convert to image data internally.
It is preferable for uBO to do this conversion itself as it can
be done only once at launch time.

With chromium-based browsers, using image data eliminate the
incessant network traffic to fetch browser icons as reported
in the extension's dev tool, meaning a good chunk of overhead
is eliminated.

Also, use optimal icon sizes, as of now both chromium and firefox
prefers 16px instead of 19px, and 32px instead of 38px.
2018-05-07 19:03:50 -04:00
Raymond Hill 0bf2f27d87
rename "webext" target to more accurate "firefox" 2018-04-27 12:38:09 -04:00
Raymond Hill c9b14e201a
rename "webext" target to more accurate "firefox" 2018-04-27 12:37:33 -04:00
Raymond Hill 443010efdc
remove firefox/legacy platform, it now has its own branch: `firefox-legacy` 2018-04-27 08:40:53 -04:00
Raymond Hill 9baf17fa2a
patch firefox/legacy for changes in e5f2e9701d 2018-04-26 12:01:31 -04:00
Raymond Hill 06ea2fb858
fix Firefox/legacy build 2018-04-14 09:36:19 -04:00
gorhill 23487a643a
prepend vapi-usercss.js to contentscript.js in extension package 2017-10-24 12:40:58 -04:00
gorhill 6112a68faf
fix #2984 2017-10-21 13:43:46 -04:00
gorhill 4d1ed37556 Firefox WebExt readiness (#622) + support more webRequest types when available (websocket, font, csp_report) 2017-03-05 08:25:55 -05:00
gorhill 95ec573141 fix #2014 2016-09-24 14:36:08 -04:00
gorhill a7fe367eec refactor where appropriate to make use of ES6 Set/Map (#1070)
At the same time, the following issues were fixed:
- #1954: automatically lookup site-specific scriptlets
- https://github.com/uBlockOrigin/uAssets/issues/23
2016-09-12 10:22:25 -04:00
gorhill c274195b69 bring support for dev build in Chrome store 2016-08-04 08:24:11 -04:00
gorhill 8ee1f8812f fix #1661 as suggested 2016-06-09 12:32:00 -04:00
gorhill 909ef5303d prevent pushd/popd from polluting output 2016-04-03 18:06:19 -04:00
gorhill cad3c5f5cb update packaging scripts for https://github.com/uBlockOrigin/uAssets repo 2016-04-03 13:07:46 -04:00
Aaron Bieber 98b0967d69 allow scripts to run with bash in other locations 2016-01-31 12:17:04 -05:00
gorhill ee2a657f84 AMO review feedback: remove unecessary files from package 2015-12-26 15:53:56 -05:00
gorhill d9e56d1396 this completes the fix to #602 2015-11-24 20:53:02 -05:00
gorhill 02be0e3c39 adding whitespaces for better alignment with uMatrix script 2015-08-27 13:52:05 -04:00
gorhill 9fa05aa7c4 changed "make" scripts for #602
All the assets which are not selected by default out-of-the-box will
be converted into an empty file. This is a first step, the final step
will be to removed completely the files from the package once everybody
is using v1.1.0.0+.
2015-08-17 09:29:11 -04:00
gorhill 29b695d813 changes for a beta channel on AMO 2015-08-12 16:31:19 -04:00
gorhill 34485a0465 code review 2015-06-17 14:06:59 -04:00
gorhill b9e07a16e3 this fixes https://github.com/chrisaljoudi/uBlock/issues/1219 for Firefox 2015-04-09 07:15:14 -04:00
gorhill b83e0b46d5 move platform-specific images to their respective platform 2015-03-15 08:17:38 -04:00
AlexVallat 31188c6330 Tidying .xul location, update linux script to match windows one 2015-03-03 07:58:35 +00:00
gorhill 9a6c87d0dd Revert "µBlock logo refinement and browser icon organization"
This reverts commit e43931f075.
2015-02-06 07:56:59 -05:00
Chris e43931f075 µBlock logo refinement and browser icon organization
This includes a new, refined µBlock logo, rendered more coherently
and consistently for different sizes and display pixel densities.
The Safari build script has been modified to bundle appropriate
resolutions. The Firefox build script was slightly changed to
adhere to the naming convention. The Chrome manifest was
modified/ammended slightly to take advantage of new renderings.
README's beginning has been modified to be nicer and more
minimal.
Other than the logo's slightly refined look and having better
resolution on different browsers and setups, this should have
no effect on the user experience or further development.
2015-02-06 04:24:25 -07:00
Chris b2ae524ed8 Fix cleanup in build script so rm won't complain during first build 2015-02-05 15:13:39 -07:00
Deathamns ed818c92fe Remove comment 2015-01-14 19:12:10 +01:00
Florian Walch 9e7909b62e Set up Travis releases. 2015-01-14 09:25:14 +01:00
gorhill 580d3a81db build package only if "all" arg specified 2015-01-13 09:28:53 -05:00
gorhill 7e6acb9200 fix script 2015-01-13 08:14:00 -05:00
gorhill da0a2cd206 create package 2015-01-13 07:55:45 -05:00
gorhill 929466b429 chmod u+x 2015-01-13 07:51:14 -05:00
Deathamns 4e271aebb3 Include LICENSE.txt into extension packages 2015-01-13 07:29:18 +01:00
Deathamns f74f07e092 Firefox: implement vAPI.tabs.injectScript 2015-01-13 07:29:12 +01:00
Deathamns 45137c2be9 Firefox: update manifest files when building 2015-01-13 07:29:06 +01:00
Deathamns e4329b7dfe Firefox: blocking and content scripts for e10s 2015-01-13 07:29:00 +01:00
Deathamns 3c76c61f61 Firefox: partial vAPI.tabs implementation 2015-01-13 07:28:57 +01:00
Deathamns 67f18d023c Initial Firefox port (base, messaging, locales) 2015-01-13 07:28:52 +01:00