[Pkg-mozext-commits] [adblock-plus-element-hiding-helper] 09/12: Imported Upstream version 1.3.6
David Prévot
taffit at moszumanska.debian.org
Fri Jan 22 00:35:51 UTC 2016
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository adblock-plus-element-hiding-helper.
commit e4ac5fb57f1ee552c13fd85f4d6fecc16b6b2bf4
Merge: 702f976 adb2d28
Author: David Prévot <david at tilapin.org>
Date: Thu Jan 21 19:11:57 2016 -0400
Imported Upstream version 1.3.6
META-INF/manifest.mf | 59 ++++++++---------
META-INF/mozilla.rsa | Bin 4188 -> 4188 bytes
META-INF/mozilla.sf | 4 +-
bootstrap.js | 9 ++-
chrome/content/common.js | 5 +-
chrome/content/composer.js | 4 +-
chrome/content/frameScript.js | 41 ------------
chrome/content/{actor.jsm => processScript.js} | 56 ++++++++++------
chrome/locale/ar/global.properties | 2 +-
chrome/locale/id/composer.dtd | 4 +-
chrome/locale/ru/composer.dtd | 2 +-
install.rdf | 16 ++---
lib/aardvark.js | 14 ++--
lib/keySelector.js | 25 ++++---
lib/main.js | 10 +--
lib/prefs.js | 87 +++++++++++++------------
16 files changed, 155 insertions(+), 183 deletions(-)
diff --cc META-INF/manifest.mf
index e3e8343,0000000..9f132c7
mode 100644,000000..100644
--- a/META-INF/manifest.mf
+++ b/META-INF/manifest.mf
@@@ -1,822 -1,0 +1,817 @@@
+Manifest-Version: 1.0
+
+Name: install.rdf
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: bt5ojgpGXMrdGaY4Gg1WOw==
- SHA1-Digest: mAAl3uHXWreUJEyJybja/byJcN8=
++MD5-Digest: 6dgZiJL5QFDYzzEPtRez2A==
++SHA1-Digest: nxKNUrSEcnUjBcL14znnTmxbMDo=
+
+Name: chrome.manifest
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: EPU0vOQIwCJGZ5+xD/7X7A==
+SHA1-Digest: Mrgum9j8mHuRkT62wzPo/5/LMdk=
+
+Name: icon.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Iln/zMQmv7KpNNioVpLKTA==
+SHA1-Digest: jdoeca+fP6BM1oglZRmFTddO4QE=
+
+Name: icon64.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9pBntckC4Nv7YLwp+wjKPA==
+SHA1-Digest: EIJYR66/4BO8L+zQoMPvnaaykhE=
+
+Name: bootstrap.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: VvLNVVlY3lB6N5hJxjVRDA==
- SHA1-Digest: Bwe4+BFIypll9pNd1W2LppHdNcg=
-
- Name: chrome/content/actor.jsm
- Digest-Algorithms: MD5 SHA1
- MD5-Digest: wGlhTelAdQfoqSGZayBJgA==
- SHA1-Digest: num1dzaXxhJkbszUwgvyeSjjgis=
++MD5-Digest: neHEWxEmHLbJU+sCnJ88jg==
++SHA1-Digest: fbtSsblGsbp9eam+yChF+HibsKM=
+
+Name: chrome/content/common.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: DpHtZjUKzJijozFf439kpQ==
- SHA1-Digest: iN94irsmUv0FtJ4wis2R3UdVYgU=
++MD5-Digest: YOLC/SFhAaLq1vPyGKdvrA==
++SHA1-Digest: p0lYqUdZE8OjDBvJVXQ2LpW+d5E=
+
+Name: chrome/content/composer.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: 1VvLOiatgVk2Pnrtj1OKCg==
- SHA1-Digest: xMpnSSGs/ZsrEVkIH18PjfFCnV4=
++MD5-Digest: yeM2lHwwJZPH2iLI7LFoMg==
++SHA1-Digest: GkFwQlAld6rvbmUDBIuath1JkDw=
+
+Name: chrome/content/composer.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 4jFGOxTNdUZqAnPs261Z8Q==
+SHA1-Digest: RDGfRzzg6fJa3iwvAPc+IeHI4Qc=
+
+Name: chrome/content/elementmarker.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: s6zUwn7yn4JyhVc0cIoq3A==
+SHA1-Digest: YToMcLSmzPiXrcbm1SKXg5KcZqE=
+
- Name: chrome/content/frameScript.js
- Digest-Algorithms: MD5 SHA1
- MD5-Digest: j/qQbuqNAYmHca6R9bWoVg==
- SHA1-Digest: Tg9Pm9T04LEHCHbbfoHRdYB7yJY=
-
+Name: chrome/content/overlay.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: /ShsUDsSl26Ae9jkCvWdGg==
+SHA1-Digest: NMkTdXDt1sLSzHqAvmu6m7RIkl0=
+
++Name: chrome/content/processScript.js
++Digest-Algorithms: MD5 SHA1
++MD5-Digest: A5fALq6HqiU4iLNtpd1umQ==
++SHA1-Digest: GCsC20/Wj8aRi0ZGdS2BPkjibh4=
++
+Name: chrome/locale/ar/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: h3atzZHmRAeHay6zZ5l8UQ==
+SHA1-Digest: KBWS7rWBVvrj4P0dNkrzpa/tXxA=
+
+Name: chrome/locale/ar/global.properties
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: J8ICUHHBn9/odEyl/z0UOg==
- SHA1-Digest: l1U8U2Uk+yH5+d/ZAh9fu4dLNjc=
++MD5-Digest: htzsAIZdFhTIPOqifWGOvg==
++SHA1-Digest: j2CJBSQTO3VWYugZHJOB0/luwCs=
+
+Name: chrome/locale/ar/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vkxK/8eFboH2U4EUl2V1NA==
+SHA1-Digest: 9N9Ld7ua5U6uRfyyMfavawwiErI=
+
+Name: chrome/locale/bg/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: DORJL/n851fD/gwxJb/hzw==
+SHA1-Digest: o02u2efdFd1F1MyU1soNcdg9Ptg=
+
+Name: chrome/locale/bg/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: /ddgyAYnaAzgC/6yzQ91Wg==
+SHA1-Digest: QgHH/T47CWEIedRz3Idr81pbYWU=
+
+Name: chrome/locale/bg/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: zQGFnryY+WwlDkAENnRzPg==
+SHA1-Digest: hKe7Db1Rr3F/2UcalanbNS4f+ww=
+
+Name: chrome/locale/ca/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: GUMWAQS6V/Hf6BrYfpba8Q==
+SHA1-Digest: 691dTWjQ978mnJhu0gs0VZBRla4=
+
+Name: chrome/locale/ca/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: pcL62WkM7wZlt2gd04fTxw==
+SHA1-Digest: N6bU+F8qMCfKBSekuZSC/QO1V8s=
+
+Name: chrome/locale/ca/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: +TKRWefV6rwIbkRkbNkkxw==
+SHA1-Digest: CmKrgeR79QDtmGMZOrUDN45em98=
+
+Name: chrome/locale/cs/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: nL8P8I3XCCuFxxcHK4Tg2A==
+SHA1-Digest: oYuLKH9aDdzvc3IzoivFny6poHA=
+
+Name: chrome/locale/cs/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: JD2OKvc3IB/C5pzbs3iC9Q==
+SHA1-Digest: amXJk0DKOhqNKE1j3pdUfeb5lgo=
+
+Name: chrome/locale/cs/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: tJAuABaYDVUaEJlpC4GB1Q==
+SHA1-Digest: hcLA8j1ixIitEjXkXKL5L2RzBjM=
+
+Name: chrome/locale/de/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: YUkOKUNoxRaK15MkwIKVAg==
+SHA1-Digest: +UHVS4tx9WPpJoTyQWIyuzQb9qQ=
+
+Name: chrome/locale/de/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: noypR+HzmHO7xUtxcFkpXw==
+SHA1-Digest: WN9ZSA9FSk/EDFQXIYp45DNfSdQ=
+
+Name: chrome/locale/de/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9ZwsbboPqz405oOsxZxxSA==
+SHA1-Digest: LHZrqH+lYbQfPwKK5jdSyxIl7PM=
+
+Name: chrome/locale/dsb/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: OIYlUhQ2XeZBR2QHnHGXQA==
+SHA1-Digest: KC1wnaO9uGaD4gNQTRltFlA9MBk=
+
+Name: chrome/locale/dsb/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: DCxTwft/2chRykBHFxcwSw==
+SHA1-Digest: wLwvZKDroVhyxp3CRO3B18oHemI=
+
+Name: chrome/locale/dsb/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: BHpKogsznqyYLgDUbjWcOg==
+SHA1-Digest: /A9rNtyofZ+jSCe8dk1lT38Gg8Y=
+
+Name: chrome/locale/el/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: jp3HpK1kc9ClPYydiJ+uLQ==
+SHA1-Digest: uyB+sTGlUln05SKjvH7LRMHHYWg=
+
+Name: chrome/locale/el/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: DGFGkZa3XKY6PzlrTAhP6Q==
+SHA1-Digest: 6M7J9w3BFmaDWyyJuvsNJXFVYVg=
+
+Name: chrome/locale/el/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9eGw1HI2ixAXo4Vwdj6kdw==
+SHA1-Digest: vlPTGRWZ1aBSfG8vzK16fjWPYyU=
+
+Name: chrome/locale/en-GB/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: gbGNJZxJABMQlMJ8ka0LfQ==
+SHA1-Digest: HlDaJzawDXr0FEadVlF+D7S8Mwc=
+
+Name: chrome/locale/en-GB/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: EKuoSE2T999A8NgZSDGJ8A==
+SHA1-Digest: 5ZSTtsU7L4HQ2iCSJy75gP51gHo=
+
+Name: chrome/locale/en-GB/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: +Oo7Xf+P1u32H3usNALqgw==
+SHA1-Digest: 27JvQ0igJbIzb+Leq9Wlca2FMnI=
+
+Name: chrome/locale/en-US/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 3K5bYixHxj0n0zpBgM7v8w==
+SHA1-Digest: 7secxgcPQyhScoG9ijAkIzinrTY=
+
+Name: chrome/locale/en-US/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ftLlMz8/Gt16XpoD7Tnn2g==
+SHA1-Digest: lZgXHNIybFeh8iTRJCu12zc2Bfo=
+
+Name: chrome/locale/en-US/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0SqZOFcrI3K0ShY3adRBRg==
+SHA1-Digest: 1W6UVWZJmUtfWrSgNDoK6rNU7+4=
+
+Name: chrome/locale/es-AR/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: NWl2f8R9+25e3jEqMXWkWQ==
+SHA1-Digest: Y7Fx6nW3HUfdiL8nw3KoqH94I0A=
+
+Name: chrome/locale/es-AR/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: FidP2CwMJ44XDTnly3A0Sw==
+SHA1-Digest: NR01HBR8+UcJ/Asy+kSDA474ylA=
+
+Name: chrome/locale/es-AR/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 47SOJvH8FlIzhmTZzvIJBA==
+SHA1-Digest: NphaHQEBu2GVTchgqBwnVv6ye9Y=
+
+Name: chrome/locale/es-ES/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: J/uzEG2zVDKSRj7hLxgHMQ==
+SHA1-Digest: ndktNiemtVgvV2mhe/few545MNc=
+
+Name: chrome/locale/es-ES/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 3xoZz+IcYiPU+vEe/rtR/g==
+SHA1-Digest: ip65OuyArJhZ85LQnAa291XhfZM=
+
+Name: chrome/locale/es-ES/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: +XZagB+01FArHJxIRnta0g==
+SHA1-Digest: StIAf2wFCKHFsAAwJWwD2o+bZlY=
+
+Name: chrome/locale/es-MX/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 7j2iCRHO5ZaEAvnpDQjp6Q==
+SHA1-Digest: wFuxpAMx3EndNJpg8Aeu6Cs9jcg=
+
+Name: chrome/locale/es-MX/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: kJ+rSLJfN7RQwJEQf/Q7cg==
+SHA1-Digest: LeAgh62MEGtGxqAMyq9RT0UqQUg=
+
+Name: chrome/locale/es-MX/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: cP6nNyumc6yV9L4orSLybg==
+SHA1-Digest: ZtoAAFOTgHV6nDbVrqioLY7qS2Q=
+
+Name: chrome/locale/et/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: uchO8OtAqsjouzpQVw2NuQ==
+SHA1-Digest: gNVSa8YQEpOXXUla9/YyKtU2j80=
+
+Name: chrome/locale/et/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: J+X017nBV7e24SWgwKzSlA==
+SHA1-Digest: qKxQZdIWereihVQL+hn6cunij6c=
+
+Name: chrome/locale/et/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 2QuXnmuwUUSbXSOtfay8rw==
+SHA1-Digest: g/zHGFOBAIHu3x+9pNjB0IWHlSg=
+
+Name: chrome/locale/eu/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ouIwVFQqD48EDDo8rQ49lQ==
+SHA1-Digest: SPckcK3l8/zkY8ZcXpht9tYvVl4=
+
+Name: chrome/locale/eu/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: YnVfcABCY0AFoiKkkMgCwg==
+SHA1-Digest: jAobDDAl8PQAEFQ23aBUCyg4dfk=
+
+Name: chrome/locale/eu/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9KaMeWLH909ODyt5kWh+fw==
+SHA1-Digest: t6/97EFSmDjHBj8jwYTuETL06uI=
+
+Name: chrome/locale/fa/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: IdKQquqiDOw5xFqqZL21AA==
+SHA1-Digest: 1p63xTGc7DhFYgby8PyEvVlfweA=
+
+Name: chrome/locale/fa/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Xve+P3bGQ5TSpk0F2CN/Cg==
+SHA1-Digest: /oautSIP0gCohoJOEzNTgD43fNY=
+
+Name: chrome/locale/fa/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: +s7By+JUeDxu0iaFVP889A==
+SHA1-Digest: +4pKeMeKC57cY+elC53ELAlPLYc=
+
+Name: chrome/locale/fi/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 2JXrFISeVaf0jfKLbjH//w==
+SHA1-Digest: CWoXQ7mtVcy8GV1zXEeaPtmSgb0=
+
+Name: chrome/locale/fi/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: hRBvQP+/62QTIs8CwrWesQ==
+SHA1-Digest: I5HKEAurDeNvyYyUBhl3FVzZjss=
+
+Name: chrome/locale/fi/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: xRDCzjwyNelVZDR/kIojTQ==
+SHA1-Digest: YSPW9ojrStnbZIrec29eYuAst8c=
+
+Name: chrome/locale/fr/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: xbvgYhSBeyjQdHwitm8KGA==
+SHA1-Digest: LazI8qQZECfRF4d0wYeSSnj0/oc=
+
+Name: chrome/locale/fr/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: x+IaxP4Tx7Gjtw38mOlDUA==
+SHA1-Digest: hSIJh/FnFadHFiPCS+ZKKlOUohk=
+
+Name: chrome/locale/fr/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: JhJcS/qG70UAglBT+EvFzw==
+SHA1-Digest: 3EJJjEs0M1ax2Q8NtbcQ48r0MQo=
+
+Name: chrome/locale/gl/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: CNUn+cPvFDLJYSSzGI3b1A==
+SHA1-Digest: zDqSq9G99wBW0m5RqYf7Pr/S2qw=
+
+Name: chrome/locale/gl/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: +v1hJzaBpP25nhvrVhyJkQ==
+SHA1-Digest: ziSH53aY2WZd7fb0D8NtkH8bLpc=
+
+Name: chrome/locale/gl/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: GHnkUDPJvlwZUIk3DSNP0Q==
+SHA1-Digest: ey8+rv3bOKqhZsoQGtcSlKdbpdg=
+
+Name: chrome/locale/he/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: aOoe365477yG1XYtnz6lCA==
+SHA1-Digest: 5DUidtkxUT3DK9V93fG/F6YKU60=
+
+Name: chrome/locale/he/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: sJaeovx9v57k5hpKAiGrmw==
+SHA1-Digest: zoplCU+3bw73+W6uIKQDAUmV0gc=
+
+Name: chrome/locale/he/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: U/QFZvGa8Pw3E9HpoXLEmw==
+SHA1-Digest: kcxklqAJpgoqd4q617N1BjT0SFg=
+
+Name: chrome/locale/hr/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: jPucgKFmCligiNpIDuwO4g==
+SHA1-Digest: ZGHg1NFD39A5Yr6OXH70cHIz2g8=
+
+Name: chrome/locale/hr/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ou6qcwJfitpfrF6pjwBdcw==
+SHA1-Digest: 9uMw0bK2gBd4QMfaZ+yZVwpjx6I=
+
+Name: chrome/locale/hr/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: R2N9t44S+lzfkUYC/vOUFw==
+SHA1-Digest: XHE37n+3Yh5nEecnkovQDiprkGQ=
+
+Name: chrome/locale/hsb/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qz3M3VHrYxaaRIgsvr/AoA==
+SHA1-Digest: /Wce3ahB/BoUJ8i6Zk05QqaLSBg=
+
+Name: chrome/locale/hsb/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: q//8R7vnkRUqT+3+6l1fcA==
+SHA1-Digest: 0jj7q7m8rU6/spvTl9C0LnVBVp4=
+
+Name: chrome/locale/hsb/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 1x4sXnqdtWTw2o3x3z3n5A==
+SHA1-Digest: bWHHbvO4lJotEuzT8L2jj5jVavQ=
+
+Name: chrome/locale/hu/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: b04ubcg2xlbRGONJc9YN3A==
+SHA1-Digest: 0UKfGdJAAGxvjchGKEFvOBrPtWk=
+
+Name: chrome/locale/hu/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 90sdadtnGUcvrG9U1hg5WQ==
+SHA1-Digest: OvO+Jzu7CmFD/oeCcvzIzvCYWfU=
+
+Name: chrome/locale/hu/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: nSyznhq/Nsg8fkiYF/pPMw==
+SHA1-Digest: A5XQ8Mnjly8WrY/5gM0FJEGod0E=
+
+Name: chrome/locale/hy-AM/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: k1tTb9UdEd0VKUhErRSJvQ==
+SHA1-Digest: choIg8LMVlZY6IGL5Ef1WcinLqM=
+
+Name: chrome/locale/hy-AM/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: oGgeYLKwg8npghM6MvntuA==
+SHA1-Digest: n76bc3BZr0Z1TRJs1fu7gNXQS4c=
+
+Name: chrome/locale/hy-AM/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Ontn/Gxr6Jj6AUy6FSbqvA==
+SHA1-Digest: vwh59Usfz5ZJhig9O6vvdMHFGck=
+
+Name: chrome/locale/id/composer.dtd
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: rIOi5RDox0lcslumjGFaJg==
- SHA1-Digest: Jf3+zM/6fbQfmkNYqxIAxQdmB7E=
++MD5-Digest: tOVM0mqxxmwJYSZ7pm3RNw==
++SHA1-Digest: EXAY/DW4UNj5HlwbVHn6I3H0EF0=
+
+Name: chrome/locale/id/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: oV3kKYd3wn35Mj0kcXeilQ==
+SHA1-Digest: VyoBc9/8IauKDVHnd9xbHWXOgik=
+
+Name: chrome/locale/id/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: uAwfm/ZZ60a0U3WD5VSt/w==
+SHA1-Digest: MJaqgGlEjAh8gccJmulv42u7P4I=
+
+Name: chrome/locale/it/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 1MBCGG9qrWNg6UHpIhbQzg==
+SHA1-Digest: rH3aLyfiPDVjKV2+Te4i/sLPZsc=
+
+Name: chrome/locale/it/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9iPadW/nmjsZrUDescViow==
+SHA1-Digest: MLoS0qdulqSwZEwzoVhkMsxWIzc=
+
+Name: chrome/locale/it/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: LIptS6/9ydL6q4S+qoTFqQ==
+SHA1-Digest: EtfZteXBdSIw1Ne6sNfMiUTzLgQ=
+
+Name: chrome/locale/ja/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qYlJltt54vrvXva34u7K+g==
+SHA1-Digest: DJtmtIfD5zUeVfeBLsGLSaReKRI=
+
+Name: chrome/locale/ja/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: p8uR1pfGaevi9hsy+cK79w==
+SHA1-Digest: XkfZTtTono3vGncuihpsBU68DZ4=
+
+Name: chrome/locale/ja/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: u7wI7OPG8BMwoICFuv34DQ==
+SHA1-Digest: UZw+4GmJ9PaKFZdETz3H/8PT/MM=
+
+Name: chrome/locale/kk/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: jPhJwB5z17PI/lNXxHGO9w==
+SHA1-Digest: YftU+OHjJ1M+roKlJEqF0FEg9yg=
+
+Name: chrome/locale/kk/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vySdn3BqGhbhMXWbzW5Hkw==
+SHA1-Digest: nTyGEjo4meT4Xhq/zyh/spd4mKs=
+
+Name: chrome/locale/kk/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Sa+R9nbE3BGtYNjFmtcMxg==
+SHA1-Digest: 7liyLG/bwRE46l8ybLuK4DugkLE=
+
+Name: chrome/locale/ko/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Qso0JbpH+Xn0Hd5xpdJAlA==
+SHA1-Digest: tdXHQ2tZjgfbey8Lh/TsRbNcE2k=
+
+Name: chrome/locale/ko/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Xa07iLG9s2YkCtbCA4oIMQ==
+SHA1-Digest: lEN3y0P7vL2EyD1aCLmm7ChDM9g=
+
+Name: chrome/locale/ko/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: rJaxexzaa3TqCuk0htBnIg==
+SHA1-Digest: YnEJaubFsYZIAwqICoW9nG+pFec=
+
+Name: chrome/locale/lt/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: G3p5uR9mXSTqBxSdyc6BYg==
+SHA1-Digest: NKT9BDRA8yvvmSU8NtHJCvcuw5c=
+
+Name: chrome/locale/lt/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: niyz66f0/LFPG4k8ZkvK1g==
+SHA1-Digest: dwVgJg4Jja5p7qz9tUbi8Xl3lj8=
+
+Name: chrome/locale/lt/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: t5T3VEPQsLvrkIFnzfD1TA==
+SHA1-Digest: cVS1Hnn/hHnhlEtY/6VcOC9JY/Y=
+
+Name: chrome/locale/nb-NO/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: G51ReQkZ7hd55J7LTZR0Dg==
+SHA1-Digest: BNOTwjSPDp5Temd/TFhQqyF9r5c=
+
+Name: chrome/locale/nb-NO/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: g6NjPPp2LvTqF5w65gaYOQ==
+SHA1-Digest: xxyEVypFArqfhwpNHrX0QWobuLc=
+
+Name: chrome/locale/nb-NO/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: TE23dw+kPSVtdZ/563UvNQ==
+SHA1-Digest: OnrLkSagkvyVDAVDhDvav0ZjyoE=
+
+Name: chrome/locale/nl/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qb5K96izVb+t2bVTflWxFg==
+SHA1-Digest: TNO6tbNDgei61iTSLC1ofwpwkDs=
+
+Name: chrome/locale/nl/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: let5cfMgZ+KB8ZOnJLLVLg==
+SHA1-Digest: eaJXffrY2+e8O+TSDba/EfpUITs=
+
+Name: chrome/locale/nl/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: kO/CH17SOws0QSGW3xVm0A==
+SHA1-Digest: vIsrUK1GAjTh+GGwsx4oP8lFesw=
+
+Name: chrome/locale/pl/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 8/LIJd6LiuB1sXvV03talQ==
+SHA1-Digest: KJP4/+C2oFTZm7UEocOdGEGQg5M=
+
+Name: chrome/locale/pl/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0VP7oUPhuow/urdmnO9kww==
+SHA1-Digest: SKIYNHj9Ary8DrDqjJmY4m/OF6s=
+
+Name: chrome/locale/pl/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ck5mZdW06azuEKqKoFOh9A==
+SHA1-Digest: o4uUUke85zE+G5EEINpJV9zLLkc=
+
+Name: chrome/locale/pt-BR/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9mjf56Ynw8sd1kGKt5Yglg==
+SHA1-Digest: AxQYMI3XbOZn7UD22Y4yJv7giSY=
+
+Name: chrome/locale/pt-BR/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 2Py68kUYAjGvbXfxWUqwng==
+SHA1-Digest: 8a835BJ/DAH56IQ6hHVMxkMGJ4s=
+
+Name: chrome/locale/pt-BR/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: GZKOyLERU5EyTzclxWiesQ==
+SHA1-Digest: 7neSwhbpNzTiriGfpU1AdwE4oug=
+
+Name: chrome/locale/pt-PT/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vYBqXOh+fJhfYPJr1/aEtg==
+SHA1-Digest: fjP++SCTejuQpzB9M4bAcNN6Zjg=
+
+Name: chrome/locale/pt-PT/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: EN7aKyigvFcfG7sadTBg5w==
+SHA1-Digest: x8VanBhHwOUIMZRQRx8wA4AVK/o=
+
+Name: chrome/locale/pt-PT/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 3asUZ3j/uVYcMEksfpOv+g==
+SHA1-Digest: 2rN9M5Dbslz7sAb72wN5Xb+R0DU=
+
+Name: chrome/locale/ro/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Cjp3zoxYe+S0TJs2da6cjg==
+SHA1-Digest: EJKAHUgk7YmWQj/Rs0qapn2y9wQ=
+
+Name: chrome/locale/ro/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 8SHqynwaIPXLBSdDiFI4pw==
+SHA1-Digest: oE3B6OECCAkUTOhnBJUMxzmAe0s=
+
+Name: chrome/locale/ro/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: EkIJppFNILiv7DfuAHZPKg==
+SHA1-Digest: ldlN+/PUPC3sMQcFfgJNTN3NBOM=
+
+Name: chrome/locale/ru/composer.dtd
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: u1Xfx3mg+eiinEW6ddVeGg==
- SHA1-Digest: XG5bYspRqLsmGRxDrOX3e7SJ30c=
++MD5-Digest: Vq88dVDpdlnaF003X3GNaA==
++SHA1-Digest: /3tcIaHZni2BKvRtDbLlsf8ta1w=
+
+Name: chrome/locale/ru/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: abZI2uCJi60evO3tO0x3qw==
+SHA1-Digest: zxpeVtYfP8K61eULPxdMNntQX9o=
+
+Name: chrome/locale/ru/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: r7XqxRfrS000EFs+9NChqA==
+SHA1-Digest: tiOd3CTXun8J6iJifeBsItWr6UQ=
+
+Name: chrome/locale/sk/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: RRu6JpFQFB48gggW0+/3Bg==
+SHA1-Digest: BxIwMNhmnaJYScm5yMFHtGPMFS4=
+
+Name: chrome/locale/sk/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: tx8F7BkYqlYqEoU6eGsTFw==
+SHA1-Digest: ztwAJiV5Bs2Dx+v3LjSjuCGm/1E=
+
+Name: chrome/locale/sk/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: FohfTD8MBb0Hwa6SDa6DSw==
+SHA1-Digest: KhoiASDlcn33vszpUsd0H0/Julo=
+
+Name: chrome/locale/sl/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: AVNoE+4Os2t5FtkBH4HQXg==
+SHA1-Digest: +Q8YtX1AISZPwXBirQRkGyWNtTs=
+
+Name: chrome/locale/sl/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0TaDWraRgknn4/OWzrOe2A==
+SHA1-Digest: Y5U22DJVrjhe8E31CaTaR+yJNr0=
+
+Name: chrome/locale/sl/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: batsvHsFr6tn5fMj49paBA==
+SHA1-Digest: +z/ILbJ/RwiP9WgnYOtDf80tuw0=
+
+Name: chrome/locale/sq/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: LbbJLWSQdz7HuE6MBiO9NQ==
+SHA1-Digest: CYWtnALqUf3YRSzq8XDxSJAPiRI=
+
+Name: chrome/locale/sq/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: NjoX+qjm9i3VhJHuzxQq0w==
+SHA1-Digest: fovjD3r0DxUi2msFkJvrbm6RrEM=
+
+Name: chrome/locale/sq/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 3ytAWAJd5kkdIMOrPgSoGA==
+SHA1-Digest: XwgAy9RUmKBfVUSrru9vg3ln0ro=
+
+Name: chrome/locale/sr/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: rMjpAlu05yEF7amdCka7Yg==
+SHA1-Digest: ESLvg2omICQkxK0ezsX5Mt5AlfM=
+
+Name: chrome/locale/sr/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: AD+g3u7LYlXvf+/8gftZjQ==
+SHA1-Digest: PUBHE+J5Q+hkfW/76UFelHxP4Zo=
+
+Name: chrome/locale/sr/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: MTI8kAlgwT046x0H/OKJ2A==
+SHA1-Digest: cZefpDwj8KEdPW6yX9d/TTzTgcs=
+
+Name: chrome/locale/sv-SE/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: zFEQCOFi71TG5bMrZjCXZw==
+SHA1-Digest: R8CN0ON80qsMKG7Ks2FF6ylwY18=
+
+Name: chrome/locale/sv-SE/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: KZ6dHUuuGgTyqC0Sv+xUSg==
+SHA1-Digest: wK5me6QzKpDGjJk0UWmDT8CTmRs=
+
+Name: chrome/locale/sv-SE/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: DHqbweA/hstl3J1uVpvhdw==
+SHA1-Digest: nVAtW8LPgoOheQb8QS+bMpl7NKg=
+
+Name: chrome/locale/th/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: pkey28r+YKbkNZMAWDn+0A==
+SHA1-Digest: yZwUSI8yIAC85c2AolBs/iWuV6A=
+
+Name: chrome/locale/th/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: t7VihnloLOoIReQSQIDBfw==
+SHA1-Digest: Yxtx0meIqZNzgeree3p2xIadPBA=
+
+Name: chrome/locale/th/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 836EBDQXpF8jDE6fAEPo2g==
+SHA1-Digest: DKLyxMEbsuTrF8KxGx/kvTenZt4=
+
+Name: chrome/locale/tr/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 15vq03xIJiJvvr4Oeof+TQ==
+SHA1-Digest: gjK6XKLFhENh0uERnMvPl0pkSUQ=
+
+Name: chrome/locale/tr/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: yvYzKGUMmFbXxoCWewLVog==
+SHA1-Digest: qj3d+CoTMGKQ15LBDwvxjqF7GKU=
+
+Name: chrome/locale/tr/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 4EmiMLcfAjlBAMIOdVprHA==
+SHA1-Digest: TtZihrMbqnlksAXIzLqAfheo3Ss=
+
+Name: chrome/locale/uk/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: wU/XvS86xh431CB6ZJAE0A==
+SHA1-Digest: Biem5ViQj10UAz1hYSCXiB4d754=
+
+Name: chrome/locale/uk/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 7GnKtBisbUy7hrk69ndxEw==
+SHA1-Digest: hNepjrMXoEBLl0IWnhNF6QNPH2g=
+
+Name: chrome/locale/uk/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: /wlvoePaXrCsU6HBgP+8GQ==
+SHA1-Digest: aSh4KDl5OF4LTs8yr09RQFPdW+Q=
+
+Name: chrome/locale/vi/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Dh+ztaLQ1czNCOEXuvvjsQ==
+SHA1-Digest: 6kiT6PEhdBoQMpkMmZSrJywafVk=
+
+Name: chrome/locale/vi/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: FefjCOVQ2XqpPQGjQuj6pQ==
+SHA1-Digest: BlEKvIZjLy3gpUfzaU3zP8WfrlQ=
+
+Name: chrome/locale/vi/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Hkodk4EvdhshzHu4CT/jtA==
+SHA1-Digest: KqQEFI7aUqCnib3p01g3sgUXaNs=
+
+Name: chrome/locale/zh-CN/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ZV58fdVosAiy4FX1FcI06Q==
+SHA1-Digest: g+hD4tP+L2Tr9u+SuDBxTuZUsx8=
+
+Name: chrome/locale/zh-CN/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: HpG2q4vWb6i000x8Ggv9DA==
+SHA1-Digest: 6de2BYwxf9loDtVZlKs5lWBmhIw=
+
+Name: chrome/locale/zh-CN/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 04BsLY9BArYtIkY0d7VoSw==
+SHA1-Digest: VSbSzh1+x7KM9M5XL55nuzF2jmk=
+
+Name: chrome/locale/zh-TW/composer.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9ww55Vb7EgbH50CNxxA8bg==
+SHA1-Digest: WDBDRNzPy4kdIhHbLQgCBBYkS9s=
+
+Name: chrome/locale/zh-TW/global.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: yGMOPu7kKgZwrQMZ13/PKQ==
+SHA1-Digest: Ka2yfoKMOqstH4MnPjuKYOzewHM=
+
+Name: chrome/locale/zh-TW/overlay.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: X+mdTHTFed4Qtg2uLN3F0Q==
+SHA1-Digest: WVIH6Caxg1lzL9rcDlwbY2arqBE=
+
+Name: chrome/skin/composer.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: fS3NQNPUr5tGrvprbaRBzQ==
+SHA1-Digest: 6bb5txOFUGnAqzHsfpOuiGhdSW4=
+
+Name: chrome/skin/devToolsOverlay.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qiZ0AlPsI9KTrxhzygBB9Q==
+SHA1-Digest: BQJRv0kUXNescqLzGEi8/PkIDWU=
+
+Name: chrome/skin/overlay.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: C9gSDJWj/1abZdPUdPfOvA==
+SHA1-Digest: XIstnyq45lplqE5/o4L8FVWlo8E=
+
+Name: defaults/prefs.json
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: uTEmqrCcrDTzKiQcxy3bhA==
+SHA1-Digest: iMPCWcArAtw2yWO7i1uOnjHXN7E=
+
+Name: lib/aardvark.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: kbbYCKCelGF9V28SF5HCFg==
- SHA1-Digest: 1mHUhNnP2IWZz9xMlpvDvdzWOzI=
++MD5-Digest: nXcitZg9Qwp9jCEetSq1gQ==
++SHA1-Digest: TvXgGWEd0gOUQTfUwdho4OxM+00=
+
+Name: lib/inspectorObserver.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: hcUvr8f3efmkNVW7XkC5RQ==
+SHA1-Digest: V04muwfvp1ndCQ63Ba2XuIFX4TU=
+
+Name: lib/keySelector.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: xAW7dA1Lp2x0gGZin/VC4g==
- SHA1-Digest: HiddULeqwF2kcUpi2s4uM9dalNc=
++MD5-Digest: nK/El/kCTOzeUMJRbpSUXA==
++SHA1-Digest: xmVw9vFX/Hj/GYjCyzy1oKzQjW4=
+
+Name: lib/main.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: 5FMQok/qy08gDz+79Elz+A==
- SHA1-Digest: T+ER5ABnLkaawmONgah+DzZu+lY=
++MD5-Digest: fEhJcfJgwe3wFneOH+yyrQ==
++SHA1-Digest: MejeQrbFhyJ+R6SwablyiqJ/iik=
+
+Name: lib/prefs.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: ghFfNRUxf3carriDpRB3Vg==
- SHA1-Digest: iB38kIOg8b6HtVN8X6W3jCn7LYA=
++MD5-Digest: OXuFy7xFJt+RtrUBYVFSXw==
++SHA1-Digest: oSAt/oLd1+2Fs9cyj0uIYkc5IEo=
+
+Name: lib/windowObserver.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: yVQpxZDfBt7oc57SHqZ9Gw==
+SHA1-Digest: Z5Frw/lWvH1beSZGs6u8t9NZ72s=
+
+Name: lib/windowWrapper.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: iCRhFMIiYBCb3bcIK3ZAjg==
+SHA1-Digest: 0TquEKCzHa/xENOjgxXVmBpvauc=
+
diff --cc META-INF/mozilla.rsa
index 0a01edd,0000000..a078868
mode 100644,000000..100644
Binary files differ
diff --cc META-INF/mozilla.sf
index b9260df,0000000..967e7bd
mode 100644,000000..100644
--- a/META-INF/mozilla.sf
+++ b/META-INF/mozilla.sf
@@@ -1,4 -1,0 +1,4 @@@
+Signature-Version: 1.0
- MD5-Digest-Manifest: Jqhz4xz0XEOTThKPaYrvAw==
- SHA1-Digest-Manifest: ac3X7p375u5JhC+gPyil2GBAQXg=
++MD5-Digest-Manifest: 9FjPglDFq41HJLvxz+svWQ==
++SHA1-Digest-Manifest: gPITRcASYwYfmgqmj9kSOX2nRt4=
+
diff --cc bootstrap.js
index edec9f4,0000000..559867a
mode 100644,000000..100644
--- a/bootstrap.js
+++ b/bootstrap.js
@@@ -1,149 -1,0 +1,152 @@@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cr = Components.results;
+const Cu = Components.utils;
+
+let {Services, atob, btoa, File, TextDecoder, TextEncoder} = Cu.import("resource://gre/modules/Services.jsm", null);
+let XMLHttpRequest = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1", "nsIXMLHttpRequest");
+
+let addonData = null;
+
+function startup(params, reason)
+{
+ addonData = params;
+ Services.obs.addObserver(RequireObserver, "elemhidehelper-require", true);
- onShutdown.add(function() Services.obs.removeObserver(RequireObserver, "elemhidehelper-require"));
++ onShutdown.add(function()
++ {
++ Services.obs.removeObserver(RequireObserver, "elemhidehelper-require");
++ });
+
+ require("main");
+}
+
+function shutdown(params, reason)
+{
+ let windowNames = ["ehh:composer"];
+ for (let i = 0; i < windowNames.length; i++)
+ {
+ let enumerator = Services.wm.getEnumerator(windowNames[i]);
+ while (enumerator.hasMoreElements())
+ {
+ let window = enumerator.getNext().QueryInterface(Ci.nsIDOMWindow);
+ window.setTimeout("window.close()", 0); // Closing immediately might not work due to modal windows
+ try
+ {
+ window.close();
+ } catch(e) {}
+ }
+ }
+ onShutdown.done = true;
+ for (let i = shutdownHandlers.length - 1; i >= 0; i --)
+ {
+ try
+ {
+ shutdownHandlers[i]();
+ }
+ catch (e)
+ {
+ Cu.reportError(e);
+ }
+ }
+ shutdownHandlers = null;
+
+ // Make sure to release our ties to the modules even if the sandbox cannot be
+ // released for some reason.
+ for (let key in require.scopes)
+ {
+ let scope = require.scopes[key];
+ let list = Object.keys(scope);
+ for (let i = 0; i < list.length; i++)
+ scope[list[i]] = null;
+ }
+ require.scopes = null;
+ addonData = null;
+}
+
+function install(params, reason) {}
+
+function uninstall(params, reason)
+{
+}
+let shutdownHandlers = [];
+let onShutdown =
+{
+ done: false,
+ add: function(handler)
+ {
+ if (shutdownHandlers.indexOf(handler) < 0)
+ shutdownHandlers.push(handler);
+ },
+ remove: function(handler)
+ {
+ let index = shutdownHandlers.indexOf(handler);
+ if (index >= 0)
+ shutdownHandlers.splice(index, 1);
+ }
+};
+
+function require(module)
+{
+ let scopes = require.scopes;
+ if (!(module in scopes))
+ {
+ if (module == "info")
+ {
- let applications = {"{a23983c0-fd0e-11dc-95ff-0800200c9a66}": "fennec", "toolkit at mozilla.org": "toolkit", "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}": "firefox", "dlm at emusic.com": "emusic", "{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}": "seamonkey", "{aa3c5121-dab2-40e2-81ca-7ea25febc110}": "fennec2", "{a79fe89b-6662-4ff4-8e88-09950ad4dfde}": "conkeror", "{aa5ca914-c309-495d-91cf-3141bbb04115}": "midbrowser", "songbird at songbirdnest.com": "songbird", "prism at developer.mozilla.org": "prism", [...]
++ let applications = {"{a23983c0-fd0e-11dc-95ff-0800200c9a66}": "fennec", "toolkit at mozilla.org": "toolkit", "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}": "firefox", "dlm at emusic.com": "emusic", "{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}": "seamonkey", "{aa3c5121-dab2-40e2-81ca-7ea25febc110}": "fennec2", "{a79fe89b-6662-4ff4-8e88-09950ad4dfde}": "conkeror", "{aa5ca914-c309-495d-91cf-3141bbb04115}": "midbrowser", "songbird at songbirdnest.com": "songbird", "{55aba3ac-94d3-41a8-9e25-5c21fe874539} [...]
+ let appInfo = Services.appinfo;
+
+ scopes[module] = {};
+ scopes[module].exports =
+ {
+ addonID: addonData.id,
+ addonVersion: addonData.version,
+ addonRoot: addonData.resourceURI.spec,
+ addonName: "elemhidehelper",
+ application: (appInfo.ID in applications ? applications[appInfo.ID] : "other"),
+ applicationVersion: appInfo.version,
+ platform: "gecko",
+ platformVersion: appInfo.platformVersion
+ };
+ }
+ else
+ {
+ let url = addonData.resourceURI.spec + "lib/" + module + ".js";
+ scopes[module] = {
+ Cc: Cc,
+ Ci: Ci,
+ Cr: Cr,
+ Cu: Cu,
+ atob: atob,
+ btoa: btoa,
+ File: File,
+ require: require,
+
+ onShutdown: onShutdown,
+
+ XMLHttpRequest: XMLHttpRequest,
+
+ exports: {}};
+ Services.scriptloader.loadSubScript(url, scopes[module]);
+ }
+ }
+ return scopes[module].exports;
+}
- require.scopes = {__proto__: null};
++require.scopes = Object.create(null);
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+
+let RequireObserver =
+{
+ observe: function(subject, topic, data)
+ {
+ if (topic == "elemhidehelper-require")
+ {
+ subject.wrappedJSObject.exports = require(data);
+ }
+ },
+
+ QueryInterface: XPCOMUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIObserver])
+};
diff --cc install.rdf
index 644ded8,0000000..a18f27b
mode 100644,000000..100644
--- a/install.rdf
+++ b/install.rdf
@@@ -1,529 -1,0 +1,529 @@@
+<?xml version="1.0"?>
+
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#">
+
+ <Description about="urn:mozilla:install-manifest">
+ <em:id>elemhidehelper at adblockplus.org</em:id>
- <em:version>1.3.5</em:version>
++ <em:version>1.3.6</em:version>
+ <em:name>Element Hiding Helper for Adblock Plus</em:name>
+ <em:description>Helps you create element hiding rules for Adblock Plus to fight the text ads.</em:description>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:type>2</em:type>
+ <em:bootstrap>true</em:bootstrap>
+ <em:localized>
+ <Description>
+ <em:locale>ar</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>العنصر إخفاء مساعد لزائد</em:name>
+ <em:description>يساعدك في إنشاء عنصر القواعد الاختباء لزائد لمكافحة الإعلانات النصية.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>مؤيد مارديني</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>bg</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper за Adblock Plus</em:name>
+ <em:description>Помага в създаването на правила за скриване на елементи за Adblock Plus за борба с текстовите реклами.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Ивайло Йовчев (s0urce)</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>ca</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper per Adblock Plus</em:name>
+ <em:description>T'ajuda a crear normes d'omissió d'elements per l'AdBlock Plus per combatre els ads de text.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>CatTranslations (with other non specified contributions)</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>cs</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Pomocník skrývání prvků pro Adblock Plus</em:name>
+ <em:description>Pomáhá vám v boji proti textovým reklamám zjednodušením tvorby pravidel na skrývání prkvů pro Adblock Plus.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Jakub Tománek</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>de</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper für Adblock Plus</em:name>
+ <em:description>Hilft beim Erstellen von Regeln zum Verstecken von Elementen, um mit Adblock Plus Textwerbung zu bekämpfen.</em:description>
+ <em:homepageURL>https://adblockplus.org/de/elemhidehelper</em:homepageURL>
+ <em:translator>Wladimir Palant</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>dsb</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper for Adblock Plus</em:name>
+ <em:description>Pomaga wam, pšawidła za chowanje elementow za Adblock Plus napóraś, aby pśeśiwo tekstowemu wabjenjeju wójował.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Michael Wolf</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>el</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Βοηθός Απόκρυψης Στοιχείων για το Adblock Plus</em:name>
+ <em:description>Βοηθά στην δημιουργία κανόνων απόκρυψης στοιχείων για το Adblock Plus για να αντιμετωπίσετε τις διαφημίσεις κειμένου.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>rookie</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>en-GB</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper for Adblock Plus</em:name>
+ <em:description>Helps you create element hiding rules for Adblock Plus to fight the text ads.</em:description>
+ <em:homepageURL>https://adblockplus.org/en/elemhidehelper</em:homepageURL>
+ <em:translator>Mark Tyndall</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>en-US</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper for Adblock Plus</em:name>
+ <em:description>Helps you create element hiding rules for Adblock Plus to fight the text ads.</em:description>
+ <em:homepageURL>https://adblockplus.org/en/elemhidehelper</em:homepageURL>
+ <em:translator>Wladimir Palant</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>es-AR</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Asistente ocultador de elementos para Adblock Plus</em:name>
+ <em:description>Te ayuda a crear reglas para ocultar elementos, conjuntamente con Adblock Plus, para combatir las publicidades de texto.</em:description>
+ <em:homepageURL>https://adblockplus.org/es/elemhidehelper</em:homepageURL>
+ <em:translator>KNTRO</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>es-ES</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper para Adblock Plus</em:name>
+ <em:description>Le ayuda a crear reglas de ocultación de elementos para Adblock Plus contra la publicidad en forma de textos.</em:description>
+ <em:homepageURL>https://adblockplus.org/es/elemhidehelper</em:homepageURL>
+ <em:translator>Urko</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>es-MX</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper para Adblock Plus</em:name>
+ <em:description>Le ayuda a crear reglas para ocultar elementos no deseados para Adblock Plus para eliminar la publicidad en forma de textos.</em:description>
+ <em:homepageURL>https://adblockplus.org/es/elemhidehelper</em:homepageURL>
+ <em:translator>Ninnetyer</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>et</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper for Adblock Plus</em:name>
+ <em:description>Helps you create element hiding rules for Adblock Plus to fight the text ads.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>eu</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Elementuak Ezkutatzeko Adblock Plus Lagungarria</em:name>
+ <em:description>Adblock Plus erabilita elementuak ezkutatzeko arauak sortzen laguntzen dizu, testu iragarkiak borrokatzeko.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Librezale.org</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>fa</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>نرم افزار کمکی حذف تبلیغات برای Adblock Plus</em:name>
+ <em:description>شما را کمک میکند با قوانین ادبلاک برای پنهان کردن آگهیهای متنی</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>GµårÐïåñ aka Major Mike</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>fi</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Elementin piilottaja</em:name>
+ <em:description>Auttaa sinua tekemään asetukset puolustautuakseen teksti mainoksilta.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>epe07</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>fr</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper pour Adblock Plus</em:name>
+ <em:description>Vous aide à créer des règles de masquage d'éléments pour Adblock Plus, afin de lutter contre les textes publicitaires.</em:description>
+ <em:homepageURL>https://adblockplus.org/fr/elemhidehelper</em:homepageURL>
+ <em:translator>Dagobert_78</em:translator>
+ <em:translator>Jim Courbron</em:translator>
+ <em:translator>jojaba</em:translator>
+ <em:translator>pirlouy</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>gl</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper para Adblock Plus</em:name>
+ <em:description>Axúdate a crear regras de ocultación para que Adblock Plus oculte os anuncios de texto.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Isaac Álvarez Veiga</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>he</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper עבור Adblock Plus</em:name>
- <em:description>מסייע ליצירת חוקי הסתרת אלמנטים ל-Adblock Plus כדי להילחם במודעות הטקסט.</em:description>
++ <em:description>מסייע ליצירת חוקי הסתרת אלמנטים ל Adblock Plus כדי להילחם בפרסומות הטקסט.</em:description>
+ <em:homepageURL>https://adblockplus.org/he/elemhidehelper</em:homepageURL>
+ <em:translator>SiiiE</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>hr</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Pomoćnik sakrivanja elemenata za Adblock Plus</em:name>
+ <em:description>Pomaže vam u stvaranju pravila sakrivanja elemenata za Adblock Plus u svrhu borbe protiv tekstualnih reklama.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>gogo gogić</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>hsb</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper for Adblock Plus</em:name>
+ <em:description>Pomha wam, prawidła za chowanje elementow za Adblock Plus wutworić, zo by přećiwo tekstowemu wabjenju wojował.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Michael Wolf</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>hu</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper az Adblock Plushoz</em:name>
+ <em:description>Elemek elrejtése szabályok alapján (Adblock Plus bővítmény).</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Mikes Kaszmán István</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>hy-AM</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper for Adblock Plus</em:name>
+ <em:description>Օգնում է ստեղծելու տարրերի էթաքցման կանոններ Adblock Plus-ի համար տեքստային գովազդների հետ պայքարելու համար:</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>iAbaS</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>id</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Bantuan Penyembunyian Elemen untuk Adblock Plus</em:name>
+ <em:description>Membantu Anda membuat aturan penyembunyian elemen untuk Adblock Plus untuk melawan iklan teks.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Wladimir Palant</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>it</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper per Adblock Plus</em:name>
+ <em:description>Permette di creare regole per nascondere gli elementi per Adblock Plus</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Luana Di Muzio</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>ja</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper for Adblock Plus</em:name>
+ <em:description>テキスト広告に対抗する、Adblock Plus の要素非表示ルール作成を支援します。</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>k2jp</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>kk</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Adblock Plus үшін Element Hiding Helper</em:name>
+ <em:description>Мәтіндік жарнамалардан құтылу үшін Adblock Plus ережелерін жасауға көмектеседі</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Бауржан Муфтахидинов</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>ko</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper for Adblock Plus</em:name>
+ <em:description>텍스트 광고 제거! 요소 숨김 도우미로 애드블록 플러스의 요소 숨김 필터를 작성할 수 있습니다.</em:description>
+ <em:homepageURL>https://adblockplus.org/ko/elemhidehelper</em:homepageURL>
+ <em:translator>Maybee</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>lt</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper skirtas Adblock Plus</em:name>
+ <em:description>Padeda sukurti elementų slėpimo taisykles, skirtas Adblock Plus, kovai su tekstiniais skelbimais.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Algimantas Margevičius</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>nb-NO</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Hjelpeverktøy for å skjule elementer for Adblock Plus</em:name>
+ <em:description>Hjelper deg med å lage elementskjulingsregler med Adblock Plus for å bekjempe tekstreklame.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Roy Skoglund</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>nl</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper voor Adblock Plus</em:name>
+ <em:description>Helpt u regels voor verbergen van elementen te maken voor Adblock Plus om tekstadvertenties te bestrijden.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>markh van BabelZilla.org</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>pl</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Pomocnik ukrywania elementu dla Adblocka Plus</em:name>
+ <em:description>Pomaga w tworzeniu reguł ukrywania elementu dla Adblocka Plus.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Leszek Życzkowski (teo)</em:translator>
+ <em:translator>Piotr Żółtowski (Piter432)</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>pt-BR</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper for Adblock Plus</em:name>
+ <em:description>Ajuda a criar regras de ocultamento de elementos para o Adblock Plus para combater propagandas de texto.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Humberto Sartini</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>pt-PT</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper para o Adblock Plus</em:name>
+ <em:description>Ajuda-o a criar as regras de ocultação do elemento para o Adblock Plus, para ocultar os anúncios de texto.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Manuela Silva</em:translator>
+ <em:translator>Pimentel</em:translator>
+ <em:translator>Sérgio Marques</em:translator>
+ <em:translator>Wladimir Palant</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>ro</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper pentru Adblock Plus</em:name>
+ <em:description>Vă ajută să creați reguli de ascundere a elementelor pentru Adblock Plus cu scopul de a bloca reclamele de tip text.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>ultravioletu</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>ru</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper для Adblock Plus</em:name>
+ <em:description>Помогает при создании правил скрытия для Adblock Plus, эффективное средство борьбы с текстовой рекламой.</em:description>
+ <em:homepageURL>https://adblockplus.org/ru/elemhidehelper</em:homepageURL>
+ <em:translator>Wladimir Palant</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>sk</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper pre Adblock Plus</em:name>
+ <em:description>Pomôže vám s vytváraním pravidiel na skrývanie prvkov pre Adblock Plus a bojovať s textovými reklamami.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Wladimir Palant</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>sl</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper za Adblock Plus</em:name>
+ <em:description>Vam pomaga ustvariti pravila za skrivanje tekstovnih oglasnih blokov z Adblock Plus vtičnikom.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Tomaž Mačus</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>sq</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Ndihmues për Element i Fshehur për Adblock Plus</em:name>
+ <em:description>Ju ndihmon të krijoni rregulla Elementa i Fshehur për Adblock Plus për të luftuar reklamat teksti.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Kristi Papa</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>sr</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper за Adblock Plus</em:name>
+ <em:description>Помаже да направите правила за сакривање елемената за Adblock Plus, како бисте уклонили текстуалне рекламе.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Ђорђе Васиљевић</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>sv-SE</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper för Adblock Plus</em:name>
+ <em:description>Hjälper dig att skapa regler i Adblock Plus för att dölja element. Användbart mot bl.a. textreklam.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Kim Johansson</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>th</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper สำหรับ Adblock Plus</em:name>
+ <em:description>ช่วยคุณสร้างกฎการซ่อนวัตถุของ Adblock Plus เพื่อสู้กับข้อความโฆษณา</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Ken</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>tr</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Adblock Plus için Element Hiding Helper</em:name>
+ <em:description>Metin reklamlarıyla savaşta Adblock Plus için bileşen gizleme kuralları oluşturmanıza yardım eder.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Ahmet Serkan Tıratacı</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>uk</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper для Adblock Plus</em:name>
+ <em:description>Допомогає вам створювати правила приховування для Adblock Plus і боротись з рекламою.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>Тимофій Бабич</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>vi</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Trình trợ giúp Ẩn Phần tử cho Adblock Plus</em:name>
+ <em:description>Giúp bạn tạo quy tắc ẩn phần tử cho Adblock Plus để chống lại quảng cáo dạng văn bản.</em:description>
+ <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
+ <em:translator>SITUVN</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>zh-CN</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Adblock Plus 元素隐藏辅助工具</em:name>
+ <em:description>方便的为 Adblock Plus 创建页面元素隐藏规则以去除文本广告。</em:description>
+ <em:homepageURL>https://adblockplus.org/zh_CN/elemhidehelper</em:homepageURL>
+ <em:translator>WangKing</em:translator>
+ </Description>
+ </em:localized>
+ <em:localized>
+ <Description>
+ <em:locale>zh-TW</em:locale>
+ <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
+ <em:name>Element Hiding Helper for Adblock Plus</em:name>
+ <em:description>協助您建立對抗文字廣告用的 Adblock Plus 元素隱藏規則。</em:description>
+ <em:homepageURL>https://adblockplus.org/zh_TW/elemhidehelper</em:homepageURL>
+ <em:translator>Chris Hsu</em:translator>
+ <em:translator>knight00931</em:translator>
+ </Description>
+ </em:localized>
+ <em:targetApplication>
+ <Description>
+ <!-- conkeror -->
+ <em:id>{a79fe89b-6662-4ff4-8e88-09950ad4dfde}</em:id>
+ <em:minVersion>0.1</em:minVersion>
+ <em:maxVersion>100.0</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ <em:targetApplication>
+ <Description>
+ <!-- firefox -->
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>29.0</em:minVersion>
- <em:maxVersion>45.0</em:maxVersion>
++ <em:minVersion>38.0</em:minVersion>
++ <em:maxVersion>46.0</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ <em:targetApplication>
+ <Description>
+ <!-- seamonkey -->
+ <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
- <em:minVersion>2.26</em:minVersion>
- <em:maxVersion>2.41</em:maxVersion>
++ <em:minVersion>2.35</em:minVersion>
++ <em:maxVersion>2.42</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ <em:targetApplication>
+ <Description>
+ <!-- thunderbird -->
+ <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>
- <em:minVersion>29.0</em:minVersion>
- <em:maxVersion>45.0</em:maxVersion>
++ <em:minVersion>38.0</em:minVersion>
++ <em:maxVersion>46.0</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ </Description>
+</RDF>
diff --cc lib/keySelector.js
index 01d9cd0,0000000..22212f5
mode 100644,000000..100644
--- a/lib/keySelector.js
+++ b/lib/keySelector.js
@@@ -1,215 -1,0 +1,212 @@@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+Cu.import("resource://gre/modules/Services.jsm");
+
- let validModifiers =
- {
- ACCEL: null,
- CTRL: "control",
- CONTROL: "control",
- SHIFT: "shift",
- ALT: "alt",
- META: "meta",
- __proto__: null
- };
++let validModifiers = Object.create(null);
++validModifiers.ACCEL = null;
++validModifiers.CTRL = "control";
++validModifiers.CONTROL = "control";
++validModifiers.SHIFT = "shift";
++validModifiers.ALT = "alt";
++validModifiers.META = "meta";
+
+/**
+ * Sets the correct value of validModifiers.ACCEL.
+ */
+function initAccelKey()
+{
+ validModifiers.ACCEL = "control";
+ try
+ {
+ let accelKey = Services.prefs.getIntPref("ui.key.accelKey");
+ if (accelKey == Ci.nsIDOMKeyEvent.DOM_VK_CONTROL)
+ validModifiers.ACCEL = "control";
+ else if (accelKey == Ci.nsIDOMKeyEvent.DOM_VK_ALT)
+ validModifiers.ACCEL = "alt";
+ else if (accelKey == Ci.nsIDOMKeyEvent.DOM_VK_META)
+ validModifiers.ACCEL = "meta";
+ }
+ catch(e)
+ {
+ Cu.reportError(e);
+ }
+}
+
+exports.KeySelector = KeySelector;
+
+/**
+ * This class provides capabilities to find and use available keyboard shortcut
+ * keys.
+ * @param {ChromeWindow} window the window where to look up existing shortcut
+ * keys
+ * @constructor
+ */
+function KeySelector(window)
+{
+ this._initExistingShortcuts(window);
+}
+KeySelector.prototype =
+{
+ /**
+ * Map listing existing shortcut keys as its keys.
+ * @type Object
+ */
+ _existingShortcuts: null,
+
+ /**
+ * Sets up _existingShortcuts property for a window.
+ */
+ _initExistingShortcuts: function(/**ChromeWindow*/ window)
+ {
+ if (!validModifiers.ACCEL)
+ initAccelKey();
+
- this._existingShortcuts = {__proto__: null};
++ this._existingShortcuts = Object.create(null);
+
+ let keys = window.document.getElementsByTagName("key");
+ for (let i = 0; i < keys.length; i++)
+ {
+ let key = keys[i];
+ let keyData =
+ {
+ shift: false,
+ meta: false,
+ alt: false,
+ control: false,
+ char: null,
+ code: null
+ };
+
+ let keyChar = key.getAttribute("key");
+ if (keyChar && keyChar.length == 1)
+ keyData.char = keyChar.toUpperCase();
+
+ let keyCode = key.getAttribute("keycode");
+ if (keyCode && "DOM_" + keyCode.toUpperCase() in Ci.nsIDOMKeyEvent)
+ keyData.code = Ci.nsIDOMKeyEvent["DOM_" + keyCode.toUpperCase()];
+
+ if (!keyData.char && !keyData.code)
+ continue;
+
+ let keyModifiers = key.getAttribute("modifiers");
+ if (keyModifiers)
- for each (let modifier in keyModifiers.toUpperCase().match(/\w+/g))
++ for (let modifier of keyModifiers.toUpperCase().match(/\w+/g))
+ if (modifier in validModifiers)
+ keyData[validModifiers[modifier]] = true;
+
+ let canonical = [keyData.shift, keyData.meta, keyData.alt, keyData.control, keyData.char || keyData.code].join(" ");
+ this._existingShortcuts[canonical] = true;
+ }
+ },
+
+ /**
+ * Selects a keyboard shortcut variant that isn't already taken,
+ * parses it into an object.
+ */
+ selectKey: function(/**String*/ variants) /**Object*/
+ {
- for each (let variant in variants.split(/\s*,\s*/))
++ for (let variant of variants.split(/\s*,\s*/))
+ {
+ if (!variant)
+ continue;
+
+ let keyData =
+ {
+ shift: false,
+ meta: false,
+ alt: false,
+ control: false,
+ char: null,
+ code: null,
+ codeName: null
+ };
- for each (let part in variant.toUpperCase().split(/\s+/))
++ for (let part of variant.toUpperCase().split(/\s+/))
+ {
+ if (part in validModifiers)
+ keyData[validModifiers[part]] = true;
+ else if (part.length == 1)
+ keyData.char = part;
+ else if ("DOM_VK_" + part in Ci.nsIDOMKeyEvent)
+ {
+ keyData.code = Ci.nsIDOMKeyEvent["DOM_VK_" + part];
+ keyData.codeName = "VK_" + part;
+ }
+ }
+
+ if (!keyData.char && !keyData.code)
+ continue;
+
+ let canonical = [keyData.shift, keyData.meta, keyData.alt, keyData.control, keyData.char || keyData.code].join(" ");
+ if (canonical in this._existingShortcuts)
+ continue;
+
+ return keyData;
+ }
+
+ return null;
+ }
+};
+
+/**
+ * Creates the text representation for a key.
+ * @static
+ */
+KeySelector.getTextForKey = function (/**Object*/ key) /**String*/
+{
+ if (!key)
+ return null;
+
+ if (!("text" in key))
+ {
+ key.text = null;
+ try
+ {
+ let stringBundle = Services.strings.createBundle("chrome://global-platform/locale/platformKeys.properties");
+ let parts = [];
+ if (key.control)
+ parts.push(stringBundle.GetStringFromName("VK_CONTROL"));
+ if (key.alt)
+ parts.push(stringBundle.GetStringFromName("VK_ALT"));
+ if (key.meta)
+ parts.push(stringBundle.GetStringFromName("VK_META"));
+ if (key.shift)
+ parts.push(stringBundle.GetStringFromName("VK_SHIFT"));
+ if (key.char)
+ parts.push(key.char.toUpperCase());
+ else
+ {
+ let stringBundle2 = Services.strings.createBundle("chrome://global/locale/keys.properties");
+ parts.push(stringBundle2.GetStringFromName(key.codeName));
+ }
+ key.text = parts.join(stringBundle.GetStringFromName("MODIFIER_SEPARATOR"));
+ }
+ catch (e)
+ {
+ Cu.reportError(e);
+ return null;
+ }
+ }
+ return key.text;
+};
+
+/**
+ * Tests whether a keypress event matches the given key.
+ * @static
+ */
+KeySelector.matchesKey = function(/**Event*/ event, /**Object*/ key) /**Boolean*/
+{
+ if (event.defaultPrevented || !key)
+ return false;
+ if (key.shift != event.shiftKey || key.alt != event.altKey)
+ return false;
+ if (key.meta != event.metaKey || key.control != event.ctrlKey)
+ return false;
+
+ if (key.char && event.charCode && String.fromCharCode(event.charCode).toUpperCase() == key.char)
+ return true;
+ if (key.code && event.keyCode && event.keyCode == key.code)
+ return true;
+ return false;
+};
diff --cc lib/prefs.js
index ff5e181,0000000..eb670a7
mode 100644,000000..100644
--- a/lib/prefs.js
+++ b/lib/prefs.js
@@@ -1,198 -1,0 +1,201 @@@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
- Cu.import("resource://gre/modules/Services.jsm");
- Cu.import("resource://gre/modules/XPCOMUtils.jsm");
++let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
++let {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm", {});
+
+let {addonRoot, addonName} = require("info");
+let branchName = "extensions." + addonName + ".";
+let branch = Services.prefs.getBranch(branchName);
+let preconfiguredBranch =
+ Services.prefs.getBranch(branchName + "preconfigured.");
+let ignorePrefChanges = false;
+
+function init()
+{
+ // Load default preferences and set up properties for them
+ let defaultBranch = Services.prefs.getDefaultBranch(branchName);
+
+ let request = new XMLHttpRequest();
+ request.open("GET", addonRoot + "defaults/prefs.json", false);
+ request.responseType = "json";
+ request.send();
+
+ let defaults = request.response.defaults;
+ let preconfigurable = new Set(request.response.preconfigurable);
+ for (let pref in defaults)
+ {
+ let value = defaults[pref];
+ let [getter, setter] = typeMap[typeof value];
+ if (preconfigurable.has(pref))
+ {
+ try
+ {
+ value = getter(preconfiguredBranch, pref);
+ }
+ catch (e) {}
+ }
+ setter(defaultBranch, pref, value);
+ defineProperty(pref, false, getter, setter);
+ }
+
+ // Add preference change observer
+ try
+ {
+ branch.QueryInterface(Ci.nsIPrefBranch2).addObserver("", Prefs, true);
- onShutdown.add(function() branch.removeObserver("", Prefs));
++ onShutdown.add(() => branch.removeObserver("", Prefs));
+ }
+ catch (e)
+ {
+ Cu.reportError(e);
+ }
+}
+
+/**
+ * Sets up getter/setter on Prefs object for preference.
+ */
+function defineProperty(/**String*/ name, defaultValue, /**Function*/ readFunc, /**Function*/ writeFunc)
+{
+ let value = defaultValue;
- Prefs["_update_" + name] = function()
++ Prefs["_update_" + name] = () =>
+ {
+ try
+ {
+ value = readFunc(branch, name);
+ triggerListeners(name);
+ }
+ catch(e)
+ {
+ Cu.reportError(e);
+ }
+ };
- Prefs.__defineGetter__(name, function() value);
- Prefs.__defineSetter__(name, function(newValue)
- {
- if (value == newValue)
- return value;
-
- try
- {
- ignorePrefChanges = true;
- writeFunc(branch, name, newValue);
- value = newValue;
- Services.prefs.savePrefFile(null);
- triggerListeners(name);
- }
- catch(e)
++ Object.defineProperty(Prefs, name, {
++ enumerable: true,
++ get: () => value,
++ set: (newValue) =>
+ {
- Cu.reportError(e);
- }
- finally
- {
- ignorePrefChanges = false;
++ if (value == newValue)
++ return value;
++
++ try
++ {
++ ignorePrefChanges = true;
++ writeFunc(branch, name, newValue);
++ value = newValue;
++ Services.prefs.savePrefFile(null);
++ triggerListeners(name);
++ }
++ catch(e)
++ {
++ Cu.reportError(e);
++ }
++ finally
++ {
++ ignorePrefChanges = false;
++ }
++ return value;
+ }
- return value;
+ });
+ Prefs["_update_" + name]();
+}
+
+let listeners = [];
+function triggerListeners(/**String*/ name)
+{
+ for (let i = 0; i < listeners.length; i++)
+ {
+ try
+ {
+ listeners[i](name);
+ }
+ catch(e)
+ {
+ Cu.reportError(e);
+ }
+ }
+}
+
+/**
+ * Manages the preferences for an extension, object properties corresponding
+ * to extension's preferences are added automatically. Setting the property
+ * will automatically change the preference, external preference changes are
+ * also recognized automatically.
+ */
+let Prefs = exports.Prefs =
+{
+ /**
+ * Migrates an old preference to a new name.
+ */
+ migrate: function(/**String*/ oldName, /**String*/ newName)
+ {
+ if (newName in this && Services.prefs.prefHasUserValue(oldName))
+ {
+ let [getter, setter] = typeMap[typeof this[newName]];
+ try
+ {
+ this[newName] = getter(Services.prefs, oldName);
+ } catch(e) {}
+ Services.prefs.clearUserPref(oldName);
+ }
+ },
+
+ /**
+ * Adds a preferences listener that will be fired whenever a preference
+ * changes.
+ */
+ addListener: function(/**Function*/ listener)
+ {
+ if (listeners.indexOf(listener) < 0)
+ listeners.push(listener);
+ },
+
+ /**
+ * Removes a preferences listener.
+ */
+ removeListener: function(/**Function*/ listener)
+ {
+ let index = listeners.indexOf(listener);
+ if (index >= 0)
+ listeners.splice(index, 1);
+ },
+
+ observe: function(subject, topic, data)
+ {
+ if (ignorePrefChanges || topic != "nsPref:changed")
+ return;
+
+ if ("_update_" + data in this)
+ this["_update_" + data]();
+ },
+
+ QueryInterface: XPCOMUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIObserver])
+};
+
++let getIntPref = (branch, pref) => branch.getIntPref(pref);
++let setIntPref = (branch, pref, newValue) => branch.setIntPref(pref, newValue);
++
++let getBoolPref = (branch, pref) => branch.getBoolPref(pref);
++let setBoolPref = (branch, pref, newValue) => branch.setBoolPref(pref, newValue);
++
++let getCharPref = (branch, pref) => branch.getComplexValue(pref, Ci.nsISupportsString).data;
++let setCharPref = (branch, pref, newValue) =>
++{
++ let str = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString);
++ str.data = newValue;
++ branch.setComplexValue(pref, Ci.nsISupportsString, str);
++};
++
++let getJSONPref = (branch, pref) => JSON.parse(getCharPref(branch, pref));
++let setJSONPref = (branch, pref, newValue) => setCharPref(branch, pref, JSON.stringify(newValue));
++
+// Getter/setter functions for difference preference types
+let typeMap =
+{
+ boolean: [getBoolPref, setBoolPref],
+ number: [getIntPref, setIntPref],
+ string: [getCharPref, setCharPref],
+ object: [getJSONPref, setJSONPref]
+};
+
- function getIntPref(branch, pref) branch.getIntPref(pref)
- function setIntPref(branch, pref, newValue) branch.setIntPref(pref, newValue)
-
- function getBoolPref(branch, pref) branch.getBoolPref(pref)
- function setBoolPref(branch, pref, newValue) branch.setBoolPref(pref, newValue)
-
- function getCharPref(branch, pref) branch.getComplexValue(pref, Ci.nsISupportsString).data
- function setCharPref(branch, pref, newValue)
- {
- let str = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString);
- str.data = newValue;
- branch.setComplexValue(pref, Ci.nsISupportsString, str);
- }
-
- function getJSONPref(branch, pref) JSON.parse(getCharPref(branch, pref))
- function setJSONPref(branch, pref, newValue) setCharPref(branch, pref, JSON.stringify(newValue))
-
+init();
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/adblock-plus-element-hiding-helper.git
More information about the Pkg-mozext-commits
mailing list