From e4a3586a14996bbece3b26c9e3b7704ea6af8615 Mon Sep 17 00:00:00 2001 From: Ruben Rodriguez Date: Sat, 28 Nov 2015 15:24:36 -0600 Subject: LibreJS upgraded to 6.0.10 --- .../extensions/jid1-KtlZuoiikVfFew@jetpack/COPYING | 674 +++++++ .../jid1-KtlZuoiikVfFew@jetpack/bootstrap.js | 355 +--- .../jid1-KtlZuoiikVfFew@jetpack/data/README | 2 + .../data/assets/css/style.css | 191 ++ .../data/assets/images/README | 21 + .../data/assets/images/complain-button3.png | Bin 0 -> 8958 bytes .../data/assets/images/complain.png | Bin 0 -> 1206 bytes .../data/assets/images/info-title.png | Bin 0 -> 4310 bytes .../data/assets/images/separator.png | Bin 0 -> 279 bytes .../data/assets/images/torchy2.png | Bin 0 -> 273 bytes .../data/chrome_worker/parser/jsdefs.js | 751 +++++++ .../data/chrome_worker/parser/jslex.js | 719 +++++++ .../data/chrome_worker/parser/jsparse.js | 2042 ++++++++++++++++++++ .../data/chrome_worker/parser/parse.js | 57 + .../data/complain/contact_finder.js | 436 +++++ .../data/complain/contact_regex.js | 100 + .../data/complain/link_types.js | 44 + .../data/complain/pagemod_finder.js | 314 +++ .../data/complain/worker_finder.js | 37 + .../data/display_panel/content/README | 21 + .../display_panel/content/background-panel.png | Bin 0 -> 14814 bytes .../data/display_panel/content/display-panel.html | 72 + .../display_panel/content/librejs-title-old.png | Bin 0 -> 2673 bytes .../data/display_panel/content/librejs-title.png | Bin 0 -> 14123 bytes .../data/display_panel/content/panel-styles.css | 190 ++ .../data/display_panel/main_panel.js | 395 ++++ .../data/images/gnu-icon-white.ico | Bin 0 -> 4286 bytes .../data/images/gnu-icon.ico | Bin 0 -> 4286 bytes .../data/images/gnu-icon.png | Bin 0 -> 2667 bytes .../data/librejs-settings.html | 23 + .../data/licenses/Boost-1.0.txt | 23 + .../data/licenses/ISC.txt | 12 + .../data/licenses/IntelACPI.txt | 116 ++ .../data/licenses/agpl-3.0.txt | 661 +++++++ .../data/licenses/apache-2.0.txt | 202 ++ .../data/licenses/artistic-2.0.txt | 201 ++ .../data/licenses/bsd-3-clause.txt | 27 + .../data/licenses/cc0.txt | 118 ++ .../data/licenses/clear-bsd.txt | 33 + .../data/licenses/cpal-1.0.txt | 105 + .../data/licenses/create-magnets.sh | 28 + .../data/licenses/epl-1.0.txt | 231 +++ .../data/licenses/expat.txt | 5 + .../data/licenses/freebsd.txt | 25 + .../data/licenses/gpl-2.0.txt | 339 ++++ .../data/licenses/gpl-3.0.txt | 674 +++++++ .../data/licenses/illinois-NCSA.txt | 24 + .../data/licenses/imlib2.txt | 31 + .../data/licenses/lgpl-2.0.txt | 481 +++++ .../data/licenses/lgpl-2.1.txt | 502 +++++ .../data/licenses/lgpl-3.0.txt | 165 ++ .../data/licenses/magnet-links.txt | 29 + .../data/licenses/mpl-2.0.txt | 373 ++++ .../data/licenses/public-domain.txt | 18 + .../data/licenses/torrents/Boost-1.0.txt.torrent | 2 + .../data/licenses/torrents/ISC.txt.torrent | 1 + .../data/licenses/torrents/IntelACPI.txt.torrent | 1 + .../data/licenses/torrents/agpl-3.0.txt.torrent | 1 + .../data/licenses/torrents/apache-2.0.txt.torrent | 1 + .../licenses/torrents/artistic-2.0.txt.torrent | Bin 0 -> 200 bytes .../licenses/torrents/bsd-3-clause.txt.torrent | 1 + .../data/licenses/torrents/cc0.txt.torrent | 1 + .../data/licenses/torrents/clear-bsd.txt.torrent | 1 + .../data/licenses/torrents/cpal-1.0.txt.torrent | 1 + .../data/licenses/torrents/epl-1.0.txt.torrent | Bin 0 -> 196 bytes .../data/licenses/torrents/expat.txt.torrent | 1 + .../data/licenses/torrents/freebsd.txt.torrent | 1 + .../data/licenses/torrents/gpl-2.0.txt.torrent | 1 + .../data/licenses/torrents/gpl-3.0.txt.torrent | 1 + .../licenses/torrents/illinois-NCSA.txt.torrent | 1 + .../data/licenses/torrents/imlib2.txt.torrent | 1 + .../data/licenses/torrents/lgpl-2.0.txt.torrent | 1 + .../data/licenses/torrents/lgpl-2.1.txt.torrent | 1 + .../data/licenses/torrents/lgpl-3.0.txt.torrent | 2 + .../licenses/torrents/magnet-links.txt.torrent | Bin 0 -> 200 bytes .../data/licenses/torrents/mpl-2.0.txt.torrent | 1 + .../licenses/torrents/public-domain.txt.torrent | 1 + .../data/licenses/torrents/unlicense.txt.torrent | 1 + .../data/licenses/torrents/upl-1.0.txt.torrent | 1 + .../data/licenses/torrents/wtfpl.txt.torrent | 1 + .../data/licenses/torrents/x11.txt.torrent | 1 + .../data/licenses/torrents/xfree86.txt.torrent | 1 + .../data/licenses/unlicense.txt | 25 + .../data/licenses/upl-1.0.txt | 19 + .../data/licenses/wtfpl.txt | 13 + .../data/licenses/x11.txt | 26 + .../data/licenses/xfree86.txt | 43 + .../data/loading/loader.gif | Bin 0 -> 8787 bytes .../data/loading/loading-panel.html | 31 + .../data/preferences_panel/contentscript.js | 69 + .../data/preferences_panel/preferences_panel.html | 73 + .../data/script_detector/script_detector.js | 361 ++++ .../data/script_libraries/gethash.sh | 24 + .../data/script_libraries/script-libraries.json | 1591 +++++++++++++++ .../data/settings/images/button-download.png | Bin 0 -> 3426 bytes .../data/settings/images/libre.png | Bin 0 -> 19048 bytes .../data/settings/images/logo-medium.png | Bin 0 -> 11050 bytes .../data/settings/index.html | 108 ++ .../data/settings/js/form-row.js | 120 ++ .../data/settings/js/form-types.js | 145 ++ .../data/settings/js/pagescript-emitter.js | 14 + .../data/settings/js/pagescript-listener.js | 51 + .../data/settings/js/permafrost-info-box.js | 21 + .../data/settings/styles/form.css | 40 + .../data/settings/styles/styles.css | 129 ++ .../data/settings/third-party/jquery/jquery.min.js | 4 + .../data/widget/images/README | 21 + .../data/widget/images/librejs-32.png | Bin 0 -> 1011 bytes .../data/widget/images/librejs-64.png | Bin 0 -> 1604 bytes .../data/widget/images/librejs-off.png | Bin 0 -> 498 bytes .../data/widget/images/librejs.png | Bin 0 -> 503 bytes .../defaults/preferences/prefs.js | 5 - .../harness-options.json | 751 ------- .../jid1-KtlZuoiikVfFew@jetpack/icon.png | Bin 1011 -> 0 bytes .../jid1-KtlZuoiikVfFew@jetpack/icon64.png | Bin 1604 -> 0 bytes .../jid1-KtlZuoiikVfFew@jetpack/install.rdf | 50 +- .../lib/addon_management/install_uninstall.js | 67 + .../lib/addon_management/prefchange.js | 126 ++ .../lib/html_script_finder/bug_fix.js | 24 + .../lib/html_script_finder/dom_handler.js | 570 ++++++ .../html_script_finder/dom_handler/attributes.js | 138 ++ .../html_script_finder/dom_handler/dom_checker.js | 480 +++++ .../html_script_finder/dom_handler/dom_gatherer.js | 286 +++ .../lib/html_script_finder/dom_handler/request.js | 118 ++ .../dom_handler/script_object.js | 212 ++ .../dom_handler/script_properties.js | 45 + .../lib/html_script_finder/html_parser.js | 160 ++ .../lib/html_script_finder/url_seen_tester.js | 80 + .../web_labels/find_js_labels.js | 133 ++ .../html_script_finder/web_labels/js_web_labels.js | 299 +++ .../web_labels/script_hash_worker.js | 78 + .../lib/http_observer/allowed_referrers.js | 69 + .../lib/http_observer/caching.js | 32 + .../lib/http_observer/http_request_observer.js | 149 ++ .../lib/http_observer/process_response.js | 424 ++++ .../lib/http_observer/stream_loader.js | 160 ++ .../lib/js_checker/constant_types.js | 192 ++ .../lib/js_checker/free_checker.js | 246 +++ .../lib/js_checker/js_checker.js | 563 ++++++ .../lib/js_checker/license_definitions.js | 296 +++ .../lib/js_checker/nontrivial_checker.js | 376 ++++ .../lib/js_checker/pattern_utils.js | 42 + .../lib/js_checker/privacy_checker.js | 46 + .../lib/js_checker/privacy_threat_definitions.js | 54 + .../lib/js_checker/relation_checker.js | 291 +++ .../lib/js_load_observer/js_load_observer.js | 147 ++ .../jid1-KtlZuoiikVfFew@jetpack/lib/main.js | 71 + .../lib/parser/narcissus_worker.js | 81 + .../lib/pref_observer/pref_observer.js | 72 + .../lib/preferences/preferences.js | 74 + .../lib/script_entries/accepted_scripts.js | 69 + .../lib/script_entries/all_scripts.js | 110 ++ .../lib/script_entries/crypto.js | 61 + .../lib/script_entries/dryrun_scripts.js | 78 + .../lib/script_entries/free_libraries.js | 69 + .../lib/script_entries/removed_scripts.js | 73 + .../lib/script_entries/scripts_cache.js | 193 ++ .../lib/settings/settings.js | 0 .../lib/settings/settings_tab.js | 79 + .../lib/settings/storage.js | 181 ++ .../jid1-KtlZuoiikVfFew@jetpack/lib/ui.js | 190 ++ .../lib/ui/notification.js | 78 + .../lib/ui/script_panel.js | 75 + .../jid1-KtlZuoiikVfFew@jetpack/lib/ui/ui_info.js | 205 ++ .../lib/url_handler/node_punycode.js | 510 +++++ .../lib/url_handler/node_querystring.js | 213 ++ .../lib/url_handler/node_url.js | 691 +++++++ .../lib/url_handler/url_handler.js | 116 ++ .../jid1-KtlZuoiikVfFew@jetpack/locales.json | 1 - .../node_modules/menuitem/.npmignore | 7 + .../node_modules/menuitem/.travis.yml | 22 + .../node_modules/menuitem/README.md | 28 + .../node_modules/menuitem/index.js | 218 +++ .../node_modules/menuitem/package.json | 82 + .../node_modules/menuitem/test/test-menuitems.js | 169 ++ .../node_modules/notification-box/LICENSE | 373 ++++ .../node_modules/notification-box/README.md | 5 + .../notification-box/data/gnu-icon.png | Bin 0 -> 2667 bytes .../doc/images/critical-notification.png | Bin 0 -> 26959 bytes .../doc/images/info-low-priority.png | Bin 0 -> 25179 bytes .../node_modules/notification-box/doc/main.md | 53 + .../node_modules/notification-box/lib/main.js | 16 + .../notification-box/lib/notification-box.js | 147 ++ .../node_modules/notification-box/package.json | 61 + .../notification-box/test/test-main.js | 12 + .../node_modules/pathfinder/.npmignore | 6 + .../node_modules/pathfinder/README.md | 22 + .../node_modules/pathfinder/data/warning-mod.js | 19 + .../node_modules/pathfinder/data/warning.css | 47 + .../node_modules/pathfinder/data/warning.html | 29 + .../node_modules/pathfinder/data/warning.js | 3 + .../node_modules/pathfinder/docs/addon-warning.md | 0 .../node_modules/pathfinder/docs/addon.md | 28 + .../node_modules/pathfinder/docs/addonprovider.md | 50 + .../node_modules/pathfinder/docs/awesomebar.md | 61 + .../node_modules/pathfinder/docs/content-policy.md | 0 .../node_modules/pathfinder/docs/l10n.md | 41 + .../node_modules/pathfinder/docs/listen.md | 23 + .../node_modules/pathfinder/docs/menuitems.md | 66 + .../node_modules/pathfinder/docs/panic.md | 45 + .../node_modules/pathfinder/docs/toolbarbutton.md | 84 + .../node_modules/pathfinder/docs/unload+.md | 20 + .../node_modules/pathfinder/docs/userscript.md | 44 + .../node_modules/pathfinder/docs/userstyles.md | 26 + .../node_modules/pathfinder/docs/xulkeys.md | 55 + .../pathfinder/examples/test/data/test.user.js | 6 + .../pathfinder/examples/test/lib/main.js | 11 + .../pathfinder/examples/test/package.json | 8 + .../node_modules/pathfinder/lib/addon/folder.js | 51 + .../node_modules/pathfinder/lib/addon/unload.js | 92 + .../node_modules/pathfinder/lib/aom/addon.js | 80 + .../node_modules/pathfinder/lib/aom/manager.js | 15 + .../node_modules/pathfinder/lib/aom/provider.js | 52 + .../pathfinder/lib/application/restart.js | 22 + .../pathfinder/lib/chrome/instances.js | 36 + .../pathfinder/lib/chrome/net-utils.js | 7 + .../node_modules/pathfinder/lib/chrome/services.js | 57 + .../pathfinder/lib/chrome/xpcom-utils.js | 3 + .../pathfinder/lib/connection/events.js | 23 + .../pathfinder/lib/connection/request.js | 45 + .../pathfinder/lib/connection/response.js | 44 + .../node_modules/pathfinder/lib/connections.js | 8 + .../pathfinder/lib/content/permissions.js | 88 + .../node_modules/pathfinder/lib/content/policy.js | 143 ++ .../node_modules/pathfinder/lib/devtools/gcli.js | 23 + .../node_modules/pathfinder/lib/download.js | 95 + .../node_modules/pathfinder/lib/l10n.js | 76 + .../node_modules/pathfinder/lib/panic.js | 92 + .../node_modules/pathfinder/lib/redirect.js | 52 + .../node_modules/pathfinder/lib/scheme/about.js | 84 + .../node_modules/pathfinder/lib/scheme/resource.js | 43 + .../lib/scriptish/GM_xmlhttpRequester.js | 238 +++ .../pathfinder/lib/scriptish/convert-2-regexp.js | 23 + .../pathfinder/lib/scriptish/greasemonkey-api.js | 76 + .../lib/scriptish/userscript-header-parser.js | 31 + .../pathfinder/lib/scriptish/userscript-manager.js | 44 + .../pathfinder/lib/scriptish/userscript-sandbox.js | 24 + .../node_modules/pathfinder/lib/storage.js | 126 ++ .../node_modules/pathfinder/lib/ui/awesomebar.js | 205 ++ .../pathfinder/lib/ui/findbar/suggestion.js | 77 + .../node_modules/pathfinder/lib/ui/menuitems.js | 218 +++ .../pathfinder/lib/ui/sidebar/actions.js | 9 + .../pathfinder/lib/ui/sidebar/contract.js | 30 + .../pathfinder/lib/ui/sidebar/state.js | 8 + .../pathfinder/lib/ui/sidebar/utils.js | 31 + .../pathfinder/lib/ui/toolbarbutton.js | 179 ++ .../node_modules/pathfinder/lib/ui/utils.js | 28 + .../node_modules/pathfinder/lib/ui/validate.js | 31 + .../node_modules/pathfinder/lib/ui/warning.js | 43 + .../node_modules/pathfinder/lib/ui/web-panel.js | 289 +++ .../node_modules/pathfinder/lib/userscript.js | 116 ++ .../node_modules/pathfinder/lib/userstyles.js | 72 + .../pathfinder/lib/utils/addonmanager.js | 19 + .../node_modules/pathfinder/lib/xul/browser.js | 180 ++ .../node_modules/pathfinder/lib/xul/key.js | 43 + .../node_modules/pathfinder/lib/xul/listen.js | 29 + .../node_modules/pathfinder/lib/xul/namespace.js | 3 + .../node_modules/pathfinder/lib/zip/utils.js | 13 + .../node_modules/pathfinder/package.json | 60 + .../node_modules/pathfinder/test/black.png | Bin 0 -> 2801 bytes .../node_modules/pathfinder/test/index.html | 4 + .../pathfinder/test/test-addon-folder.js | 90 + .../pathfinder/test/test-addon-warning.js | 3 + .../pathfinder/test/test-connection-request.js | 57 + .../pathfinder/test/test-content-permissions.js | 35 + .../pathfinder/test/test-content-policy.js | 155 ++ .../node_modules/pathfinder/test/test-download.js | 58 + .../pathfinder/test/test-find-suggestion.js | 3 + .../node_modules/pathfinder/test/test-listen.js | 152 ++ .../node_modules/pathfinder/test/test-menuitems.js | 169 ++ .../node_modules/pathfinder/test/test-panic.js | 103 + .../node_modules/pathfinder/test/test-redirect.js | 49 + .../pathfinder/test/test-scheme-about.js | 43 + .../pathfinder/test/test-scheme-resource.js | 3 + .../node_modules/pathfinder/test/test-storage.js | 134 ++ .../pathfinder/test/test-toolbarbutton.js | 165 ++ .../node_modules/pathfinder/test/test-unload+.js | 150 ++ .../pathfinder/test/test-userscripts.js | 8 + .../pathfinder/test/test-userstyles.css | 0 .../pathfinder/test/test-userstyles.js | 116 ++ .../node_modules/pathfinder/test/test-web-panel.js | 563 ++++++ .../node_modules/pathfinder/test/test.png | Bin 0 -> 2873 bytes .../jid1-KtlZuoiikVfFew@jetpack/options.xul | 8 - .../jid1-KtlZuoiikVfFew@jetpack/package.json | 66 + .../resources/librejs/data/README | 2 - .../resources/librejs/data/assets/css/style.css | 191 -- .../resources/librejs/data/assets/images/README | 21 - .../data/assets/images/complain-button3.png | Bin 8958 -> 0 bytes .../librejs/data/assets/images/complain.png | Bin 1206 -> 0 bytes .../librejs/data/assets/images/info-title.png | Bin 4310 -> 0 bytes .../librejs/data/assets/images/separator.png | Bin 279 -> 0 bytes .../librejs/data/assets/images/torchy2.png | Bin 273 -> 0 bytes .../librejs/data/chrome_worker/parser/jsdefs.js | 751 ------- .../librejs/data/chrome_worker/parser/jslex.js | 719 ------- .../librejs/data/chrome_worker/parser/jsparse.js | 2042 -------------------- .../librejs/data/chrome_worker/parser/parse.js | 57 - .../librejs/data/complain/contact_finder.js | 436 ----- .../librejs/data/complain/contact_regex.js | 100 - .../resources/librejs/data/complain/link_types.js | 44 - .../librejs/data/complain/pagemod_finder.js | 314 --- .../librejs/data/complain/worker_finder.js | 37 - .../librejs/data/display_panel/content/README | 21 - .../display_panel/content/background-panel.png | Bin 14814 -> 0 bytes .../data/display_panel/content/display-panel.html | 72 - .../display_panel/content/librejs-title-old.png | Bin 2673 -> 0 bytes .../data/display_panel/content/librejs-title.png | Bin 14123 -> 0 bytes .../data/display_panel/content/panel-styles.css | 190 -- .../librejs/data/display_panel/main_panel.js | 395 ---- .../librejs/data/images/gnu-icon-white.ico | Bin 4286 -> 0 bytes .../resources/librejs/data/images/gnu-icon.ico | Bin 4286 -> 0 bytes .../resources/librejs/data/images/gnu-icon.png | Bin 2667 -> 0 bytes .../resources/librejs/data/librejs-settings.html | 23 - .../resources/librejs/data/licenses/Boost-1.0.txt | 23 - .../resources/librejs/data/licenses/ISC.txt | 12 - .../resources/librejs/data/licenses/IntelACPI.txt | 116 -- .../resources/librejs/data/licenses/agpl-3.0.txt | 661 ------- .../resources/librejs/data/licenses/apache-2.0.txt | 202 -- .../librejs/data/licenses/artistic-2.0.txt | 201 -- .../librejs/data/licenses/bsd-3-clause.txt | 27 - .../resources/librejs/data/licenses/cc0.txt | 118 -- .../resources/librejs/data/licenses/clear-bsd.txt | 33 - .../resources/librejs/data/licenses/cpal-1.0.txt | 105 - .../librejs/data/licenses/create-magnets.sh | 28 - .../resources/librejs/data/licenses/epl-1.0.txt | 231 --- .../resources/librejs/data/licenses/expat.txt | 5 - .../resources/librejs/data/licenses/freebsd.txt | 25 - .../resources/librejs/data/licenses/gpl-2.0.txt | 339 ---- .../resources/librejs/data/licenses/gpl-3.0.txt | 674 ------- .../librejs/data/licenses/illinois-NCSA.txt | 24 - .../resources/librejs/data/licenses/imlib2.txt | 31 - .../resources/librejs/data/licenses/lgpl-2.0.txt | 481 ----- .../resources/librejs/data/licenses/lgpl-2.1.txt | 502 ----- .../resources/librejs/data/licenses/lgpl-3.0.txt | 165 -- .../librejs/data/licenses/magnet-links.txt | 28 - .../resources/librejs/data/licenses/mpl-2.0.txt | 373 ---- .../librejs/data/licenses/public-domain.txt | 18 - .../data/licenses/torrents/Boost-1.0.txt.torrent | 2 - .../librejs/data/licenses/torrents/ISC.txt.torrent | 1 - .../data/licenses/torrents/IntelACPI.txt.torrent | 1 - .../data/licenses/torrents/agpl-3.0.txt.torrent | 1 - .../data/licenses/torrents/apache-2.0.txt.torrent | 1 - .../licenses/torrents/artistic-2.0.txt.torrent | Bin 200 -> 0 bytes .../licenses/torrents/bsd-3-clause.txt.torrent | 1 - .../librejs/data/licenses/torrents/cc0.txt.torrent | 1 - .../data/licenses/torrents/clear-bsd.txt.torrent | 1 - .../data/licenses/torrents/cpal-1.0.txt.torrent | 1 - .../data/licenses/torrents/expat.txt.torrent | 1 - .../data/licenses/torrents/freebsd.txt.torrent | 1 - .../data/licenses/torrents/gpl-2.0.txt.torrent | 1 - .../data/licenses/torrents/gpl-3.0.txt.torrent | 1 - .../licenses/torrents/illinois-NCSA.txt.torrent | 1 - .../data/licenses/torrents/imlib2.txt.torrent | 1 - .../data/licenses/torrents/lgpl-2.0.txt.torrent | 1 - .../data/licenses/torrents/lgpl-2.1.txt.torrent | 1 - .../data/licenses/torrents/lgpl-3.0.txt.torrent | 2 - .../licenses/torrents/magnet-links.txt.torrent | Bin 200 -> 0 bytes .../data/licenses/torrents/mpl-2.0.txt.torrent | 1 - .../licenses/torrents/public-domain.txt.torrent | 1 - .../data/licenses/torrents/unlicense.txt.torrent | 1 - .../data/licenses/torrents/wtfpl.txt.torrent | 1 - .../librejs/data/licenses/torrents/x11.txt.torrent | 1 - .../data/licenses/torrents/xfree86.txt.torrent | 1 - .../resources/librejs/data/licenses/unlicense.txt | 25 - .../resources/librejs/data/licenses/wtfpl.txt | 13 - .../resources/librejs/data/licenses/x11.txt | 26 - .../resources/librejs/data/licenses/xfree86.txt | 43 - .../resources/librejs/data/loading/loader.gif | Bin 8787 -> 0 bytes .../librejs/data/loading/loading-panel.html | 31 - .../data/preferences_panel/contentscript.js | 69 - .../data/preferences_panel/preferences_panel.html | 73 - .../data/script_detector/script_detector.js | 361 ---- .../librejs/data/script_libraries/gethash.sh | 24 - .../data/script_libraries/script-libraries.json | 1567 --------------- .../data/settings/images/button-download.png | Bin 3426 -> 0 bytes .../librejs/data/settings/images/libre.png | Bin 19048 -> 0 bytes .../librejs/data/settings/images/logo-medium.png | Bin 11050 -> 0 bytes .../resources/librejs/data/settings/index.html | 108 -- .../resources/librejs/data/settings/js/form-row.js | 120 -- .../librejs/data/settings/js/form-types.js | 145 -- .../librejs/data/settings/js/pagescript-emitter.js | 14 - .../data/settings/js/pagescript-listener.js | 51 - .../data/settings/js/permafrost-info-box.js | 21 - .../librejs/data/settings/styles/form.css | 40 - .../librejs/data/settings/styles/styles.css | 129 -- .../data/settings/third-party/jquery/jquery.min.js | 4 - .../resources/librejs/data/widget/images/README | 21 - .../librejs/data/widget/images/librejs-32.png | Bin 1011 -> 0 bytes .../librejs/data/widget/images/librejs-64.png | Bin 1604 -> 0 bytes .../librejs/data/widget/images/librejs-off.png | Bin 498 -> 0 bytes .../librejs/data/widget/images/librejs.png | Bin 503 -> 0 bytes .../lib/addon_management/install_uninstall.js | 67 - .../librejs/lib/addon_management/prefchange.js | 126 -- .../librejs/lib/html_script_finder/bug_fix.js | 24 - .../librejs/lib/html_script_finder/dom_handler.js | 573 ------ .../html_script_finder/dom_handler/attributes.js | 139 -- .../html_script_finder/dom_handler/dom_checker.js | 480 ----- .../html_script_finder/dom_handler/dom_gatherer.js | 283 --- .../lib/html_script_finder/dom_handler/request.js | 117 -- .../dom_handler/script_object.js | 210 -- .../dom_handler/script_properties.js | 45 - .../librejs/lib/html_script_finder/html_parser.js | 160 -- .../lib/html_script_finder/url_seen_tester.js | 80 - .../web_labels/find_js_labels.js | 133 -- .../html_script_finder/web_labels/js_web_labels.js | 300 --- .../web_labels/script_hash_worker.js | 77 - .../librejs/lib/http_observer/allowed_referrers.js | 69 - .../resources/librejs/lib/http_observer/caching.js | 32 - .../lib/http_observer/http_request_observer.js | 148 -- .../librejs/lib/http_observer/process_response.js | 420 ---- .../librejs/lib/http_observer/stream_loader.js | 160 -- .../librejs/lib/js_checker/constant_types.js | 192 -- .../librejs/lib/js_checker/free_checker.js | 233 --- .../resources/librejs/lib/js_checker/js_checker.js | 561 ------ .../librejs/lib/js_checker/license_definitions.js | 284 --- .../librejs/lib/js_checker/nontrivial_checker.js | 376 ---- .../librejs/lib/js_checker/pattern_utils.js | 42 - .../librejs/lib/js_checker/privacy_checker.js | 46 - .../lib/js_checker/privacy_threat_definitions.js | 54 - .../librejs/lib/js_checker/relation_checker.js | 291 --- .../resources/librejs/lib/main.js | 71 - .../librejs/lib/parser/narcissus_worker.js | 81 - .../librejs/lib/pref_observer/pref_observer.js | 72 - .../librejs/lib/script_entries/accepted_scripts.js | 69 - .../librejs/lib/script_entries/all_scripts.js | 110 -- .../resources/librejs/lib/script_entries/crypto.js | 61 - .../librejs/lib/script_entries/dryrun_scripts.js | 78 - .../librejs/lib/script_entries/free_libraries.js | 67 - .../librejs/lib/script_entries/removed_scripts.js | 73 - .../librejs/lib/script_entries/scripts_cache.js | 192 -- .../resources/librejs/lib/settings/settings_tab.js | 80 - .../resources/librejs/lib/settings/storage.js | 177 -- .../resources/librejs/lib/ui.js | 188 -- .../resources/librejs/lib/ui/notification.js | 78 - .../resources/librejs/lib/ui/script_panel.js | 75 - .../resources/librejs/lib/ui/ui_info.js | 204 -- .../librejs/lib/url_handler/node_punycode.js | 510 ----- .../librejs/lib/url_handler/node_querystring.js | 213 -- .../resources/librejs/lib/url_handler/node_url.js | 691 ------- .../librejs/lib/url_handler/url_handler.js | 116 -- .../resources/menuitems/lib/menuitems.js | 195 -- .../notification-box/lib/notification-box.js | 129 -- .../resources/vold-utils/lib/unload+.js | 80 - 442 files changed, 30180 insertions(+), 23218 deletions(-) create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/COPYING create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/README create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/css/style.css create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/README create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/complain-button3.png create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/complain.png create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/info-title.png create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/separator.png create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/torchy2.png create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/chrome_worker/parser/jsdefs.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/chrome_worker/parser/jslex.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/chrome_worker/parser/jsparse.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/chrome_worker/parser/parse.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/complain/contact_finder.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/complain/contact_regex.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/complain/link_types.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/complain/pagemod_finder.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/complain/worker_finder.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/display_panel/content/README create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/display_panel/content/background-panel.png create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/display_panel/content/display-panel.html create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/display_panel/content/librejs-title-old.png create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/display_panel/content/librejs-title.png create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/display_panel/content/panel-styles.css create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/display_panel/main_panel.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/images/gnu-icon-white.ico create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/images/gnu-icon.ico create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/images/gnu-icon.png create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/librejs-settings.html create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/Boost-1.0.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/ISC.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/IntelACPI.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/agpl-3.0.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/apache-2.0.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/artistic-2.0.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/bsd-3-clause.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/cc0.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/clear-bsd.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/cpal-1.0.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/create-magnets.sh create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/epl-1.0.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/expat.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/freebsd.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/gpl-2.0.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/gpl-3.0.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/illinois-NCSA.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/imlib2.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/lgpl-2.0.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/lgpl-2.1.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/lgpl-3.0.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/magnet-links.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/mpl-2.0.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/public-domain.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/Boost-1.0.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/ISC.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/IntelACPI.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/agpl-3.0.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/apache-2.0.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/artistic-2.0.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/bsd-3-clause.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/cc0.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/clear-bsd.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/cpal-1.0.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/epl-1.0.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/expat.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/freebsd.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/gpl-2.0.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/gpl-3.0.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/illinois-NCSA.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/imlib2.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/lgpl-2.0.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/lgpl-2.1.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/lgpl-3.0.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/magnet-links.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/mpl-2.0.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/public-domain.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/unlicense.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/upl-1.0.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/wtfpl.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/x11.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/torrents/xfree86.txt.torrent create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/unlicense.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/upl-1.0.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/wtfpl.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/x11.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/licenses/xfree86.txt create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/loading/loader.gif create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/loading/loading-panel.html create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/preferences_panel/contentscript.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/preferences_panel/preferences_panel.html create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/script_detector/script_detector.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/script_libraries/gethash.sh create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/script_libraries/script-libraries.json create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/settings/images/button-download.png create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/settings/images/libre.png create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/settings/images/logo-medium.png create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/settings/index.html create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/settings/js/form-row.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/settings/js/form-types.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/settings/js/pagescript-emitter.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/settings/js/pagescript-listener.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/settings/js/permafrost-info-box.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/settings/styles/form.css create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/settings/styles/styles.css create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/settings/third-party/jquery/jquery.min.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/widget/images/README create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/widget/images/librejs-32.png create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/widget/images/librejs-64.png create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/widget/images/librejs-off.png create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/widget/images/librejs.png delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/defaults/preferences/prefs.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/harness-options.json delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/icon.png delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/icon64.png create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/addon_management/install_uninstall.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/addon_management/prefchange.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/bug_fix.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/dom_handler.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/dom_handler/attributes.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/dom_handler/dom_checker.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/dom_handler/dom_gatherer.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/dom_handler/request.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/dom_handler/script_object.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/dom_handler/script_properties.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/html_parser.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/url_seen_tester.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/web_labels/find_js_labels.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/web_labels/js_web_labels.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/web_labels/script_hash_worker.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/http_observer/allowed_referrers.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/http_observer/caching.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/http_observer/http_request_observer.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/http_observer/process_response.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/http_observer/stream_loader.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/js_checker/constant_types.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/js_checker/free_checker.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/js_checker/js_checker.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/js_checker/license_definitions.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/js_checker/nontrivial_checker.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/js_checker/pattern_utils.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/js_checker/privacy_checker.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/js_checker/privacy_threat_definitions.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/js_checker/relation_checker.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/js_load_observer/js_load_observer.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/main.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/parser/narcissus_worker.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/pref_observer/pref_observer.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/preferences/preferences.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/script_entries/accepted_scripts.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/script_entries/all_scripts.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/script_entries/crypto.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/script_entries/dryrun_scripts.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/script_entries/free_libraries.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/script_entries/removed_scripts.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/script_entries/scripts_cache.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/settings/settings.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/settings/settings_tab.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/settings/storage.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/ui.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/ui/notification.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/ui/script_panel.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/ui/ui_info.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/url_handler/node_punycode.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/url_handler/node_querystring.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/url_handler/node_url.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/url_handler/url_handler.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/locales.json create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/menuitem/.npmignore create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/menuitem/.travis.yml create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/menuitem/README.md create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/menuitem/index.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/menuitem/package.json create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/menuitem/test/test-menuitems.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/notification-box/LICENSE create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/notification-box/README.md create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/notification-box/data/gnu-icon.png create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/notification-box/doc/images/critical-notification.png create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/notification-box/doc/images/info-low-priority.png create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/notification-box/doc/main.md create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/notification-box/lib/main.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/notification-box/lib/notification-box.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/notification-box/package.json create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/notification-box/test/test-main.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/.npmignore create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/README.md create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/data/warning-mod.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/data/warning.css create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/data/warning.html create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/data/warning.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/docs/addon-warning.md create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/docs/addon.md create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/docs/addonprovider.md create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/docs/awesomebar.md create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/docs/content-policy.md create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/docs/l10n.md create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/docs/listen.md create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/docs/menuitems.md create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/docs/panic.md create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/docs/toolbarbutton.md create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/docs/unload+.md create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/docs/userscript.md create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/docs/userstyles.md create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/docs/xulkeys.md create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/examples/test/data/test.user.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/examples/test/lib/main.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/examples/test/package.json create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/addon/folder.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/addon/unload.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/aom/addon.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/aom/manager.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/aom/provider.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/application/restart.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/chrome/instances.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/chrome/net-utils.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/chrome/services.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/chrome/xpcom-utils.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/connection/events.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/connection/request.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/connection/response.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/connections.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/content/permissions.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/content/policy.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/devtools/gcli.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/download.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/l10n.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/panic.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/redirect.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/scheme/about.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/scheme/resource.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/scriptish/GM_xmlhttpRequester.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/scriptish/convert-2-regexp.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/scriptish/greasemonkey-api.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/scriptish/userscript-header-parser.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/scriptish/userscript-manager.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/scriptish/userscript-sandbox.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/storage.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/ui/awesomebar.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/ui/findbar/suggestion.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/ui/menuitems.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/ui/sidebar/actions.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/ui/sidebar/contract.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/ui/sidebar/state.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/ui/sidebar/utils.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/ui/toolbarbutton.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/ui/utils.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/ui/validate.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/ui/warning.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/ui/web-panel.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/userscript.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/userstyles.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/utils/addonmanager.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/xul/browser.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/xul/key.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/xul/listen.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/xul/namespace.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/zip/utils.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/package.json create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/black.png create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/index.html create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test-addon-folder.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test-addon-warning.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test-connection-request.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test-content-permissions.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test-content-policy.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test-download.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test-find-suggestion.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test-listen.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test-menuitems.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test-panic.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test-redirect.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test-scheme-about.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test-scheme-resource.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test-storage.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test-toolbarbutton.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test-unload+.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test-userscripts.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test-userstyles.css create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test-userstyles.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test-web-panel.js create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/test/test.png delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/options.xul create mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/package.json delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/README delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/css/style.css delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/README delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/complain-button3.png delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/complain.png delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/info-title.png delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/separator.png delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/assets/images/torchy2.png delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/chrome_worker/parser/jsdefs.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/chrome_worker/parser/jslex.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/chrome_worker/parser/jsparse.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/chrome_worker/parser/parse.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/complain/contact_finder.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/complain/contact_regex.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/complain/link_types.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/complain/pagemod_finder.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/complain/worker_finder.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/README delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/background-panel.png delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/display-panel.html delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/librejs-title-old.png delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/librejs-title.png delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/content/panel-styles.css delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/display_panel/main_panel.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/images/gnu-icon-white.ico delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/images/gnu-icon.ico delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/images/gnu-icon.png delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/librejs-settings.html delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/Boost-1.0.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/ISC.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/IntelACPI.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/agpl-3.0.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/apache-2.0.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/artistic-2.0.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/bsd-3-clause.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/cc0.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/clear-bsd.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/cpal-1.0.txt delete mode 100755 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/create-magnets.sh delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/epl-1.0.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/expat.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/freebsd.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/gpl-2.0.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/gpl-3.0.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/illinois-NCSA.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/imlib2.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/lgpl-2.0.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/lgpl-2.1.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/lgpl-3.0.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/magnet-links.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/mpl-2.0.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/public-domain.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/Boost-1.0.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/ISC.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/IntelACPI.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/agpl-3.0.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/apache-2.0.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/artistic-2.0.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/bsd-3-clause.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/cc0.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/clear-bsd.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/cpal-1.0.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/expat.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/freebsd.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/gpl-2.0.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/gpl-3.0.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/illinois-NCSA.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/imlib2.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/lgpl-2.0.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/lgpl-2.1.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/lgpl-3.0.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/magnet-links.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/mpl-2.0.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/public-domain.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/unlicense.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/wtfpl.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/x11.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/torrents/xfree86.txt.torrent delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/unlicense.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/wtfpl.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/x11.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/licenses/xfree86.txt delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/loading/loader.gif delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/loading/loading-panel.html delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/preferences_panel/contentscript.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/preferences_panel/preferences_panel.html delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/script_detector/script_detector.js delete mode 100755 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/script_libraries/gethash.sh delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/script_libraries/script-libraries.json delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/button-download.png delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/libre.png delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/images/logo-medium.png delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/index.html delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/js/form-row.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/js/form-types.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/js/pagescript-emitter.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/js/pagescript-listener.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/js/permafrost-info-box.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/styles/form.css delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/styles/styles.css delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/settings/third-party/jquery/jquery.min.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/widget/images/README delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/widget/images/librejs-32.png delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/widget/images/librejs-64.png delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/widget/images/librejs-off.png delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/data/widget/images/librejs.png delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/addon_management/install_uninstall.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/addon_management/prefchange.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/bug_fix.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/attributes.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/dom_checker.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/dom_gatherer.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/request.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/script_object.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/dom_handler/script_properties.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/html_parser.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/url_seen_tester.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/web_labels/find_js_labels.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/web_labels/js_web_labels.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/html_script_finder/web_labels/script_hash_worker.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/http_observer/allowed_referrers.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/http_observer/caching.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/http_observer/http_request_observer.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/http_observer/process_response.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/http_observer/stream_loader.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/constant_types.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/free_checker.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/js_checker.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/license_definitions.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/nontrivial_checker.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/pattern_utils.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/privacy_checker.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/privacy_threat_definitions.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/js_checker/relation_checker.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/main.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/parser/narcissus_worker.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/pref_observer/pref_observer.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/accepted_scripts.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/all_scripts.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/crypto.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/dryrun_scripts.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/free_libraries.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/removed_scripts.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/script_entries/scripts_cache.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/settings/settings_tab.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/settings/storage.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/ui.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/ui/notification.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/ui/script_panel.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/ui/ui_info.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/url_handler/node_punycode.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/url_handler/node_querystring.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/url_handler/node_url.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/url_handler/url_handler.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/menuitems/lib/menuitems.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/notification-box/lib/notification-box.js delete mode 100644 data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/vold-utils/lib/unload+.js diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/COPYING b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/COPYING new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/bootstrap.js b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/bootstrap.js index 840103a..ba3d703 100644 --- a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/bootstrap.js +++ b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/bootstrap.js @@ -1,350 +1,11 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -// @see http://mxr.mozilla.org/mozilla-central/source/js/src/xpconnect/loader/mozJSComponentLoader.cpp - -'use strict'; - -// IMPORTANT: Avoid adding any initialization tasks here, if you need to do -// something before add-on is loaded consider addon/runner module instead! - -const { classes: Cc, Constructor: CC, interfaces: Ci, utils: Cu, - results: Cr, manager: Cm } = Components; -const ioService = Cc['@mozilla.org/network/io-service;1']. - getService(Ci.nsIIOService); -const resourceHandler = ioService.getProtocolHandler('resource'). - QueryInterface(Ci.nsIResProtocolHandler); -const systemPrincipal = CC('@mozilla.org/systemprincipal;1', 'nsIPrincipal')(); -const scriptLoader = Cc['@mozilla.org/moz/jssubscript-loader;1']. - getService(Ci.mozIJSSubScriptLoader); -const prefService = Cc['@mozilla.org/preferences-service;1']. - getService(Ci.nsIPrefService). - QueryInterface(Ci.nsIPrefBranch); -const appInfo = Cc["@mozilla.org/xre/app-info;1"]. - getService(Ci.nsIXULAppInfo); -const vc = Cc["@mozilla.org/xpcom/version-comparator;1"]. - getService(Ci.nsIVersionComparator); - - -const REASON = [ 'unknown', 'startup', 'shutdown', 'enable', 'disable', - 'install', 'uninstall', 'upgrade', 'downgrade' ]; - -const bind = Function.call.bind(Function.bind); - -let loader = null; -let unload = null; -let cuddlefishSandbox = null; -let nukeTimer = null; - -let resourceDomains = []; -function setResourceSubstitution(domain, uri) { - resourceDomains.push(domain); - resourceHandler.setSubstitution(domain, uri); -} - -// Utility function that synchronously reads local resource from the given -// `uri` and returns content string. -function readURI(uri) { - let ioservice = Cc['@mozilla.org/network/io-service;1']. - getService(Ci.nsIIOService); - let channel = ioservice.newChannel(uri, 'UTF-8', null); - let stream = channel.open(); - - let cstream = Cc['@mozilla.org/intl/converter-input-stream;1']. - createInstance(Ci.nsIConverterInputStream); - cstream.init(stream, 'UTF-8', 0, 0); - - let str = {}; - let data = ''; - let read = 0; - do { - read = cstream.readString(0xffffffff, str); - data += str.value; - } while (read != 0); - - cstream.close(); - - return data; -} - -// We don't do anything on install & uninstall yet, but in a future -// we should allow add-ons to cleanup after uninstall. -function install(data, reason) {} -function uninstall(data, reason) {} - -function startup(data, reasonCode) { - try { - let reason = REASON[reasonCode]; - // URI for the root of the XPI file. - // 'jar:' URI if the addon is packed, 'file:' URI otherwise. - // (Used by l10n module in order to fetch `locale` folder) - let rootURI = data.resourceURI.spec; - - // TODO: Maybe we should perform read harness-options.json asynchronously, - // since we can't do anything until 'sessionstore-windows-restored' anyway. - let options = JSON.parse(readURI(rootURI + './harness-options.json')); - - let id = options.jetpackID; - let name = options.name; - - // Clean the metadata - options.metadata[name]['permissions'] = options.metadata[name]['permissions'] || {}; - - // freeze the permissionss - Object.freeze(options.metadata[name]['permissions']); - // freeze the metadata - Object.freeze(options.metadata[name]); - - // Register a new resource 'domain' for this addon which is mapping to - // XPI's `resources` folder. - // Generate the domain name by using jetpack ID, which is the extension ID - // by stripping common characters that doesn't work as a domain name: - let uuidRe = - /^\{([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\}$/; - - let domain = id. - toLowerCase(). - replace(/@/g, '-at-'). - replace(/\./g, '-dot-'). - replace(uuidRe, '$1'); - - let prefixURI = 'resource://' + domain + '/'; - let resourcesURI = ioService.newURI(rootURI + '/resources/', null, null); - setResourceSubstitution(domain, resourcesURI); - - // Create path to URLs mapping supported by loader. - let paths = { - // Relative modules resolve to add-on package lib - './': prefixURI + name + '/lib/', - './tests/': prefixURI + name + '/tests/', - '': 'resource://gre/modules/commonjs/' - }; - - // Maps addon lib and tests ressource folders for each package - paths = Object.keys(options.metadata).reduce(function(result, name) { - result[name + '/'] = prefixURI + name + '/lib/' - result[name + '/tests/'] = prefixURI + name + '/tests/' - return result; - }, paths); - - // We need to map tests folder when we run sdk tests whose package name - // is stripped - if (name == 'addon-sdk') - paths['tests/'] = prefixURI + name + '/tests/'; - - let useBundledSDK = options['force-use-bundled-sdk']; - if (!useBundledSDK) { - try { - useBundledSDK = prefService.getBoolPref("extensions.addon-sdk.useBundledSDK"); - } - catch (e) { - // Pref doesn't exist, allow using Firefox shipped SDK - } - } - - // Starting with Firefox 21.0a1, we start using modules shipped into firefox - // Still allow using modules from the xpi if the manifest tell us to do so. - // And only try to look for sdk modules in xpi if the xpi actually ship them - if (options['is-sdk-bundled'] && - (vc.compare(appInfo.version, '21.0a1') < 0 || useBundledSDK)) { - // Maps sdk module folders to their resource folder - paths[''] = prefixURI + 'addon-sdk/lib/'; - // test.js is usually found in root commonjs or SDK_ROOT/lib/ folder, - // so that it isn't shipped in the xpi. Keep a copy of it in sdk/ folder - // until we no longer support SDK modules in XPI: - paths['test'] = prefixURI + 'addon-sdk/lib/sdk/test.js'; - } - - // Retrieve list of module folder overloads based on preferences in order to - // eventually used a local modules instead of files shipped into Firefox. - let branch = prefService.getBranch('extensions.modules.' + id + '.path'); - paths = branch.getChildList('', {}).reduce(function (result, name) { - // Allows overloading of any sub folder by replacing . by / in pref name - let path = name.substr(1).split('.').join('/'); - // Only accept overloading folder by ensuring always ending with `/` - if (path) path += '/'; - let fileURI = branch.getCharPref(name); - - // On mobile, file URI has to end with a `/` otherwise, setSubstitution - // takes the parent folder instead. - if (fileURI[fileURI.length-1] !== '/') - fileURI += '/'; - - // Maps the given file:// URI to a resource:// in order to avoid various - // failure that happens with file:// URI and be close to production env - let resourcesURI = ioService.newURI(fileURI, null, null); - let resName = 'extensions.modules.' + domain + '.commonjs.path' + name; - setResourceSubstitution(resName, resourcesURI); - - result[path] = 'resource://' + resName + '/'; - return result; - }, paths); - - // Make version 2 of the manifest - let manifest = options.manifest; - - // Import `cuddlefish.js` module using a Sandbox and bootstrap loader. - let cuddlefishPath = 'loader/cuddlefish.js'; - let cuddlefishURI = 'resource://gre/modules/commonjs/sdk/' + cuddlefishPath; - if (paths['sdk/']) { // sdk folder has been overloaded - // (from pref, or cuddlefish is still in the xpi) - cuddlefishURI = paths['sdk/'] + cuddlefishPath; - } - else if (paths['']) { // root modules folder has been overloaded - cuddlefishURI = paths[''] + 'sdk/' + cuddlefishPath; - } - - cuddlefishSandbox = loadSandbox(cuddlefishURI); - let cuddlefish = cuddlefishSandbox.exports; - - // Normalize `options.mainPath` so that it looks like one that will come - // in a new version of linker. - let main = options.mainPath; - - unload = cuddlefish.unload; - loader = cuddlefish.Loader({ - paths: paths, - // modules manifest. - manifest: manifest, - - // Add-on ID used by different APIs as a unique identifier. - id: id, - // Add-on name. - name: name, - // Add-on version. - version: options.metadata[name].version, - // Add-on package descriptor. - metadata: options.metadata[name], - // Add-on load reason. - loadReason: reason, - - prefixURI: prefixURI, - // Add-on URI. - rootURI: rootURI, - // options used by system module. - // File to write 'OK' or 'FAIL' (exit code emulation). - resultFile: options.resultFile, - // Arguments passed as --static-args - staticArgs: options.staticArgs, - // Add-on preferences branch name - preferencesBranch: options.preferencesBranch, - - // Arguments related to test runner. - modules: { - '@test/options': { - allTestModules: options.allTestModules, - iterations: options.iterations, - filter: options.filter, - profileMemory: options.profileMemory, - stopOnError: options.stopOnError, - verbose: options.verbose, - parseable: options.parseable, - checkMemory: options.check_memory, - } - } - }); - - let module = cuddlefish.Module('sdk/loader/cuddlefish', cuddlefishURI); - let require = cuddlefish.Require(loader, module); - - require('sdk/addon/runner').startup(reason, { - loader: loader, - main: main, - prefsURI: rootURI + 'defaults/preferences/prefs.js' - }); - } catch (error) { - dump('Bootstrap error: ' + - (error.message ? error.message : String(error)) + '\n' + - (error.stack || error.fileName + ': ' + error.lineNumber) + '\n'); - throw error; - } -}; - -function loadSandbox(uri) { - let proto = { - sandboxPrototype: { - loadSandbox: loadSandbox, - ChromeWorker: ChromeWorker - } - }; - let sandbox = Cu.Sandbox(systemPrincipal, proto); - // Create a fake commonjs environnement just to enable loading loader.js - // correctly - sandbox.exports = {}; - sandbox.module = { uri: uri, exports: sandbox.exports }; - sandbox.require = function (id) { - if (id !== "chrome") - throw new Error("Bootstrap sandbox `require` method isn't implemented."); - - return Object.freeze({ Cc: Cc, Ci: Ci, Cu: Cu, Cr: Cr, Cm: Cm, - CC: bind(CC, Components), components: Components, - ChromeWorker: ChromeWorker }); - }; - scriptLoader.loadSubScript(uri, sandbox, 'UTF-8'); - return sandbox; -} - -function unloadSandbox(sandbox) { - if ("nukeSandbox" in Cu) - Cu.nukeSandbox(sandbox); -} - -function setTimeout(callback, delay) { - let timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); - timer.initWithCallback({ notify: callback }, delay, - Ci.nsITimer.TYPE_ONE_SHOT); - return timer; -} - -function shutdown(data, reasonCode) { - let reason = REASON[reasonCode]; - if (loader) { - unload(loader, reason); - unload = null; - - // Don't waste time cleaning up if the application is shutting down - if (reason != "shutdown") { - // Avoid leaking all modules when something goes wrong with one particular - // module. Do not clean it up immediatly in order to allow executing some - // actions on addon disabling. - // We need to keep a reference to the timer, otherwise it is collected - // and won't ever fire. - nukeTimer = setTimeout(nukeModules, 1000); - - // Bug 944951 - bootstrap.js must remove the added resource: URIs on unload - resourceDomains.forEach(domain => { - resourceHandler.setSubstitution(domain, null); - }) - } - } -}; - -function nukeModules() { - nukeTimer = null; - // module objects store `exports` which comes from sandboxes - // We should avoid keeping link to these object to avoid leaking sandboxes - for (let key in loader.modules) { - delete loader.modules[key]; - } - // Direct links to sandboxes should be removed too - for (let key in loader.sandboxes) { - let sandbox = loader.sandboxes[key]; - delete loader.sandboxes[key]; - // Bug 775067: From FF17 we can kill all CCW from a given sandbox - unloadSandbox(sandbox); - } - loader = null; - - // both `toolkit/loader` and `system/xul-app` are loaded as JSM's via - // `cuddlefish.js`, and needs to be unloaded to avoid memory leaks, when - // the addon is unload. - - unloadSandbox(cuddlefishSandbox.loaderSandbox); - unloadSandbox(cuddlefishSandbox.xulappSandbox); - - // Bug 764840: We need to unload cuddlefish otherwise it will stay alive - // and keep a reference to this compartment. - unloadSandbox(cuddlefishSandbox); - cuddlefishSandbox = null; -} +"use strict"; + +const { utils: Cu } = Components; +const rootURI = __SCRIPT_URI_SPEC__.replace("bootstrap.js", ""); +const COMMONJS_URI = "resource://gre/modules/commonjs"; +const { require } = Cu.import(COMMONJS_URI + "/toolkit/require.js", {}); +const { Bootstrap } = require(COMMONJS_URI + "/sdk/addon/bootstrap.js"); +var { startup, shutdown, install, uninstall } = new Bootstrap(rootURI); diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/README b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/README new file mode 100644 index 0000000..6633b5e --- /dev/null +++ b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/README @@ -0,0 +1,2 @@ +The stylesheets, HTML files, and images provided in this folder and +its subfolders are released under the GPL version 3 or later. \ No newline at end of file diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/css/style.css b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/css/style.css new file mode 100644 index 0000000..ac93c1b --- /dev/null +++ b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/css/style.css @@ -0,0 +1,191 @@ +/** + * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. + * * + * Copyright (C) 2011, 2012, 2014 Loic J. Duros + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + + + +*/ +/* quick reset for box and children */ +#librejs-complaint-box, +#librejs-complaint-box *, +#librejs-complaint-box a:hover, +#librejs-complaint-box a:active, +#librejs-complaint-box a:visited, +#librejs-time-mention, +#librejs-time-mention:hover { + margin:0; + padding:0; + line-height:1; + list-style:square; + color:#000; + text-align:left; + border:0; + content: ''; + font-style:normal; + font-weight:normal; + font-size:12px; + text-decoration:none; + font-variant:normal; + font-family: sans-serif !important; + text-shadow: none !important; + text-transform: none; + background-image:none; + background-color:transparent; +} + +#librejs-time-mention, #librejs-time-mention:hover { + font-size:14px; + font-weight:bold; + text-align:center; +} + +#librejs-complaint-box, #librejs-complaint-box * { + box-sizing: content-box; + width: auto; +} + +div { + width:auto; +} + +#librejs-tab-button { + cursor: pointer; + opacity: 0.6; + display: block; + width: 18px; + + padding-top: 16px; + padding-bottom: 16px; + padding-left: 20px; + + background-color: #e3dedb !important; + border: solid #454545 1px !important; + border-right:none !important; + overflow: hidden; + border-top-left-radius:20px !important; + border-bottom-left-radius:20px !important; + float:left; + z-index:50; + position: relative; + + top: 40px; +} + +#librejs-tab-button:hover { + opacity: 1; +} + +#librejs-tab-button .librejs-complain-button { + height: 93px; + width: 20px; + margin-left: -10px; + background-image: url('../images/complain.png'); + background-repeat: no-repeat; +} + +#librejs-tab-button .librejs-complain-separator { + width: 18px; + height: 88px; + position: absolute; + top: 36px; + left: 46px; + background-image: url("../images/separator.png") !important; + background-repeat: no-repeat !important; +} + +#librejs-complaint-box { + position: fixed; + z-index: 2147483647 !important; /* fix for tech crunch big number */ + right: -465px; + display: none; +} + +#librejs-complaint-info { + border: solid #454545 1px; + background-color:#e3dedb !important; + width:460px !important; + border-top-left-radius: 10px; + z-index:0; + text-align:center; + position: relative; + margin-left: 38px !important; + margin-top: 40px; +} + +#librejs-complaint-info .librejs-hide-button { + cursor: pointer; + font-size: 24px; + float: left; + margin-top: 6px; + margin-left: 8px; +} + +#librejs-complaint-info .librejs-hide-button:hover { + font-weight: bold; +} + +#librejs-complaint-info:hover { + background-color:#e3dedb !important; +} + +#librejs-complaint-info-text { + overflow: auto; + height: auto; + padding: 0 30px; +} + +#librejs-complaint-info h1 { + z-index:1; + font:"Century Schoolbook"; + font-size:25px; + text-align:center; + background:url('../images/info-title.png') no-repeat 50% 30px !important; + overflow: hidden; + text-indent:-3000em; + height:100px; + padding: 20px; + margin:0 !important; + line-height:0 !important; + display:block !important; + clear:none !important; + width:auto !important; +} + +#librejs-complaint-info h1 span.huge { + display:block; + font-size:35px; + font-weight:bold; +} + +#librejs-complaint-info h2 { + font-weight:bold !important; + font-size:14px !important; + margin:20px 0 10px !important; + display:none; + border-top:1px solid #CCC; + padding:10px 0 10px; + text-shadow: 0 1px 0 #FFF !important; +} + +#librejs-complaint-info ul { + margin-left: 15px; +} + +#librejs-complaint-info ul li a { + font-size: 14px !important; +} \ No newline at end of file diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/README b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/README new file mode 100644 index 0000000..e442861 --- /dev/null +++ b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/README @@ -0,0 +1,21 @@ +/** + * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. + * * + * Copyright (C) 2011, 2012 Loic J. Duros + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +All images in this directory are free, released under the GPLv3 or later. \ No newline at end of file diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/complain-button3.png b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/complain-button3.png new file mode 100644 index 0000000..5e3b4e3 Binary files /dev/null and b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/complain-button3.png differ diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/complain.png b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/complain.png new file mode 100644 index 0000000..ca0cf27 Binary files /dev/null and b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/complain.png differ diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/info-title.png b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/info-title.png new file mode 100644 index 0000000..02ebbfa Binary files /dev/null and b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/info-title.png differ diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/separator.png b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/separator.png new file mode 100644 index 0000000..7eedd12 Binary files /dev/null and b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/separator.png differ diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/torchy2.png b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/torchy2.png new file mode 100644 index 0000000..60da8fc Binary files /dev/null and b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/assets/images/torchy2.png differ diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/chrome_worker/parser/jsdefs.js b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/chrome_worker/parser/jsdefs.js new file mode 100644 index 0000000..aff5c08 --- /dev/null +++ b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/chrome_worker/parser/jsdefs.js @@ -0,0 +1,751 @@ +/* vim: set sw=4 ts=4 et tw=78: */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the Narcissus JavaScript engine. + * + * The Initial Developer of the Original Code is + * Brendan Eich . + * Portions created by the Initial Developer are Copyright (C) 2004 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Tom Austin + * Brendan Eich + * Shu-Yu Guo + * Dave Herman + * Dimitris Vardoulakis + * Patrick Walton + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +/* + * Narcissus - JS implemented in JS. + * + * Well-known constants and lookup tables. Many consts are generated from the + * tokens table via eval to minimize redundancy, so consumers must be compiled + * separately to take advantage of the simple switch-case constant propagation + * done by SpiderMonkey. + */ +/** + * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. + * * + * Copyright (C) 2011, 2012, 2014 Loic J. Duros + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +//"use scrict"; + +var Narcissus = {}; +(function() { + + var narcissus = { + options: { + version: 185, + // Global variables to hide from the interpreter + hiddenHostGlobals: { Narcissus: true }, + // Desugar SpiderMonkey language extensions? + desugarExtensions: false + }, + hostSupportsEvalConst: (function() { + try { + return eval("(function(s) { eval(s); return x })('const x = true;')"); + } catch (e) { + return false; + } + })(), + hostGlobal: this + }; + Narcissus = narcissus; +})(); + +Narcissus.definitions = (function() { + + var tokens = [ + // End of source. + "END", + + // Operators and punctuators. Some pair-wise order matters, e.g. (+, -) + // and (UNARY_PLUS, UNARY_MINUS). + "\n", ";", + ",", + "=", + "?", ":", "CONDITIONAL", + "||", + "&&", + "|", + "^", + "&", + "==", "!=", "===", "!==", + "<", "<=", ">=", ">", + "<<", ">>", ">>>", + "+", "-", + "*", "/", "%", + "!", "~", "UNARY_PLUS", "UNARY_MINUS", + "++", "--", + ".", + "[", "]", + "{", "}", + "(", ")", + + // Nonterminal tree node type codes. + "SCRIPT", "BLOCK", "LABEL", "FOR_IN", "CALL", "NEW_WITH_ARGS", "INDEX", + "ARRAY_INIT", "OBJECT_INIT", "PROPERTY_INIT", "GETTER", "SETTER", + "GROUP", "LIST", "LET_BLOCK", "ARRAY_COMP", "GENERATOR", "COMP_TAIL", + + // Terminals. + "IDENTIFIER", "NUMBER", "STRING", "REGEXP", + + // Keywords. + "break", + "case", "catch", "const", "continue", + "debugger", "default", "delete", "do", + "else", "export", + "false", "finally", "for", "function", + "if", "import", "in", "instanceof", + "let", "module", + "new", "null", + "return", + "switch", + "this", "throw", "true", "try", "typeof", + "var", "void", + "yield", + "while", "with", + ]; + + var statementStartTokens = [ + "break", + "const", "continue", + "debugger", "do", + "for", + "if", + "return", + "switch", + "throw", "try", + "var", + "yield", + "while", "with", + ]; + + // Whitespace characters (see ECMA-262 7.2) + var whitespaceChars = [ + // normal whitespace: + "\u0009", "\u000B", "\u000C", "\u0020", "\u00A0", "\uFEFF", + + // high-Unicode whitespace: + "\u1680", "\u180E", + "\u2000", "\u2001", "\u2002", "\u2003", "\u2004", "\u2005", "\u2006", + "\u2007", "\u2008", "\u2009", "\u200A", + "\u202F", "\u205F", "\u3000" + ]; + + var whitespace = {}; + for (var i = 0; i < whitespaceChars.length; i++) { + whitespace[whitespaceChars[i]] = true; + } + + // Operator and punctuator mapping from token to tree node type name. + // NB: because the lexer doesn't backtrack, all token prefixes must themselves + // be valid tokens (e.g. !== is acceptable because its prefixes are the valid + // tokens != and !). + var opTypeNames = { + '\n': "NEWLINE", + ';': "SEMICOLON", + ',': "COMMA", + '?': "HOOK", + ':': "COLON", + '||': "OR", + '&&': "AND", + '|': "BITWISE_OR", + '^': "BITWISE_XOR", + '&': "BITWISE_AND", + '===': "STRICT_EQ", + '==': "EQ", + '=': "ASSIGN", + '!==': "STRICT_NE", + '!=': "NE", + '<<': "LSH", + '<=': "LE", + '<': "LT", + '>>>': "URSH", + '>>': "RSH", + '>=': "GE", + '>': "GT", + '++': "INCREMENT", + '--': "DECREMENT", + '+': "PLUS", + '-': "MINUS", + '*': "MUL", + '/': "DIV", + '%': "MOD", + '!': "NOT", + '~': "BITWISE_NOT", + '.': "DOT", + '[': "LEFT_BRACKET", + ']': "RIGHT_BRACKET", + '{': "LEFT_CURLY", + '}': "RIGHT_CURLY", + '(': "LEFT_PAREN", + ')': "RIGHT_PAREN" + }; + + // Hash of keyword identifier to tokens index. NB: we must null __proto__ to + // avoid toString, etc. namespace pollution. + var keywords = {__proto__: null}; + + // Define const END, etc., based on the token names. Also map name to index. + var tokenIds = {}; + + // Building up a string to be eval'd in different contexts. + var consts = Narcissus.hostSupportsEvalConst ? "const " : "var "; + for (var i = 0, j = tokens.length; i < j; i++) { + if (i > 0) + consts += ", "; + var t = tokens[i]; + var name; + if (/^[a-z]/.test(t)) { + name = t.toUpperCase(); + keywords[t] = i; + } else { + name = (/^\W/.test(t) ? opTypeNames[t] : t); + } + consts += name + " = " + i; + tokenIds[name] = i; + tokens[t] = i; + } + consts += ";"; + + var isStatementStartCode = {__proto__: null}; + for (i = 0, j = statementStartTokens.length; i < j; i++) + isStatementStartCode[keywords[statementStartTokens[i]]] = true; + + // Map assignment operators to their indexes in the tokens array. + var assignOps = ['|', '^', '&', '<<', '>>', '>>>', '+', '-', '*', '/', '%']; + + for (i = 0, j = assignOps.length; i < j; i++) { + t = assignOps[i]; + assignOps[t] = tokens[t]; + } + + function defineGetter(obj, prop, fn, dontDelete, dontEnum) { + Object.defineProperty(obj, prop, + { get: fn, configurable: !dontDelete, enumerable: !dontEnum }); + } + + function defineGetterSetter(obj, prop, getter, setter, dontDelete, dontEnum) { + Object.defineProperty(obj, prop, { + get: getter, + set: setter, + configurable: !dontDelete, + enumerable: !dontEnum + }); + } + + function defineMemoGetter(obj, prop, fn, dontDelete, dontEnum) { + Object.defineProperty(obj, prop, { + get: function() { + var val = fn(); + defineProperty(obj, prop, val, dontDelete, true, dontEnum); + return val; + }, + configurable: true, + enumerable: !dontEnum + }); + } + + function defineProperty(obj, prop, val, dontDelete, readOnly, dontEnum) { + Object.defineProperty(obj, prop, + { value: val, writable: !readOnly, configurable: !dontDelete, + enumerable: !dontEnum }); + } + + // Returns true if fn is a native function. (Note: SpiderMonkey specific.) + function isNativeCode(fn) { + // Relies on the toString method to identify native code. + return ((typeof fn) === "function") && fn.toString().match(/\[native code\]/); + } + + var Fpapply = Function.prototype.apply; + + function apply(f, o, a) { + return Fpapply.call(f, [o].concat(a)); + } + + var applyNew; + + // ES5's bind is a simpler way to implement applyNew + if (Function.prototype.bind) { + applyNew = function applyNew(f, a) { + return new (f.bind.apply(f, [,].concat(a)))(); + }; + } else { + applyNew = function applyNew(f, a) { + switch (a.length) { + case 0: + return new f(); + case 1: + return new f(a[0]); + case 2: + return new f(a[0], a[1]); + case 3: + return new f(a[0], a[1], a[2]); + default: + var argStr = "a[0]"; + for (var i = 1, n = a.length; i < n; i++) + argStr += ",a[" + i + "]"; + return eval("new f(" + argStr + ")"); + } + }; + } + + function getPropertyDescriptor(obj, name) { + while (obj) { + if (({}).hasOwnProperty.call(obj, name)) + return Object.getOwnPropertyDescriptor(obj, name); + obj = Object.getPrototypeOf(obj); + } + return undefined; + } + + function getPropertyNames(obj) { + var table = Object.create(null, {}); + while (obj) { + var names = Object.getOwnPropertyNames(obj); + for (var i = 0, n = names.length; i < n; i++) + table[names[i]] = true; + obj = Object.getPrototypeOf(obj); + } + return Object.keys(table); + } + + function getOwnProperties(obj) { + var map = {}; + for (var name in Object.getOwnPropertyNames(obj)) + map[name] = Object.getOwnPropertyDescriptor(obj, name); + return map; + } + + function blacklistHandler(target, blacklist) { + var mask = Object.create(null, {}); + var redirect = StringMap.create(blacklist).mapObject(function(name) { return mask; }); + return mixinHandler(redirect, target); + } + + function whitelistHandler(target, whitelist) { + var catchall = Object.create(null, {}); + var redirect = StringMap.create(whitelist).mapObject(function(name) { return target; }); + return mixinHandler(redirect, catchall); + } + + function mirrorHandler(target, writable) { + var handler = makePassthruHandler(target); + + var defineProperty = handler.defineProperty; + handler.defineProperty = function(name, desc) { + if (!desc.enumerable) + throw new Error("mirror property must be enumerable"); + if (!desc.configurable) + throw new Error("mirror property must be configurable"); + if (desc.writable !== writable) + throw new Error("mirror property must " + (writable ? "" : "not ") + "be writable"); + defineProperty(name, desc); + }; + + handler.fix = function() { }; + handler.getOwnPropertyDescriptor = handler.getPropertyDescriptor; + handler.getOwnPropertyNames = getPropertyNames.bind(handler, target); + handler.keys = handler.enumerate; + handler["delete"] = function() { return false; }; + handler.hasOwn = handler.has; + return handler; + } + + /* + * Mixin proxies break the single-inheritance model of prototypes, so + * the handler treats all properties as own-properties: + * + * X + * | + * +------------+------------+ + * | O | + * | | | + * | O O O | + * | | | | | + * | O O O O | + * | | | | | | + * | O O O O O | + * | | | | | | | + * +-(*)--(w)--(x)--(y)--(z)-+ + */ + + function mixinHandler(redirect, catchall) { + function targetFor(name) { + return hasOwn(redirect, name) ? redirect[name] : catchall; + } + + function getMuxPropertyDescriptor(name) { + var desc = getPropertyDescriptor(targetFor(name), name); + if (desc) + desc.configurable = true; + return desc; + } + + function getMuxPropertyNames() { + var names1 = Object.getOwnPropertyNames(redirect).filter(function(name) { + return name in redirect[name]; + }); + var names2 = getPropertyNames(catchall).filter(function(name) { + return !hasOwn(redirect, name); + }); + return names1.concat(names2); + } + + function enumerateMux() { + var result = Object.getOwnPropertyNames(redirect).filter(function(name) { + return name in redirect[name]; + }); + for (name in catchall) { + if (!hasOwn(redirect, name)) + result.push(name); + }; + return result; + } + + function hasMux(name) { + return name in targetFor(name); + } + + return { + getOwnPropertyDescriptor: getMuxPropertyDescriptor, + getPropertyDescriptor: getMuxPropertyDescriptor, + getOwnPropertyNames: getMuxPropertyNames, + defineProperty: function(name, desc) { + Object.defineProperty(targetFor(name), name, desc); + }, + "delete": function(name) { + var target = targetFor(name); + return delete target[name]; + }, + // FIXME: ha ha ha + fix: function() { }, + has: hasMux, + hasOwn: hasMux, + get: function(receiver, name) { + var target = targetFor(name); + return target[name]; + }, + set: function(receiver, name, val) { + var target = targetFor(name); + target[name] = val; + return true; + }, + enumerate: enumerateMux, + keys: enumerateMux + }; + } + + function makePassthruHandler(obj) { + // Handler copied from + // http://wiki.ecmascript.org/doku.php?id=harmony:proxies&s=proxy%20object#examplea_no-op_forwarding_proxy + return { + getOwnPropertyDescriptor: function(name) { + var desc = Object.getOwnPropertyDescriptor(obj, name); + + // a trapping proxy's properties must always be configurable + desc.configurable = true; + return desc; + }, + getPropertyDescriptor: function(name) { + var desc = getPropertyDescriptor(obj, name); + + // a trapping proxy's properties must always be configurable + desc.configurable = true; + return desc; + }, + getOwnPropertyNames: function() { + return Object.getOwnPropertyNames(obj); + }, + defineProperty: function(name, desc) { + Object.defineProperty(obj, name, desc); + }, + "delete": function(name) { return delete obj[name]; }, + fix: function() { + if (Object.isFrozen(obj)) { + return getOwnProperties(obj); + } + + // As long as obj is not frozen, the proxy won't allow itself to be fixed. + return undefined; // will cause a TypeError to be thrown + }, + + has: function(name) { return name in obj; }, + hasOwn: function(name) { return ({}).hasOwnProperty.call(obj, name); }, + get: function(receiver, name) { return obj[name]; }, + + // bad behavior when set fails in non-strict mode + set: function(receiver, name, val) { obj[name] = val; return true; }, + enumerate: function() { + var result = []; + for (name in obj) { result.push(name); }; + return result; + }, + keys: function() { return Object.keys(obj); } + }; + } + + var hasOwnProperty = ({}).hasOwnProperty; + + function hasOwn(obj, name) { + return hasOwnProperty.call(obj, name); + } + + function StringMap(table, size) { + this.table = table || Object.create(null, {}); + this.size = size || 0; + } + + StringMap.create = function(table) { + var init = Object.create(null, {}); + var size = 0; + var names = Object.getOwnPropertyNames(table); + for (var i = 0, n = names.length; i < n; i++) { + var name = names[i]; + init[name] = table[name]; + size++; + } + return new StringMap(init, size); + }; + + StringMap.prototype = { + has: function(x) { return hasOwnProperty.call(this.table, x); }, + set: function(x, v) { + if (!hasOwnProperty.call(this.table, x)) + this.size++; + this.table[x] = v; + }, + get: function(x) { return this.table[x]; }, + getDef: function(x, thunk) { + if (!hasOwnProperty.call(this.table, x)) { + this.size++; + this.table[x] = thunk(); + } + return this.table[x]; + }, + forEach: function(f) { + var table = this.table; + for (var key in table) + f.call(this, key, table[key]); + }, + map: function(f) { + var table1 = this.table; + var table2 = Object.create(null, {}); + this.forEach(function(key, val) { + table2[key] = f.call(this, val, key); + }); + return new StringMap(table2, this.size); + }, + mapObject: function(f) { + var table1 = this.table; + var table2 = Object.create(null, {}); + this.forEach(function(key, val) { + table2[key] = f.call(this, val, key); + }); + return table2; + }, + toObject: function() { + return this.mapObject(function(val) { return val; }); + }, + choose: function() { + return Object.getOwnPropertyNames(this.table)[0]; + }, + remove: function(x) { + if (hasOwnProperty.call(this.table, x)) { + this.size--; + delete this.table[x]; + } + }, + copy: function() { + var table = Object.create(null, {}); + for (var key in this.table) + table[key] = this.table[key]; + return new StringMap(table, this.size); + }, + keys: function() { + return Object.keys(this.table); + }, + toString: function() { return "[object StringMap]" } + }; + + // an object-key table with poor asymptotics (replace with WeakMap when possible) + function ObjectMap(array) { + this.array = array || []; + } + + function searchMap(map, key, found, notFound) { + var a = map.array; + for (var i = 0, n = a.length; i < n; i++) { + var pair = a[i]; + if (pair.key === key) + return found(pair, i); + } + return notFound(); + } + + ObjectMap.prototype = { + has: function(x) { + return searchMap(this, x, function() { return true }, function() { return false }); + }, + set: function(x, v) { + var a = this.array; + searchMap(this, x, + function(pair) { pair.value = v }, + function() { a.push({ key: x, value: v }) }); + }, + get: function(x) { + return searchMap(this, x, + function(pair) { return pair.value }, + function() { return null }); + }, + getDef: function(x, thunk) { + var a = this.array; + return searchMap(this, x, + function(pair) { return pair.value }, + function() { + var v = thunk(); + a.push({ key: x, value: v }); + return v; + }); + }, + forEach: function(f) { + var a = this.array; + for (var i = 0, n = a.length; i < n; i++) { + var pair = a[i]; + f.call(this, pair.key, pair.value); + } + }, + choose: function() { + return this.array[0].key; + }, + get size() { + return this.array.length; + }, + remove: function(x) { + var a = this.array; + searchMap(this, x, + function(pair, i) { a.splice(i, 1) }, + function() { }); + }, + copy: function() { + return new ObjectMap(this.array.map(function(pair) { + return { key: pair.key, value: pair.value } + })); + }, + clear: function() { + this.array = []; + }, + toString: function() { return "[object ObjectMap]" } + }; + + // non-destructive stack + function Stack(elts) { + this.elts = elts || null; + } + + Stack.prototype = { + push: function(x) { + return new Stack({ top: x, rest: this.elts }); + }, + top: function() { + if (!this.elts) + throw new Error("empty stack"); + return this.elts.top; + }, + isEmpty: function() { + return this.top === null; + }, + find: function(test) { + for (var elts = this.elts; elts; elts = elts.rest) { + if (test(elts.top)) + return elts.top; + } + return null; + }, + has: function(x) { + return Boolean(this.find(function(elt) { return elt === x })); + }, + forEach: function(f) { + for (var elts = this.elts; elts; elts = elts.rest) { + f(elts.top); + } + } + }; + + if (!Array.prototype.copy) { + Array.prototype.copy = function() { + var result = []; + for (var i = 0, n = this.length; i < n; i++) + result[i] = this[i]; + return result; + }; + } + + return { + tokens: tokens, + whitespace: whitespace, + opTypeNames: opTypeNames, + keywords: keywords, + isStatementStartCode: isStatementStartCode, + tokenIds: tokenIds, + consts: consts, + assignOps: assignOps, + defineGetter: defineGetter, + defineGetterSetter: defineGetterSetter, + defineMemoGetter: defineMemoGetter, + defineProperty: defineProperty, + isNativeCode: isNativeCode, + apply: apply, + applyNew: applyNew, + mirrorHandler: mirrorHandler, + mixinHandler: mixinHandler, + whitelistHandler: whitelistHandler, + blacklistHandler: blacklistHandler, + makePassthruHandler: makePassthruHandler, + StringMap: StringMap, + ObjectMap: ObjectMap, + Stack: Stack + }; +}()); diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/chrome_worker/parser/jslex.js b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/chrome_worker/parser/jslex.js new file mode 100644 index 0000000..c5c2673 --- /dev/null +++ b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/chrome_worker/parser/jslex.js @@ -0,0 +1,719 @@ +/* vim: set sw=4 ts=4 et tw=78: */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the Narcissus JavaScript engine. + * + * The Initial Developer of the Original Code is + * Brendan Eich . + * Portions created by the Initial Developer are Copyright (C) 2004 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Tom Austin + * Brendan Eich + * Shu-Yu Guo + * Stephan Herhut + * Dave Herman + * Dimitris Vardoulakis + * Patrick Walton + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ +/** + * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. + * * + * Copyright (C) 2011, 2012, 2014 Loic J. Duros + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +/* + * Narcissus - JS implemented in JS. + * + * Lexical scanner. + */ + +"use strict"; + +Narcissus.lexer = (function() { + + var definitions = Narcissus.definitions; + + //throw Error (definitions.consts); + + // Set constants in the local scope. + //eval(definitions.consts); + const END = 0, + NEWLINE = 1, + SEMICOLON = 2, + COMMA = 3, + ASSIGN = 4, + HOOK = 5, + COLON = 6, + CONDITIONAL = 7, + OR = 8, + AND = 9, + BITWISE_OR = 10, + BITWISE_XOR = 11, + BITWISE_AND = 12, + EQ = 13, + NE = 14, + STRICT_EQ = 15, + STRICT_NE = 16, + LT = 17, + LE = 18, + GE = 19, + GT = 20, + LSH = 21, + RSH = 22, + URSH = 23, + PLUS = 24, + MINUS = 25, + MUL = 26, + DIV = 27, + MOD = 28, + NOT = 29, + BITWISE_NOT = 30, + UNARY_PLUS = 31, + UNARY_MINUS = 32, + INCREMENT = 33, + DECREMENT = 34, + DOT = 35, + LEFT_BRACKET = 36, + RIGHT_BRACKET = 37, + LEFT_CURLY = 38, + RIGHT_CURLY = 39, + LEFT_PAREN = 40, + RIGHT_PAREN = 41, + SCRIPT = 42, + BLOCK = 43, + LABEL = 44, + FOR_IN = 45, + CALL = 46, + NEW_WITH_ARGS = 47, + INDEX = 48, + ARRAY_INIT = 49, + OBJECT_INIT = 50, + PROPERTY_INIT = 51, + GETTER = 52, + SETTER = 53, + GROUP = 54, + LIST = 55, + LET_BLOCK = 56, + ARRAY_COMP = 57, + GENERATOR = 58, + COMP_TAIL = 59, + IDENTIFIER = 60, + NUMBER = 61, + STRING = 62, + REGEXP = 63, + BREAK = 64, + CASE = 65, + CATCH = 66, + CONST = 67, + CONTINUE = 68, + DEBUGGER = 69, + DEFAULT = 70, + DELETE = 71, + DO = 72, + ELSE = 73, + EXPORT = 74, + FALSE = 75, + FINALLY = 76, + FOR = 77, + FUNCTION = 78, + IF = 79, + IMPORT = 80, + IN = 81, + INSTANCEOF = 82, + LET = 83, + MODULE = 84, + NEW = 85, + NULL = 86, + RETURN = 87, + SWITCH = 88, + THIS = 89, + THROW = 90, + TRUE = 91, + TRY = 92, + TYPEOF = 93, + VAR = 94, + VOID = 95, + YIELD = 96, + WHILE = 97, + WITH = 98; + + // Banned keywords by language version + const blackLists = { 160: {}, 185: {}, harmony: {} }; +/* blackLists[160][LET] = true; + blackLists[160][MODULE] = true; + blackLists[160][YIELD] = true; + blackLists[185][MODULE] = true; +*/ + // Build up a trie of operator tokens. + var opTokens = {}; + for (var op in definitions.opTypeNames) { + if (op === '\n' || op === '.') + continue; + + var node = opTokens; + for (var i = 0; i < op.length; i++) { + var ch = op[i]; + if (!(ch in node)) + node[ch] = {}; + node = node[ch]; + node.op = op; + } + } + + /* + * Since JavaScript provides no convenient way to determine if a + * character is in a particular Unicode category, we use + * metacircularity to accomplish this (oh yeaaaah!) + */ + function isValidIdentifierChar(ch, first) { + // check directly for ASCII + if (ch <= "\u007F") { + if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || ch === '$' || ch === '_' || + (!first && (ch >= '0' && ch <= '9'))) { + return true; + } + return false; + } + + // create an object to test this in + var x = {}; + x["x"+ch] = true; + x[ch] = true; + + // then use eval to determine if it's a valid character + var valid = false; + try { + valid = (Function("x", "return (x." + (first?"":"x") + ch + ");")(x) === true); + } catch (ex) {} + + return valid; + } + + function isIdentifier(str) { + if (typeof str !== "string") + return false; + + if (str.length === 0) + return false; + + if (!isValidIdentifierChar(str[0], true)) + return false; + + for (var i = 1; i < str.length; i++) { + if (!isValidIdentifierChar(str[i], false)) + return false; + } + + return true; + } + + /* + * Tokenizer :: (source, filename, line number) -> Tokenizer + */ + function Tokenizer(s, f, l) { + this.cursor = 0; + this.source = String(s); + this.tokens = []; + this.tokenIndex = 0; + this.lookahead = 0; + this.scanNewlines = false; + this.unexpectedEOF = false; + this.filename = f || ""; + this.lineno = l || 1; + this.blackList = blackLists[Narcissus.options.version]; + this.blockComments = null; + } + + Tokenizer.prototype = { + get done() { + // We need to set scanOperand to true here because the first thing + // might be a regexp. + return this.peek(true) === END; + }, + + get token() { + return this.tokens[this.tokenIndex]; + }, + + match: function (tt, scanOperand) { + return this.get(scanOperand) === tt || this.unget(); + }, + + mustMatch: function (tt) { + if (!this.match(tt)) { + throw this.newSyntaxError("Missing " + + definitions.tokens[tt].toLowerCase()); + } + return this.token; + }, + + peek: function (scanOperand) { + var tt, next; + if (this.lookahead) { + next = this.tokens[(this.tokenIndex + this.lookahead) & 3]; + tt = (this.scanNewlines && next.lineno !== this.lineno) + ? NEWLINE + : next.type; + } else { + tt = this.get(scanOperand); + this.unget(); + } + return tt; + }, + + peekOnSameLine: function (scanOperand) { + this.scanNewlines = true; + var tt = this.peek(scanOperand); + this.scanNewlines = false; + return tt; + }, + + lastBlockComment: function() { + var length = this.blockComments.length; + return length ? this.blockComments[length - 1] : null; + }, + + // Eat comments and whitespace. + skip: function () { + var input = this.source; + this.blockComments = []; + for (;;) { + var ch = input[this.cursor++]; + var next = input[this.cursor]; + // handle \r, \r\n and (always preferable) \n + if (ch === '\r') { + // if the next character is \n, we don't care about this at all + if (next === '\n') continue; + + // otherwise, we want to consider this as a newline + ch = '\n'; + } + + if (ch === '\n' && !this.scanNewlines) { + this.lineno++; + } else if (ch === '/' && next === '*') { + var commentStart = ++this.cursor; + for (;;) { + ch = input[this.cursor++]; + if (ch === undefined) + throw this.newSyntaxError("Unterminated comment"); + + if (ch === '*') { + next = input[this.cursor]; + if (next === '/') { + var commentEnd = this.cursor - 1; + this.cursor++; + break; + } + } else if (ch === '\n') { + this.lineno++; + } + } + this.blockComments.push(input.substring(commentStart, commentEnd)); + } + else if (ch === '-' && next === '-' && + input[this.cursor + 1] === '>') { + this.cursor += 2; + } + else if ((ch === '/' && next === '/') || + (ch === '<' && next === '!' && + input[this.cursor + 1] === '-' && + input[this.cursor + 2] === '-' && + (this.cursor += 2))) { + + // capture single line comments starts. + var commentStart = ++this.cursor; + for (;;) { + ch = input[this.cursor++]; + if (ch === undefined) { + //this.lineno++; + break; + //throw this.newSyntaxError("Unterminated comment"); + } + if (ch === '\r') { + // check for \r\n + if (next !== '\n') ch = '\n'; + var commentEnd = this.cursor - 1; + } + + if (ch === '\n') { + if (this.scanNewlines) { + this.cursor--; + } else { + this.lineno++; + } + var commentEnd = this.cursor - 1; + break; + } + } + this.blockComments.push(input.substring(commentStart, commentEnd)); + // capture single line comments ends. + } else if (!(ch in definitions.whitespace)) { + this.cursor--; + return; + } + } + }, + + // Lex the exponential part of a number, if present. Return true iff an + // exponential part was found. + lexExponent: function() { + var input = this.source; + var next = input[this.cursor]; + if (next === 'e' || next === 'E') { + this.cursor++; + ch = input[this.cursor++]; + if (ch === '+' || ch === '-') + ch = input[this.cursor++]; + + if (ch < '0' || ch > '9') + throw this.newSyntaxError("Missing exponent"); + + do { + ch = input[this.cursor++]; + } while (ch >= '0' && ch <= '9'); + this.cursor--; + + return true; + } + + return false; + }, + + lexZeroNumber: function (ch) { + var token = this.token, input = this.source; + token.type = NUMBER; + + ch = input[this.cursor++]; + if (ch === '.') { + do { + ch = input[this.cursor++]; + } while (ch >= '0' && ch <= '9'); + this.cursor--; + + this.lexExponent(); + token.value = parseFloat( + input.substring(token.start, this.cursor)); + } else if (ch === 'x' || ch === 'X') { + do { + ch = input[this.cursor++]; + } while ((ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'f') || + (ch >= 'A' && ch <= 'F')); + this.cursor--; + + token.value = parseInt(input.substring(token.start, this.cursor)); + } else if (ch >= '0' && ch <= '7') { + do { + ch = input[this.cursor++]; + } while (ch >= '0' && ch <= '7'); + this.cursor--; + + token.value = parseInt(input.substring(token.start, this.cursor)); + } else { + this.cursor--; + this.lexExponent(); // 0E1, &c. + token.value = 0; + } + }, + + lexNumber: function (ch) { + var token = this.token, input = this.source; + token.type = NUMBER; + + var floating = false; + do { + ch = input[this.cursor++]; + if (ch === '.' && !floating) { + floating = true; + ch = input[this.cursor++]; + } + } while (ch >= '0' && ch <= '9'); + + this.cursor--; + + var exponent = this.lexExponent(); + floating = floating || exponent; + + var str = input.substring(token.start, this.cursor); + token.value = floating ? parseFloat(str) : parseInt(str); + }, + + lexDot: function (ch) { + var token = this.token, input = this.source; + var next = input[this.cursor]; + if (next >= '0' && next <= '9') { + do { + ch = input[this.cursor++]; + } while (ch >= '0' && ch <= '9'); + this.cursor--; + + this.lexExponent(); + + token.type = NUMBER; + token.value = parseFloat( + input.substring(token.start, this.cursor)); + } else { + token.type = DOT; + token.assignOp = null; + token.value = '.'; + } + }, + + lexString: function (ch) { + var token = this.token, input = this.source; + token.type = STRING; + + var hasEscapes = false; + var delim = ch; + if (input.length <= this.cursor) + throw this.newSyntaxError("Unterminated string literal"); + while ((ch = input[this.cursor++]) !== delim) { + if (this.cursor == input.length) + throw this.newSyntaxError("Unterminated string literal"); + if (ch === '\\') { + hasEscapes = true; + if (++this.cursor == input.length) + throw this.newSyntaxError("Unterminated string literal"); + } + } + + token.value = hasEscapes + ? eval(input.substring(token.start, this.cursor)) + : input.substring(token.start + 1, this.cursor - 1); + }, + + lexRegExp: function (ch) { + var token = this.token, input = this.source; + token.type = REGEXP; + + do { + ch = input[this.cursor++]; + if (ch === '\\') { + this.cursor++; + } else if (ch === '[') { + do { + if (ch === undefined) + throw this.newSyntaxError("Unterminated character class"); + + if (ch === '\\') + this.cursor++; + + ch = input[this.cursor++]; + } while (ch !== ']'); + } else if (ch === undefined) { + throw this.newSyntaxError("Unterminated regex"); + } + } while (ch !== '/'); + + do { + ch = input[this.cursor++]; + } while (ch >= 'a' && ch <= 'z'); + + this.cursor--; + + token.value = eval(input.substring(token.start, this.cursor)); + }, + + lexOp: function (ch) { + var token = this.token, input = this.source; + + // A bit ugly, but it seems wasteful to write a trie lookup routine + // for only 3 characters... + var node = opTokens[ch]; + var next = input[this.cursor]; + if (next in node) { + node = node[next]; + this.cursor++; + next = input[this.cursor]; + if (next in node) { + node = node[next]; + this.cursor++; + next = input[this.cursor]; + } + } + + var op = node.op; + if (definitions.assignOps[op] && input[this.cursor] === '=') { + this.cursor++; + token.type = ASSIGN; + token.assignOp = definitions.tokenIds[definitions.opTypeNames[op]]; + op += '='; + } else { + token.type = definitions.tokenIds[definitions.opTypeNames[op]]; + token.assignOp = null; + } + + token.value = op; + }, + + // FIXME: Unicode escape sequences + lexIdent: function (ch) { + var token = this.token; + var id = ch; + + while ((ch = this.getValidIdentifierChar(false)) !== null) { + id += ch; + } + + token.type = definitions.keywords[id] || IDENTIFIER; + if (token.type in this.blackList) { + // banned keyword, this is an identifier + token.type = IDENTIFIER; + } + token.value = id; + }, + + /* + * Tokenizer.get :: void -> token type + * + * Consume input *only* if there is no lookahead. + * Dispatch to the appropriate lexing function depending on the input. + */ + get: function (scanOperand) { + var token; + while (this.lookahead) { + --this.lookahead; + this.tokenIndex = (this.tokenIndex + 1) & 3; + token = this.tokens[this.tokenIndex]; + if (token.type !== NEWLINE || this.scanNewlines) + return token.type; + } + + this.skip(); + + this.tokenIndex = (this.tokenIndex + 1) & 3; + token = this.tokens[this.tokenIndex]; + if (!token) + this.tokens[this.tokenIndex] = token = {}; + + var input = this.source; + if (this.cursor >= input.length) + return token.type = END; + + token.start = this.cursor; + token.lineno = this.lineno; + + var ich = this.getValidIdentifierChar(true); + var ch = (ich === null) ? input[this.cursor++] : null; + if (ich !== null) { + this.lexIdent(ich); + } else if (scanOperand && ch === '/') { + this.lexRegExp(ch); + } else if (ch in opTokens) { + this.lexOp(ch); + } else if (ch === '.') { + this.lexDot(ch); + } else if (ch >= '1' && ch <= '9') { + this.lexNumber(ch); + } else if (ch === '0') { + this.lexZeroNumber(ch); + } else if (ch === '"' || ch === "'") { + this.lexString(ch); + } else if (this.scanNewlines && (ch === '\n' || ch === '\r')) { + // if this was a \r, look for \r\n + if (ch === '\r' && input[this.cursor] === '\n') this.cursor++; + token.type = NEWLINE; + token.value = '\n'; + this.lineno++; + } else { + throw this.newSyntaxError("Illegal token"); + } + + token.end = this.cursor; + return token.type; + }, + + /* + * Tokenizer.unget :: void -> undefined + * + * Match depends on unget returning undefined. + */ + unget: function () { + if (++this.lookahead === 4) throw "PANIC: too much lookahead!"; + this.tokenIndex = (this.tokenIndex - 1) & 3; + }, + + newSyntaxError: function (m) { + m = (this.filename ? this.filename + ":" : "") + this.lineno + ": " + m; + var e = new SyntaxError(m, this.filename, this.lineno); + e.source = this.source; + e.cursor = this.lookahead + ? this.tokens[(this.tokenIndex + this.lookahead) & 3].start + : this.cursor; + return e; + }, + + + /* Gets a single valid identifier char from the input stream, or null + * if there is none. + */ + getValidIdentifierChar: function(first) { + var input = this.source; + if (this.cursor >= input.length) return null; + var ch = input[this.cursor]; + + // first check for \u escapes + if (ch === '\\' && input[this.cursor+1] === 'u') { + // get the character value + try { + ch = String.fromCharCode(parseInt( + input.substring(this.cursor + 2, this.cursor + 6), + 16)); + } catch (ex) { + return null; + } + this.cursor += 5; + } + + var valid = isValidIdentifierChar(ch, first); + if (valid) this.cursor++; + return (valid ? ch : null); + }, + }; + + + return { + isIdentifier: isIdentifier, + Tokenizer: Tokenizer + }; + +}()); diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/chrome_worker/parser/jsparse.js b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/chrome_worker/parser/jsparse.js new file mode 100644 index 0000000..b78078c --- /dev/null +++ b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/chrome_worker/parser/jsparse.js @@ -0,0 +1,2042 @@ +/* -*- Mode: JS; tab-width: 4; indent-tabs-mode: nil; -*- + * vim: set sw=4 ts=4 et tw=78: + * ***** BEGIN LICENSE BLOCK ***** + * + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the Narcissus JavaScript engine. + * + * The Initial Developer of the Original Code is + * Brendan Eich . + * Portions created by the Initial Developer are Copyright (C) 2004 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Tom Austin + * Brendan Eich + * Shu-Yu Guo + * Dave Herman + * Dimitris Vardoulakis + * Patrick Walton + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ +/** + * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. + * * + * Copyright (C) 2011, 2012, 2014 Loic J. Duros + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +/* + * Narcissus - JS implemented in JS. + * + * Parser. + */ + +"use strict"; + +Narcissus.parser = (function() { + + var lexer = Narcissus.lexer; + var definitions = Narcissus.definitions; + + const StringMap = definitions.StringMap; + const Stack = definitions.Stack; + + var comment; + + // Set constants in the local scope. + //eval(definitions.consts); + const END = 0, + NEWLINE = 1, + SEMICOLON = 2, + COMMA = 3, + ASSIGN = 4, + HOOK = 5, + COLON = 6, + CONDITIONAL = 7, + OR = 8, + AND = 9, + BITWISE_OR = 10, + BITWISE_XOR = 11, + BITWISE_AND = 12, + EQ = 13, + NE = 14, + STRICT_EQ = 15, + STRICT_NE = 16, + LT = 17, + LE = 18, + GE = 19, + GT = 20, + LSH = 21, + RSH = 22, + URSH = 23, + PLUS = 24, + MINUS = 25, + MUL = 26, + DIV = 27, + MOD = 28, + NOT = 29, + BITWISE_NOT = 30, + UNARY_PLUS = 31, + UNARY_MINUS = 32, + INCREMENT = 33, + DECREMENT = 34, + DOT = 35, + LEFT_BRACKET = 36, + RIGHT_BRACKET = 37, + LEFT_CURLY = 38, + RIGHT_CURLY = 39, + LEFT_PAREN = 40, + RIGHT_PAREN = 41, + SCRIPT = 42, + BLOCK = 43, + LABEL = 44, + FOR_IN = 45, + CALL = 46, + NEW_WITH_ARGS = 47, + INDEX = 48, + ARRAY_INIT = 49, + OBJECT_INIT = 50, + PROPERTY_INIT = 51, + GETTER = 52, + SETTER = 53, + GROUP = 54, + LIST = 55, + LET_BLOCK = 56, + ARRAY_COMP = 57, + GENERATOR = 58, + COMP_TAIL = 59, + IDENTIFIER = 60, + NUMBER = 61, + STRING = 62, + REGEXP = 63, + BREAK = 64, + CASE = 65, + CATCH = 66, + CONST = 67, + CONTINUE = 68, + DEBUGGER = 69, + DEFAULT = 70, + DELETE = 71, + DO = 72, + ELSE = 73, + EXPORT = 74, + FALSE = 75, + FINALLY = 76, + FOR = 77, + FUNCTION = 78, + IF = 79, + IMPORT = 80, + IN = 81, + INSTANCEOF = 82, + LET = 83, + MODULE = 84, + NEW = 85, + NULL = 86, + RETURN = 87, + SWITCH = 88, + THIS = 89, + THROW = 90, + TRUE = 91, + TRY = 92, + TYPEOF = 93, + VAR = 94, + VOID = 95, + YIELD = 96, + WHILE = 97, + WITH = 98; + + // Banned statement types by language version. + const blackLists = { 160: {}, 185: {}, harmony: {} }; + /* blackLists[160][IMPORT] = true; + blackLists[160][EXPORT] = true; + blackLists[160][LET] = true; + blackLists[160][MODULE] = true; + blackLists[160][YIELD] = true; + blackLists[185][IMPORT] = true; + blackLists[185][EXPORT] = true; + blackLists[185][MODULE] = true; + blackLists.harmony[WITH] = true; +*/ + /* + * pushDestructuringVarDecls :: (node, hoisting node) -> void + * + * Recursively add all destructured declarations to varDecls. + */ + function pushDestructuringVarDecls(n, s) { + for (var i in n) { + var sub = n[i]; + if (sub.type === IDENTIFIER) { + s.varDecls.push(sub); + } else { + pushDestructuringVarDecls(sub, s); + } + } + } + + function StaticContext(parentScript, parentBlock, inModule, inFunction) { + this.parentScript = parentScript; + this.parentBlock = parentBlock || parentScript; + this.inModule = inModule || false; + this.inFunction = inFunction || false; + this.inForLoopInit = false; + this.topLevel = true; + this.allLabels = new Stack(); + this.currentLabels = new Stack(); + this.labeledTargets = new Stack(); + this.defaultLoopTarget = null; + this.defaultTarget = null; + this.blackList = blackLists[Narcissus.options.version]; + Narcissus.options.ecma3OnlyMode && (this.ecma3OnlyMode = true); + Narcissus.options.parenFreeMode && (this.parenFreeMode = true); + } + + StaticContext.prototype = { + ecma3OnlyMode: false, + parenFreeMode: false, + // non-destructive update via prototype extension + update: function(ext) { + var desc = {}; + for (var key in ext) { + desc[key] = { + value: ext[key], + writable: true, + enumerable: true, + configurable: true + } + } + return Object.create(this, desc); + }, + pushLabel: function(label) { + return this.update({ currentLabels: this.currentLabels.push(label), + allLabels: this.allLabels.push(label) }); + }, + pushTarget: function(target) { + var isDefaultLoopTarget = target.isLoop; + var isDefaultTarget = isDefaultLoopTarget || target.type === SWITCH; + + if (this.currentLabels.isEmpty()) { + if (isDefaultLoopTarget) this.update({ defaultLoopTarget: target }); + if (isDefaultTarget) this.update({ defaultTarget: target }); + return this; + } + + target.labels = new StringMap(); + this.currentLabels.forEach(function(label) { + target.labels.set(label, true); + }); + return this.update({ currentLabels: new Stack(), + labeledTargets: this.labeledTargets.push(target), + defaultLoopTarget: isDefaultLoopTarget + ? target + : this.defaultLoopTarget, + defaultTarget: isDefaultTarget + ? target + : this.defaultTarget }); + }, + nest: function() { + return this.topLevel ? this.update({ topLevel: false }) : this; + }, + allow: function(type) { + switch (type) { + case EXPORT: + if (!this.inModule || this.inFunction || !this.topLevel) + return false; + // FALL THROUGH + + case IMPORT: + return !this.inFunction && this.topLevel; + + case MODULE: + return !this.inFunction && this.topLevel; + + default: + return true; + } + } + }; + + /* + * Script :: (tokenizer, boolean, boolean) -> node + * + * Parses the toplevel and module/function bodies. + */ + function Script(t, inModule, inFunction) { + var n = new Node(t, scriptInit()); + Statements(t, new StaticContext(n, n, inModule, inFunction), n); + return n; + } + + // We extend Array slightly with a top-of-stack method. + definitions.defineProperty(Array.prototype, "top", + function() { + return this.length && this[this.length-1]; + }, false, false, true); + + /* + * Node :: (tokenizer, optional init object) -> node + */ + function Node(t, init) { + var token = t.token; + if (token) { + // If init.type exists it will override token.type. + this.type = token.type; + this.value = token.value; + this.lineno = token.lineno; + + // Start and end are file positions for error handling. + this.start = token.start; + this.end = token.end; + } else { + this.lineno = t.lineno; + } + + // Node uses a tokenizer for debugging (getSource, filename getter). + this.tokenizer = t; + this.children = []; + + for (var prop in init) + this[prop] = init[prop]; + } + + /* + * SyntheticNode :: (tokenizer, optional init object) -> node + */ + function SyntheticNode(t, init) { + // print("SYNTHETIC NODE"); + // if (init.type === COMMA) { + // print("SYNTHETIC COMMA"); + // print(init); + // } + this.tokenizer = t; + this.children = []; + for (var prop in init) + this[prop] = init[prop]; + this.synthetic = true; + } + + var Np = Node.prototype = SyntheticNode.prototype = {}; + Np.constructor = Node; + + const TO_SOURCE_SKIP = { + type: true, + value: true, + lineno: true, + start: true, + end: true, + tokenizer: true, + assignOp: true + }; + function unevalableConst(code) { + var token = definitions.tokens[code]; + var constName = definitions.opTypeNames.hasOwnProperty(token) + ? definitions.opTypeNames[token] + : token in definitions.keywords + ? token.toUpperCase() + : token; + return { toSource: function() { return constName } }; + } + Np.toSource = function toSource() { + var mock = {}; + var self = this; + mock.type = unevalableConst(this.type); + if ("value" in this) + mock.value = this.value; + if ("lineno" in this) + mock.lineno = this.lineno; + if ("start" in this) + mock.start = this.start; + if ("end" in this) + mock.end = this.end; + if (this.assignOp) + mock.assignOp = unevalableConst(this.assignOp); + for (var key in this) { + if (this.hasOwnProperty(key) && !(key in TO_SOURCE_SKIP)) + mock[key] = this[key]; + } + return mock.toSource(); + }; + + // Always use push to add operands to an expression, to update start and end. + Np.push = function (kid) { + // kid can be null e.g. [1, , 2]. + if (kid !== null) { + if (kid.start < this.start) + this.start = kid.start; + if (this.end < kid.end) + this.end = kid.end; + } + return this.children.push(kid); + } + + Node.indentLevel = 0; + + function tokenString(tt) { + var t = definitions.tokens[tt]; + return /^\W/.test(t) ? definitions.opTypeNames[t] : t.toUpperCase(); + } + + Np.toString = function () { + var a = []; + for (var i in this) { + if (this.hasOwnProperty(i) && i !== 'type' && i !== 'target') + a.push({id: i, value: this[i]}); + } + a.sort(function (a,b) { return (a.id < b.id) ? -1 : 1; }); + const INDENTATION = " "; + var n = ++Node.indentLevel; + var s = "{\n" + INDENTATION.repeat(n) + "type: " + tokenString(this.type); + for (i = 0; i < a.length; i++) + s += ",\n" + INDENTATION.repeat(n) + a[i].id + ": " + a[i].value; + n = --Node.indentLevel; + s += "\n" + INDENTATION.repeat(n) + "}"; + return s; + } + + Np.getSource = function () { + return this.tokenizer.source.slice(this.start, this.end); + }; + + /* + * Helper init objects for common nodes. + */ + + const LOOP_INIT = { isLoop: true }; + + function blockInit() { + return { type: BLOCK, varDecls: [] }; + } + + function scriptInit() { + return { type: SCRIPT, + funDecls: [], + varDecls: [], + modDefns: new StringMap(), + modAssns: new StringMap(), + modDecls: new StringMap(), + modLoads: new StringMap(), + impDecls: [], + expDecls: [], + exports: new StringMap(), + hasEmptyReturn: false, + hasReturnWithValue: false, + isGenerator: false }; + } + + definitions.defineGetter(Np, "filename", + function() { + return this.tokenizer.filename; + }); + + definitions.defineGetter(Np, "length", + function() { + throw new Error("Node.prototype.length is gone; " + + "use n.children.length instead"); + }); + + definitions.defineProperty(String.prototype, "repeat", + function(n) { + var s = "", t = this + s; + while (--n >= 0) + s += t; + return s; + }, false, false, true); + + function MaybeLeftParen(t, x) { + if (x.parenFreeMode) + return t.match(LEFT_PAREN) ? LEFT_PAREN : END; + return t.mustMatch(LEFT_PAREN).type; + } + + function MaybeRightParen(t, p) { + if (p === LEFT_PAREN) + t.mustMatch(RIGHT_PAREN); + } + + /* + * Statements :: (tokenizer, compiler context, node) -> void + * + * Parses a sequence of Statements. + */ + function Statements(t, x, n) { + try { + while (!t.done && t.peek(true) !== RIGHT_CURLY) + n.push(Statement(t, x)); + } catch (e) { + if (t.done) + t.unexpectedEOF = true; + throw e; + } + } + + function Block(t, x) { + t.mustMatch(LEFT_CURLY); + var n = new Node(t, blockInit()); + Statements(t, x.update({ parentBlock: n }).pushTarget(n), n); + t.mustMatch(RIGHT_CURLY); + return n; + } + + const DECLARED_FORM = 0, EXPRESSED_FORM = 1, STATEMENT_FORM = 2; + + /* + * Export :: (binding node, boolean) -> Export + * + * Static semantic representation of a module export. + */ + function Export(node, isDefinition) { + this.node = node; // the AST node declaring this individual export + this.isDefinition = isDefinition; // is the node an 'export'-annotated definition? + this.resolved = null; // resolved pointer to the target of this export + } + + /* + * registerExport :: (StringMap, EXPORT node) -> void + */ + function registerExport(exports, decl) { + function register(name, exp) { + if (exports.has(name)) + throw new SyntaxError("multiple exports of " + name); + exports.set(name, exp); + } + + switch (decl.type) { + case MODULE: + case FUNCTION: + register(decl.name, new Export(decl, true)); + break; + + case VAR: + for (var i = 0; i < decl.children.length; i++) + register(decl.children[i].name, new Export(decl.children[i], true)); + break; + + case LET: + case CONST: + throw new Error("NYI: " + definitions.tokens[decl.type]); + + case EXPORT: + for (var i = 0; i < decl.pathList.length; i++) { + var path = decl.pathList[i]; + switch (path.type) { + case OBJECT_INIT: + for (var j = 0; j < path.children.length; j++) { + // init :: IDENTIFIER | PROPERTY_INIT + var init = path.children[j]; + if (init.type === IDENTIFIER) + register(init.value, new Export(init, false)); + else + register(init.children[0].value, new Export(init.children[1], false)); + } + break; + + case DOT: + register(path.children[1].value, new Export(path, false)); + break; + + case IDENTIFIER: + register(path.value, new Export(path, false)); + break; + + default: + throw new Error("unexpected export path: " + definitions.tokens[path.type]); + } + } + break; + + default: + throw new Error("unexpected export decl: " + definitions.tokens[exp.type]); + } + } + + /* + * Module :: (node) -> Module + * + * Static semantic representation of a module. + */ + function Module(node) { + var exports = node.body.exports; + var modDefns = node.body.modDefns; + + var exportedModules = new StringMap(); + + exports.forEach(function(name, exp) { + var node = exp.node; + if (node.type === MODULE) { + exportedModules.set(name, node); + } else if (!exp.isDefinition && node.type === IDENTIFIER && modDefns.has(node.value)) { + var mod = modDefns.get(node.value); + exportedModules.set(name, mod); + } + }); + + this.node = node; + this.exports = exports; + this.exportedModules = exportedModules; + } + + /* + * Statement :: (tokenizer, compiler context) -> node + * + * Parses a Statement. + */ + function Statement(t, x) { + var i, label, n, n2, p, c, ss, tt = t.get(true), tt2, x2, x3; + + var comments = t.blockComments; + + if (x.blackList[tt]) + throw t.newSyntaxError(definitions.tokens[tt] + " statements only allowed in Harmony"); + if (!x.allow(tt)) + throw t.newSyntaxError(definitions.tokens[tt] + " statement in illegal context"); + + // Cases for statements ending in a right curly return early, avoiding the + // common semicolon insertion magic after this switch. + switch (tt) { + case IMPORT: + n = new Node(t); + n.pathList = ImportPathList(t, x); + x.parentScript.impDecls.push(n); + n.blockComments = comments; + break; + + case EXPORT: + switch (t.peek()) { + case MODULE: + case FUNCTION: + case LET: + case VAR: + case CONST: + n = Statement(t, x); + n.blockComments = comments; + n.exported = true; + x.parentScript.expDecls.push(n); + registerExport(x.parentScript.exports, n); + return n; + + default: + n = new Node(t); + n.blockComments = comments; + n.pathList = ExportPathList(t, x); + break; + } + x.parentScript.expDecls.push(n); + registerExport(x.parentScript.exports, n); + break; + + case MODULE: + n = new Node(t); + n.blockComments = comments; + t.mustMatch(IDENTIFIER); + label = t.token.value; + + if (t.match(LEFT_CURLY)) { + n.name = label; + n.body = Script(t, true, false); + n.module = new Module(n); + t.mustMatch(RIGHT_CURLY); + x.parentScript.modDefns.set(n.name, n); + return n; + } + + t.unget(); + ModuleVariables(t, x, n); + return n; + + case FUNCTION: + // DECLARED_FORM extends funDecls of x, STATEMENT_FORM doesn't. + return FunctionDefinition(t, x, true, x.topLevel ? DECLARED_FORM : STATEMENT_FORM, comments); + + case LEFT_CURLY: + n = new Node(t, blockInit()); + n.blockComments = comments; + Statements(t, x.update({ parentBlock: n }).pushTarget(n).nest(), n); + t.mustMatch(RIGHT_CURLY); + return n; + + case IF: + n = new Node(t); + n.blockComments = comments; + n.condition = HeadExpression(t, x); + x2 = x.pushTarget(n).nest(); + n.thenPart = Statement(t, x2); + n.elsePart = t.match(ELSE, true) ? Statement(t, x2) : null; + return n; + + case SWITCH: + // This allows CASEs after a DEFAULT, which is in the standard. + n = new Node(t, { cases: [], defaultIndex: -1 }); + n.blockComments = comments; + n.discriminant = HeadExpression(t, x); + x2 = x.pushTarget(n).nest(); + t.mustMatch(LEFT_CURLY); + while ((tt = t.get()) !== RIGHT_CURLY) { + switch (tt) { + case DEFAULT: + if (n.defaultIndex >= 0) + throw t.newSyntaxError("More than one switch default"); + // FALL THROUGH + case CASE: + n2 = new Node(t); + if (tt === DEFAULT) + n.defaultIndex = n.cases.length; + else + n2.caseLabel = Expression(t, x2, COLON); + break; + + default: + throw t.newSyntaxError("Invalid switch case"); + } + t.mustMatch(COLON); + n2.statements = new Node(t, blockInit()); + while ((tt=t.peek(true)) !== CASE && tt !== DEFAULT && + tt !== RIGHT_CURLY) + n2.statements.push(Statement(t, x2)); + n.cases.push(n2); + } + return n; + + case FOR: + n = new Node(t, LOOP_INIT); + n.blockComments = comments; + if (t.match(IDENTIFIER)) { + if (t.token.value === "each") + n.isEach = true; + else + t.unget(); + } + if (!x.parenFreeMode) + t.mustMatch(LEFT_PAREN); + x2 = x.pushTarget(n).nest(); + x3 = x.update({ inForLoopInit: true }); + n2 = null; + if ((tt = t.peek(true)) !== SEMICOLON) { + if (tt === VAR || tt === CONST) { + t.get(); + n2 = Variables(t, x3); + } else if (tt === LET) { + t.get(); + if (t.peek() === LEFT_PAREN) { + n2 = LetBlock(t, x3, false); + } else { + // Let in for head, we need to add an implicit block + // around the rest of the for. + x3.parentBlock = n; + n.varDecls = []; + n2 = Variables(t, x3); + } + } else { + n2 = Expression(t, x3); + } + } + if (n2 && t.match(IN)) { + n.type = FOR_IN; + n.object = Expression(t, x3); + if (n2.type === VAR || n2.type === LET) { + c = n2.children; + + // Destructuring turns one decl into multiples, so either + // there must be only one destructuring or only one + // decl. + if (c.length !== 1 && n2.destructurings.length !== 1) { + throw new SyntaxError("Invalid for..in left-hand side", + t.filename, n2.lineno); + } + if (n2.destructurings.length > 0) { + n.iterator = n2.destructurings[0]; + } else { + n.iterator = c[0]; + } + n.varDecl = n2; + } else { + if (n2.type === ARRAY_INIT || n2.type === OBJECT_INIT) { + n2.destructuredNames = checkDestructuring(t, x3, n2); + } + n.iterator = n2; + } + } else { + x3.inForLoopInit = false; + n.setup = n2; + t.mustMatch(SEMICOLON); + if (n.isEach) + throw t.newSyntaxError("Invalid for each..in loop"); + n.condition = (t.peek(true) === SEMICOLON) + ? null + : Expression(t, x3); + t.mustMatch(SEMICOLON); + tt2 = t.peek(true); + n.update = (x.parenFreeMode + ? tt2 === LEFT_CURLY || definitions.isStatementStartCode[tt2] + : tt2 === RIGHT_PAREN) + ? null + : Expression(t, x3); + } + if (!x.parenFreeMode) + t.mustMatch(RIGHT_PAREN); + n.body = Statement(t, x2); + return n; + + case WHILE: + n = new Node(t, { isLoop: true }); + n.blockComments = comments; + n.condition = HeadExpression(t, x); + n.body = Statement(t, x.pushTarget(n).nest()); + return n; + + case DO: + n = new Node(t, { isLoop: true }); + n.blockComments = comments; + n.body = Statement(t, x.pushTarget(n).nest()); + t.mustMatch(WHILE); + n.condition = HeadExpression(t, x); + if (!x.ecmaStrictMode) { + // + + + + + + + + + +
+
+
+
+
+ +
+
+ +
+ + + + + + + + + + +
HashURLInfoActions
+
+
+
+ +
+
+
+
+ +
+
+
+

+ Copyright © 2011 – 2015 Loic J. Duros +

+
+ + diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/settings/js/form-row.js b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/settings/js/form-row.js new file mode 100644 index 0000000..0b9c0ed --- /dev/null +++ b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/data/settings/js/form-row.js @@ -0,0 +1,120 @@ +/** + * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. + * * + * Copyright (C) 2011, 2012, 2014 Loic J. Duros + * Copyright (C) 2014, 2015 Nik Nyby + * + * This file is part of GNU LibreJS. + * + * GNU LibreJS is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GNU LibreJS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU LibreJS. If not, see . + */ + +var GenerateForm = { + $trContainer: null, // will jQuery element for rules table tboby + le: 0, + init: function () { + var that = this; + $(document).ready(function (e) { + that.$trContainer = $("#whitelist").children('tbody'); + + // listen for when data is ready to populate form. + document.documentElement.addEventListener( + "populate-form", + function (event) { + that.populateForm(event.detail.data); + }, false); + that.$trContainer.on("click", ".delete", function (event) { + that.deleteRow($(this)); + }); + $('.librejs-whitelist-reset').click(function (e) { + that.deleteAll(); + }); + }); + }, + + deleteAll: function () { + var event = document.createEvent("CustomEvent"); + event.initCustomEvent( + "librejs-settings-change", true, true, { + event: 'rules-form-delete-all' + }); + document.documentElement.dispatchEvent(event); + location.reload(); + }, + + deleteRow: function ($button) { + var hash = $button.parents('tr').children('.hash').text(); + this.le--; + this.changeTitle(); + $button.parents('tr').remove(); + var event = document.createEvent("CustomEvent"); + event.initCustomEvent( + "librejs-settings-change", true, true, { + event: 'rules-form-delete', value: hash + }); + document.documentElement.dispatchEvent(event); + }, + + createRow: function (key, url, reason) { + + var $tr = $(""); + var $td = $('').addClass('hash').text(key); + var $delete, $button; + $tr.append($td); + $td = $('').append($('').attr({ + "href": url, + "target": "_blank" + }).text(url)); + $tr.append($td); + $td = $('').text(reason); + $tr.append($td); + + $delete = $(""); + $button = $('