Commit Graph

769 Commits (551febbb26166597284aca2d5032e7109906d74c)
 

Author SHA1 Message Date
gorhill b66683a581 avoid closures when processing messages 10 years ago
gorhill 184aec1409 code review 10 years ago
gorhill a0de897608 code review: jshint'ed 10 years ago
gorhill d50594e7eb this fixes #536 10 years ago
gorhill 529258de44 started work on #105, #475, and possibly #510 10 years ago
gorhill f4a853c611 this fixes one part of #498 10 years ago
Deathamns 14950c0c5f Code styling 10 years ago
Deathamns 847f86f947 Make vAPI.setIcon less Chromium specific 10 years ago
Deathamns c04c4ad4ab Chrome,Safari: fix typo and quotes 10 years ago
Deathamns 42d69aba2d Add license headers, plus some code styling 10 years ago
Deathamns 706a51c211 Firefox: blocking and content scripts for e10s 10 years ago
gorhill c752853031 lot of work related to dynamic filtering + new net requests logger 10 years ago
gorhill ed30222601 this fixes #455 10 years ago
gorhill 2a108917b5 another round of work re dynamic filtering 10 years ago
gorhill ce9acac0ae this fixes #418; also remove last chrome API reference from portable code 10 years ago
Raymond Hill 9515769fb5 extension restart is platform-dependent 10 years ago
Raymond Hill dccbbb3879 remove depending on vapi-appinfo.js 10 years ago
Raymond Hill c168d050f0 code review, fixes #383 10 years ago
Raymond Hill 6d5361cebc this fixes #380 10 years ago
Raymond Hill 97ca80d8bc use "platform" as suggested in #360 10 years ago
Raymond Hill ec6ad5ab80 use "platform" as suggested in #360 10 years ago
Raymond Hill e9accabf13 jshint 10 years ago
Deathamns 0f7ce05de2 Ports cleanup
- Remove duplicate platform specific (from src/) and other unnecessary
  files
- Fix and update vapi-*.js files for Safari
- Add tools/make-safari.sh
- Move js/vapi-appinfo.js to meta/ (so, every vendor specific file will be
  at the same location)
10 years ago
Raymond Hill ff6c553fb2 more spurious warnings in console foiled 10 years ago
Raymond Hill b9a1cab269 oops 10 years ago
Raymond Hill 2730d5954b fix spurious warning in console 10 years ago
Raymond Hill eb22ee51b3 avoid memory leaks in case no request handler found 10 years ago
Raymond Hill 2310d01835 requests must be deemed unhandled by default 10 years ago
Raymond Hill a2e45a024f now it's fixed... 10 years ago
Raymond Hill 2c209ab8d3 fix bug introduced in 338bf595078d0a7e52c70edd93f7b866dd00d314 10 years ago
Raymond Hill 8436f11e5a code review 10 years ago
Raymond Hill 789bfe09f6 eliminate overhead of creating two funcs/closure for each port connection 10 years ago
Raymond Hill 0a0c011960 give specific message handlers priority over default one 10 years ago
Raymond Hill aa1f793963 continued: corralling platform-specific stuff into their meta folder 10 years ago
Raymond Hill d09bbb3e1e further separate platform-specific code 10 years ago
Deathamns fccb781950 Ports cleanup
- Remove duplicate platform specific (from src/) and other unnecessary
  files
- Fix and update vapi-*.js files for Safari
- Add tools/make-safari.sh
- Move js/vapi-appinfo.js to meta/ (so, every vendor specific file will be
  at the same location)
10 years ago
Raymond Hill bd5492654f give specific message handlers priority over default one 10 years ago
Deathamns c3178cd442 Only top window should have type `main_frame` 10 years ago
Deathamns 8eb76e880c Building extension files
Adds possibility to build extension files (Chrome and Safari) from
command line.

To run from the project directory:
python tools/build.py [meta]

If the optional `meta` argument is set, then only the manifest and
language files are uptated.
Without that everything is being built (extension files too) into the
`dist/build/version_number` folder.

For Chrome there will be two files, a crx, and a .zip file which
includes the key.pem private key (so this must not be shared,
it's just a bit help for publishing it to the Chrome Web Store).

Beside the extension files, update-files are generated too (for self
hosting - Safari needs it).
10 years ago
Deathamns 29eabd44fd Fix messaging for Safari 10 years ago
Deathamns 872a478f91 Preferences button for Safari
Brings back the possibility to click a checkbox which opens the extension
settings from Safari's Preferences/Extensions.
10 years ago
Deathamns 3d535c6c69 Messaging fixes
Checking the message name (and connectorId) is mandatory for Safari,
because when the background page sends a response back to a document,
then all the frames in its owner tab will receive the exact same
message, which could confuse the script in some cases.
10 years ago
Deathamns bda4dba902 Use different page navigation detection for Safari
The beforeNavigate event wasn't reliable (sometimes didn't fire, sometimes
fired unnecessary when opening a link with the middle click - which had a
workaround previously, but that's also removed by this commit).

When the event didn't fire, the bindTabToPageStats method didn't run,
and the requests related to the tab weren't blocked.
10 years ago
Deathamns ceb18d4629 Site-patching possibility for Safari
Safari's extension API doesn't provide a way to intercept requests
initiated by plugins, so those cases need special care (or at least the
popular sites).

This commit adds a new JS file (sitepatch-safari.js), which will store the
patches (if it's possible to create one) for specific sites.

As an example, this commit includes a technique for removing in-video ads
from YouTube videos.
10 years ago
Deathamns c0b1565131 Badge number sometimes disappeared in Safari 10 years ago
Deathamns 31f9683d9f Implement pop-up blocking for Safari
It works similarly to the xhr intercepting, except here the window.open
global function is being overridden.
Note that it could only work if the site's Content Security Policy allows
inline scripts, and the script on the webpage doesn't have a copy of the
original window.open function (it can happen only if the page has an
inline script in its head element, where the reference to the original
function can be obtained - likely this cannot be prevented in Safari).
10 years ago
Deathamns 1be99cf58e Remove unnecessary comments 10 years ago
Deathamns 816dca2f33 Script injection, element picker, messaging
- Add script injection to vAPI, plus a raw implementation for Safari
  (element-picker.js requires it)
- Tweak element picker to work with Safari
- Revert a change from previous commit: element-picker.js' background
  message handler (since actually it can have its own messaging channel)
- Don't send "undefined" reponses from background to content
10 years ago
Deathamns 9981c25286 Remove storage change-event listener from Safari
Earlier, a technique was used to open the extension's Options page when
the user clicked a checkbox input at Safari's extension settings. The method was removed because:
- the Options page can be opened via the extension's toolbar button (which
  cannot be disabled in Safari, so it will be there all the time);
- involved more clicks than opening from the toolbar button;
- the string beside the checkbox couldn't be localized.
10 years ago
Deathamns be7668767f Minor changes
- Update assets from gorhill/uBlock/master
- Remove whitespace from element-picker.js
- Simplify code in profiler.js (btw, Date is still needed as fallback
  for older browsers)
- Clarification for Safari's storage where the QUOTA_BYTES came from
10 years ago