[Pkg-mozext-commits] [requestpolicy] 254/257: Imported Upstream version 1.0.0~beta11~4+dfsg
David Prévot
taffit at moszumanska.debian.org
Thu Jan 28 03:20:19 UTC 2016
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository requestpolicy.
commit 2750adddfbac27c0aa5da4b3f08f1c0d94c56369
Merge: 20b50c6 c27c1f0
Author: David Prévot <taffit at debian.org>
Date: Wed Jan 27 22:40:11 2016 -0400
Imported Upstream version 1.0.0~beta11~4+dfsg
META-INF/manifest.mf | 826 +++++++++++---------
META-INF/mozilla.rsa | Bin 0 -> 4196 bytes
META-INF/mozilla.sf | 4 +
META-INF/zigbert.rsa | Bin 3293 -> 0 bytes
META-INF/zigbert.sf | 696 -----------------
bootstrap.js | 39 +-
content/controllers/keyboard-shortcuts.jsm | 59 ++
content/controllers/old-rules.jsm | 85 ++
content/controllers/windows.overlay.jsm | 79 ++
content/controllers/windows.style-sheets.jsm | 84 ++
content/controllers/windows.toolbarbutton.jsm | 180 +++++
content/lib/classes/keyboard-shortcut.jsm | 207 +++++
content/lib/classes/map-of-sets.jsm | 64 ++
content/lib/classes/pref-branch.jsm | 78 ++
content/lib/classes/pref-observer.jsm | 120 +++
content/lib/default-preferences.js | 9 +-
content/lib/environment.jsm | 859 +++++++++++----------
content/lib/environment.process.js | 87 ++-
.../lib/framescript-to-overlay-communication.jsm | 47 +-
content/lib/gui-location.jsm | 105 +--
content/lib/http-response.jsm | 303 ++++----
content/lib/logger.jsm | 109 ++-
content/lib/manager-for-event-listeners.jsm | 44 +-
content/lib/manager-for-message-listeners.jsm | 50 +-
content/lib/observer-manager.jsm | 87 +--
content/lib/old-rules.jsm | 238 ++++++
content/lib/policy-manager.alias-functions.js | 28 +-
content/lib/policy-manager.jsm | 229 +++---
content/lib/prefs.jsm | 150 ----
content/lib/request-processor.compat.js | 100 ++-
content/lib/request-processor.jsm | 499 ++++++------
content/lib/request-processor.redirects.js | 248 +++---
content/lib/request-result.jsm | 64 +-
content/lib/request-set.jsm | 91 ++-
content/lib/request.jsm | 96 ++-
content/lib/ruleset-storage.jsm | 54 +-
content/lib/ruleset.jsm | 537 +++++++------
content/lib/script-loader.jsm | 56 +-
content/lib/subscription.jsm | 349 +++++----
content/lib/utils.jsm | 184 +++--
content/lib/utils/constants.jsm | 13 +-
content/lib/utils/dom.jsm | 69 +-
content/lib/utils/domains.jsm | 156 ++--
content/lib/utils/files.jsm | 75 +-
content/lib/utils/info.jsm | 99 +++
content/lib/utils/javascript.jsm | 44 ++
content/lib/utils/observers.jsm | 33 +-
content/lib/utils/strings.jsm | 28 +-
content/lib/utils/windows.jsm | 66 +-
content/lib/utils/xul.jsm | 400 +++++++---
content/main/about-uri.jsm | 101 +--
content/main/content-policy.jsm | 82 +-
content/main/default-pref-handler.js | 33 +-
content/main/pref-manager.jsm | 94 +--
content/main/requestpolicy-service.jsm | 240 +++---
content/main/window-manager-toolbarbutton.js | 153 ----
content/main/window-manager.jsm | 235 ++----
content/main/window-manager.listener.js | 151 ----
content/models/prefs.jsm | 211 +++++
content/models/windows.jsm | 194 +++++
content/settings/advancedprefs.html | 4 +-
content/settings/advancedprefs.js | 274 +++----
content/settings/basicprefs.html | 4 +-
content/settings/basicprefs.js | 164 ++--
content/settings/common.js | 318 +++-----
content/settings/defaultpolicy.html | 6 +-
content/settings/defaultpolicy.js | 142 ++--
content/settings/oldrules.html | 9 +-
content/settings/oldrules.js | 212 +++--
content/settings/setup.html | 6 +-
content/settings/setup.js | 273 +++----
content/settings/subscriptions.html | 4 +-
content/settings/subscriptions.js | 235 +++---
content/settings/yourpolicy.html | 6 +-
content/settings/yourpolicy.js | 436 ++++++-----
content/ui/classicmenu.js | 112 +--
content/ui/frame.blocked-content.js | 58 +-
content/ui/frame.dom-content-loaded.js | 195 ++---
content/ui/frame.js | 85 +-
content/ui/menu.js | 813 ++++++++++---------
content/ui/overlay.js | 515 +++++-------
content/ui/request-log.filtering.js | 30 +-
content/ui/request-log.interface.js | 39 +-
content/ui/request-log.js | 31 +-
content/ui/request-log.tree-view.js | 73 +-
content/ui/xul-trees.js | 459 +++++++----
install.rdf | 23 +-
locale/de/requestpolicy.properties | 2 +-
locale/en-US/requestpolicy.properties | 2 +-
locale/eo/requestpolicy.properties | 2 +-
locale/es-MX/requestpolicy.properties | 2 +-
locale/eu/requestpolicy.properties | 2 +-
locale/fr/requestpolicy.properties | 2 +-
locale/it/requestpolicy.properties | 2 +-
locale/ja/requestpolicy.properties | 2 +-
locale/ko-KR/requestpolicy.properties | 2 +-
locale/lv-LV/requestpolicy.properties | 2 +-
locale/nl/requestpolicy.properties | 2 +-
locale/pt-BR/requestpolicy.properties | 2 +-
locale/ru-RU/requestpolicy.properties | 2 +-
locale/sk-SK/requestpolicy.properties | 2 +-
locale/sv-SE/requestpolicy.properties | 2 +-
locale/tr/requestpolicy.properties | 2 +-
locale/uk-UA/requestpolicy.properties | 2 +-
locale/zh-CN/requestpolicy.properties | 2 +-
locale/zh-TW/requestpolicy.properties | 2 +-
skin/requestpolicy.css | 21 +
skin/toolbarbutton.css | 22 -
108 files changed, 7574 insertions(+), 6654 deletions(-)
diff --cc META-INF/manifest.mf
index 5729f4d,0000000..cfc45af
mode 100644,000000..100644
--- a/META-INF/manifest.mf
+++ b/META-INF/manifest.mf
@@@ -1,693 -1,0 +1,747 @@@
+Manifest-Version: 1.0
- Created-By: Signtool (signtool 3.19.2 Basic ECC)
- Comments: PLEASE DO NOT EDIT THIS FILE. YOU WILL BREAK IT.
+
- Name: content/main/pref-manager.jsm
++Name: install.rdf
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: TPA+mOkSOv8VBnkzpde+dw==
- SHA1-Digest: k3V8tuONodfXL0s4Q5+EQzHW0Rc=
++MD5-Digest: blbDkI8A+yjlOK00GxekiA==
++SHA1-Digest: kXp5Bfa4YizFtbka4EOi227EpBs=
+
- Name: content/main/about-uri.jsm
++Name: chrome.manifest
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: gUOSr9j8xojKNEayRiliHQ==
- SHA1-Digest: KqtbZFiGa0qTVCmxvqXGluFcNRA=
++MD5-Digest: RPJPQ0xi45CRx2zI0SuZiw==
++SHA1-Digest: CQz+MaCf0siuPn+qjNMkqIV0GbM=
+
- Name: content/main/requestpolicy-service.jsm
++Name: bootstrap.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: hJQVtut4/kJBj9I2KsQH1A==
- SHA1-Digest: tvPGnw+CHbo3ZLTa4xRuJx17Dv4=
++MD5-Digest: +pGaOR//pAd8kigctdzwVA==
++SHA1-Digest: 0n0PBoXGU8zaKLIDjlviOyFjH/I=
+
- Name: content/main/window-manager.jsm
++Name: README
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: swGw3EU7NigVJ0h/PqePSg==
- SHA1-Digest: 6Pu1HoezvIb/FrGl+5sCP4GY9mw=
++MD5-Digest: 6IfZq3sTTDTENL+Se1ZoIA==
++SHA1-Digest: iDJpM8K+fZKkpeqnpi0kVupmPDk=
+
- Name: content/main/window-manager.listener.js
++Name: content/multiple-installations.html
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: miZk3iC65O67HodkGln9Vg==
- SHA1-Digest: hkdB7YXsN0FHIrRt7SnuYxYb3qs=
++MD5-Digest: 8rC66t40eMnaMEtlhNIDfA==
++SHA1-Digest: ULeKBQjw/OY8AEPm53JMptO5hmA=
+
- Name: content/main/window-manager-toolbarbutton.js
++Name: content/controllers/keyboard-shortcuts.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: /Th2+UURMEUH0qoeMoa8Jw==
- SHA1-Digest: L2V+Ime+a99em5XGp0VWGxSr1eE=
++MD5-Digest: +BhboOq41QVbV6CFjVv/6A==
++SHA1-Digest: w4i9f2FWpOBRoGa0rGL7GoBji/w=
+
- Name: content/main/default-pref-handler.js
++Name: content/controllers/old-rules.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: ZNwLdxyV23rAF7VgOhJbeQ==
- SHA1-Digest: Duc4fa12LY+L9NOZbmmn/9xOOqE=
++MD5-Digest: H7Tfiy7aQ2iwAOP2aSrBFA==
++SHA1-Digest: XlKpEVmeE4QVTN/0jwmWOUIOzvg=
+
- Name: content/main/content-policy.jsm
++Name: content/controllers/windows.overlay.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: dfUrH+2TZuMpVF6MHVK7YQ==
- SHA1-Digest: DPqP3hkFHBPpIZg1Faks4PFaKe4=
++MD5-Digest: 8g7rVke3hRqWNv4irD3s2g==
++SHA1-Digest: +t7mnpbbgia9e1ufMh8jFaU5uAc=
+
- Name: content/multiple-installations.html
++Name: content/controllers/windows.style-sheets.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: 8rC66t40eMnaMEtlhNIDfA==
- SHA1-Digest: ULeKBQjw/OY8AEPm53JMptO5hmA=
++MD5-Digest: uVYDsNOPyx7H/c988hjjEw==
++SHA1-Digest: 9GTBRkqEUMhmgDdR5SBK/ly9jIY=
+
- Name: content/ui/overlay.js
++Name: content/controllers/windows.toolbarbutton.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: SxFtg2n9TXoNTh1P525ADQ==
- SHA1-Digest: z7ApJhyn9X9VIeoXtEqqSzg5fNU=
++MD5-Digest: 6bl/TtQ3Vi+gO+/wbVD3lg==
++SHA1-Digest: DVtvC/jGl1fpAWcl8Ec1GD/eTHw=
+
- Name: content/ui/frame.dom-content-loaded.js
++Name: content/lib/default-preferences.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: auYD1TFKZkLESRYL0T1RXA==
- SHA1-Digest: 3Jq0bJdyYr9gQBBlsOISwHfeKyA=
++MD5-Digest: C2UWgyRm5DBfzRCFMdWF+A==
++SHA1-Digest: XYffoTBbFyUJN12L1PSGZdlSYYQ=
+
- Name: content/ui/frame.blocked-content.js
++Name: content/lib/environment.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: rLorVycHVA7537oWSOnqvg==
- SHA1-Digest: BUlOlnGsZyuJ4YoSzs++R0R/0ns=
++MD5-Digest: HJkzuHpZOlXQFNh3cyUy7w==
++SHA1-Digest: RP7m9OMcAOhTp/5xHB+ESH4+8oY=
+
- Name: content/ui/request-log.xul
++Name: content/lib/environment.process.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: K2TnB0MRhDGCZuyLdkzgRQ==
- SHA1-Digest: Eaw6OXH+WjEmyYF/I+UgLf/jDAs=
++MD5-Digest: Xsjsjucla4L9ocHf1hqs2g==
++SHA1-Digest: BI+HtLA8MkIWh8Nv8k9foEdcnVk=
+
- Name: content/ui/request-log.js
++Name: content/lib/framescript-to-overlay-communication.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: DhWE6u1QOZGgQDwG6IxTGA==
- SHA1-Digest: CbObxwq6mnmx/voDcn3JSCalqkQ=
++MD5-Digest: V658Xlvl1C2WIxBcKXqktA==
++SHA1-Digest: KXJYD+IruKeFTxw8qi0wOxFpTq0=
+
- Name: content/ui/frame.js
++Name: content/lib/gui-location.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: nvlPkvXiKL9ZdqtWn8HIZw==
- SHA1-Digest: GQL6JACZGBwQ3vW+gIaa07NB268=
++MD5-Digest: lTsk65iVPNnFFPE1Ir0ekg==
++SHA1-Digest: jjeqCVNyAhoCFyJlau9JH8/lN5E=
+
- Name: content/ui/request-log.interface.js
++Name: content/lib/http-response.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: whFn/wPa2EKEiPB/zFyd1A==
- SHA1-Digest: 7VGbxICh7zenTNLLOKZQuDaGr48=
++MD5-Digest: Ctn48SJ92SEGgMc/HEpI8g==
++SHA1-Digest: 9Q4diohsyf3/L5aj5pzi9IBsiG8=
+
- Name: content/ui/request-log.tree-view.js
++Name: content/lib/logger.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: HxRWJlcUovxWdfh3NwW2Yg==
- SHA1-Digest: ozMpPkrUlCxH6VF5OGi8LIpXoEU=
++MD5-Digest: Gq66GxbHfj3xjDH0Jj4QJQ==
++SHA1-Digest: C1DsMWOhroZpMzYFY0lJkQFJ140=
+
- Name: content/ui/request-log.filtering.js
++Name: content/lib/manager-for-event-listeners.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: 3L9JjccYpT/OzZHPmtnR7Q==
- SHA1-Digest: n5TDUAcvT69k2Px01Ji2GwvJ9Po=
++MD5-Digest: WVMRm8rlr5NMs07nguAK4g==
++SHA1-Digest: CDOypG7p1nFy0kFvLs7o8z1PV5w=
+
- Name: content/ui/xul-trees.js
++Name: content/lib/manager-for-message-listeners.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: MuGl2ZSxz19Vlr8YdZGNSQ==
- SHA1-Digest: LvSK22G01eXlieKbBcdqawFzvP8=
++MD5-Digest: L8tVG9XomZRJes4YCikTvw==
++SHA1-Digest: OcoYqxsrqQimAp6TYvaA7EPeRE0=
+
- Name: content/ui/menu.js
++Name: content/lib/observer-manager.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: KSpKj+0pEWF9AK451wzM7g==
- SHA1-Digest: 0GAUc6UsULgnveAQpSnJ2h5EdEw=
++MD5-Digest: KBNCpXXcWYGb8ZxpUZAZjQ==
++SHA1-Digest: tcX7V3CZglepcQBvOwANSqaUNjQ=
+
- Name: content/ui/classicmenu.js
++Name: content/lib/old-rules.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: 3SY4PySU2/h/OxwHAjdfjA==
- SHA1-Digest: qBn5vtmyF7VFxEsX8szORlmKVAo=
++MD5-Digest: tj6/t18Rb5gVItHWGEXWrw==
++SHA1-Digest: FzkoqAHRI9Ds5/TAGpOPg9AB7BI=
+
- Name: content/lib/ruleset-storage.jsm
++Name: content/lib/policy-manager.alias-functions.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: V6lfGcidLmjuyRF/lIrjAA==
- SHA1-Digest: UmuGQYFsm1E2SlCU7CH5wwO2Mp0=
++MD5-Digest: 9Rorcc9nTjPHThfLy5aIfA==
++SHA1-Digest: Y5nIBLLFl6XquZD8w0VT3vH5kmA=
+
+Name: content/lib/policy-manager.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: giGPVYUbuH6cQmFAUrgxrA==
- SHA1-Digest: F3BgVHG7yofwwlUP5W6BC3jEwz8=
++MD5-Digest: gtqFGqjcl1e2/AOiPE3pQQ==
++SHA1-Digest: nM9u+aXtbwWY20snKoEI5JkXsRg=
+
- Name: content/lib/manager-for-message-listeners.jsm
++Name: content/lib/request-processor.compat.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: tZSuA98tX81JMLzE4UQ8rg==
- SHA1-Digest: tRhqSy9CReVrjJQMqNcmSE4QzqM=
++MD5-Digest: 3FtU2em0BsY242lzm0Bgkg==
++SHA1-Digest: y89O84ScGNxu7Ai0aPSWA+KSZI8=
+
- Name: content/lib/ruleset.jsm
++Name: content/lib/request-processor.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: YvAuVRBn9vpbHB7TE+rbWQ==
- SHA1-Digest: oh01GZpljEREfB0R5/t8EUY6OIE=
++MD5-Digest: FyBgN6E/NADirfilspyKwA==
++SHA1-Digest: wDcdG1HkF8md7cEnZxhB4wPs3rI=
+
- Name: content/lib/prefs.jsm
++Name: content/lib/request-processor.redirects.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: JFSPYVzxPpiy0PLIcZ/dsg==
- SHA1-Digest: beLWu952z62saT2gHf4u0oVdrjI=
++MD5-Digest: 6wFOXrXCQP98BgLxwwApJw==
++SHA1-Digest: ax1T6236cU1rmg4wJCV2yZ4VxR0=
+
- Name: content/lib/gui-location.jsm
++Name: content/lib/request-result.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: /ErcTMCBKZ3Ek/4x11YPDQ==
- SHA1-Digest: 8igABYwEOKJBkJI6G2w0/qC6l2k=
++MD5-Digest: eEIzI2AKmWfSS/IhzPFrSA==
++SHA1-Digest: zZEymJWkpedUC4pWO2j5HvcF3fQ=
++
++Name: content/lib/request-set.jsm
++Digest-Algorithms: MD5 SHA1
++MD5-Digest: 7eRcK3e6UOwMPG6nGtPkOA==
++SHA1-Digest: pqPXo1HOUIxo3oFexqofnfWdAtc=
+
+Name: content/lib/request.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: 7DiF2ISBq4aXQ6EinSLHlQ==
- SHA1-Digest: csbKr5dD16FXiN9VmEic5xqdCSY=
++MD5-Digest: NpLHsvZ0PWJ7nHvQwsbZuw==
++SHA1-Digest: yT4YeiEXi+qkkCC6YIJ1iD8j3G0=
+
- Name: content/lib/observer-manager.jsm
++Name: content/lib/ruleset-storage.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: hxAkEVx/EgudgqoG4y4xNg==
- SHA1-Digest: PJUt6qHtcLC/dw5YoPKbcwQs0h4=
++MD5-Digest: 1Aq3s8Iwjq2t0rhgKLbugw==
++SHA1-Digest: oJjnxOVUYVYRHaRcyMNB0lamDjk=
+
- Name: content/lib/environment.jsm
++Name: content/lib/ruleset.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: Yo03wNlwOflrLN678vld8A==
- SHA1-Digest: Rh7rvEsMy8cMDlg9Wmw6IOWnHBg=
++MD5-Digest: 5qhRRZLyBpO2JzSIW3NweQ==
++SHA1-Digest: RmN8hYLhKCLuNUBhSM1oec578Hg=
+
- Name: content/lib/request-processor.redirects.js
++Name: content/lib/script-loader.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: uiiFrlk3lURhS9j/OBBENg==
- SHA1-Digest: jYBJMoIZlZk0X+IwYyAJ3GptZNI=
++MD5-Digest: KqQAcHQcovoLo4L/fp9voA==
++SHA1-Digest: UxUukdsNgzfGcFOtWfXNbjLoK14=
+
- Name: content/lib/request-result.jsm
++Name: content/lib/subscription.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: wsa4Pka+ZpXcBSOs991WiA==
- SHA1-Digest: Gn4bvK2HjzZoHMB1GmVH87INzc8=
++MD5-Digest: G2JUkDaw9CSm3HJAF99UdA==
++SHA1-Digest: qxg6/+3iBJdQkoJsyY2Ekhz24qI=
+
- Name: content/lib/utils/domains.jsm
++Name: content/lib/utils.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: ScnpjwN0dwSXdt2J9zFiCQ==
- SHA1-Digest: uBAEHA+pMPfARjOjc5gRPNgUvJw=
++MD5-Digest: 7LTyEcJMRn5YPXyfy+uNag==
++SHA1-Digest: GO7pWMeQZT2cX1MyJPbOyJ+RlZA=
+
- Name: content/lib/utils/files.jsm
++Name: content/lib/classes/keyboard-shortcut.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: b1Fpp6Ctd55aqkmfvuSXyA==
- SHA1-Digest: XyB5e7Mp5Jvi0s1aeWHR7k87xcM=
++MD5-Digest: /w0V0z2VmbRcYssyNJNcuw==
++SHA1-Digest: I05AiLJXUGLwLbr5Ve3XLOOgB3Y=
+
- Name: content/lib/utils/windows.jsm
++Name: content/lib/classes/map-of-sets.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: JDZSW4Hqk2tk5GlQvtYhIw==
- SHA1-Digest: gHzE/KApw5zTAmEpwHt0jwIYwTg=
++MD5-Digest: ucTCLeBS+QNthQLDPwM23A==
++SHA1-Digest: 3KllC8C5tB7T8jdy7b5jFrTNr6k=
+
- Name: content/lib/utils/constants.jsm
++Name: content/lib/classes/pref-branch.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: oNipzAYHApwLBDiMfvZKAg==
- SHA1-Digest: clgJiqQP3pPJdlA2CPynQ/sU/M8=
++MD5-Digest: qZXuF4+q+GcMhiyPEFL7Rg==
++SHA1-Digest: eQ7TKIyzHV7te+StF9k4T3zgyA8=
+
- Name: content/lib/utils/xul.jsm
++Name: content/lib/classes/pref-observer.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: j0ELRwiA/1qSguJKpO/SrA==
- SHA1-Digest: /fkkDcTHvyE/S5Xz1/6dRHVrooQ=
++MD5-Digest: FcIlBeTyPyiXiM1gq3Jetw==
++SHA1-Digest: Ly0lNJyaMYE65Mtf8QsQ56SZ4iU=
+
- Name: content/lib/utils/strings.jsm
++Name: content/lib/utils/constants.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: IO3vLnVOJ0Iz1hbDEwfIFg==
- SHA1-Digest: INKrThmmvbuPg2zzu/gMUeIIChs=
++MD5-Digest: UtREMomheMrmu5tfDJkbAg==
++SHA1-Digest: 3B8OSsP4gndHebPACCgcsgY7gFk=
+
+Name: content/lib/utils/dom.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: U1y5YwWhwAV6LpVncxgvEw==
- SHA1-Digest: 3g5j8dfxLsZpB693dsEFAJo5pks=
++MD5-Digest: GZD2K/X2W9b4TBHByM8BFg==
++SHA1-Digest: iP1AHCNzPszgqJ+s7MIDCYrDKb0=
+
- Name: content/lib/utils/observers.jsm
++Name: content/lib/utils/domains.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: HGU7YL1Ba3qGkNJGxRrbzQ==
- SHA1-Digest: /C6Z4pvlQd3O1D7o6sQAwCxcToA=
++MD5-Digest: sPsrrdfAxcX3Sgr4QAx2DQ==
++SHA1-Digest: 1hqwLzNGupQUUv7e8+wu0nlmZlo=
+
- Name: content/lib/subscription.jsm
++Name: content/lib/utils/files.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: wL4GOJQ3e9lohme0SFSB2w==
- SHA1-Digest: X7TC5edG0c6EDuVzkpc1WqYBqjk=
++MD5-Digest: EueYw6yeMZkL5raAEdqVtA==
++SHA1-Digest: XqyX9YD3V07rRmMR6wDXlo/OCFM=
+
- Name: content/lib/utils.jsm
++Name: content/lib/utils/info.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: /SMrQF5+iPe4Jv1n2bl0YQ==
- SHA1-Digest: PQSPMvr/pz8LhLBJV0Sq+K966Go=
++MD5-Digest: 29PfJ3qaATFSaqJbLlDj1Q==
++SHA1-Digest: VwGB251FhD0Owsk/Q7Je1p5T3So=
+
- Name: content/lib/default-preferences.js
++Name: content/lib/utils/javascript.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: p4lfJ+lhtPbM9JV3I/RV1A==
- SHA1-Digest: 8vQWdtfSNeJXkzh9A1/wOZiZHsU=
++MD5-Digest: z2rdTwEjq62QkomPH76c6w==
++SHA1-Digest: bhJvGQ7lRhaN1BtEzLNDTi3rsLw=
+
- Name: content/lib/request-set.jsm
++Name: content/lib/utils/observers.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: iz8uRgLN2MvC0hrmp4BiLQ==
- SHA1-Digest: AgR4rGygrEvdujIfr233Gvcr9bQ=
++MD5-Digest: 1Q+ZP53H4aFGVUm6xR78lg==
++SHA1-Digest: dpm+3ww0FV01rROoiqZUkrvGeRw=
+
- Name: content/lib/policy-manager.alias-functions.js
++Name: content/lib/utils/strings.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: jYjdlbe2edw/0/iiAYh+Bg==
- SHA1-Digest: /uzAHaEyttWJnSyo1uhPgh/1f6o=
++MD5-Digest: kfN0MLy6YNqCIeflPF31AA==
++SHA1-Digest: QenPrBfY1DrPTaeu/2dxJZIX8SA=
+
- Name: content/lib/logger.jsm
++Name: content/lib/utils/windows.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: EIfRaTSQdScsKJd/8a6uUg==
- SHA1-Digest: M5uEgoYd+O9s2YVHyb9gmnmUoZQ=
++MD5-Digest: fzozQU8w76M181pO/94k9g==
++SHA1-Digest: OPRuqXOCeG+TKhPU4rdIpppRMUk=
+
- Name: content/lib/request-processor.jsm
++Name: content/lib/utils/xul.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: 4bhnUIeMMdvaz0PFFnl0nw==
- SHA1-Digest: 5CqYMxPEVIqThBQoC/lwbqUb/kw=
++MD5-Digest: hESc2NMyK00+1+srMwrSiA==
++SHA1-Digest: a/T1Sg7DfrAWORZ5Oz6WdRkeWG8=
+
- Name: content/lib/framescript-to-overlay-communication.jsm
++Name: content/main/about-uri.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: 7moenn4rlCjTqXptkWQMTw==
- SHA1-Digest: giSNsisfeCBl9EMHZtohemXSeEU=
++MD5-Digest: GYBbqPMjN/I8rRbvyPRjPA==
++SHA1-Digest: w/EW5tvx24dE8wldROdb5Za9JYk=
+
- Name: content/lib/http-response.jsm
++Name: content/main/content-policy.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: v/AqtPf7OWxVgV/vw6JP2g==
- SHA1-Digest: nREO0chItf3VfrPv5e6aFyza0fw=
++MD5-Digest: PCtPnqmCZAM7RuCcMyrwmA==
++SHA1-Digest: EcADgIMly4nCZlCBTWtwX6SHizM=
+
- Name: content/lib/manager-for-event-listeners.jsm
++Name: content/main/default-pref-handler.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: Kcxhra8tYocc+pvgZq3L4g==
- SHA1-Digest: JjqMdxfSrZYG63s6Ex3YdBH20Hs=
++MD5-Digest: MfHBJKW/+O8Nurb9nUuC8g==
++SHA1-Digest: hM/68FfcJLOl/kUoNr0bbCztzDw=
+
- Name: content/lib/environment.process.js
++Name: content/main/pref-manager.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: XfEUYHvcPgommXxGLCAQGw==
- SHA1-Digest: 4UuylyFFCHspZnah+kPxFmj9La4=
++MD5-Digest: rM9TvPHJa3SV2wWWoNyi6Q==
++SHA1-Digest: vmv9DSOZ6lRFeG8+zdAs53duQdo=
+
- Name: content/lib/request-processor.compat.js
++Name: content/main/requestpolicy-service.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: 2+0URFee+cDRkYnLbdW0aQ==
- SHA1-Digest: B3tFYh4rAK30Jr0/vNnYlaJFNM4=
++MD5-Digest: 3CNe1excCNjisFCtyXZnKw==
++SHA1-Digest: 5hZSTapn3+JKalWO/S1EA8NKWkw=
+
- Name: content/lib/script-loader.jsm
++Name: content/main/window-manager.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: VS5tBd67oCBYaDIsqodm+g==
- SHA1-Digest: JVNtI/zlC426YlO0MWqoTH2ZqN0=
++MD5-Digest: /2rnAhPfc2JjjkxIRW0KAQ==
++SHA1-Digest: 9u4+x5v/CDuJk0xCV6bOJAjWmb8=
+
- Name: content/settings/subscriptions.js
++Name: content/models/prefs.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: vGoe2o430BB0u2Ga+1WCzA==
- SHA1-Digest: GbYfl99OCcwBR3m4iUHR8e5ZDew=
++MD5-Digest: bvrfGABdp6MbpULFSQA4Yg==
++SHA1-Digest: JxBoGo38rEAWFHfeofTPKV3aPTs=
+
- Name: content/settings/setup.css
++Name: content/models/windows.jsm
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: 1B2M2Y8AsgTpgAmY7PhCfg==
- SHA1-Digest: 2jmj7l5rSw0yVb/vlWAYkK/YBwk=
++MD5-Digest: i6Ss0+8ON4fScA4yNTNQ7A==
++SHA1-Digest: lMqN0D9N/ahLLxK+3lhZm4IHMUI=
+
- Name: content/settings/common.js
++Name: content/settings/advancedprefs.html
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: M5rxEwLacCEjvJRpAXmIqA==
- SHA1-Digest: HUc5Y6u7wLfLkYMqbmBuSjTnmMc=
++MD5-Digest: D4jhxMX76XlmrwEsmO8b/A==
++SHA1-Digest: jOtMbr/QJ6hi1DWfF9K7yN781aE=
+
+Name: content/settings/advancedprefs.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: nUWJKjURjmD6fnbcEiSMJw==
- SHA1-Digest: AYBFGx2mvwq63YJkkJHVEegOG/0=
++MD5-Digest: wKrC7lPl4cUoHGZdYSn36Q==
++SHA1-Digest: X/fo5C8y9ldj4EJtiU/VAvWGil4=
+
- Name: content/settings/setup.js
++Name: content/settings/basicprefs.html
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: LmUvFaIjge6lscYo2w+Cbg==
- SHA1-Digest: btRKr72ewV63BTCOBI8yVZRG2wE=
++MD5-Digest: uCQ2oQvThF8UQq5QsGR1Sg==
++SHA1-Digest: lQ6i+2+VFrI7UloDv+jReD7P3Eg=
+
- Name: content/settings/subscriptions.html
++Name: content/settings/basicprefs.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: o5jWL7Mt+PTxeN162B1Fcw==
- SHA1-Digest: xFoXG4JTBgWRoYFN4MFGjBb7MN4=
++MD5-Digest: ajBTwr/Q8xA2LIp5mZVBpA==
++SHA1-Digest: i9tN08T29KimQHD8VtjL1JXH5w8=
+
- Name: content/settings/basicprefs.html
++Name: content/settings/common.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: xagYClwCb5qiORgbv0bzxg==
- SHA1-Digest: 1lEmEbjQnlvdvWmtybhq3y0TCs0=
++MD5-Digest: /T+Q5Q8Pf2yzsSfx8DdPyg==
++SHA1-Digest: DfD9mfq8r9iEH1z4BASEkE3yuPA=
+
+Name: content/settings/defaultpolicy.html
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: gPZqqILqFyh5F4XQ0uBmkw==
- SHA1-Digest: twIXwlwSxIipXWOUI15EUpiyy6M=
++MD5-Digest: VccNe2QxC41hMR+tA++mIg==
++SHA1-Digest: cWSkYtyjxOk/nUBgV/0zS7zLiCQ=
+
- Name: content/settings/yourpolicy.js
++Name: content/settings/defaultpolicy.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: 00YcHO875xHuPZF0XYlnxw==
- SHA1-Digest: N9uHe5blDDzyohZYlKsqLU4pgcg=
++MD5-Digest: a0XQGNrg9W0kbVSnTrs8KQ==
++SHA1-Digest: keQ9AyGzRWUsB6IyhQ5A4ww5jiM=
+
- Name: content/settings/oldrules.js
++Name: content/settings/jquery.min.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: eV9bux3VbQYbgTVWTR8joA==
- SHA1-Digest: YlNqD7pPjmaIeELaFIXUGex3+ak=
++MD5-Digest: OnKEYBR/ua9/rw5Ye5+/Qg==
++SHA1-Digest: 86VfRPuBz47pCKOHKEH3DWVI+ME=
+
- Name: content/settings/jquery.min.js
++Name: content/settings/oldrules.html
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: TxNjnTNZXvJw9hFQkAhB6Q==
- SHA1-Digest: jacHesddtmkZTyT/NOy74s7jwoU=
++MD5-Digest: 1FAx4y0RPyUj6uo3v+URaw==
++SHA1-Digest: XdNJHS2cn9V6mK/uKluSpQU8h8I=
+
- Name: content/settings/defaultpolicy.js
++Name: content/settings/oldrules.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: AeHp46dxnsGMDZ/2J1WG6A==
- SHA1-Digest: DNbKh1KCcZSxC5Lh9oyVw+QPUXE=
++MD5-Digest: jggmOQlHth6v9RKjhBtaYA==
++SHA1-Digest: Sc6KJaD4wn+iHjUWxJOD/nSdlRo=
+
- Name: content/settings/yourpolicy.html
++Name: content/settings/settings.css
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: z0JI+QHAdPmqNjEmL8H21Q==
- SHA1-Digest: jp5noRdWJibCXr2/dC+HbYBLWzI=
++MD5-Digest: 2l/CCHPLCvCWNtbEmrvvvg==
++SHA1-Digest: 9b4lInXqbruxI4IIN5cUMxNeVxk=
+
- Name: content/settings/oldrules.html
++Name: content/settings/setup.css
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: toF5CmqKj9s9AOjTYoYBfw==
- SHA1-Digest: vDRslMxgs3LmmSWDJZXNbbjCpt4=
++MD5-Digest: 1B2M2Y8AsgTpgAmY7PhCfg==
++SHA1-Digest: 2jmj7l5rSw0yVb/vlWAYkK/YBwk=
+
+Name: content/settings/setup.html
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: GKP8hdKZ1NiAueuxZE7dEg==
- SHA1-Digest: xVwm8A/T8I+RqfEZOkop5LS1/No=
++MD5-Digest: y0BXNTsz2XGHlLyeEjRkFQ==
++SHA1-Digest: ZfbWDjGmWzbBJ53zYbRH7r3x9ck=
+
- Name: content/settings/settings.css
++Name: content/settings/setup.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: 2l/CCHPLCvCWNtbEmrvvvg==
- SHA1-Digest: 9b4lInXqbruxI4IIN5cUMxNeVxk=
++MD5-Digest: 924yFnQO/B1DK8VUuPICOA==
++SHA1-Digest: iPNs2ESvHxT7hB8Rw1QhhwNk+B8=
+
- Name: content/settings/basicprefs.js
++Name: content/settings/subscriptions.html
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: L5h06IQ3gqyKEhmXqPv8Uw==
- SHA1-Digest: C+7JP0vPPDoZsPo26eUcG98OaxI=
++MD5-Digest: IT6TruCgxU+FMRe0/CFdkg==
++SHA1-Digest: HqHiOfPueCpHxweuA5cXDw8pRsQ=
+
- Name: content/settings/advancedprefs.html
++Name: content/settings/subscriptions.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: eCs9pVBPcnLYehMKKuPUwQ==
- SHA1-Digest: euJ3jzI8IGI2s2idOS+e4YNASLQ=
++MD5-Digest: riS7i+CEuwnFdLJ4g+Jkdw==
++SHA1-Digest: Dt71IOzzSV1LpnXbIIlOkgGXxKo=
+
- Name: README
++Name: content/settings/yourpolicy.html
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: 6IfZq3sTTDTENL+Se1ZoIA==
- SHA1-Digest: iDJpM8K+fZKkpeqnpi0kVupmPDk=
++MD5-Digest: XUdfYluoURUgxSHcmbS5YA==
++SHA1-Digest: PHISekptB5i0oyEY+mYoLndcq6Q=
+
- Name: install.rdf
++Name: content/settings/yourpolicy.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: wOAOTt0uFrUTrura5lzhnQ==
- SHA1-Digest: wJ12H7TqMz8LlBTLavzeoesoZWM=
++MD5-Digest: 5vzCkfL1ADjfHjshGpLasQ==
++SHA1-Digest: NvxeYaaO9U44nA7RpVsOqQ7onrw=
+
- Name: LICENSE
++Name: content/ui/classicmenu.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: V+iUvQ8339+uK2nUxBt4oQ==
- SHA1-Digest: BKr7OaEqkHyN92EAoQgXBoUWHk4=
++MD5-Digest: WZ9Rhx/OaWLP3yhaYKQIgg==
++SHA1-Digest: fgFAxizTXzw/wgrq4mbYq8TyNXQ=
+
- Name: locale/tr/requestpolicy.dtd
++Name: content/ui/frame.blocked-content.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: YHGevfSYcNwB5aR/DjrRLQ==
- SHA1-Digest: 7BKNoiJcmmRhC+PF2+2GaFOiNBI=
++MD5-Digest: MOcuRIaEzqhl4/nlX+eY2g==
++SHA1-Digest: yI14krjVU0rldXxuYCSH8k+3BRk=
+
- Name: locale/tr/requestpolicy.properties
++Name: content/ui/frame.dom-content-loaded.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: I8aPz9IXaeT7uJNTv3aU5g==
- SHA1-Digest: hwgntpLwawJgqGlW/djmABru4MA=
++MD5-Digest: ZcIsAxiFtOWx2TvVFnpDVQ==
++SHA1-Digest: 2sHJTQBsluGb0WAgRR8C6vPnk5Q=
+
- Name: locale/uk-UA/requestpolicy.dtd
++Name: content/ui/frame.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: oGWBoRlf+qVuz66wmB/J2Q==
- SHA1-Digest: Qucwrc3cqcj6CZhVG99sQWh+2LY=
++MD5-Digest: PYG0AYz6HhvzIdasqaKurA==
++SHA1-Digest: vv5tJ6cATMbIUSqrTqq+8wk3SMk=
+
- Name: locale/uk-UA/requestpolicy.properties
++Name: content/ui/menu.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: 55aA1SzgTv8YQRuQvyLrSQ==
- SHA1-Digest: LjHa/vmplGrGFcN6aYSQMGwnVQ4=
++MD5-Digest: ZFQFLint7wWO0O4OWCIDng==
++SHA1-Digest: yVz+8MysjQyxxohCj9Po1BHBXTI=
+
- Name: locale/eu/requestpolicy.dtd
++Name: content/ui/overlay.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: JgPEcTxbEgFGG7Ob2/+gsA==
- SHA1-Digest: WymoX3seqH1a90qpytnO7R3bBE0=
++MD5-Digest: VM13/oJUUxQKm9BoC9ckoA==
++SHA1-Digest: KW59k+LcyoFC+ht3g5IQAmUz6yk=
+
- Name: locale/eu/requestpolicy.properties
++Name: content/ui/request-log.filtering.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: L4OiZnN89Ofpk6u8Ov6v4g==
- SHA1-Digest: rc+GRTLpOqdXsAeZoyRaFMFhO+0=
++MD5-Digest: iO2S3BIaBORr7tTAtXPYbw==
++SHA1-Digest: vvHvA2TQgl7ZLrcXeCu9HsX4IKM=
+
- Name: locale/sk-SK/requestpolicy.dtd
++Name: content/ui/request-log.interface.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: /HrV/tEV1jqBNtrqcBs1WQ==
- SHA1-Digest: 20a1yeDGOjjAu9a4QNJiYcz5SeU=
++MD5-Digest: UmSOWB4bnrY0SvBVwnxSIg==
++SHA1-Digest: D6HocXrmvxqdv4xXeTRu6z21oKI=
+
- Name: locale/sk-SK/requestpolicy.properties
++Name: content/ui/request-log.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: x32UxgRyEV7WyDse6UMpLg==
- SHA1-Digest: gyjG9VSAYtg/DxSmyJgBjrQkMQY=
++MD5-Digest: HZgC4qIIlyP84UVJox36hQ==
++SHA1-Digest: wztSPBDBY+4vY9mcpYmtgFMMJD0=
+
- Name: locale/ru-RU/requestpolicy.dtd
++Name: content/ui/request-log.tree-view.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: CwU7WRvYODMiRHmWxWylcw==
- SHA1-Digest: zmeQL5LH3Q0zo+cf3I8yTAjMVpI=
++MD5-Digest: 1H214QktlW6AJJPfZuj6dQ==
++SHA1-Digest: eTbXppqH9+NfbIpnUAF8PW6Qk7Q=
+
- Name: locale/ru-RU/requestpolicy.properties
++Name: content/ui/request-log.xul
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: XdwMR7yZe3WUisbXqbVw1w==
- SHA1-Digest: N7hl2feljxDbrDM/jkLq/oXKOpI=
++MD5-Digest: K2TnB0MRhDGCZuyLdkzgRQ==
++SHA1-Digest: Eaw6OXH+WjEmyYF/I+UgLf/jDAs=
+
- Name: locale/it/requestpolicy.dtd
++Name: content/ui/xul-trees.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: iuaTQG8IWWJHMEqm8/wzeg==
- SHA1-Digest: ADrzsCPiLkT1ClP6Xp+nKwsQu2M=
++MD5-Digest: XHW/KGz1VPNgltxOyh5z7Q==
++SHA1-Digest: NSniFFjZ5P2f7U9jGaoZYWjsYQY=
+
- Name: locale/it/requestpolicy.properties
++Name: locale/de/requestpolicy.dtd
++Digest-Algorithms: MD5 SHA1
++MD5-Digest: P3bt/Rvk7IFSK+FeLqrf2Q==
++SHA1-Digest: fi2ZzsQfYcSnMwVvzuMjKmj5ABA=
++
++Name: locale/de/requestpolicy.properties
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: S7Lqb6Rw3Woro63EdqgJaQ==
- SHA1-Digest: ZSgsU2bl5D+1+Kk7usdS2kDcBxg=
++MD5-Digest: gkXUNkdUcOkyj5ZF9zyUCw==
++SHA1-Digest: 22g2jthWnrXFQMwNQAxcTAzgGpI=
++
++Name: locale/en-US/requestpolicy.dtd
++Digest-Algorithms: MD5 SHA1
++MD5-Digest: z9mL9ndqOIJDSki2OAliIA==
++SHA1-Digest: oI+05rIfs3LkbVj2A8/ZybgtDSQ=
++
++Name: locale/en-US/requestpolicy.properties
++Digest-Algorithms: MD5 SHA1
++MD5-Digest: LxB7zeihOOl2whLALaJ8BQ==
++SHA1-Digest: 1oHS2bl5dgdWa9mrpBVUbKMMqpg=
+
+Name: locale/eo/requestpolicy.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: cpw0czZp2ImP3XqSkcOLew==
+SHA1-Digest: 8Hof6vgM3HoPcg+NbWGct5A5f+c=
+
+Name: locale/eo/requestpolicy.properties
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: gb0aitVn5aEo1kTzhDwMFA==
- SHA1-Digest: lkdlIpiJNZZ3DBQ2Z1K0F2k5Y5s=
++MD5-Digest: 09ixu9cQ3/tYiDiEs49rLA==
++SHA1-Digest: hT1CNTdz4w1X9HDIKuuA//88RWU=
+
- Name: locale/sv-SE/requestpolicy.dtd
++Name: locale/es-MX/requestpolicy.dtd
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: 9Oby/weV3RG1PoVJy+8Few==
- SHA1-Digest: B5ZC1vu7d2RT001lQ74d4lYDJ0A=
++MD5-Digest: p4AB7nYZ/Kw6d9gfDi8IoQ==
++SHA1-Digest: zq7CXn+GYo7De4Xt91GOeOS3qZg=
+
- Name: locale/sv-SE/requestpolicy.properties
++Name: locale/es-MX/requestpolicy.properties
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: F0z6wfIevyZY243iA1162g==
- SHA1-Digest: Y0bmCIXYh0vxRUcTNhdVc3RpBfw=
++MD5-Digest: B+WW3roFHkra7N8InBTxBA==
++SHA1-Digest: hNjwpOPYyx3j160EXjma+GoIx9s=
++
++Name: locale/eu/requestpolicy.dtd
++Digest-Algorithms: MD5 SHA1
++MD5-Digest: JgPEcTxbEgFGG7Ob2/+gsA==
++SHA1-Digest: WymoX3seqH1a90qpytnO7R3bBE0=
++
++Name: locale/eu/requestpolicy.properties
++Digest-Algorithms: MD5 SHA1
++MD5-Digest: yfvCRzfTkEvw2slzi6eo6g==
++SHA1-Digest: Vq/NaBXnCnSP1mLodJwCJ9cVQgQ=
++
++Name: locale/fr/requestpolicy.dtd
++Digest-Algorithms: MD5 SHA1
++MD5-Digest: cU13QRB7T8ukgCiSoJgkmw==
++SHA1-Digest: 8ASkBmqZ2Im5sU7XfRJmghOc+Yg=
++
++Name: locale/fr/requestpolicy.properties
++Digest-Algorithms: MD5 SHA1
++MD5-Digest: S3Hze+xk0bDufTjrOqcwgg==
++SHA1-Digest: AfrkjnBw/Zggs6Pu1c6NF8LUjjg=
++
++Name: locale/it/requestpolicy.dtd
++Digest-Algorithms: MD5 SHA1
++MD5-Digest: iuaTQG8IWWJHMEqm8/wzeg==
++SHA1-Digest: ADrzsCPiLkT1ClP6Xp+nKwsQu2M=
++
++Name: locale/it/requestpolicy.properties
++Digest-Algorithms: MD5 SHA1
++MD5-Digest: JbV41SvnFX9lVq6jFnVbCw==
++SHA1-Digest: IdOEu3LWIF2v8j6k3ybpdZTY6Q4=
+
+Name: locale/ja/requestpolicy.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: D1qyBtMKfDUCxQ78Xclzew==
+SHA1-Digest: RsE6DQpQPXNKipnGtRGrVuYxvrU=
+
+Name: locale/ja/requestpolicy.properties
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: p6w2dHwDS+zKlHGor8Zyiw==
- SHA1-Digest: GsA7CSbLsAIhrMHovVYd9zBF0no=
++MD5-Digest: pt1DcFcyonIBcB5UEf+aSA==
++SHA1-Digest: mSIixefqBFg+kHKzjWtNENrynng=
+
- Name: locale/nl/requestpolicy.dtd
++Name: locale/ko-KR/requestpolicy.dtd
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: 8MG3dZttG264EPhnB/K3+Q==
- SHA1-Digest: ZeyaN7q1wX+om//sU36NpYYIU8M=
++MD5-Digest: awJU2LVBkGH5531QM3WseQ==
++SHA1-Digest: 0CW1gSuTZoPHkUo8QaBSiEtPJ5Y=
+
- Name: locale/nl/requestpolicy.properties
++Name: locale/ko-KR/requestpolicy.properties
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: 3F/5dquMiSaXRQoasd08zg==
- SHA1-Digest: WWmLeOuASx1woRCfngdB++Rt6U4=
++MD5-Digest: WO/BS8QwiduyUfuqNJI1Qg==
++SHA1-Digest: ek6M3UOY3YXkmF67cOrzJZ6DwFs=
+
- Name: locale/zh-CN/requestpolicy.dtd
++Name: locale/lv-LV/requestpolicy.dtd
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: T5Bqf7eJXZxkvt1kRf2WTw==
- SHA1-Digest: rsMS9bomSXElul3g2FIISZAq0CA=
++MD5-Digest: F9pyEdjG26OezWX4uIvt3Q==
++SHA1-Digest: qU+7HD6MIJakGnFqLLJzRv6hPkA=
+
- Name: locale/zh-CN/requestpolicy.properties
++Name: locale/lv-LV/requestpolicy.properties
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: xPgWgIMArCFCL0q0+k6rSA==
- SHA1-Digest: /Y/yByEEGxlw7iOlUfBPPstugJk=
++MD5-Digest: 2IbiXvBvyW3EW4kJA3KzQA==
++SHA1-Digest: 4htjQfVVM/+9Ue28upSK2ntIb4E=
+
- Name: locale/zh-TW/requestpolicy.dtd
++Name: locale/nl/requestpolicy.dtd
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: PfmqQTFvc1tNhrhtngY7tQ==
- SHA1-Digest: MejY4QleZFjtH1FQRmulTz+bMcM=
++MD5-Digest: 8MG3dZttG264EPhnB/K3+Q==
++SHA1-Digest: ZeyaN7q1wX+om//sU36NpYYIU8M=
+
- Name: locale/zh-TW/requestpolicy.properties
++Name: locale/nl/requestpolicy.properties
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: olR2LzmDRd6zMDjd3iGELg==
- SHA1-Digest: Gw19BnRvWgOOJRxXQ14wYsMf0qg=
++MD5-Digest: C/jJ8EptYmySRLseSqsmyw==
++SHA1-Digest: 4MQrVAgLWcIE8AbPdkw59P6T2uM=
+
+Name: locale/pt-BR/requestpolicy.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ygevhxxjopSuy+jHRvTQ4w==
+SHA1-Digest: G9v9ugU1Ksv5F+OmOvg/xpxedQ4=
+
+Name: locale/pt-BR/requestpolicy.properties
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: b+tMxOgG/1Vqr1M3m10tpA==
- SHA1-Digest: 9wpV19K7DuEHVhrigdxxQQ92yRc=
++MD5-Digest: KqV7a9AXm/FJLSB6mknPHA==
++SHA1-Digest: 0OR0uxxq1axntmg0Ts4sEZafHqw=
+
- Name: locale/fr/requestpolicy.dtd
++Name: locale/ru-RU/requestpolicy.dtd
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: cU13QRB7T8ukgCiSoJgkmw==
- SHA1-Digest: 8ASkBmqZ2Im5sU7XfRJmghOc+Yg=
++MD5-Digest: CwU7WRvYODMiRHmWxWylcw==
++SHA1-Digest: zmeQL5LH3Q0zo+cf3I8yTAjMVpI=
+
- Name: locale/fr/requestpolicy.properties
++Name: locale/ru-RU/requestpolicy.properties
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: lcTaxrkvn6nvbMfXhP+4qQ==
- SHA1-Digest: T8yYeCC+/87sAziU4YEUxp6juVI=
++MD5-Digest: zV859Duay/Dq9ypdQKmIWg==
++SHA1-Digest: gg/eh93oXhL/7wotdsskZ6kNcNA=
+
- Name: locale/de/requestpolicy.dtd
++Name: locale/sk-SK/requestpolicy.dtd
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: P3bt/Rvk7IFSK+FeLqrf2Q==
- SHA1-Digest: fi2ZzsQfYcSnMwVvzuMjKmj5ABA=
++MD5-Digest: /HrV/tEV1jqBNtrqcBs1WQ==
++SHA1-Digest: 20a1yeDGOjjAu9a4QNJiYcz5SeU=
+
- Name: locale/de/requestpolicy.properties
++Name: locale/sk-SK/requestpolicy.properties
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: swV0aAKvSuaSKKdBMKqRhw==
- SHA1-Digest: PCUQHkYaO2T84ALwTdlwPDoR8dU=
++MD5-Digest: pT59XvD0Z4rxBxF6rtCE6A==
++SHA1-Digest: kQdTb7v7uw7QnuDssbT/7P4eNFs=
+
- Name: locale/en-US/requestpolicy.dtd
++Name: locale/sv-SE/requestpolicy.dtd
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: z9mL9ndqOIJDSki2OAliIA==
- SHA1-Digest: oI+05rIfs3LkbVj2A8/ZybgtDSQ=
++MD5-Digest: 9Oby/weV3RG1PoVJy+8Few==
++SHA1-Digest: B5ZC1vu7d2RT001lQ74d4lYDJ0A=
+
- Name: locale/en-US/requestpolicy.properties
++Name: locale/sv-SE/requestpolicy.properties
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: iPC4ldfVruBYx8G8QXVBNA==
- SHA1-Digest: LxODHJXeLrt/jcgZd/L6cRWpj/g=
++MD5-Digest: aa+65NqWb8hvpjVgBIoyvQ==
++SHA1-Digest: H0btLvHx8aS0pZzSPARFhwlgJ+c=
+
- Name: locale/ko-KR/requestpolicy.dtd
++Name: locale/tr/requestpolicy.dtd
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: awJU2LVBkGH5531QM3WseQ==
- SHA1-Digest: 0CW1gSuTZoPHkUo8QaBSiEtPJ5Y=
++MD5-Digest: YHGevfSYcNwB5aR/DjrRLQ==
++SHA1-Digest: 7BKNoiJcmmRhC+PF2+2GaFOiNBI=
+
- Name: locale/ko-KR/requestpolicy.properties
++Name: locale/tr/requestpolicy.properties
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: kUuwL52KmnmfSsjhIlHkrg==
- SHA1-Digest: kkaHcO4jk1Po9zQTBnXLpoLYWpM=
++MD5-Digest: XQ0lfO6ZkVfnXMxxwOjvjQ==
++SHA1-Digest: E+4Sx9nkONZt2JVB5f2+0SK0A18=
+
- Name: locale/lv-LV/requestpolicy.dtd
++Name: locale/uk-UA/requestpolicy.dtd
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: F9pyEdjG26OezWX4uIvt3Q==
- SHA1-Digest: qU+7HD6MIJakGnFqLLJzRv6hPkA=
++MD5-Digest: oGWBoRlf+qVuz66wmB/J2Q==
++SHA1-Digest: Qucwrc3cqcj6CZhVG99sQWh+2LY=
+
- Name: locale/lv-LV/requestpolicy.properties
++Name: locale/uk-UA/requestpolicy.properties
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: QDxm102/FVytCfNHeajzSw==
- SHA1-Digest: yU/r3ZdNqwR33eQcXao8Ma2yGTs=
++MD5-Digest: wfTjGfPn2fcq0r91G6ofqQ==
++SHA1-Digest: xPqiQcv2wG/JnfDfviq8mODKqfU=
+
- Name: locale/es-MX/requestpolicy.dtd
++Name: locale/zh-CN/requestpolicy.dtd
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: p4AB7nYZ/Kw6d9gfDi8IoQ==
- SHA1-Digest: zq7CXn+GYo7De4Xt91GOeOS3qZg=
++MD5-Digest: T5Bqf7eJXZxkvt1kRf2WTw==
++SHA1-Digest: rsMS9bomSXElul3g2FIISZAq0CA=
+
- Name: locale/es-MX/requestpolicy.properties
++Name: locale/zh-CN/requestpolicy.properties
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: hZJZe4f//f5CTW5OzkBpTg==
- SHA1-Digest: BAE7m5U7fj+zax9opW8HOopFA0U=
++MD5-Digest: 2rGYVt9h8MCjX0fetGYW4A==
++SHA1-Digest: FgkWEGPFz7dhkeokNxnS5I37HSs=
+
- Name: skin/requestpolicy-statusbar-blocked.png
++Name: locale/zh-TW/requestpolicy.dtd
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: DLfnmMXcX11H83/x1l+PkA==
- SHA1-Digest: JwE7jJrdz9dY3SDzPDN5cXyuIPE=
++MD5-Digest: PfmqQTFvc1tNhrhtngY7tQ==
++SHA1-Digest: MejY4QleZFjtH1FQRmulTz+bMcM=
+
- Name: skin/dot.png
++Name: locale/zh-TW/requestpolicy.properties
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: 6ZQiOl6YR5jZzvD/M9z8ig==
- SHA1-Digest: RDgRl3pigBseZY3o2FgGlA4lhe4=
++MD5-Digest: RjdaDueY58j27fa0aUK4rA==
++SHA1-Digest: svpzOSx/LXc8lNOQ+cMisgxFWII=
+
- Name: skin/request-log.css
++Name: skin/close.png
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: Dy1U0gvGP9lHyEF5OFqW3w==
- SHA1-Digest: gDzFQguILzvYrXM8k5XERcGsK/w=
++MD5-Digest: 7h607/eRKeau7XntOi2fCw==
++SHA1-Digest: iTy8yNjtkoRcODVHdACukPyUdmk=
+
- Name: skin/requestpolicy-icon-32-blocked.png
++Name: skin/dot.png
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: Azv0YBgCQQPEOYE1H5FA1Q==
- SHA1-Digest: r/saE8YuaR1GmoXPLNiEEcWDyCQ=
++MD5-Digest: 6ZQiOl6YR5jZzvD/M9z8ig==
++SHA1-Digest: RDgRl3pigBseZY3o2FgGlA4lhe4=
+
- Name: skin/requestpolicy-statusbar-allowed.png
++Name: skin/initial-setup.css
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: 0folj9+9/KhWd2DmfBs3Fg==
- SHA1-Digest: v7VT838WMXI1DwX2lrSW3YH9jow=
++MD5-Digest: SivkyepsnCnN6H1YiYqwfw==
++SHA1-Digest: J3sxJn/rTfCYlZiy9I0d8FAvzNY=
+
- Name: skin/close.png
++Name: skin/menu-allowed.svg
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: 7h607/eRKeau7XntOi2fCw==
- SHA1-Digest: iTy8yNjtkoRcODVHdACukPyUdmk=
++MD5-Digest: nV5VrjIu5Xtzzx12iVediw==
++SHA1-Digest: Xa8xm1qix3i/VH+dvzVvDwImgC8=
+
- Name: skin/requestpolicy-icon-32-allowed.png
++Name: skin/menu-blocked.svg
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: ad8QX7maxSoOWvptubGk2w==
- SHA1-Digest: jJxLCde6TR+WUhbU+uADUvfaTe4=
++MD5-Digest: n3DEgJZDT6gUSnxPKSq26g==
++SHA1-Digest: DWmR3LX2AnSv2Ns92RkP037LKr0=
+
- Name: skin/requestpolicy-icon-disabled.png
++Name: skin/menu-default.svg
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: IbB/LJgfFQ0Bh//Ov/Pl1Q==
- SHA1-Digest: poh+kgwVdBewWFYWOXD6jMTnqUM=
++MD5-Digest: YMrcua6M9KW8ha0v3Ye6rw==
++SHA1-Digest: UnW/mDqYtJjpsmaMDxseUmWZqbw=
+
+Name: skin/menu-other-origins.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: dUzdeO5c8zbWFl/zN6NwfQ==
+SHA1-Digest: wz+fvLxp7vdR4rq6/B3r6lZhVGM=
+
++Name: skin/request-log.css
++Digest-Algorithms: MD5 SHA1
++MD5-Digest: Dy1U0gvGP9lHyEF5OFqW3w==
++SHA1-Digest: gDzFQguILzvYrXM8k5XERcGsK/w=
++
+Name: skin/requestpolicy-icon-24-allowed.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: zYXVJ1OS66hBNFm5yrFgkA==
+SHA1-Digest: C2IFm7adI+wabttSCm8NiLINjlo=
+
- Name: skin/toolbarbutton-seamonkey.css
- Digest-Algorithms: MD5 SHA1
- MD5-Digest: TEeNSDq+8q/vwLDQ48+Yag==
- SHA1-Digest: o2eyybot7PxmxQUQZdlm7s2WW7o=
-
- Name: skin/menu-default.svg
- Digest-Algorithms: MD5 SHA1
- MD5-Digest: YMrcua6M9KW8ha0v3Ye6rw==
- SHA1-Digest: UnW/mDqYtJjpsmaMDxseUmWZqbw=
-
- Name: skin/toolbarbutton.css
- Digest-Algorithms: MD5 SHA1
- MD5-Digest: tbTc7iHHY3IxgZZzRNWHEQ==
- SHA1-Digest: Pwx6sucpQTLpIbu+UKOD6/3cgTQ=
-
+Name: skin/requestpolicy-icon-24-blocked.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Wic5nAdiHv1e+ncHnNZhxg==
+SHA1-Digest: GsJl5v6HO7CUOS/8lB/4MMRPCuw=
+
- Name: skin/initial-setup.css
++Name: skin/requestpolicy-icon-24-disabled.png
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: SivkyepsnCnN6H1YiYqwfw==
- SHA1-Digest: J3sxJn/rTfCYlZiy9I0d8FAvzNY=
++MD5-Digest: g/xzYn+NcYrBALsvLvCygA==
++SHA1-Digest: HgHArB9Dfe7ljls1nIrJNK6MHTg=
+
- Name: skin/menu-allowed.svg
++Name: skin/requestpolicy-icon-32-allowed.png
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: nV5VrjIu5Xtzzx12iVediw==
- SHA1-Digest: Xa8xm1qix3i/VH+dvzVvDwImgC8=
++MD5-Digest: ad8QX7maxSoOWvptubGk2w==
++SHA1-Digest: jJxLCde6TR+WUhbU+uADUvfaTe4=
++
++Name: skin/requestpolicy-icon-32-blocked.png
++Digest-Algorithms: MD5 SHA1
++MD5-Digest: Azv0YBgCQQPEOYE1H5FA1Q==
++SHA1-Digest: r/saE8YuaR1GmoXPLNiEEcWDyCQ=
+
+Name: skin/requestpolicy-icon-32-disabled.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: B2n1zStlybgvbtikAtcGyg==
+SHA1-Digest: HfF/LBsrRVTUF3vqN4fH4OVoyVI=
+
+Name: skin/requestpolicy-icon-32.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 7cfrRo4hVSZjIitHKQJd6A==
+SHA1-Digest: L8b37XGnevF0DKRos7lxvVq7sTs=
+
- Name: skin/requestpolicy-icon-24-disabled.png
- Digest-Algorithms: MD5 SHA1
- MD5-Digest: g/xzYn+NcYrBALsvLvCygA==
- SHA1-Digest: HgHArB9Dfe7ljls1nIrJNK6MHTg=
-
- Name: skin/menu-blocked.svg
- Digest-Algorithms: MD5 SHA1
- MD5-Digest: n3DEgJZDT6gUSnxPKSq26g==
- SHA1-Digest: DWmR3LX2AnSv2Ns92RkP037LKr0=
-
+Name: skin/requestpolicy-icon-allowed.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: T7JlJKlYh0xouf5n3nXoIw==
+SHA1-Digest: 9Xd8pFqrBNRfiJaii6PuSQNwGGg=
+
- Name: skin/requestpolicy.css
- Digest-Algorithms: MD5 SHA1
- MD5-Digest: 9wPJ/dCof0IjQp+ygdCi8g==
- SHA1-Digest: Q2oo/S5K3eJAVxbf7DKNE/wkNIQ=
-
+Name: skin/requestpolicy-icon-blocked.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: H2bEnhsko2AFOyB/J0CoXg==
+SHA1-Digest: GKvD/D6A6XHVoYfW9J5LtkpFQis=
+
++Name: skin/requestpolicy-icon-disabled.png
++Digest-Algorithms: MD5 SHA1
++MD5-Digest: IbB/LJgfFQ0Bh//Ov/Pl1Q==
++SHA1-Digest: poh+kgwVdBewWFYWOXD6jMTnqUM=
++
++Name: skin/requestpolicy-statusbar-allowed.png
++Digest-Algorithms: MD5 SHA1
++MD5-Digest: 0folj9+9/KhWd2DmfBs3Fg==
++SHA1-Digest: v7VT838WMXI1DwX2lrSW3YH9jow=
++
++Name: skin/requestpolicy-statusbar-blocked.png
++Digest-Algorithms: MD5 SHA1
++MD5-Digest: DLfnmMXcX11H83/x1l+PkA==
++SHA1-Digest: JwE7jJrdz9dY3SDzPDN5cXyuIPE=
++
+Name: skin/requestpolicy-statusbar-disabled.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: AbAK6+qCdyzo9q3OA5Qt9w==
+SHA1-Digest: ulSmlBGaY0+PeWUM//y8TQryZ44=
+
- Name: chrome.manifest
++Name: skin/requestpolicy.css
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: RPJPQ0xi45CRx2zI0SuZiw==
- SHA1-Digest: CQz+MaCf0siuPn+qjNMkqIV0GbM=
++MD5-Digest: P0UKh3kEWzc+A67Y2IjxwQ==
++SHA1-Digest: H925YlxuDw07mwfjJsR9jTRrhX8=
+
- Name: bootstrap.js
++Name: skin/toolbarbutton-seamonkey.css
++Digest-Algorithms: MD5 SHA1
++MD5-Digest: TEeNSDq+8q/vwLDQ48+Yag==
++SHA1-Digest: o2eyybot7PxmxQUQZdlm7s2WW7o=
++
++Name: skin/toolbarbutton.css
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: NrKgyQ7kZsPGT2ff9OFX2A==
- SHA1-Digest: weFhqK4W8qUUee//yL5VH0fEh3o=
++MD5-Digest: rRJgwME7ZsXu8lzdQxhGmQ==
++SHA1-Digest: a+zfbIUeLWYnFiyn02Ddlnck1io=
++
++Name: LICENSE
++Digest-Algorithms: MD5 SHA1
++MD5-Digest: V+iUvQ8339+uK2nUxBt4oQ==
++SHA1-Digest: BKr7OaEqkHyN92EAoQgXBoUWHk4=
++
diff --cc META-INF/mozilla.rsa
index 0000000,0000000..75c927b
new file mode 100644
Binary files differ
diff --cc META-INF/mozilla.sf
index 0000000,0000000..5bf2160
new file mode 100644
--- /dev/null
+++ b/META-INF/mozilla.sf
@@@ -1,0 -1,0 +1,4 @@@
++Signature-Version: 1.0
++MD5-Digest-Manifest: gPyJS94SHa4JmlLR9WaeSg==
++SHA1-Digest-Manifest: gm9+tTF+InAhV3RtdSbEo/7RoKE=
++
diff --cc content/controllers/keyboard-shortcuts.jsm
index 0000000,b656d3f..b656d3f
mode 000000,100644..100644
--- a/content/controllers/keyboard-shortcuts.jsm
+++ b/content/controllers/keyboard-shortcuts.jsm
diff --cc content/controllers/old-rules.jsm
index 0000000,4bf2827..4bf2827
mode 000000,100644..100644
--- a/content/controllers/old-rules.jsm
+++ b/content/controllers/old-rules.jsm
diff --cc content/controllers/windows.overlay.jsm
index 0000000,d4de0e1..d4de0e1
mode 000000,100644..100644
--- a/content/controllers/windows.overlay.jsm
+++ b/content/controllers/windows.overlay.jsm
diff --cc content/controllers/windows.style-sheets.jsm
index 0000000,2617b85..2617b85
mode 000000,100644..100644
--- a/content/controllers/windows.style-sheets.jsm
+++ b/content/controllers/windows.style-sheets.jsm
diff --cc content/controllers/windows.toolbarbutton.jsm
index 0000000,b6043a8..b6043a8
mode 000000,100644..100644
--- a/content/controllers/windows.toolbarbutton.jsm
+++ b/content/controllers/windows.toolbarbutton.jsm
diff --cc content/lib/classes/keyboard-shortcut.jsm
index 0000000,af1a54c..af1a54c
mode 000000,100644..100644
--- a/content/lib/classes/keyboard-shortcut.jsm
+++ b/content/lib/classes/keyboard-shortcut.jsm
diff --cc content/lib/classes/map-of-sets.jsm
index 0000000,8a1fdd6..8a1fdd6
mode 000000,100644..100644
--- a/content/lib/classes/map-of-sets.jsm
+++ b/content/lib/classes/map-of-sets.jsm
diff --cc content/lib/classes/pref-branch.jsm
index 0000000,f1824c0..f1824c0
mode 000000,100644..100644
--- a/content/lib/classes/pref-branch.jsm
+++ b/content/lib/classes/pref-branch.jsm
diff --cc content/lib/classes/pref-observer.jsm
index 0000000,58817fb..58817fb
mode 000000,100644..100644
--- a/content/lib/classes/pref-observer.jsm
+++ b/content/lib/classes/pref-observer.jsm
diff --cc content/lib/environment.jsm
index 89dc349,c200bce..a4f4ef4
--- a/content/lib/environment.jsm
+++ b/content/lib/environment.jsm
@@@ -27,491 -31,590 +31,538 @@@ this.EXPORTED_SYMBOLS =
"ProcessEnvironment"
];
- const Ci = Components.interfaces;
- const Cc = Components.classes;
- const Cu = Components.utils;
-
let globalScope = this;
- Cu.import("resource://gre/modules/XPCOMUtils.jsm");
- Cu.import("resource://gre/modules/Services.jsm");
- Cu.import("resource://gre/modules/devtools/Console.jsm");
+ let {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm", {});
+ let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
+ let {console} = Cu.import("resource://gre/modules/devtools/Console.jsm", {});
- Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
+ let {ScriptLoader} = Cu.import(
+ "chrome://rpcontinued/content/lib/script-loader.jsm", {});
ScriptLoader.defineLazyModuleGetters({
+ /* global ManagerForEventListeners */
"lib/manager-for-event-listeners": ["ManagerForEventListeners"],
+ /* global ManagerForMessageListeners */
"lib/manager-for-message-listeners": ["ManagerForMessageListeners"],
- "lib/utils/constants": ["C"],
- "lib/observer-manager": ["ObserverManager"]
+ /* global ObserverManager */
+ "lib/observer-manager": ["ObserverManager"],
+ /* global PrefObserver */
+ "lib/classes/pref-observer": ["PrefObserver"]
}, globalScope);
+ //==============================================================================
+ // utilities
+ //==============================================================================
+ const LOG_PREFIX = "[RPC] [Environment] ";
+ function consoleLog(method, message) {
+ console[method](LOG_PREFIX + message);
+ }
- let ENV_STATES = {
- "NOT_STARTED": 0,
- "STARTING_UP": 1,
- "STARTUP_DONE": 2,
- "SHUTTING_DOWN": 3,
- "SHUT_DOWN": 4
+ let log = {
+ debug: consoleLog.bind(null, "debug"),
+ warning: consoleLog.bind(null, "warn"),
+ error: consoleLog.bind(null, "error")
};
- let LEVELS = {
- // Essential functions do tasks that must be run first on startup and last
- // on shutdown, that is they do tasks that are requirements for the Backend.
- "ESSENTIAL": 1,
- // Backend functions start up/shut down main parts of RequestPolicy, but
- // they do not enable RequestPolicy at all.
- "BACKEND": 2,
- // Interface functions enable/disable external as well as internal interfaces,
- // e.g. Event Listeners, Message Listeners, Observers, Factories.
- "INTERFACE": 3,
- // UI functions will enable/disable UI elements such as the menu.
- "UI": 4
- };
+ //==============================================================================
+ // Environment
+ //==============================================================================
- // a level can be entered, being processed, or finished being processed.
- let LEVEL_STATES = {
- "NOT_ENTERED": 0,
- "PROCESSING": 1,
- "FINISHED_PROCESSING": 2
- };
+ var Environment = (function() {
+ //----------------------------------------------------------------------------
+ // constants, metadata
+ //----------------------------------------------------------------------------
- let BOOTSTRAP = {
- "startup": {
- levelSequence: [
- LEVELS.ESSENTIAL,
- LEVELS.BACKEND,
- LEVELS.INTERFACE,
- LEVELS.UI
- ],
- lastLevel: LEVELS.UI,
- envStates: {
- "beforeProcessing": ENV_STATES.NOT_STARTED,
- "duringProcessing": ENV_STATES.STARTING_UP,
- "afterProcessing": ENV_STATES.STARTUP_DONE
- },
- functions: {
- "beforeProcessing": function() {
- // "this" will be an environment
- let self = this;
- self.register();
+ const ENV_STATES = {
+ "NOT_STARTED": 0,
+ "STARTING_UP": 1,
+ "STARTUP_DONE": 2,
+ "SHUTTING_DOWN": 3,
+ "SHUT_DOWN": 4
+ };
+
+ const LEVELS = {
+ // Essential functions do tasks that must be run first on startup and last
+ // on shutdown, that is they do tasks that are requirements for the Backend.
+ "ESSENTIAL": 1,
+ // Backend functions start up/shut down main parts of RequestPolicy, but
+ // they do not enable RequestPolicy at all.
+ "BACKEND": 2,
+ // Interface functions enable/disable external as well as internal
+ // interfaces, e.g. Event Listeners, Message Listeners, Observers,
+ // Factories.
+ "INTERFACE": 3,
+ // UI functions will enable/disable UI elements such as the menu.
+ "UI": 4
+ };
+
+ // a level can be entered, being processed, or finished being processed.
+ const LEVEL_STATES = {
+ "NOT_ENTERED": 0,
+ "PROCESSING": 1,
+ "FINISHED_PROCESSING": 2
+ };
+
+ let BOOTSTRAP = {
+ "startup": {
+ levelSequence: [
+ LEVELS.ESSENTIAL,
+ LEVELS.BACKEND,
+ LEVELS.INTERFACE,
+ LEVELS.UI
+ ],
+ lastLevel: LEVELS.UI,
+ envStates: {
+ "beforeProcessing": ENV_STATES.NOT_STARTED,
+ "duringProcessing": ENV_STATES.STARTING_UP,
+ "afterProcessing": ENV_STATES.STARTUP_DONE
},
- "afterProcessing": function() {}
- }
- },
- "shutdown": {
- levelSequence: [
- LEVELS.UI,
- LEVELS.INTERFACE,
- LEVELS.BACKEND,
- LEVELS.ESSENTIAL
- ],
- lastLevel: LEVELS.ESSENTIAL,
- envStates: {
- "beforeProcessing": ENV_STATES.STARTUP_DONE,
- "duringProcessing": ENV_STATES.SHUTTING_DOWN,
- "afterProcessing": ENV_STATES.SHUT_DOWN
+ functions: {
+ /**
+ * @this {Environment}
+ */
+ "beforeProcessing": function() {
+ this.register();
+ },
+ "afterProcessing": function() {}
+ }
},
- functions: {
- "beforeProcessing": function() {},
- "afterProcessing": function() {
- // "this" will be an environment
- let self = this;
- self.innerEnvs.length = 0;
- self.unregister();
+ "shutdown": {
+ levelSequence: [
+ LEVELS.UI,
+ LEVELS.INTERFACE,
+ LEVELS.BACKEND,
+ LEVELS.ESSENTIAL
+ ],
+ lastLevel: LEVELS.ESSENTIAL,
+ envStates: {
+ "beforeProcessing": ENV_STATES.STARTUP_DONE,
+ "duringProcessing": ENV_STATES.SHUTTING_DOWN,
+ "afterProcessing": ENV_STATES.SHUT_DOWN
+ },
+ functions: {
+ "beforeProcessing": function() {},
+ /**
+ * @this {Environment}
+ */
+ "afterProcessing": function() {
+ this.innerEnvs.length = 0;
+ this.unregister();
+ }
}
}
- }
- };
- function getBootstrapMetadata(startupOrShutdown) {
- return BOOTSTRAP[startupOrShutdown];
- }
-
-
- /**
- * The `Environment` class can take care of the "startup" (=initialization)
- * and "shutdown" of any environment.
- *
- * To each `Environment` instance, `startup` and `shutdown` functions can be
- * added. As soon as the Environment starts up, e.g. via its startup()
- * function, all those functions will be called. Equally the shutdown
- * functions are called on the environment's shutdown.
- *
- * Both startup and shutdown functions will have Levels assigned. The levels
- * of the functions determine in which sequence they are called.
- *
- * @constructor
- * @param {Environment=} aOuterEnv - the Environment to which this environment
- * will register itself. Inner environments shut down when its outer
- * environment shuts down.
- * @param {string=} aName - the Environment's name; only needed for debugging.
- */
- function Environment(aOuterEnv, aName="anonymous") {
- let self = this;
-
- self.envState = ENV_STATES.NOT_STARTED;
-
- self.name = aName;
-
- self.outerEnv = aOuterEnv instanceof Environment ? aOuterEnv : null;
- self.innerEnvs = new Set();
-
- self.levels = {
- "startup": generateLevelObjects(),
- "shutdown": generateLevelObjects()
};
+ function getBootstrapMetadata(startupOrShutdown) {
+ return BOOTSTRAP[startupOrShutdown];
+ }
- // Define a Lazy Getter to get an ObserverManager for this Environment.
- // Using that Getter is more convenient than doing it manually, as the
- // Environment has to be created *before* the ObserverManager.
- XPCOMUtils.defineLazyGetter(self, "obMan", function() {
- return new ObserverManager(self);
- });
-
- // Define a Lazy Getter to get an instance of `ManagerForEventListeners` for
- // this Environment.
- XPCOMUtils.defineLazyGetter(self, "elManager", function() {
- return new ManagerForEventListeners(self);
- });
-
- // generate an unique ID for debugging purposes
- XPCOMUtils.defineLazyGetter(self, "uid", function() {
- return Math.random().toString(36).substr(2, 5);
- });
-
- //console.debug('[RPC] created new Environment "'+self.name+'"');
- }
+ //----------------------------------------------------------------------------
+ // Environment
+ //----------------------------------------------------------------------------
- Environment.LEVELS = LEVELS;
+ /**
+ * The `Environment` class can take care of the "startup" (=initialization)
+ * and "shutdown" of any environment.
+ *
+ * To each `Environment` instance, `startup` and `shutdown` functions can be
+ * added. As soon as the Environment starts up, e.g. via its startup()
+ * function, all those functions will be called. Equally the shutdown
+ * functions are called on the environment's shutdown.
+ *
+ * Both startup and shutdown functions will have Levels assigned. The levels
+ * of the functions determine in which sequence they are called.
+ *
+ * @constructor
+ * @param {Environment=} aOuterEnv - the Environment to which this environment
+ * will register itself. Inner environments shut down when its outer
+ * environment shuts down.
+ * @param {string=} aName - the Environment's name; only needed for debugging.
+ */
+ function Environment(aOuterEnv, aName="anonymous") {
+ let self = this;
+ self.envState = ENV_STATES.NOT_STARTED;
- /**
- * This function creates one "Level Object" for each level. Those objects
- * mainly will hold the startup- or shutdown-functions of the corresponding
- * level. All of the Level Objects are put together in another object which
- * is then returned.
- */
- function generateLevelObjects() {
- let obj = {};
- for (let levelName in Environment.LEVELS) {
- let level = Environment.LEVELS[levelName];
- obj[level] = {"functions": [], "levelState": LEVEL_STATES.NOT_ENTERED};
- }
- return obj;
- }
+ self.name = aName;
+ self.outerEnv = aOuterEnv instanceof Environment ? aOuterEnv : null;
+ self.innerEnvs = new Set();
- /**
- * Registers the environment to its outer environment.
- */
- Environment.prototype.register = function() {
- let self = this;
- if (self.outerEnv) {
- self.outerEnv.registerInnerEnvironment(self);
- }
- }
- /**
- * Unregisters the environment from its outer environment.
- */
- Environment.prototype.unregister = function() {
- let self = this;
- if (self.outerEnv) {
- self.outerEnv.unregisterInnerEnvironment(self);
- }
- }
- /**
- * Function called by an inner environment when it starts up.
- *
- * @param {Environment} aEnv - the environment that wants to register itself.
- */
- Environment.prototype.registerInnerEnvironment = function(aEnv) {
- let self = this;
- if (self.envState === ENV_STATES.NOT_STARTED) {
- console.warn("[RPC] registerInnerEnvironment() has been called, " +
- "but the outer environment hasn't started up yet. " +
- "Starting up now.");
- self.startup();
- }
- //console.debug("[RPC] registering inner environment.");
- self.innerEnvs.add(aEnv);
- };
- /**
- * Function that is called each time an inner environment shuts down.
- *
- * @param {Environment} aEnv - the environment that is unregistering
- */
- Environment.prototype.unregisterInnerEnvironment = function(aEnv) {
- let self = this;
-
- if (self.innerEnvs.has(aEnv) === false) {
- console.error("[RPC] it seems like an inner Environment " +
- "did not register.");
- } else {
- self.innerEnvs.delete(aEnv);
- }
- };
+ self.levels = {
+ "startup": generateLevelObjects(),
+ "shutdown": generateLevelObjects()
+ };
+ // Define a Lazy Getter to get an ObserverManager for this Environment.
+ // Using that Getter is more convenient than doing it manually, as the
+ // Environment has to be created *before* the ObserverManager.
+ XPCOMUtils.defineLazyGetter(self, "obMan", function() {
+ return new ObserverManager(self);
+ });
+ // Define a Lazy Getter to get an instance of `ManagerForEventListeners` for
+ // this Environment.
+ XPCOMUtils.defineLazyGetter(self, "elManager", function() {
+ return new ManagerForEventListeners(self);
+ });
+ // generate an unique ID for debugging purposes
+ XPCOMUtils.defineLazyGetter(self, "uid", function() {
+ return Math.random().toString(36).substr(2, 5);
+ });
- /**
- * Add a startup function to the environment.
- */
- Environment.prototype.addStartupFunction = function(aLevel, f) {
- let self = this;
- if (self.envState >= ENV_STATES.SHUTTING_DOWN) {
- // the environment is shutting down or already shut down.
- return;
- }
- if (self.levels["startup"][aLevel].levelState >= LEVEL_STATES.PROCESSING) {
- // Either the startup functions of the same level as `aLevel` have
- // already been processed
- // OR they are currently being processed.
- //
- // ==> call the function immediately.
- f();
- } else {
- // the startup process did not reach the function's level yet.
- //
- // ==> remember the function.
- self.levels["startup"][aLevel].functions.push(f);
- // #ifdef LOG_ENVIRONMENT
- log.debug("created new Environment \"" + self.name + "\"");
- // #endif
}
- };
- /**
- * Add a shutdown function to the environment.
- */
- Environment.prototype.addShutdownFunction = function(aLevel, f) {
- let self = this;
- if (self.levels["shutdown"][aLevel].levelState >= LEVEL_STATES.PROCESSING) {
- // Either the shutdown functions of the same level as `aLevel` have
- // already been processed
- // OR they are currently being processed.
- //
- // ==> call the function immediately.
- f();
- //console.debug('[RPC] calling shutdown function immediately: "' +
- // (f.name || "anonymous") + '" (' + self.name + ')');
- } else {
- // The opposite, i.e. the startup process did not reach the function's
- // level yet.
- //
- // ==> remember the function.
- self.levels["shutdown"][aLevel].functions.push(f);
- }
- };
+ Object.defineProperty(Environment.prototype, "prefObs", {
+ get: function() {
+ if (!this._prefObserver) {
+ this._prefObserver = new PrefObserver();
+ this.addShutdownFunction(Environment.LEVELS.INTERFACE, () => {
+ this._prefObserver.removeAllListeners();
+ });
+ }
+ return this._prefObserver;
+ }
+ });
+ Environment.LEVELS = LEVELS;
+ Environment.ENV_STATES = ENV_STATES;
- // have a scope/closure for private functions specific to
- // startup() and shutdown().
- (function createMethods_StartupAndShutdown(Environment) {
/**
- * Iterates all levels of either the startup or the shutdown
- * sequence and calls a function for each level.
- *
- * @param {string} aStartupOrShutdown
- * @param {function()} aFn - the function to call
- * @param {integer=} aUntilLevel - if specified, iteration stops
- * after that level.
+ * This function creates one "Level Object" for each level. Those objects
+ * mainly will hold the startup- or shutdown-functions of the corresponding
+ * level. All of the Level Objects are put together in another object which
+ * is then returned.
*/
- function iterateLevels(aStartupOrShutdown, aFn, aUntilLevel=null) {
- let sequence = BOOTSTRAP[aStartupOrShutdown].levelSequence;
-
- for (let i = 0, len = sequence.length; i < len; ++i) {
- // Note: It's necessary to use for(;;) instead of for(..of..)
- // because the order/sequence must be exactly the same as in the
- // array. for(..of..) doesn't guarantee that the elements are
- // called in order.
-
- let level = sequence[i];
- aFn(level);
-
- if (level === aUntilLevel) {
- // Stop after aUntilLevel
- break;
- }
+ function generateLevelObjects() {
+ let obj = {};
+ for (let levelName in Environment.LEVELS) {
+ let level = Environment.LEVELS[levelName];
+ obj[level] = {"functions": [], "levelState": LEVEL_STATES.NOT_ENTERED};
}
+ return obj;
}
-
/**
- * This function calls all functions in an array.
- *
- * @param {Array.<function()>} aFunctions
- * @param {Array} aBootstrapArgs - the arguments to apply
+ * Registers the environment to its outer environment.
*/
- function callFunctions(aFunctions, aBootstrapArgs) {
- // process the Array as long as it contains elements
- while (aFunctions.length > 0) {
- // The following is either `fnArray.pop()` or `fnArray.shift()`
- // depending on `sequence`.
- let f = aFunctions.pop();
-
- // call the function
- f.apply(null, aBootstrapArgs);
- //console.debug("[RPC] function called! (" + fnArray.length +
- // " functions left)");
+ Environment.prototype.register = function() {
+ let self = this;
+ if (self.outerEnv) {
+ self.outerEnv.registerInnerEnvironment(self);
+ }
+ };
+ /**
+ * Unregisters the environment from its outer environment.
+ */
+ Environment.prototype.unregister = function() {
+ let self = this;
+ if (self.outerEnv) {
+ self.outerEnv.unregisterInnerEnvironment(self);
}
};
-
-
/**
- * Process a level independently of the environment's states and
- * independently of the other levels' states.
+ * Function called by an inner environment when it starts up.
*
- * @this {Environment}
- * @param {string} aStartupOrShutdown - either "startup" or "shutdown"
- * @param {integer} aLevel
+ * @param {Environment} aEnv - the environment that wants to register itself.
*/
- function processLevel(aStartupOrShutdown, aLevel, aBootstrapArgs) {
+ Environment.prototype.registerInnerEnvironment = function(aEnv) {
let self = this;
-
- let levelObj = self.levels[aStartupOrShutdown][aLevel];
-
- if (levelObj.levelState === LEVEL_STATES.NOT_ENTERED) {
- levelObj.levelState = LEVEL_STATES.PROCESSING;
-
- if (aStartupOrShutdown === "shutdown") {
- // shut down all inner environments
- self.innerEnvs.forEach(function(innerEnv) {
- innerEnv.shutdown(aBootstrapArgs, aLevel);
- });
- }
-
- callFunctions(levelObj.functions, aBootstrapArgs);
-
- levelObj.levelState = LEVEL_STATES.FINISHED_PROCESSING;
+ if (self.envState === ENV_STATES.NOT_STARTED) {
+ log.warning("registerInnerEnvironment() has been called but " +
+ "the outer environment hasn't started up yet. " +
+ "Starting up now.");
+ self.startup();
}
- }
-
-
- // #ifdef LOG_ENVIRONMENT
- log.debug("registering inner environment");
- // #endif
+ self.innerEnvs.add(aEnv);
+ };
/**
- * Iterate levels and call processLevel() for each level.
+ * Function that is called each time an inner environment shuts down.
*
- * @this {Environment}
- * @param {string} aStartupOrShutdown
- * @param {Array} aBootstrapArgs
- * @param {integer=} aUntilLevel
+ * @param {Environment} aEnv - the environment that is unregistering
*/
- function processLevels(aStartupOrShutdown, aBootstrapArgs, aUntilLevel) {
+ Environment.prototype.unregisterInnerEnvironment = function(aEnv) {
let self = this;
- iterateLevels(aStartupOrShutdown, function (level) {
- processLevel.call(self, aStartupOrShutdown, level, aBootstrapArgs);
- }, aUntilLevel);
- }
+ if (self.innerEnvs.has(aEnv) === false) {
+ log.error("it seems like an inner Environment did not register.");
+ } else {
+ self.innerEnvs.delete(aEnv);
+ }
+ };
/**
- * Return some information about an environment.
- *
- * @param {Environment} env
- * @return {string}
+ * Add a startup function to the environment.
*/
- function getEnvInfo(env) {
- return "'" + env.name + "' (" + env.uid + ")";
- }
-
+ Environment.prototype.addStartupFunction = function(aLevel, f) {
+ let self = this;
+ if (self.envState >= ENV_STATES.SHUTTING_DOWN) {
+ // the environment is shutting down or already shut down.
+ return;
+ }
+ if (self.levels.startup[aLevel].levelState >= LEVEL_STATES.PROCESSING) {
+ // Either the startup functions of the same level as `aLevel` have
+ // already been processed
+ // OR they are currently being processed.
+ //
+ // ==> call the function immediately.
+ f();
+ } else {
+ // the startup process did not reach the function's level yet.
+ //
+ // ==> remember the function.
+ self.levels.startup[aLevel].functions.push(f);
+ }
+ };
/**
- * Actual body of the functions startup() and shutdown().
- *
- * @this {Environment}
- * @param {string} aStartupOrShutdown - either "startup" or "shutdown"
- * @param {Array} aBootstrapArgs
- * @param {integer=} aUntilLevel - The level after which the startup
- * (or shutdown) processing is stopped.
+ * Add a shutdown function to the environment.
*/
- function bootstrap(aStartupOrShutdown,
- aBootstrapArgs,
- aUntilLevel=BOOTSTRAP[aStartupOrShutdown].lastLevel) {
+ Environment.prototype.addShutdownFunction = function(aLevel, f) {
let self = this;
+ if (self.levels.shutdown[aLevel].levelState >= LEVEL_STATES.PROCESSING) {
+ // Either the shutdown functions of the same level as `aLevel` have
+ // already been processed
+ // OR they are currently being processed.
+ //
+ // ==> call the function immediately.
+ f();
- // #ifdef LOG_ENVIRONMENT
- let fName = f.name || "anonymous";
- log.debug("calling shutdown function immediately: " +
- "\"" + fName + "\" (" + self.name + ")");
- // #endif
+ } else {
+ // The opposite, i.e. the startup process did not reach the function's
+ // level yet.
+ //
+ // ==> remember the function.
+ self.levels.shutdown[aLevel].functions.push(f);
+ }
+ };
- let {
- lastLevel,
- envStates,
- functions
- } = getBootstrapMetadata(aStartupOrShutdown);
+ // have a scope/closure for private functions specific to
+ // startup() and shutdown().
+ (function createMethodsStartupAndShutdown(Environment) {
+ /**
+ * Iterates all levels of either the startup or the shutdown
+ * sequence and calls a function for each level.
+ *
+ * @param {string} aStartupOrShutdown
+ * @param {function()} aFn - the function to call
+ * @param {integer=} aUntilLevel - if specified, iteration stops
+ * after that level.
+ */
+ function iterateLevels(aStartupOrShutdown, aFn, aUntilLevel=null) {
+ let sequence = BOOTSTRAP[aStartupOrShutdown].levelSequence;
+
+ for (let i = 0, len = sequence.length; i < len; ++i) {
+ // Note: It's necessary to use for(;;) instead of for(..of..)
+ // because the order/sequence must be exactly the same as in the
+ // array. for(..of..) doesn't guarantee that the elements are
+ // called in order.
+
+ let level = sequence[i];
+ aFn(level);
+
+ if (level === aUntilLevel) {
+ // Stop after aUntilLevel
+ break;
+ }
+ }
+ }
- if (self.envState === envStates["beforeProcessing"]) {
- functions["beforeProcessing"].call(self);
+ /**
+ * This function calls all functions in an array.
+ *
+ * @param {Array.<function()>} aFunctions
+ * @param {Array} aBootstrapArgs - the arguments to apply
+ */
+ function callFunctions(aFunctions, aBootstrapArgs) {
+ // process the Array as long as it contains elements
+ while (aFunctions.length > 0) {
+ // The following is either `fnArray.pop()` or `fnArray.shift()`
+ // depending on `sequence`.
+ let f = aFunctions.pop();
+
+ // call the function
+ try {
+ f.apply(null, aBootstrapArgs);
+ } catch (e) {
+ Cu.reportError(e);
+ }
- // #ifdef LOG_ENVIRONMENT
- log.debug("function called! (" + aFunctions.length +
- " functions left)");
- // #endif
+ }
+ }
+
+ /**
+ * Process a level independently of the environment's states and
+ * independently of the other levels' states.
+ *
+ * @this {Environment}
+ * @param {string} aStartupOrShutdown - either "startup" or "shutdown"
+ * @param {integer} aLevel
+ */
+ function processLevel(aStartupOrShutdown, aLevel, aBootstrapArgs) {
+ let self = this;
+
+ let levelObj = self.levels[aStartupOrShutdown][aLevel];
+
+ if (levelObj.levelState === LEVEL_STATES.NOT_ENTERED) {
+ levelObj.levelState = LEVEL_STATES.PROCESSING;
- // #ifdef LOG_ENVIRONMENT
- log.debug("processing level " + aLevel + " of startup (" +
- self.uid + ")");
- // #endif
+
+ if (aStartupOrShutdown === "shutdown") {
+ // shut down all inner environments
+ self.innerEnvs.forEach(function(innerEnv) {
+ innerEnv.shutdown(aBootstrapArgs, aLevel);
+ });
+ }
+
+ callFunctions(levelObj.functions, aBootstrapArgs);
+
+ levelObj.levelState = LEVEL_STATES.FINISHED_PROCESSING;
- // #ifdef LOG_ENVIRONMENT
- log.debug("processing level " + aLevel + " of startup " +
- "(" + self.uid + ") finished");
- // #endif
+ }
+ }
- self.envState = envStates["duringProcessing"];
+ /**
+ * Iterate levels and call processLevel() for each level.
+ *
+ * @this {Environment}
+ * @param {string} aStartupOrShutdown
+ * @param {Array} aBootstrapArgs
+ * @param {integer=} aUntilLevel
+ */
+ function processLevels(aStartupOrShutdown, aBootstrapArgs, aUntilLevel) {
+ let self = this;
+ iterateLevels(aStartupOrShutdown, function(level) {
+ processLevel.call(self, aStartupOrShutdown, level, aBootstrapArgs);
+ }, aUntilLevel);
}
- if (self.envState === envStates["duringProcessing"]) {
- processLevels.call(self, aStartupOrShutdown, aBootstrapArgs, aUntilLevel);
+ /**
+ * Return some information about an environment.
+ *
+ * @param {Environment} env
+ * @return {string}
+ */
+ function getEnvInfo(env) {
+ return "'" + env.name + "' (" + env.uid + ")";
+ }
+
- // #ifdef LOG_ENVIRONMENT
- /**
- * Log some debug information on startup or shutdown.
- *
- * @this {Environment}
- * @param {string} aStartupOrShutdown
- */
- function logStartupOrShutdown(aStartupOrShutdown) {
- let self = this;
- log.debug(aStartupOrShutdown + ": " + getEnvInfo(self) + "." +
- (self.outerEnv ?
- " OuterEnv is " + getEnvInfo(self.outerEnv) + "." :
- " No OuterEnv."));
- }
- // #endif
+
+ /**
+ * Actual body of the functions startup() and shutdown().
+ *
+ * @this {Environment}
+ * @param {string} aStartupOrShutdown - either "startup" or "shutdown"
+ * @param {Array} aBootstrapArgs
+ * @param {integer=} aUntilLevel - The level after which the startup
+ * (or shutdown) processing is stopped.
+ */
+ function bootstrap(aStartupOrShutdown,
+ aBootstrapArgs,
+ aUntilLevel=BOOTSTRAP[aStartupOrShutdown].lastLevel) {
+ let self = this;
+
+ let {
+ lastLevel,
+ envStates,
+ functions
+ } = getBootstrapMetadata(aStartupOrShutdown);
+
+ if (self.envState === envStates.beforeProcessing) {
- // #ifdef LOG_ENVIRONMENT
- logStartupOrShutdown.call(self, aStartupOrShutdown);
- // #endif
+ functions.beforeProcessing.call(self);
+
+ self.envState = envStates.duringProcessing;
+ }
+
+ if (self.envState === envStates.duringProcessing) {
+ processLevels.call(self, aStartupOrShutdown, aBootstrapArgs,
+ aUntilLevel);
- if (aUntilLevel === lastLevel) {
- self.envState = envStates["afterProcessing"];
- functions["afterProcessing"].call(self);
+ if (aUntilLevel === lastLevel) {
+ self.envState = envStates.afterProcessing;
+ functions.afterProcessing.call(self);
+ }
}
}
- };
- Environment.prototype.startup = function(aBootstrapArgs, aUntilLevel) {
- let self = this;
- bootstrap.call(self, "startup", aBootstrapArgs, aUntilLevel);
- };
+ Environment.prototype.startup = function(aBootstrapArgs, aUntilLevel) {
+ let self = this;
- // #ifdef LOG_ENVIRONMENT
- log.debug("starting up: " + self.name);
- // #endif
+ bootstrap.call(self, "startup", aBootstrapArgs, aUntilLevel);
+ };
+
+ Environment.prototype.shutdown = function(aBootstrapArgs, aUntilLevel) {
+ let self = this;
- // #ifdef LOG_ENVIRONMENT
- log.debug("shutting down: " + self.name);
- // #endif
+ bootstrap.call(self, "shutdown", aBootstrapArgs, aUntilLevel);
+ };
- Environment.prototype.shutdown = function(aBootstrapArgs, aUntilLevel) {
+ }(Environment));
+
+ /**
+ * Tell the Environment to shut down when an EventTarget's
+ * "unload" event occurres.
+ *
+ * @param {EventTarget} aEventTarget - an object having the functions
+ * addEventListener() and removeEventListener().
+ */
+ Environment.prototype.shutdownOnUnload = function(aEventTarget) {
let self = this;
- bootstrap.call(self, "shutdown", aBootstrapArgs, aUntilLevel);
+ self.elManager.addListener(aEventTarget, "unload", function() {
- // #ifdef LOG_ENVIRONMENT
- log.debug("an EventTarget's `unload` function " +
- "has been called. Going to shut down Environment \"" +
- self.name + "\"");
- // #endif
+ self.shutdown();
+ });
};
- })(Environment);
-
- /**
- * Tell the Environment to shut down when an EventTarget's
- * "unload" event occurres.
- *
- * @param {EventTarget} aEventTarget - an object having the functions
- * addEventListener() and removeEventListener().
- */
- Environment.prototype.shutdownOnUnload = function(aEventTarget) {
- let self = this;
- self.elManager.addListener(aEventTarget, "unload", function() {
- self.shutdown();
- });
- };
+ return Environment;
+ }());
+ //==============================================================================
+ // ProcessEnvironment
+ //==============================================================================
- /**
- * @constructor
- * @extends {Environment}
- * @param {ContentFrameMessageManager} aMM
- * @param {string=} aName - the environment's name, passed to the superclass.
- */
- function FrameScriptEnvironment(aMM, aName="frame script environment") {
- let self = this;
+ var ProcessEnvironment = (function() {
+ let scope = {
+ Environment: Environment
+ };
+ Services.scriptloader.loadSubScript(
+ "chrome://rpcontinued/content/lib/environment.process.js", scope);
+ return scope.ProcessEnvironment;
+ }());
- // The outer Environment will be either ChildProcessEnvironment
- // or ParentProcessEnvironment.
- let _outerEnv = ProcessEnvironment;
+ //==============================================================================
+ // FrameScriptEnvironment
+ //==============================================================================
- Environment.call(self, _outerEnv, aName);
+ var FrameScriptEnvironment = (function() {
+ /**
+ * @constructor
+ * @extends {Environment}
+ * @param {ContentFrameMessageManager} aMM
+ * @param {string=} aName - the environment's name, passed to the superclass.
+ */
+ function FrameScriptEnvironment(aMM, aName="frame script environment") {
+ let self = this;
- self.mm = aMM;
+ // The outer Environment will be either ChildProcessEnvironment
+ // or ParentProcessEnvironment.
+ let _outerEnv = ProcessEnvironment;
- self.addStartupFunction(LEVELS.INTERFACE, function() {
- // shut down the framescript on the message manager's
- // `unload`. That event will occur when the browsing context
- // (e.g. the tab) has been closed.
- self.shutdownOnUnload(self.mm);
- });
+ Environment.call(self, _outerEnv, aName);
- // a "MessageListener"-Manager for this environment
- XPCOMUtils.defineLazyGetter(self, "mlManager", function() {
- return new ManagerForMessageListeners(self, self.mm);
- });
- }
- FrameScriptEnvironment.prototype = Object.create(Environment.prototype);
- FrameScriptEnvironment.prototype.constructor = Environment;
+ self.mm = aMM;
+ self.addStartupFunction(Environment.LEVELS.INTERFACE, function() {
+ // shut down the framescript on the message manager's
+ // `unload`. That event will occur when the browsing context
+ // (e.g. the tab) has been closed.
+ self.shutdownOnUnload(self.mm);
+ });
- // Load the "ProcessEnvironment"
- Services.scriptloader.loadSubScript("chrome://rpcontinued/content/" +
- "lib/environment.process.js");
+ // a "MessageListener"-Manager for this environment
+ XPCOMUtils.defineLazyGetter(self, "mlManager", function() {
+ return new ManagerForMessageListeners(self, self.mm);
+ });
+ }
+ FrameScriptEnvironment.prototype = Object.create(Environment.prototype);
+ FrameScriptEnvironment.prototype.constructor = Environment;
+ return FrameScriptEnvironment;
+ }());
diff --cc content/lib/environment.process.js
index ebcaef0,ff795f7..e7c1e90
--- a/content/lib/environment.process.js
+++ b/content/lib/environment.process.js
@@@ -170,9 -211,11 +211,8 @@@ var ProcessEnvironment = (function()
// Unloading `environment.jsm` has to be the last task.
// After that task, any global object, such as
// `Environment` or `Cu` is not available anymore.
- //console.debug("unloading environment.jsm");
- // #ifdef LOG_ENVIRONMENT
- console.debug("unloading environment.jsm");
- // #endif
Cu.unload("chrome://rpcontinued/content/lib/environment.jsm");
- };
+ }
childMM.addMessageListener(shutdownMessage, receiveShutdownMessage);
}
@@@ -194,10 -237,13 +234,9 @@@
ChildProcessEnvironment.prototype.registerInnerEnvironment = function(aEnv) {
let self = this;
- if (self.envState === ENV_STATES.NOT_STARTED) {
+ if (self.envState === Environment.ENV_STATES.NOT_STARTED) {
// The child Process Environment needs to start up when
// the first framescript in that child is loading.
- //console.debug("[RPC] Going to start up Child Process Environment.");
- // #ifdef LOG_ENVIRONMENT
- console.debug("[RPC] [Environment] Going to start up Child " +
- "Process Environment.");
- // #endif
self.startup();
}
ProcessEnvironmentBase.prototype.registerInnerEnvironment.apply(self,
diff --cc content/lib/logger.jsm
index 0b86d62,0aa00a0..cda87a1
--- a/content/lib/logger.jsm
+++ b/content/lib/logger.jsm
@@@ -124,20 -132,20 +132,9 @@@ var Logger = (function()
ProcessEnvironment.addStartupFunction(Environment.LEVELS.ESSENTIAL, init);
-
-
-
- /**
- * This function will be called in case Logger isn't fully initialized yet.
- */
- let initialLog = function() {
- init();
- log.apply(this, arguments);
- };
-
- let log = function(aLevel, aType, aMessage, aError) {
- let shouldLog = (enabled && aLevel >= level && types & aType);
+ function log(aLevel, aType, aMessage, aError) {
+ let shouldLog = enabled && aLevel >= level && types & aType;
- // #ifdef UNIT_TESTING
- if (aType === self.TYPE_ERROR || aLevel === self.LEVEL_SEVERE) {
- // increment the error count
- let errorCount = Prefs.get("unitTesting.errorCount");
- Prefs.set("unitTesting.errorCount", ++errorCount);
- Prefs.save();
-
- // log even if logging is disabled
- shouldLog = true;
- }
- // #endif
if (shouldLog) {
let levelName = self._LEVEL_NAMES[aLevel.toString()];
@@@ -189,4 -194,87 +183,3 @@@
return self;
}());
-// #ifdef UNIT_TESTING
-
-//==============================================================================
-// unit testing part
-//==============================================================================
-
-/**
- * Triggers errors for a RequestPolicy unit test.
- * It's used to test Error Detection from the unit tests.
- */
-var UnitTestObserver = (function() {
- let self = {};
-
- var loggingErrorTopic = "requestpolicy-trigger-logging-error";
- var consoleErrorTopic = "requestpolicy-trigger-console-error";
-
- self.startup = function() {
- Services.obs.addObserver(self, loggingErrorTopic, false);
- Services.obs.addObserver(self, consoleErrorTopic, false);
- };
-
- self.shutdown = function() {
- Services.obs.removeObserver(self, loggingErrorTopic);
- Services.obs.removeObserver(self, consoleErrorTopic);
- };
-
- /**
- * Split a string like
- * "foo:bar:baz"
- * to two strings:
- * ["foo", "bar:baz"]
- * Only the first colon counts.
- */
- function splitColon(aString) {
- var index = aString.indexOf(":");
- if (index === -1) {
- return [aString, ""];
- }
- var part1 = aString.substr(0, index);
- var part2 = aString.substr(index + 1);
- return [part1, part2];
- }
-
- self.observe = function(aSubject, aTopic, aData) {
- switch (aTopic) {
- case loggingErrorTopic:
- let [logLevel, logMessage] = splitColon(aData);
-
- if (logLevel === "warning") {
- Logger.warning(Logger.TYPE_ERROR, logMessage);
- } else if (logLevel === "severe") {
- Logger.severe(Logger.TYPE_INTERNAL, logMessage);
- }
- break;
-
- case consoleErrorTopic:
- if (aData === "ReferenceError") {
- runAsync(produceReferenceError);
- }
- break;
-
- default:
- break;
- }
- };
-
- function produceReferenceError() {
- var localVar = nonexistantVariable; // jshint ignore:line
- }
-
- function runAsync(aFunction) {
- var runnable = {run: aFunction};
- Services.tm.currentThread.dispatch(runnable,
- Ci.nsIEventTarget.DISPATCH_NORMAL);
- }
-
- return self;
-}());
--
-ProcessEnvironment.addStartupFunction(Environment.LEVELS.BACKEND,
- UnitTestObserver.startup);
-ProcessEnvironment.addShutdownFunction(Environment.LEVELS.BACKEND,
- UnitTestObserver.shutdown);
-// #endif
diff --cc content/lib/manager-for-event-listeners.jsm
index a579927,fd83454..6806e7a
--- a/content/lib/manager-for-event-listeners.jsm
+++ b/content/lib/manager-for-event-listeners.jsm
@@@ -64,9 -64,11 +64,6 @@@ function ManagerForEventListeners(aEnv
self.environment.addStartupFunction(
Environment.LEVELS.INTERFACE,
function() {
- Logger.dump('From now on new event listeners will be ' +
- 'added immediately. Environment: "' +
- self.environment.name + '"');
- // #ifdef LOG_EVENT_LISTENERS
- Logger.dump("From now on new event listeners will be " +
- "added immediately. Environment: \"" +
- self.environment.name + "\"");
- // #endif
self.addNewListenersImmediately = true;
self.addAllListeners();
});
@@@ -112,9 -112,11 +107,6 @@@ ManagerForEventListeners.prototype.addL
listening: false
};
if (self.addNewListenersImmediately) {
- Logger.dump('Immediately adding event listener for "' +
- listener.eventType + '". Environment: "' +
- self.environment.name + '"');
- // #ifdef LOG_EVENT_LISTENERS
- Logger.dump("Immediately adding event listener for \"" +
- listener.eventType + "\". Environment: \"" +
- self.environment.name + "\"");
- // #endif
addEvLis(listener);
}
self.listeners.push(listener);
@@@ -129,9 -129,11 +119,6 @@@ ManagerForEventListeners.prototype.addA
let self = this;
for (let listener of self.listeners) {
if (listener.listening === false) {
- Logger.dump('Lazily adding event listener for "' +
- listener.eventType + '". Environment: "' +
- self.environment.name + '"');
- // #ifdef LOG_EVENT_LISTENERS
- Logger.dump("Lazily adding event listener for \"" +
- listener.eventType + "\". Environment: \"" +
- self.environment.name + "\"");
- // #endif
addEvLis(listener);
}
}
@@@ -144,8 -146,10 +131,6 @@@ ManagerForEventListeners.prototype.remo
let self = this;
while (self.listeners.length > 0) {
let listener = self.listeners.pop();
- Logger.dump('Removing event listener for "' + listener.eventType +
- '". Environment: "' + self.environment.name + '"');
- // #ifdef LOG_EVENT_LISTENERS
- Logger.dump("Removing event listener for \"" + listener.eventType +
- "\". Environment: \"" + self.environment.name + "\"");
- // #endif
listener.target.removeEventListener(listener.eventType, listener.callback,
listener.useCapture);
}
diff --cc content/lib/manager-for-message-listeners.jsm
index 8776c4c,7b15e3d..6aa5dc6
--- a/content/lib/manager-for-message-listeners.jsm
+++ b/content/lib/manager-for-message-listeners.jsm
@@@ -65,9 -65,11 +65,6 @@@ function ManagerForMessageListeners(aEn
self.environment.addStartupFunction(
Environment.LEVELS.INTERFACE,
function() {
- Logger.dump('From now on new message listeners will be ' +
- 'added immediately. Environment: "' +
- self.environment.name + '"');
- // #ifdef LOG_MESSAGE_LISTENERS
- Logger.dump("From now on new message listeners will be " +
- "added immediately. Environment: \"" +
- self.environment.name + "\"");
- // #endif
self.addNewListenersImmediately = true;
self.addAllListeners();
});
@@@ -132,9 -132,11 +127,6 @@@ ManagerForMessageListeners.prototype.ad
listening: false
};
if (aAddImmediately === true || self.addNewListenersImmediately) {
- Logger.dump('Immediately adding message listener for "' +
- listener.messageName + '". Environment: "' +
- self.environment.name + '"');
- // #ifdef LOG_MESSAGE_LISTENERS
- Logger.dump("Immediately adding message listener for \"" +
- listener.messageName + "\". Environment: \"" +
- self.environment.name + "\"");
- // #endif
self.mm.addMessageListener(listener.messageID, listener.callback);
listener.listening = true;
}
@@@ -150,9 -150,11 +140,6 @@@ ManagerForMessageListeners.prototype.ad
let self = this;
for (let listener of self.listeners) {
if (listener.listening === false) {
- Logger.dump('Lazily adding message listener for "' +
- listener.messageName + '". Environment: "' +
- self.environment.name + '"');
- // #ifdef LOG_MESSAGE_LISTENERS
- Logger.dump("Lazily adding message listener for \"" +
- listener.messageName + "\". Environment: \"" +
- self.environment.name + "\"");
- // #endif
self.mm.addMessageListener(listener.messageID, listener.callback);
listener.listening = true;
}
@@@ -172,8 -174,10 +159,6 @@@ ManagerForMessageListeners.prototype.re
// 'is undefined!');
// continue;
//}
- Logger.dump('Removing message listener for "' + listener.messageName +
- '".');
- // #ifdef LOG_MESSAGE_LISTENERS
- Logger.dump("Removing message listener for \"" + listener.messageName +
- "\".");
- // #endif
//try {
self.mm.removeMessageListener(listener.messageID, listener.callback);
//} catch (e) {
diff --cc content/lib/old-rules.jsm
index 0000000,a5d72b9..a5d72b9
mode 000000,100644..100644
--- a/content/lib/old-rules.jsm
+++ b/content/lib/old-rules.jsm
diff --cc content/lib/request-processor.jsm
index b75248b,ca105a1..540a35d
--- a/content/lib/request-processor.jsm
+++ b/content/lib/request-processor.jsm
@@@ -302,15 -322,26 +322,14 @@@ var RequestProcessor = (function()
// only return requests from the given base domain
continue;
}
- Logger.dump("test destBase: " + destBase);
- for (var destBase in requests[originUri]) {
- Logger.dump("test destBase: " + destBase);
- for (var destIdent in requests[originUri][destBase]) {
- Logger.dump("test destIdent: " + destIdent);
- for (var destUri in requests[originUri][destBase][destIdent]) {
- Logger.dump("test destUri: " + destUri);
- var dest = requests[originUri][destBase][destIdent][destUri];
- for (var i in dest) {
- // #ifdef LOG_GETTING_SAVED_REQUESTS
- Logger.dump("test originUri: " + originUri);
- // #endif
+ let originUriRequests = requests[originUri];
+ for (let destBase in originUriRequests) {
- // #ifdef LOG_GETTING_SAVED_REQUESTS
- Logger.dump("test destBase: " + destBase);
- // #endif
+ let destBaseRequests = originUriRequests[destBase];
+ for (let destIdent in destBaseRequests) {
- // #ifdef LOG_GETTING_SAVED_REQUESTS
- Logger.dump("test destIdent: " + destIdent);
- // #endif
+ let destIdentRequests = destBaseRequests[destIdent];
+ for (let destUri in destIdentRequests) {
- // #ifdef LOG_GETTING_SAVED_REQUESTS
- Logger.dump("test destUri: " + destUri);
- // #endif
+ let dest = destIdentRequests[destUri];
+ for (let i in dest) {
// TODO: This variable could have been created easily already in
// getAllRequestsInBrowser(). ==> rewrite RequestSet to
// contain a blocked list, an allowed list (and maybe a list
@@@ -374,8 -405,10 +393,6 @@@
function _addRecursivelyAllRequestsFromURI(originURI, reqSet,
checkedOrigins) {
- Logger.dump("Looking for other origins within allowed requests from "
- + originURI);
- // #ifdef LOG_GETTING_SAVED_REQUESTS
- Logger.dump("Looking for other origins within allowed requests from " +
- originURI);
- // #endif
if (!checkedOrigins[originURI]) {
// this "if" is needed for the first call of this function.
checkedOrigins[originURI] = true;
@@@ -387,8 -420,10 +404,6 @@@
for (var destBase in allowedRequests) {
for (var destIdent in allowedRequests[destBase]) {
for (var destURI in allowedRequests[destBase][destIdent]) {
- Logger.dump("Found allowed request to <"
- + destURI + "> from <" + originURI + ">");
- // #ifdef LOG_GETTING_SAVED_REQUESTS
- Logger.dump("Found allowed request to <" + destURI + "> " +
- "from <" + originURI + ">");
- // #endif
reqSet.addRequest(originURI, destURI,
allowedRequests[destBase][destIdent][destURI]);
@@@ -406,15 -441,19 +421,11 @@@
}
function _addAllDeniedRequestsFromURI(originURI, reqSet) {
- // #ifdef LOG_GETTING_SAVED_REQUESTS
-- Logger.dump("Looking for other origins within denied requests from " +
-- originURI);
- // #endif
var requests = RequestProcessor._rejectedRequests.getOriginUri(originURI);
if (requests) {
for (var destBase in requests) {
for (var destIdent in requests[destBase]) {
for (var destUri in requests[destBase][destIdent]) {
- // #ifdef LOG_GETTING_SAVED_REQUESTS
-- Logger.dump("Found denied request to <" + destUri + "> from <" +
-- originURI + ">");
- // #endif
reqSet.addRequest(originURI, destUri,
requests[destBase][destIdent][destUri]);
}
@@@ -1015,16 -1052,20 +1024,14 @@@
"Could not find observer to remove " + "in removeRequestObserver()");
};
-
-
- self.getDeniedRequests = function(currentlySelectedOrigin, allRequestsOnDocument) {
- Logger.dump("## getDeniedRequests");
+ self.getDeniedRequests = function(currentlySelectedOrigin,
+ allRequestsOnDocument) {
- // #ifdef LOG_GETTING_SAVED_REQUESTS
- Logger.dump("## getDeniedRequests");
- // #endif
return _getRequestsHelper(currentlySelectedOrigin, allRequestsOnDocument,
false);
};
- self.getAllowedRequests = function(currentlySelectedOrigin, allRequestsOnDocument) {
- Logger.dump("## getAllowedRequests");
+ self.getAllowedRequests = function(currentlySelectedOrigin,
+ allRequestsOnDocument) {
- // #ifdef LOG_GETTING_SAVED_REQUESTS
- Logger.dump("## getAllowedRequests");
- // #endif
return _getRequestsHelper(currentlySelectedOrigin, allRequestsOnDocument,
true);
};
diff --cc content/lib/script-loader.jsm
index 52d60b5,c34eebf..2bb72b3
--- a/content/lib/script-loader.jsm
+++ b/content/lib/script-loader.jsm
@@@ -79,12 -81,15 +81,12 @@@ var ScriptLoader = (function()
for (let uri in importedModuleURIs) {
if (importedModuleURIs.hasOwnProperty(uri) &&
moduleUnloadExceptions.hasOwnProperty(uri) === false) {
- //console.debug("[RPC] Unloading module "+uri);
- // #ifdef LOG_SCRIPTLOADER
- console.debug("[RPC] [ScriptLoader] Cu.unload(\"" + uri + "\");");
- // #endif
try {
Cu.unload(uri);
- } catch(e) {
- console.error("[RPC] Failed to unload module "+uri);
- Components.utils.reportError(e);
+ } catch (e) {
+ console.error("[RPC] [ScriptLoader] failed to unload \"" + uri +
+ "\"");
+ Cu.reportError(e);
}
delete importedModuleURIs[uri];
}
@@@ -115,16 -120,21 +117,14 @@@
return scope;
}
- //console.debug("[RPC] `importModule` called for "+moduleID);
- // #ifdef LOG_SCRIPTLOADER
- console.debug("[RPC] [ScriptLoader] importModule(\"" + moduleID +
- "\") called.");
- // #endif
let uri = getModuleURI(moduleID);
try {
if (!(uri in importedModuleURIs)) {
// the module hasn't been imported yet
modulesCurrentlyBeingImported[moduleID] = true;
- //console.debug("[RPC] importing " + moduleID);
}
- // #ifdef LOG_SCRIPTLOADER
- console.debug("[RPC] [ScriptLoader] Cu.import(\"" + uri + "\");");
- // #endif
Cu.import(uri, scope);
importedModuleURIs[uri] = true;
@@@ -172,7 -184,10 +174,6 @@@
defineLazyModuleGetter: function(moduleID, names, scope) {
scope = scope || {};
- //console.debug("[RPC] defining lazy module getter(s) for " + moduleID);
- // #ifdef LOG_SCRIPTLOADER
- console.debug("[RPC] [ScriptLoader] " +
- "defineLazyModuleGetter(\"" + moduleID + "\") called.");
- // #endif
let uri = getModuleURI(moduleID);
for (let i in names) {
let name = names[i];
diff --cc content/lib/utils/constants.jsm
index 873dc4e,7d881a6..6a029c7
--- a/content/lib/utils/constants.jsm
+++ b/content/lib/utils/constants.jsm
@@@ -21,15 -21,19 +21,15 @@@
* ***** END LICENSE BLOCK *****
*/
- const Ci = Components.interfaces;
- const Cc = Components.classes;
- const Cu = Components.utils;
+ /* global Components */
+ const {interfaces: Ci} = Components;
- let EXPORTED_SYMBOLS = ["C"];
+ /* exported C */
+ this.EXPORTED_SYMBOLS = ["C"];
- let C = {};
+ var C = {};
-// #ifdef AMO
-C.EXTENSION_ID = "rpcontinued at requestpolicy.org";
-// #else
C.EXTENSION_ID = "rpcontinued at non-amo.requestpolicy.org";
-// #endif
C.FIREFOX_ID = "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}";
C.SEAMONKEY_ID = "{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}";
diff --cc content/lib/utils/info.jsm
index 0000000,55c3b6d..55c3b6d
mode 000000,100644..100644
--- a/content/lib/utils/info.jsm
+++ b/content/lib/utils/info.jsm
diff --cc content/lib/utils/javascript.jsm
index 0000000,cd547a8..cd547a8
mode 000000,100644..100644
--- a/content/lib/utils/javascript.jsm
+++ b/content/lib/utils/javascript.jsm
diff --cc content/models/prefs.jsm
index 0000000,50af705..804efef
mode 000000,100644..100644
--- a/content/models/prefs.jsm
+++ b/content/models/prefs.jsm
@@@ -1,0 -1,214 +1,211 @@@
+ /*
+ * ***** BEGIN LICENSE BLOCK *****
+ *
+ * RequestPolicy - A Firefox extension for control over cross-site requests.
+ * Copyright (c) 2008-2012 Justin Samuel
+ * Copyright (c) 2014-2015 Martin Kimmerle
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ *
+ * ***** END LICENSE BLOCK *****
+ */
+
+ /* global Components */
+ const {interfaces: Ci, utils: Cu} = Components;
+
+ /* exported Prefs */
+ this.EXPORTED_SYMBOLS = ["Prefs"];
+
+ let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
+
+ let {ScriptLoader: {importModule}} = Cu.import(
+ "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+ let {PrefBranch} = importModule("lib/classes/pref-branch");
+
+ //==============================================================================
+ // Prefs
+ //==============================================================================
+
+ var Prefs = (function() {
+ let self = {};
+
+ self.save = function() {
+ Services.prefs.savePrefFile(null);
+ };
+
+ self.branches = {
+ rp: new PrefBranch("extensions.requestpolicy.", {
+ "autoReload": "BoolPref",
+ "contextMenu": "BoolPref",
+ "defaultPolicy.allow": "BoolPref",
+ "defaultPolicy.allowSameDomain": "BoolPref",
+ "indicateBlacklistedObjects": "BoolPref",
+ "indicateBlockedObjects": "BoolPref",
+ "keyboardShortcuts.openMenu.enabled": "BoolPref",
+ "keyboardShortcuts.openMenu.combo": "CharPref",
+ "lastAppVersion": "CharPref",
+ "lastVersion": "CharPref",
+ "log": "BoolPref",
+ "log.level": "IntPref",
+ "log.types": "IntPref",
+ "menu.info.showNumRequests": "BoolPref",
+ "menu.sorting": "CharPref",
+ "prefetch.dns.disableOnStartup": "BoolPref",
+ "prefetch.dns.restoreDefaultOnUninstall": "BoolPref",
+ "prefetch.link.disableOnStartup": "BoolPref",
+ "prefetch.link.restoreDefaultOnUninstall": "BoolPref",
+ "privateBrowsingPermanentWhitelisting": "BoolPref",
+ "startWithAllowAllEnabled": "BoolPref",
+ "welcomeWindowShown": "BoolPref",
- // #ifdef UNIT_TESTING
- "unitTesting.errorCount": "IntPref",
- // #endif
+ }),
+
+ root: new PrefBranch("", {
+ "network.dns.disablePrefetch": "BoolPref",
+ "network.prefetch-next": "BoolPref",
+ })
+ };
+
+ /**
+ * Translate an alias into a real prefName, and also return the branch.
+ *
+ * Valid "fake pref names" are:
+ * - "root/ network.prefetch-next" (root pref branch)
+ * - "welcomeWindowShown" (RequestPolicy pref branch)
+ */
+ function getBranchAndRealName(aFakePrefName) {
+ if (aFakePrefName.startsWith("root/ ")) {
+ return {
+ branch: self.branches.root,
+ name: aFakePrefName.slice(6)
+ };
+ }
+ return {
+ branch: self.branches.rp,
+ name: aFakePrefName
+ };
+ }
+
+ self.get = function(aFakePrefName) {
+ let {branch, name} = getBranchAndRealName(aFakePrefName);
+ return branch.get(name);
+ };
+
+ self.set = function(aFakePrefName, aValue) {
+ let {branch, name} = getBranchAndRealName(aFakePrefName);
+ return branch.set(name, aValue);
+ };
+
+ self.reset = function(aFakePrefName) {
+ let {branch, name} = getBranchAndRealName(aFakePrefName);
+ return branch.reset(name);
+ };
+
+ self.isSet = function(aFakePrefName) {
+ let {branch, name} = getBranchAndRealName(aFakePrefName);
+ return branch.isSet(name);
+ };
+
+ //----------------------------------------------------------------------------
+ // Observer functions
+ //----------------------------------------------------------------------------
+
+ /**
+ * Notes about addObserver and removeObserver:
+ *
+ * The functions take fake domain names, but the actual observers
+ * will get the "real" pref names / domain names. If translation
+ * of names is needed, the two functions could be replaced by
+ * "addListener" and "removeListener" functions. In other words,
+ * the "domainsToObservers" object in "PrefObserver" could be moved
+ * here, and "PrefObserver" would only manage the listeners per
+ * environment.
+ *
+ * The addObserver and removeObserver functions are preixed with
+ * an underscore because they shouldn't be used directly, only
+ * by PrefObserver.
+ */
+
+ self._addObserver = function(aFakeDomain, aObserver, aHoldWeak) {
+ let {branch, name: domain} = getBranchAndRealName(aFakeDomain);
+ return branch.addObserver(domain, aObserver, aHoldWeak);
+ };
+
+ self._removeObserver = function(aFakeDomain, aObserver) {
+ let {branch, name: domain} = getBranchAndRealName(aFakeDomain);
+ return branch.removeObserver(domain, aObserver);
+ };
+
+ return self;
+ }());
+
+ //==============================================================================
+ // Prefs - Aliases
+ //==============================================================================
+
+ (function(self) {
+ //----------------------------------------------------------------------------
+ // Dynamically created aliases
+ //----------------------------------------------------------------------------
+
+ /**
+ * Define a list of pref aliases that will be available through
+ * `Prefs.getter_function_name()` and `Prefs.setter_function_name()`.
+ * Those functions will be added to `self` subsequently.
+ */
+ const RP_PREF_ALIASES = {
+ "bool": [
+ ["defaultPolicy.allow", "DefaultAllow"],
+ ["defaultPolicy.allowSameDomain", "DefaultAllowSameDomain"],
+
+ // As an example, this will become `isBlockingDisabled()` and
+ // `setBlockingDisabled()`:
+ ["startWithAllowAllEnabled", "BlockingDisabled"]
+ ]
+ };
+
+ // Dynamically create functions like `isDefaultAllow` or
+ // `setBlockingDisabled`.
+ for (let [prefName, prefAlias] of RP_PREF_ALIASES.bool) {
+ // define the pref's getter function to `self`
+ self["is" + prefAlias] = self.get.bind(null, prefName);
+
+ // define the pref's getter function to `self`
+ self["set" + prefAlias] = self.set.bind(null, prefName);
+ }
+
+ //----------------------------------------------------------------------------
+ // Other aliases
+ //----------------------------------------------------------------------------
+
+ self.isPrefetchEnabled = function() {
+ return self.get("root/ network.prefetch-next") ||
+ !self.get("root/ network.dns.disablePrefetch");
+ };
+
+ function isOldRulePrefEmpty(pref) {
+ try {
+ let value = self.branches.rp.branch.
+ getComplexValue(pref, Ci.nsISupportsString).data;
+ return value === "";
+ } catch (e) {
+ return true;
+ }
+ }
+
+ self.oldRulesExist = function() {
+ return !(isOldRulePrefEmpty("allowedOrigins") &&
+ isOldRulePrefEmpty("allowedDestinations") &&
+ isOldRulePrefEmpty("allowedOriginsToDestinations"));
+ };
+ }(Prefs));
diff --cc content/models/windows.jsm
index 0000000,9645c48..9645c48
mode 000000,100644..100644
--- a/content/models/windows.jsm
+++ b/content/models/windows.jsm
diff --cc content/ui/overlay.js
index 23583e2,684c04b..408ca13
--- a/content/ui/overlay.js
+++ b/content/ui/overlay.js
@@@ -599,8 -561,10 +561,6 @@@ window.rpcontinued.overlay = (function(
try {
let browser = gBrowser.selectedBrowser;
let uri = DomainUtil.stripFragment(browser.currentURI.spec);
- // #ifdef LOG_FLAG_STATE
-- Logger.debug(Logger.TYPE_INTERNAL,
-- "Checking for blocked requests from page <" + uri + ">");
- // #endif
// TODO: this needs to be rewritten. checking if there is blocked
// content could be done much more efficiently.
@@@ -608,10 -572,12 +568,6 @@@
.getAllRequestsInBrowser(browser).containsBlockedRequests();
self._setContentBlockedState(documentContainsBlockedContent);
- // #ifdef LOG_FLAG_STATE
-- let logText = documentContainsBlockedContent ?
-- "Requests have been blocked." :
-- "No requests have been blocked.";
-- Logger.debug(Logger.TYPE_INTERNAL, logText);
- // #endif
} catch (e) {
Logger.severeError(
"Unable to complete _updateBlockedContentState actions: " + e, e);
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/requestpolicy.git
More information about the Pkg-mozext-commits
mailing list