Commit Graph

3208 Commits

Author SHA1 Message Date
gorhill 9a622107ea this completes fix of #520 2015-02-24 13:48:03 -05:00
gorhill aa6e0d563d code review 2015-02-23 23:25:14 -05:00
gorhill c7bab5502e this mitigates #520, #376 2015-02-23 18:31:29 -05:00
gorhill da63253145 this fixes #846 2015-02-19 23:25:29 -05:00
gorhill 4d48fd078c usability: minimized by default 2015-02-18 09:15:59 -05:00
gorhill b498f2f98d double-click to edit rules 2015-02-17 01:31:01 -05:00
gorhill e464dd9042 this fixes #820 2015-02-16 21:15:09 -05:00
Deathamns 7dd60738c1 Save mouse position only in top document
... for the element picker. This way, right click/block element in an
iframe won't select the wrong element in the top document. Instead, it
will allow the user to pick the element manually.
2015-02-16 18:17:26 +01:00
gorhill 0cdf937a5e #815: code review 2015-02-16 11:21:25 -05:00
gorhill 0dc5c62b1e this fixes #815 2015-02-16 11:14:37 -05:00
Chris 23bfecfa50 Asset loader: take local file XHR status in mind 2015-02-15 16:49:37 -07:00
gorhill 42dcfa88b8 this has been unrequired since a while 2015-02-15 09:04:56 -05:00
gorhill 388ac77166 preparing for 1st release candidate 2015-02-15 07:16:31 -05:00
gorhill 337cfeb150 do not leak uBlock is in use (see comment in 21ea1a6e03) 2015-02-14 13:51:08 -05:00
gorhill 9d76974710 #789: code review: even simpler, just check parent node 2015-02-14 12:32:14 -05:00
gorhill 21ea1a6e03 #789: code review: simpler, just keep a reference to the style tag 2015-02-14 12:27:33 -05:00
gorhill 65b9ef2468 this fixes #789 2015-02-14 12:16:36 -05:00
Deathamns 2642d5aa92 replacing documentElement is enough 2015-02-14 10:47:11 +01:00
Deathamns af05ceffb8 Strengthen the picker's visibility 2015-02-14 10:47:10 +01:00
Deathamns fba0bf73ef Don't highlight the picker, handle empty filters 2015-02-14 10:47:09 +01:00
Deathamns b3a2c9c5d3 Get URLs with properties instead of getAttribute 2015-02-14 10:47:08 +01:00
Deathamns 2d507b3edc Fix highlighting nodes for net filters in element-picker 2015-02-14 10:47:06 +01:00
Deathamns 187355b2b2 Move every part of the picker to the iframe 2015-02-14 10:47:05 +01:00
Deathamns 8693ab738d vAPI.sessionId, element-picker dialog as iframe
vAPI.sessionId - random ID generated every time when a page loads.

Having the dialog in an iframe lowers the chance of interference with the
styling of the page, also avoids using innerHTML (AMO complaint).
2015-02-14 10:47:04 +01:00
gorhill 76337c2ac8 typo in code 2015-02-13 19:03:43 -05:00
gorhill 51a6c8beba trivial test to workaround potential bad filters 2015-02-13 18:59:51 -05:00
gorhill 94dd2b3d86 make sure a single \/ is not treated as a valid regex 2015-02-13 18:52:35 -05:00
gorhill bca949748d this fixes #376 2015-02-13 12:10:10 -05:00
gorhill 58b54cf9f9 this fixes #772 2015-02-11 17:28:19 -05:00
gorhill 6013880472 this addresses https://github.com/gorhill/uBlock/issues/731#issuecomment-73956166 2015-02-11 15:49:22 -05:00
gorhill 0a55c3fb20 Merge branch 'master' of github.com:gorhill/uBlock 2015-02-11 14:44:22 -05:00
gorhill d0c8561ee9 fix padlock position bug when refreshing from popup 2015-02-11 14:44:08 -05:00
Chris fd1390713a CSS cleanup: dynamic rules tab (My rules)
For comparison, before: http://chrisly.me/image/1g01441z0F2c

and after: http://chrisly.me/image/1v160U0P2i07

Also:

* give good class names to some element in dyna-rules.html
* select the ul more generically in dyna-rules.js (since a container was added)
2015-02-11 11:56:48 -07:00
gorhill 064f8f0f61 this fixes #771 2015-02-11 12:44:17 -05:00
gorhill ea21aac192 jshint 2015-02-11 11:54:05 -05:00
gorhill 4b3e90de8c do not treat empty line as a rule 2015-02-11 11:49:08 -05:00
gorhill 44768e8dba #731: UI counterpart 2015-02-11 11:34:51 -05:00
gorhill 646f92b32f #731: added session and permanent firewalls 2015-02-11 00:26:45 -05:00
Chris a17882a8cc Remove previous Safari overhead; cleanup workarounds from rest of code 2015-02-10 14:24:04 -07:00
Chris 029a673a58 Oops; timer wasn't being set 2015-02-10 13:25:10 -07:00
gorhill 7c08a4b259 this fixes #759 2015-02-10 10:55:54 -05:00
gorhill 90b8ddf404 this fixes #757 2015-02-09 20:12:37 -05:00
gorhill 0c3de436ca typo 2015-02-09 15:35:47 -05:00
gorhill 3c1cdef241 this fixes #748 2015-02-09 15:24:24 -05:00
gorhill 01474c7adb this fixes #727 2015-02-08 10:07:15 -05:00
gorhill d9244b24c9 #723: code review pre-compute bit array 2015-02-07 23:42:07 -05:00
gorhill ada85ca75e this fixes https://github.com/gorhill/uBlock/issues/723#issuecomment-73395963 2015-02-07 23:40:51 -05:00
gorhill 6be9a8a9d3 this fixes #723 2015-02-07 22:20:24 -05:00
gorhill ff2746f276 code review of last commit 2015-02-07 15:39:46 -05:00
gorhill 92e26cb3d7 fixed request count indicators for incrementally built popup 2015-02-07 15:32:20 -05:00
gorhill 88b2cefa95 silly typo 2015-02-07 14:43:17 -05:00
gorhill 38b4dfdfae code review re. #704 2015-02-07 13:48:22 -05:00
gorhill 6e31f8011b this fixes #719 2015-02-07 08:34:11 -05:00
gorhill 2378a63cf0 re. #704: forgot localized string 2015-02-06 18:20:33 -05:00
gorhill 99be9f5c30 be ready to deal with invalid hostname 2015-02-06 18:11:36 -05:00
gorhill 478155d4f6 code review #704: fix var name accuracy 2015-02-06 17:46:20 -05:00
gorhill be8b365e3c this fixes #704 2015-02-06 17:42:09 -05:00
gorhill a24d22cd0f this fixes #708 2015-02-06 12:20:30 -05:00
gorhill 932f14bd6e code review re. #695 2015-02-06 06:49:48 -05:00
gorhill 36f0b4dec9 typo in comment 2015-02-06 01:20:43 -05:00
gorhill edd57458df this fixes #695 2015-02-06 01:20:04 -05:00
gorhill d0f81f5e3b this fixes #689 2015-02-05 23:14:12 -05:00
gorhill f270f419d2 links to latest jsperf versions 2015-02-05 19:30:20 -05:00
gorhill 6688eb2cca comments to better document code 2015-02-05 08:45:29 -05:00
Chris 14e6860c30 Fix getAppData not to require cloning of non-content-scope function .restart (resolves most common exception in background) 2015-02-04 19:11:17 -07:00
gorhill 7a5d09b4a2 this fixes #665 2015-02-04 18:06:31 -05:00
gorhill 9c2277fccf this fixes #690 2015-02-04 12:51:43 -05:00
gorhill 77133b58c6 this fixes #682 2015-02-04 09:03:34 -05:00
gorhill c7edec0d68 this fixes #683 2015-02-04 00:24:12 -05:00
gorhill 085e600078 this addresses non-UI part of #682 2015-02-04 00:04:43 -05:00
gorhill a9e9ea454f this fixes part of #671 2015-02-03 18:43:51 -05:00
gorhill bbb2d8d1ff move profiling code to platform-specific 2015-02-03 18:40:56 -05:00
gorhill e2b3e28762 for debugging purpose 2015-01-31 18:34:46 -05:00
gorhill fb59756bc6 this fixes #656 2015-01-31 18:33:15 -05:00
gorhill 9467e7fdec this fixes #637 2015-01-30 00:49:30 -05:00
gorhill 357e226001 this fixes #630 2015-01-28 16:19:46 -05:00
gorhill ba54b43fc4 trivial improvements 2015-01-27 13:42:17 -05:00
gorhill 44fa4d72d0 This fixes scrolling not being pinned on Firefox 2015-01-26 14:21:28 -05:00
barri 206eda785f dynamic-net-filtering.js length typos
Corrected length typos in dynamic-net-filtering.js in the is3rdParty function.
2015-01-26 10:27:58 +01:00
gorhill 42db160b93 forgot about reload: always rebind 2015-01-24 12:34:36 -05:00
gorhill 8dcc994371 addressing all small details 2015-01-24 12:06:22 -05:00
gorhill d5fdd84da4 removed stray git-conflict line 2015-01-24 08:21:14 -05:00
gorhill 8088fa08ff Merge branch 'master' of github.com:gorhill/uBlock into fix-475 2015-01-24 08:17:31 -05:00
gorhill 2d287b5315 this fixes #589 + regression re. `elemhide` option 2015-01-23 21:47:56 -05:00
gorhill 1d1a3983e3 syncing with master 2015-01-23 15:36:32 -05:00
gorhill f718e8e1f2 better/safer fix for #587 2015-01-23 15:02:47 -05:00
gorhill 91142ce847 code review: removed unused member 2015-01-23 13:39:06 -05:00
gorhill 44bc263a69 code review: oops 2015-01-23 11:56:43 -05:00
gorhill eeb5e8de5b associate code change with issue #587 2015-01-23 11:47:31 -05:00
gorhill 673b8774be this fixes #582 2015-01-23 11:32:49 -05:00
gorhill b51b0e5350 code review 2015-01-22 13:00:59 -05:00
gorhill 4c7f4771e2 #475: whitelist behind-the-scene by default 2015-01-21 21:46:11 -05:00
gorhill 7b8392ca48 more fixes for #105 2015-01-21 11:13:32 -05:00
gorhill 4edfae4b94 code review: jshint'ed 2015-01-21 08:59:23 -05:00
gorhill a64bca0fa6 code review 2015-01-21 00:32:32 -05:00
gorhill 255c68baa4 this fixes #536 2015-01-20 19:39:13 -05:00
gorhill 7f78ce2260 bring up to date with master 2015-01-19 18:45:00 -05:00
gorhill 759a156e24 started work on #105, #475, and possibly #510 2015-01-19 18:42:58 -05:00
gorhill 5ee417e110 new revision 2015-01-18 22:26:07 -05:00
gorhill de88721132 Re. #540: disabling local mirroring for the time being 2015-01-18 19:17:36 -05:00
Deathamns f1bcc0a24b Focus window when activating element-picker 2015-01-18 08:12:39 +01:00
gorhill 470eef85f3 this fixes #525 2015-01-17 15:03:33 -05:00
gorhill 94453ed878 this fixes #519 2015-01-17 07:53:19 -05:00
gorhill 3ab9aa46b0 this fixes #516 2015-01-17 07:19:48 -05:00
gorhill f3475aedc2 code review: fixed double semi-column 2015-01-16 18:08:40 -05:00
gorhill 554129648d this fixes #503 2015-01-16 12:15:12 -05:00
gorhill d7b16a8383 this fixes #515 2015-01-16 10:57:56 -05:00
gorhill ca77c677d7 not needed 2015-01-15 08:30:38 -05:00
Deathamns 089af13e32 URL handling changes 2015-01-15 13:24:35 +01:00
gorhill ee01803419 this fixes one part of #498 2015-01-14 17:45:55 -05:00
gorhill de9fad5ec3 this fixes #464 2015-01-13 15:52:15 -05:00
Deathamns bcc1c0da11 Fix prorblems caused by vAPI.insertHTML 2015-01-13 20:25:10 +01:00
gorhill b436f8e829 this fixes #490 2015-01-13 11:54:54 -05:00
gorhill 5ec300602a this fixes default tab selection for Firefox 2015-01-13 11:01:33 -05:00
Deathamns b4ea545412 Implement vAPI.insertHTML
The purpose of this API is basically to satisfy AMO reviewers in the
future, since the use of innerHTML with variables (i.e., not plain text) will
be rejected without any questions.

Since this is not a problem for browsers other than Firefox, they will
use simple innerHTML assignment, however safe-parsing could be implemented
for them too.
2015-01-13 07:30:07 +01:00
Deathamns 8a9165daa2 Firefox: blocking improvements / other fixes
- Implement pop-up blocking
- Support blocking redirected requests
- Fix Local mirroring and inline-script blocking
- Block content on data: and about:blank pages
2015-01-13 07:29:56 +01:00
Deathamns 5e55ba772d Code styling 2015-01-13 07:29:49 +01:00
Deathamns b8c943d539 Make vAPI.setIcon less Chromium specific 2015-01-13 07:29:46 +01:00
Deathamns b301ac031e Popup related changes 2015-01-13 07:29:44 +01:00
Deathamns cb5d860725 Firefox: implement toolbar button and popup 2015-01-13 07:29:01 +01:00
Deathamns 3c76c61f61 Firefox: partial vAPI.tabs implementation 2015-01-13 07:28:57 +01:00
gorhill 42937eb1b1 this fixes #482 2015-01-12 10:10:03 -05:00
gorhill 5201946c3f this fixes #473 2015-01-11 09:47:14 -05:00
gorhill 8ff2dc362c this fixes #471 2015-01-11 08:31:38 -05:00
gorhill a3d166d18e jshint 2015-01-10 11:44:37 -05:00
gorhill 80ef8f3777 code review 2015-01-10 11:32:24 -05:00
gorhill 9fc136e7e8 hopefully this fixes #470 2015-01-10 11:23:28 -05:00
gorhill 58e3acd0c7 probably more reasonable 2015-01-09 14:34:50 -05:00
gorhill e6793c1fdb code review re #26 2015-01-09 00:06:28 -05:00
gorhill ba31014503 support elemhide filter option 2015-01-08 21:04:48 -05:00
gorhill 0c152b2859 fixed flawed 1st-/3rd-party test 2015-01-08 10:37:19 -05:00
gorhill bdf770a1bb need to maybe skip type after transposition 2015-01-07 20:42:19 -05:00
gorhill ae2eb25e25 also log root document for convenience 2015-01-07 18:56:03 -05:00
gorhill 3e084455a7 regression 2015-01-07 18:38:05 -05:00
gorhill cf446e97c8 output localized numbers 2015-01-07 17:42:13 -05:00
gorhill cef1ac0ec9 regression 2015-01-07 14:24:06 -05:00
gorhill d639c63670 code review 2015-01-07 11:36:23 -05:00
gorhill f36880315a code review: fixed reloading of dynamic filtering rules 2015-01-07 08:49:52 -05:00
gorhill 2bed24bb99 code review 2015-01-06 19:51:50 -05:00
gorhill ace190a33e regression 2015-01-06 15:35:08 -05:00
gorhill 4b9fc6d6f5 fixed import/export of dynamic rules 2015-01-06 12:14:37 -05:00
gorhill 881e8111d8 "advanced user" flag + rearranging a bit dashboard 2015-01-06 11:44:06 -05:00
gorhill 3a5c2cfa57 code review 2015-01-06 08:44:19 -05:00
gorhill 1597ce7fd9 lot of work related to dynamic filtering + new net requests logger 2015-01-06 08:01:15 -05:00
gorhill 81e035589b Merge branch 'master' of github.com:gorhill/uBlock into fix-433 2015-01-04 10:04:59 -05:00
gorhill ea2043c0eb auto cleanup of listeners 2015-01-04 10:03:51 -05:00
gorhill e8045d154b bringing changes from master 2015-01-02 14:19:12 -05:00
gorhill 00995992d2 this fixes #455 2015-01-02 13:42:35 -05:00
gorhill 2d05d51664 code review for #456 2015-01-01 21:14:53 -05:00
gorhill 2a7e9f8d98 this fixes #456: another unrelated bug unveil from previous fix 2015-01-01 20:58:19 -05:00
gorhill 057e95bed0 fixed comment 2015-01-01 19:16:02 -05:00
gorhill 33d73b343d this fixes #456 2015-01-01 19:09:40 -05:00
gorhill 4cbfb0fa6b semantically better 2015-01-01 10:57:03 -05:00
gorhill 5bfe3b09a7 filtering result has been refactored 2015-01-01 10:55:00 -05:00
gorhill df2db73fb1 bringing branch up to date with master 2015-01-01 09:40:14 -05:00
gorhill 8562f70144 avoid potential double execution of firstRetrieveHandler (because mutations observer) 2015-01-01 09:15:37 -05:00
gorhill aca35e4cbc code review for #452: avoid if'ing each time 2015-01-01 08:09:44 -05:00
gorhill 4c7533b786 code review for #452 2015-01-01 07:46:33 -05:00
gorhill 619b89e6a6 avoid dom changes if possible 2015-01-01 07:29:28 -05:00
gorhill 3b0dac6402 Merge branch 'master' of github.com:gorhill/uBlock into fix-433 2014-12-31 23:24:07 -05:00
gorhill baa0fee0f3 this fixes #452 2014-12-31 23:09:22 -05:00
gorhill 3c941f8309 another round of work re dynamic filtering 2014-12-31 17:26:17 -05:00
gorhill 43e773aab2 finally a fully working draft: now onto myriad finishing touches 2014-12-31 10:47:19 -05:00
gorhill a0279b1378 more work to expand dynamic filtering 2014-12-30 16:36:29 -05:00
gorhill b49b0864d3 code review: #433 2014-12-28 12:04:48 -05:00
gorhill 1fe7045b92 too many changes for #433: branching so that I can commit and keep working on it 2014-12-28 10:07:43 -05:00
gorhill aed66e5278 code review for #438 2014-12-27 13:42:47 -05:00
gorhill c0b9e634b3 this fixes #438 2014-12-26 15:26:44 -05:00
gorhill f60f149531 1000 is k, not K 2014-12-24 08:11:22 -05:00
gorhill 8eaa92f0a2 for debugging purpose when investigating 2014-12-22 18:38:18 -05:00
gorhill e904e96d4d this fixes #436 2014-12-22 14:48:17 -05:00
gorhill 97bf6e279e further fix re #426 2014-12-21 00:07:08 -05:00
gorhill 4f229c7c27 this fixes #426 2014-12-20 15:28:16 -05:00
gorhill 59abd062ef #423: code review (oops) 2014-12-19 14:06:55 -05:00
gorhill 0cdc703f13 #423: code review 2014-12-19 14:04:17 -05:00
gorhill 6fc7f96a48 this fixes #423 2014-12-19 14:00:46 -05:00
gorhill 0d3dd3d2ec code review for #420: mind that the rule can apply everywhere 2014-12-17 10:47:52 -05:00
gorhill b9c1f2e397 this fixes #420 2014-12-17 10:32:50 -05:00
gorhill ceb36732cc jshint 2014-12-17 10:09:08 -05:00
gorhill a7c9134bf6 this fixes #417 2014-12-17 08:04:21 -05:00
gorhill 5019f241df this fixes #418; also remove last chrome API reference from portable code 2014-12-17 08:02:37 -05:00
gorhill a1172b1efe code review related to #405 2014-12-15 14:37:09 -05:00
gorhill 49d77eab05 more changes related to fix to #405 2014-12-15 11:02:50 -05:00
gorhill 084a1ef8d0 # is allowed with fix to #405 2014-12-15 09:28:56 -05:00
gorhill 22fe58e59a this fixes #414 2014-12-15 09:00:49 -05:00
gorhill f7860cab7c this fixes #343 2014-12-15 07:19:32 -05:00
gorhill b12bc6a7cf code review for #405 2014-12-14 17:21:59 -05:00
gorhill d5a3226066 this fixes #405 (and formerly closed-as-wontfix #162) 2014-12-14 08:57:00 -05:00
Raymond Hill c8c01a8f91 code review, jshint 2014-12-12 20:59:47 -02:00
Raymond Hill a85f64c562 this addresses #405 2014-12-08 15:37:35 -02:00
Raymond Hill 172f98d462 this should help with #402 2014-12-08 14:16:13 -02:00
Raymond Hill a909cc48d4 this is a better solution for #400 2014-12-08 14:12:08 -02:00
Raymond Hill dfe8eab846 this fixes #401 2014-12-06 15:28:19 -02:00
Raymond Hill 0501c0712a this fixes #399 2014-12-06 15:00:31 -02:00
Raymond Hill cf8f5c26e5 this fixes #396 2014-12-04 11:33:44 -02:00
Raymond Hill 0e12797709 extension restart is platform-dependent 2014-12-02 14:02:17 -02:00
Deathamns 2a26448734 Safari: slightly better pop-up blocking 2014-12-01 21:09:25 +01:00
Raymond Hill 2e4c0a2bfe remove depending on vapi-appinfo.js 2014-12-01 14:25:33 -02:00
Raymond Hill f6120299af this fixes #387 2014-11-30 19:42:49 -02:00
Raymond Hill 0bf088cd1e this fixes #386, #346, #299, #288, #285, #284, #279 2014-11-29 23:36:53 -02:00
Raymond Hill be082cb666 this fixes #384; more reading required for a long-term solution--if any 2014-11-29 18:26:01 -02:00
Raymond Hill 52e8cb5338 file picker is gone: generate a unique filename each time 2014-11-29 16:04:34 -02:00
Raymond Hill c6227289a6 code review 2014-11-27 09:41:28 -02:00
Raymond Hill f141d6f769 fixed overzealous cosmetic filter bug introduced in #365 2014-11-26 17:26:33 -02:00
Raymond Hill 7e55dc898e code review 2014-11-26 16:32:10 -02:00
Raymond Hill 27eeea3618 no longer needed 2014-11-26 16:25:14 -02:00
Raymond Hill fb1221a8a1 remove overhead of PSL for "3rd-party filters" tab 2014-11-26 15:45:36 -02:00
Raymond Hill f149b2e340 jshint 2014-11-24 20:20:21 -02:00
Raymond Hill 369b038f92 jshint 2014-11-24 12:48:33 -02:00
Raymond Hill dc16a5c673 this fixes #379 2014-11-24 11:28:36 -02:00
Deathamns 219eddab74 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)
2014-11-23 18:21:06 +01:00
Raymond Hill 281dc7038e this fixes #362 2014-11-21 10:05:59 -02:00
Raymond Hill 0d920e4e44 code review 2014-11-16 22:40:34 -02:00
Raymond Hill 81a0052f39 remove code failing at trying to be smart re. obsolete filter lists 2014-11-16 21:27:48 -02:00
Raymond Hill c4838581fd this fixes #365 2014-11-16 17:06:29 -02:00
Raymond Hill 91276bebfb eliminate overhead of creating two funcs/closure for each port connection 2014-11-16 12:49:55 -02:00
Raymond Hill 338bf59507 give specific message handlers priority over default one 2014-11-16 11:09:28 -02:00
Raymond Hill 84c069dfaa continued: corralling platform-specific stuff into their meta folder 2014-11-16 00:21:13 -02:00
Raymond Hill eafc96859c further separate platform-specific code 2014-11-15 16:15:11 -02:00
Deathamns 8f0b3cf592 Move MutationObserver shim
Since it will be used only for older Safari versions, move it to Safari
related code, so it doesn't pollute the content scripts.
2014-11-12 10:22:57 +01:00
Deathamns 36ad23a1db Respect `defer` attribute when mirroring 2014-11-11 16:33:50 +01:00
Deathamns 812da0900e Call XHR.open even if the request will be blocked
Without calling it an error may be thrown if other XHR parameters are set.
2014-11-11 16:32:17 +01:00
Deathamns 8edb628e1e Only top window should have type `main_frame` 2014-11-11 13:33:55 +01:00
Deathamns 2024ba1bcd Fix wrong fix in 4bf6664 2014-11-10 19:25:17 +01:00
Deathamns fb0cacb44d Remove unnecessary messaging workaround
A better fix was introduced in e36c702 for this issue.

The actual problem was that Safari when sends a message from the
background to content, then it passes to all the frames in the target tab,
but it doesn't make copies, it passes only references to the same object,
so if one frame modifies the message, then other frames would have
received the modified message.
2014-11-10 08:11:49 +01:00
Deathamns 0d9d285608 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).
2014-11-09 18:58:46 +01:00
Deathamns 4bf6664d6b Fix double definition of `length` property in uDom
The `length` property of `DOMList` couldn't be re-defined, because earlier
an Object.defineProperty was used on the object without a setter.
2014-11-09 17:41:09 +01:00
Deathamns 30ef97a678 Fix messaging for Safari 2014-11-09 17:41:07 +01:00
Deathamns 6f2e449e61 Preferences button for Safari
Brings back the possibility to click a checkbox which opens the extension
settings from Safari's Preferences/Extensions.
2014-11-09 17:41:05 +01:00
Deathamns e36c7022cf 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.
2014-11-09 17:41:04 +01:00
Deathamns d98a8161f9 Drop js-loader, updates from gorhill/uBlock/master 2014-11-09 17:41:02 +01:00
Deathamns ba0b11aabe 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.
2014-11-09 17:41:00 +01:00
Deathamns d114bf21e7 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.
2014-11-09 17:40:59 +01:00
Deathamns 7f57684e2b document.head isn't always available in Safari 2014-11-09 17:40:56 +01:00
Deathamns bccf3d68e2 Add dummy MutationObserver shim for older browsers 2014-11-09 17:40:54 +01:00
Deathamns 64c37ccd1d Badge number sometimes disappeared in Safari 2014-11-09 17:40:52 +01:00
Deathamns f6f85ec793 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).
2014-11-09 17:40:44 +01:00
Deathamns ac272afb4b "Purge all caches" button seemingly didn't work 2014-11-09 17:40:43 +01:00
Deathamns cc27193147 Element picker tweaks
- Indentation whitespace fixes.
- Use built-in getBoundingClientRect() function instead of self-made.
- Use built-in DOM API for manipulating the class attributes instead of
  altering the className property.
- Add pointer-events: none to the svgRoot when using
  document.elementFromPoint(), but if the browser (older Safari for
  example) doesn't take the pointer-events into account, then fall back to
  display: none.
- Initiate every part of the picker at the same time; when the message is
  received from the background. This way the selected element will have
  the red overlay immediately, instead of showing first the black overlay,
  then a few milliseconds later the red.
2014-11-09 17:40:41 +01:00
Deathamns 6d49ef0dac Avoid using Chrome's @@bidi_* type i18n messages
... for the sake of portability.

When including vapi-common.js in an HTML file, then the body element there
will have a "dir" attribute filled with the current locale's direction
(ltr or rtl).

The following languages are considered right-to-left: ar, he, fa, ps, ur.
Everything else is left-to-right.

After the "dir" attribute is set, we can decide in CSS which elements
should have different styling for rtl languages (e.g., body[dir=rtl] #id).
2014-11-09 17:40:40 +01:00
Deathamns 86222cb368 Use utf-8 for data: URIs when downloading 2014-11-09 17:39:43 +01:00
Deathamns 5e587aa42f Workaround for a messaging bug in Safari 2014-11-09 17:39:42 +01:00
Deathamns 5e99ead9ff Fix download URL for the fallback method 2014-11-09 17:39:40 +01:00
Deathamns 749b6f186d Use a dedicated file for storing extension info
Chrome has getManifest(), Safari doesn't have anything, Firefox has an
asynchronous API...
So, instead of using extension APIs, store the common informations
(extension name, version, homepage url) in a file (vapi-appinfo.js), which
can be included when it's needed (its data will be available at vAPI.app.____).
The file's content is updated each time the extension is being built, so
it shouldn't be modified manually.
2014-11-09 17:39:38 +01:00
Deathamns fbffc5b07e Use HTML5 download instead of extension API
Benefits:
- Cross browser solution (however only for relatively new browsers)
- Doesn't need extra permission in Chrome

If the browser doesn't suppor the download attribute, then a new tab will
be opened with the exported data.

Other changes:
- Start the download only if the data is not empty (previously the
  download started anyway)
- Reorder code in vapi-client.js for Safari, so unnecessary code doesn't
  run on extension pages
2014-11-09 17:39:36 +01:00
Deathamns 2e787d8541 Set default dimensions for Safari's popup 2014-11-09 17:39:35 +01:00
Deathamns ab12c8d7d9 Remove unnecessary comments 2014-11-09 17:39:33 +01:00
Deathamns 7dba1f7e22 Use extension API to open links from the popup
Safari doesn't seem to follow links embedded in the popup window (not even
with target="_blank").
2014-11-09 17:39:31 +01:00
Deathamns d38ca13107 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
2014-11-09 17:39:30 +01:00
Deathamns 88a7910bcb element-picker fixes, changes
- Include latest changes from gorhill/uBlock/master
- Append the pickerRoot container to document.documentElement instead
  of document.body ("body > div" type CSS selectors are more common, so
  they could overwrite the extension's styling with higher probability)
- Request localized strings from the background script instead of using
  the i18n API in content scripts
- Fuse element-picker.js' message handling into contentscript-end.js', since
  only one messaging channel can live at a time in a content script
2014-11-09 17:39:28 +01:00
Deathamns f9602fa5a7 Implement popup autoresizing for Safari
By default, Safari doesn't resize the popup to its content, but it's
possible to set the size pragmatically.
The popup will be resized every time when a change happens in the DOM tree.
2014-11-09 17:39:26 +01:00
Deathamns 775f51a04b Fix "invalid token" exception in Safari
Seems like in older versions the const keyword doesn't play well with the "use strict" directive
2014-11-09 17:39:24 +01:00
Deathamns 1a83d1a753 Move vAPI into .jshintrc as a global 2014-11-09 17:39:22 +01:00
Deathamns 171619506b 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.
2014-11-09 17:39:20 +01:00
Deathamns 7af9805296 Safari shows integers only over the toolbar icon 2014-11-09 17:39:19 +01:00
Deathamns 0886f7e886 Add .jshintrc, and use the "use strict" directive
.jshintrc's otion-set is a personal choice, merely a suggestion.
Beside that, it includes some common globals for specific browsers, so
there's no need to set the globals in every .js file.

In order to force strict coding, "use strict" directive was added into
every .js file.
2014-11-09 17:39:17 +01:00
Deathamns 4278121f74 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
2014-11-09 17:39:15 +01:00
Deathamns 5b79bf3536 Work on vendor API abstraction, and near complete Safari support 2014-11-09 17:39:12 +01:00