diff --git a/.gitignore b/.gitignore index 8f99273ff9..aebac74c75 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,8 @@ ID .DS_Store* *.pdb *.egg-info +*.orig +*.rej # Vim swap files. .*.sw[a-z] @@ -33,6 +35,7 @@ security/manager/.nss.checkout # Build directories /obj*/ +/build-*/ # Build directories for js shell _DBG.OBJ/ @@ -90,8 +93,8 @@ testing/web-platform/sync/ mobile/android/gradle/.gradle # XCode project cruft -embedding/ios/GeckoEmbed/GeckoEmbed.xcodeproj/project.xcworkspace/xcuserdata -embedding/ios/GeckoEmbed/GeckoEmbed.xcodeproj/xcuserdata +embedding/ios/GoannaEmbed/GoannaEmbed.xcodeproj/project.xcworkspace/xcuserdata +embedding/ios/GoannaEmbed/GoannaEmbed.xcodeproj/xcuserdata # Ignore mozharness execution files testing/mozharness/.tox/ diff --git a/.hg_archival.txt b/.hg_archival.txt deleted file mode 100644 index 65254058b6..0000000000 --- a/.hg_archival.txt +++ /dev/null @@ -1,5 +0,0 @@ -repo: 8ba995b74e18334ab3707f27e9eb8f4e37ba3d29 -node: a7c8e85285e290fdb1325edfb37e905a3779f3cd -branch: default -tag: FIREFOX_52_6_0esr_BUILD2 -tag: FIREFOX_52_6_0esr_RELEASE diff --git a/.hgignore b/.hgignore deleted file mode 100644 index 278e63199b..0000000000 --- a/.hgignore +++ /dev/null @@ -1,134 +0,0 @@ -# .hgignore - List of filenames hg should ignore - -# Filenames that should be ignored wherever they appear -~$ -\.py(c|o)$ -(?i)(^|/)TAGS$ -(^|/)ID$ -(^|/)\.DS_Store$ -\.pdb -\.egg-info - -# Vim swap files. -^\.sw.$ -.[^/]*\.sw.$ - -# Emacs directory variable files. -\.dir-locals\.el - -# User files that may appear at the root -^\.mozconfig -^mozconfig* -^configure$ -^old-configure$ -^config\.cache$ -^config\.log$ -^\.clang_complete -^\.?machrc$ - -# Empty marker file that's generated when we check out NSS -^security/manager/\.nss\.checkout$ - -# Build directories -^obj - -# Build directories for js shell -_DBG\.OBJ/ -_OPT\.OBJ/ -^js/src/.*-obj/ - -# SpiderMonkey configury -^js/src/configure$ -^js/src/old-configure$ -^js/src/autom4te.cache$ -# SpiderMonkey test result logs -^js/src/tests/results-.*\.(html|txt)$ -^js/src/devtools/rootAnalysis/t/out - -# Java HTML5 parser classes -^parser/html/java/(html|java)parser/ - -# SVN directories -\.svn/ - -# Ignore the files and directory that Eclipse IDE creates -\.project$ -\.cproject$ -\.settings/ - -# Ignore the files and directory that JetBrains IDEs create. -\.idea/ -\.iml$ - -# Gradle cache. -^.gradle/ - -# Local Gradle configuration properties. -^local.properties$ - -# Python stuff installed at build time. -^python/psutil/.*\.so -^python/psutil/.*\.pyd -^python/psutil/build/ - -# Git repositories -.git/ - -# Ignore chrome.manifest files from the devtools loader -^devtools/client/chrome.manifest$ -^devtools/shared/chrome.manifest$ - -# Ignore node_modules directories in devtools -^devtools/.*/node_modules/ - -# git checkout of libstagefright -^media/libstagefright/android$ - -# Tag files generated by GNU Global -GTAGS -GRTAGS -GSYMS -GPATH - -# Git clone directory for updating web-platform-tests -^testing/web-platform/sync/ - -# Android Gradle artifacts. -^mobile/android/gradle/.gradle - -# XCode project cruft -^embedding/ios/GeckoEmbed/GeckoEmbed.xcodeproj/project.xcworkspace/xcuserdata -^embedding/ios/GeckoEmbed/GeckoEmbed.xcodeproj/xcuserdata - -# Ignore mozharness execution files -^testing/mozharness/.tox/ -^testing/mozharness/build/ -^testing/mozharness/logs/ -^testing/mozharness/.coverage -^testing/mozharness/nosetests.xml - -# Ignore tox generated dir -.tox/ - -# Ignore node_modules -^tools/lint/eslint/node_modules/ - -# Ignore talos virtualenv and tp5n files. -# The tp5n set is supposed to be decompressed at -# testing/talos/talos/page_load_test/tp5n in order to run tests like tps -# locally. Similarly, running talos requires a Python package virtual -# environment. Both the virtual environment and tp5n files end up littering -# the status command, so we ignore them. -^testing/talos/.Python -^testing/talos/bin/ -^testing/talos/include/ -^testing/talos/lib/ -^testing/talos/talos/tests/tp5n.zip -^testing/talos/talos/tests/tp5n -^testing/talos/talos/tests/devtools/damp.manifest.develop - -# Ignore files created when running a reftest. -^lextab.py$ - -# tup database -^\.tup diff --git a/.hgtags b/.hgtags deleted file mode 100644 index e6e2619cfb..0000000000 --- a/.hgtags +++ /dev/null @@ -1,489 +0,0 @@ -df7a3c8ffeeaba229067efee5a20e21dae0dd877 MOZILLA_1_9_a4_BASE -4209e16b58411750ac73f761023e46b76b793e2c MOZILLA_1_9_a6_BASE -66a5c7bce7ee86a820d3c0d54fa07cb719be751c MOZILLA_1_9_a7_BASE -caeba7562e495a9f604984df0b48b6f99bec3e2e FENNEC_M4 -9d9941eacb14827fdab4716710042fdde84eb60d FIREFOX_3_1a1_RELEASE -9d9941eacb14827fdab4716710042fdde84eb60d FIREFOX_3_1a1_BUILD1 -c1d7e318a27574c995631fec166ad42672475702 FIREFOX_3_1a1_BUILD2 -c1d7e318a27574c995631fec166ad42672475702 FIREFOX_3_1a1_RELEASE -afc4ee509d9ca3bb4031015c3c22963dcb4b7e7f FIREFOX_3_1a1_RELEASE -afc4ee509d9ca3bb4031015c3c22963dcb4b7e7f FIREFOX_3_1a1_BUILD2 -f197b51bbc29a30860e750ee87fd0a047a024f2e FIREFOX_3_1a2_BUILD1 -f197b51bbc29a30860e750ee87fd0a047a024f2e FIREFOX_3_1a2_RELEASE -269af1ed75649989575d41f53a12048015c6d50e FENNEC_M8 -920a4326d1087b174c2fa2b9a8358e12c697022c SEAMONKEY_2_0a1_BUILD1 -920a4326d1087b174c2fa2b9a8358e12c697022c SEAMONKEY_2_0a1_RELEASE -f197b51bbc29a30860e750ee87fd0a047a024f2e UPDATE_PACKAGING_R5 -f197b51bbc29a30860e750ee87fd0a047a024f2e -m -f197b51bbc29a30860e750ee87fd0a047a024f2e Adding UPDATE_PACKAGING_R5 tag in order to make patcher work. -15cb5d25db054d2d0b56869a2f6351388bfcddcd THUNDERBIRD_3_0a3_RELEASE -15cb5d25db054d2d0b56869a2f6351388bfcddcd THUNDERBIRD_3_0a3_BUILD1 -0000000000000000000000000000000000000000 -m -0000000000000000000000000000000000000000 Adding UPDATE_PACKAGING_R5 tag in order to make patcher work. -f197b51bbc29a30860e750ee87fd0a047a024f2e UPDATE_PACKAGING_R6 -d7d64f68423b68a671f623f123e90057ebc49dac UPDATE_PACKAGING_R6 -0000000000000000000000000000000000000000 THUNDERBIRD_3_0a3_BUILD1 -0000000000000000000000000000000000000000 THUNDERBIRD_3_0a3_RELEASE -0cd41f5990807fb6ab52cb59ba3c8e8247281045 GECKO_1_9_1_BASE -8df5a90281cd4d75835e4b7696da200555eed15f GECKO_1_9_1_BASE -8a601ed6bc4c7b3d1e35aa9e81f257512d984bd5 FENNEC_A2 -d7d64f68423b68a671f623f123e90057ebc49dac UPDATE_PACKAGING_R7 -fb32f6e1859c07846a01b4478a7b1678019e0b45 UPDATE_PACKAGING_R7 -f817a4378f32b1ad0a7c4b5a9949586dba816da5 FENNEC_M11 -5c1e7c779b6edc8ff912001990edc579f80597f4 FENNEC_B1 -fe9cc55b8db7f56f7e68a246acba363743854979 UPDATE_PACKAGING_R8 -6fd4bb500d425c406c1b52f66e5b195b20ae5e0a chromium-import-r15462 -6fd4bb500d425c406c1b52f66e5b195b20ae5e0a chromium-import-latest -376b78fc72230aaf2ca4e279a8f4ef1efd4a1d9f GECKO_1_9_2_BASE -941ad9d7d079246481f365c3cfbfc75a5bbefc94 last-mozilla-central -2bae3bbf866e7de2a4b2377e7c2f52cc9ac14a22 last-mozilla-central -2bae3bbf866e7de2a4b2377e7c2f52cc9ac14a22 last-mozilla-central -65c1582465efe99899189519fccaf7b2826fcb2e last-mozilla-central -65c1582465efe99899189519fccaf7b2826fcb2e last-mozilla-central -27937722da69ad0e8fd140a00671413068226a5b last-mozilla-central -27937722da69ad0e8fd140a00671413068226a5b last-mozilla-central -a732c6d3c078f80635255c78bfaadffa5828a8a5 last-mozilla-central -a732c6d3c078f80635255c78bfaadffa5828a8a5 last-mozilla-central -925595f3c08634cc42e33158ea6858bb55623ef7 last-mozilla-central -dba2abb7db57078c5a4810884834d3056a5d56c2 last-mozilla-central -138f593553b66c9f815e8f57870c19d6347f7702 UPDATE_PACKAGING_R9 -138f593553b66c9f815e8f57870c19d6347f7702 UPDATE_PACKAGING_R10 -138f593553b66c9f815e8f57870c19d6347f7702 UPDATE_PACKAGING_R11 -0327e126ea245112c0aa7283fee154e084866fb5 bsmedberg-static-xpcom-registration-base -0327e126ea245112c0aa7283fee154e084866fb5 bsmedberg-static-xpcom-registration-base -2f83edbbeef0de7dd901411d270da61106c8afae bsmedberg-static-xpcom-registration-base -138f593553b66c9f815e8f57870c19d6347f7702 UPDATE_PACKAGING_R12 -138f593553b66c9f815e8f57870c19d6347f7702 UPDATE_PACKAGING_R13 -138f593553b66c9f815e8f57870c19d6347f7702 UPDATE_PACKAGING_R11_1_MU -e56ecd8b3a68c158025207c5fd081d043e28f5ce GECKO_2_0_BASE -e273946b74c8d631ed86bd74ba9afe0e67b12378 GECKO_2_1_BASE -b70744835d94e54eec97b8fd186c96da5708a506 PRE_MOBILE_MERGE -b70744835d94e54eec97b8fd186c96da5708a506 PRE_MOBILE_MERGE_20110406 -a71bd564ebf5bf4f93d13e84114f759c263130b0 MOBILE_MERGE_DONE -a71bd564ebf5bf4f93d13e84114f759c263130b0 MOBILE_MERGE_DONE_20110406 -a95d426422816513477e5863add1b00ac7041dcb AURORA_BASE_20110412 -138f593553b66c9f815e8f57870c19d6347f7702 UPDATE_PACKAGING_R14 -9eae975b3d6fb7748fe5a3c0113d449b1c7cc0b2 AURORA_BASE_20110524 -138f593553b66c9f815e8f57870c19d6347f7702 UPDATE_PACKAGING_R14 -462c726144bc1fb45b61e774f64ac5d61b4e047c UPDATE_PACKAGING_R14 -5eb553dd2ceae5f88d80f27afc5ef3935c5d43b0 AURORA_BASE_20110705 -41b84b87c816403e1b74963d8094cff0406c989e AURORA_BASE_20110816 -c0983049bcaa9551e5f276d5a77ce154c151e0b0 AURORA_BASE_20110927 -462c726144bc1fb45b61e774f64ac5d61b4e047c UPDATE_PACKAGING_R15 -54bfd8bf682e295ffd7f22fa921ca343957b6c1c AURORA_BASE_20111108 -a8506ab2c65480cf2f85f54e203ea746522c62bb AURORA_BASE_20111220 -462c726144bc1fb45b61e774f64ac5d61b4e047c UPDATE_PACKAGING_R16 -bbc7014db2de49e2301680d2a86be8a53108a88a AURORA_BASE_20120131 -bbc7014db2de49e2301680d2a86be8a53108a88a AURORA_BASE_20120131 -0000000000000000000000000000000000000000 AURORA_BASE_20120131 -0000000000000000000000000000000000000000 AURORA_BASE_20120131 -bbc7014db2de49e2301680d2a86be8a53108a88a AURORA_BASE_20120131 -b6627f28b7ec17e1b46a594df0f780d3a40847e4 FIREFOX_AURORA_13_BASE -357da346ceb705d196a46574804c7c4ec44ac186 FIREFOX_AURORA_14_BASE -26dcd1b1a20893ad99341c61c6b1239ff1523858 FIREFOX_AURORA_15_BASE -0accd12a8e7e217836ea3f1ee7c411913fc75d8e FIREFOX_AURORA_16_BASE -0000000000000000000000000000000000000000 FIREFOX_AURORA_16_BASE -9697eadafa13b4e9233b39aaeecfeac79503cb54 FIREFOX_AURORA_16_BASE -9697eadafa13b4e9233b39aaeecfeac79503cb54 FIREFOX_AURORA_16_BASE -6fdf9985acfe6f939da584b2559464ab22264fe7 FIREFOX_AURORA_16_BASE -fd72dbbd692012224145be1bf13df1d7675fd277 FIREFOX_AURORA_17_BASE -2704e441363fe2a48e992dfac694482dfd82664a FIREFOX_AURORA_18_BASE -cf8750abee06cde395c659f8ecd8ae019d7512e3 FIREFOX_AURORA_19_BASE -5bb309998e7050c9ee80b0147de1e473f008e221 FIREFOX_AURORA_20_BASE -cc37417e2c284aed960f98ffa479de4ccdd5c7c3 FIREFOX_AURORA_21_BASE -1c070ab0f9db59f13423b9c1db60419f7a9098f9 FIREFOX_AURORA_22_BASE -d7ce9089999719d5186595d160f25123a4e63e39 FIREFOX_AURORA_23_BASE -8d3810543edccf4fbe458178b88dd4a6e420b010 FIREFOX_AURORA_24_BASE -ad0ae007aa9e03cd74e9005cd6652e544139b3b5 FIREFOX_AURORA_25_BASE -2520866d58740851d862c7c59246a4e3f8b4a176 FIREFOX_AURORA_26_BASE -05025f4889a0bf4dc99ce0c244c750adc002f015 FIREFOX_AURORA_27_BASE -ba2cc1eda988a1614d8986ae145d28e1268409b9 FIREFOX_AURORA_29_BASE-m -ba2cc1eda988a1614d8986ae145d28e1268409b9 Tagging for mozilla-central version bumps CLOSED TREE DONTBUILD -ba2cc1eda988a1614d8986ae145d28e1268409b9 Tagging for mozilla-central version bumps CLOSED TREE DONTBUILD -0000000000000000000000000000000000000000 Tagging for mozilla-central version bumps CLOSED TREE DONTBUILD -ba2cc1eda988a1614d8986ae145d28e1268409b9 FIREFOX_AURORA_29_BASE-m -0000000000000000000000000000000000000000 FIREFOX_AURORA_29_BASE-m -ba2cc1eda988a1614d8986ae145d28e1268409b9 FIREFOX_AURORA_29_BASE -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -07f5580d8a54e8311fa7641c907065a88de19e08 FIREFOX_AURORA_29_END -3776f72f1967a7068879501eb7c08920032785b8 B2G_1_4_20140317_MERGEDAY -aa70a6ce178a6839cd9e55761c4ac31d43ee7bd9 FIREFOX_BETA_29_END -ba4a8f81efdcf000414f192342ccbd14c9626c36 RELEASE_BASE_20140602 -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -83c9853e136451474dfa6d1aaa60a7fca7d2d83a FIREFOX_AURORA_30_BASE -cfde3603b0206e119abea76fdd6e134b634348f1 FIREFOX_AURORA_31_BASE -ab25447610b532eb4c32524a7dbc56a21eeaabb8 FIREFOX_BETA_30_BASE -ab25447610b532eb4c32524a7dbc56a21eeaabb8 FIREFOX_AURORA_30_END -6c18811bcd1b319801fd97aeb09c41b963863968 FIREFOX_BETA_30_END -1772e55568e420f8c7fbf7b9434157e9f419c8f1 FIREFOX_RELEASE_31_BASE -40b1b0712d7b53219a0404e78eec4e6a2796423e FIREFOX_RELEASE_30_END -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -16f3cac5e8fe471e12f76d6a94a477b14e78df7c FIREFOX_AURORA_32_BASE -f11b164d75442617c4f046177d2ab913ed03a318 FIREFOX_BETA_31_BASE -f11b164d75442617c4f046177d2ab913ed03a318 FIREFOX_AURORA_31_END -dc2fd26b301375f15c935f00fe6283d3e3bc1efc B2G_2_0_20140609_MERGEDAY -d69cd84b6824e018e0906cab0464e11e97a9bdca FIREFOX_BETA_32_BASE -d69cd84b6824e018e0906cab0464e11e97a9bdca FIREFOX_BETA_32_BASE -0000000000000000000000000000000000000000 FIREFOX_BETA_32_BASE -0000000000000000000000000000000000000000 FIREFOX_BETA_32_BASE -ac396ad5a32d60ae5b7eebe5416fdd46e9e12be1 FIREFOX_BETA_32_BASE -6befadcaa68524d24960d8342e00503e4edc1869 FIREFOX_BETA_31_END -92ad4cfa9435fbe136c61071041812f90bc8d89e FIREFOX_RELEASE_32_BASE -cd52a7f8954809fd893196dc857f81b0cb61717c FIREFOX_RELEASE_31_END -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -dc23164ba2a289a8b22902e30990c77d9677c214 FIREFOX_AURORA_33_BASE -a104ddcd4cdbf950f1755dfaf5a278d53570655f FIREFOX_AURORA_32_END -114b010b6bf1a0efee03f003e54ed6fa00909972 FIREFOX_BETA_33_BASE -ebd0ee3e97dc2756d979261b29f173638fe6aeb6 FIREFOX_BETA_32_END -e8360a0c7d7483491e064c7cd445a94004af0a83 FIREFOX_RELEASE_33_BASE -4641475ee1f3ec3e723e932e0f4f3f3fa7c55a5c FIREFOX_RELEASE_32_END -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -c360f3d1c00d73b0c1fb0a2c0da525cb55e58b83 FIREFOX_AURORA_34_BASE -9f1aad8e807cc283aafbc14caa3d4775e8d0535c FIREFOX_AURORA_33_END -5b8210dcf52a795646bf0c8a32082a2ed7c4f537 B2G_2_1_20140902_MERGEDAY -e85828ce78a80e2ccda98972d69d5f750335c4ab FIREFOX_BETA_34_BASE -8574e35b517785acc905327f4994e96576218fa8 FIREFOX_BETA_33_END -e247a7f7c43842941bdb4207ca1b9d8881798997 FIREFOX_RELEASE_34_BASE -a47b1b720b67b018a9cb106178de53a363641392 FIREFOX_RELEASE_33_END -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -cec1a116c4f9a3e887d52e9a26e8bbec200fe162 FIREFOX_AURORA_35_BASE -2608561c091ae83cc85e38740feffa5bfc6b5ed4 FIREFOX_AURORA_34_END -390a34a40ea4e7f4d24b3ed83778e0f408411fcc FIREFOX_BETA_35_BASE -a3cc435fd3c315e5dfe9329d03d5943bb893cced FIREFOX_BETA_34_END -fb06fa0600ab95db48212a237c79b650cac213c5 FIREFOX_RELEASE_35_BASE -f4217563f1568c478c1ddf1647098946e51bc7f8 FIREFOX_RELEASE_34_END -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -ca89fe55717059e4e43040d16d260765ffa9dca7 FIREFOX_AURORA_36_BASE -6047f510fb73c7dbe9866066fb01ddda3c170c9c FIREFOX_AURORA_37_BASE -ca89fe55717059e4e43040d16d260765ffa9dca7 FIREFOX_AURORA_36_BASE -0000000000000000000000000000000000000000 FIREFOX_AURORA_36_BASE -6047f510fb73c7dbe9866066fb01ddda3c170c9c FIREFOX_AURORA_37_BASE -0000000000000000000000000000000000000000 FIREFOX_AURORA_37_BASE -0000000000000000000000000000000000000000 FIREFOX_AURORA_36_BASE -b297a6727acfd21e757ddd38cd61894812666265 FIREFOX_AURORA_36_BASE -0cf828669d5a0911b6f2b83d501eeef5bdf9905e FIREFOX_AURORA_35_END -75177371cb85baaa9d623f56d849a5c21d18040f FIREFOX_BETA_36_BASE -137baee3dda45c6a3b38be74f5709c24f7c7701a FIREFOX_BETA_35_END -948a2c2e31d4b7eaa282ddeb327708605e3cc7fa FIREFOX_RELEASE_36_BASE -d57ff45ca4fd7ccf1cb924030abf6c7d108eaab0 FIREFOX_RELEASE_35_END -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -0000000000000000000000000000000000000000 FIREFOX_AURORA_37_BASE -2c951493eef5b50b8085ef78ffe0d7902ff3d593 FIREFOX_AURORA_37_BASE -1bc9beda018a42bdd5f63fc9fc46facf0c6f37ec FIREFOX_AURORA_36_END -030fa1665346dfa94d1f72a1c7830644664ecf08 FIREFOX_BETA_37_BASE -7d4016a05dd32bf2d726975ba9175bb13fc9ea97 FIREFOX_BETA_36_END -196c6575593d6e8997402fb458bf8ed2f954fa4a FIREFOX_RELEASE_37_BASE -58fe203296af528cc711dc314e4769a902e3852f FIREFOX_RELEASE_36_END -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -98086da94ccdc88f6de86774ce3d1fa258dc7c44 FIREFOX_AURORA_38_BASE -d55b99e8010728b0c802e75e967d2a853122dd30 FIREFOX_AURORA_37_END -8bc9656cad94db48cd44f3947f1b3b1d8c57768a FIREFOX_BETA_38_BASE -b41c57eefd69242fc9664a3e5c2dcaa46840051c FIREFOX_BETA_37_END -fc98815acf5f041c6269fd256a68af8a92ba222a FIREFOX_RELEASE_38_BASE -b95583c8e7e7a7ce629b4d4551747e818367d0a0 FIREFOX_RELEASE_37_END -f33925facceefe32f6347faed2d805551d82e60b FIREFOX_RELEASE_38_END -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -1b6bf6612c0f4d4fee81d18bf18016e692f874e1 FIREFOX_AURORA_39_BASE -d92bf011e305a4a4ad6bb98192a53b86bd64b813 FIREFOX_AURORA_38_END -5e851d50fb9b8d5a28e4fcd4731dd0f17e8fb4b9 FIREFOX_BETA_39_BASE -85229fbaf01713caa9ad26c7d3afec271494113c FIREFOX_BETA_38_END -5fecfbec2e3c934d4646a739bea60d3c93a35f9e FIREFOX_RELEASE_39_BASE -f33925facceefe32f6347faed2d805551d82e60b FIREFOX_RELEASE_38_END -971ab60e21d340e0407d2b9eb82fca67a4a9f1cb FIREFOX_RELEASE_38_END -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -66a95a483d2c77dfc387019336d18093acd6aac2 FIREFOX_AURORA_40_BASE -eead3ccdf2d11feefc12907467cebbe07aa91ea9 FIREFOX_AURORA_39_END -d77cf39268848f8a7e9b38082348b6cd4d1f3b5e FIREFOX_BETA_40_BASE -0b0822cabbb95d8509852f90c0b7df5da0a4cabc FIREFOX_BETA_39_END -34e00eb800c52e33059d37f6e41fb255b4bae6b8 FIREFOX_RELEASE_40_BASE -ec21f96665f7d3fdd5d7944c90373938390096d7 FIREFOX_RELEASE_39_END -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -312c68b16549de9cea1557f461d5d234bd5e0a7d FIREFOX_AURORA_41_BASE -9d83ab013ab61c7f6e987bf0e7cbab1a1aed1ca8 FIREFOX_AURORA_40_END -a019592053c4d93fbbafab8d0bd709529e3746de FIREFOX_BETA_41_BASE -f147014ff61a12480d377c8bde1f90891772540f FIREFOX_BETA_40_END -6c0329aacb73ab0510c6f1026ef066dfaed9139c FIREFOX_RELEASE_41_BASE -9c898cde2175e9e98b916d996ed286a9dff0c853 FIREFOX_RELEASE_40_END -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -7a19194812eb767bee7cdf8fc36ba9a383c1bead FIREFOX_AURORA_42_BASE -d561dc208e61b2f2b4e82ab61710e14f56da4ddb FIREFOX_AURORA_41_END -61bbc30704aa104e9929c719c0fd7957f96f00ea FIREFOX_BETA_42_BASE -a5bf9cf6777519663e8e1db553727e59d3ad5681 FIREFOX_BETA_41_END -3f2ff85b2f16c1fd161dc5ba77a5f3f2c52fd127 FIREFOX_RELEASE_42_BASE -dc3a2ec52077a5cea772cdb267380f7debc3080b FIREFOX_RELEASE_41_END -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -fcef8ded82219c89298b4e376cfbdfba79a1d35a FIREFOX_AURORA_43_BASE -b0e20ff87b175424edec414215b325918ccb4792 FIREFOX_AURORA_42_END -41fdefd640f368bccdeafe6446d42c0a5ad22797 FIREFOX_BETA_43_BASE -0ec8472a93ac0c7ef0e98ebb91ac780bde12d5a5 FIREFOX_BETA_42_END -38ffeba26f3e420312e04cb3afb408f4c66a6f2e FIREFOX_RELEASE_43_BASE -56320bc06404b926b475051ba643950bd78cf221 FIREFOX_RELEASE_42_END -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -67a788db9f07822cfef52351bbbe3745dff8bd7f FIREFOX_AURORA_44_BASE -9d3bc275a924a84ab5f34df58c566af0f87479d0 FIREFOX_AURORA_43_END -b717b80eec62a7ba9b8842487f157b68c1419edd FIREFOX_BETA_44_BASE -366dd290472633b06f0942d7737c34e942e0916a FIREFOX_BETA_43_END -ef3cfadfccb97588653ae06eefdac28ec447c1f6 FIREFOX_RELEASE_44_BASE -af39a90c443c2fda798c2797e196eeb5a8b5cedd FIREFOX_RELEASE_43_END -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -99137d6d4061f408ae0869122649d8bdf489cc30 FIREFOX_AURORA_45_BASE -4fbd53613240c431522521b953d5a62692909e65 FIREFOX_AURORA_44_END -3bfa5bc61b626761d487b45c170b115259f69d6b FIREFOX_BETA_45_BASE -6a7547e4a0f0e213bb8487c773e16543cbea8c73 FIREFOX_BETA_44_END -3a9789adadcd0de9ee31b16a89a11985822c6a11 FENNEC_45_0b1_RELEASE -6c0fd1f666e70f2b11f7083f9e7bf4c844a3716a FENNEC_45_0b1_RELEASE -3a9789adadcd0de9ee31b16a89a11985822c6a11 FENNEC_45_0b1_BUILD1 -6c0fd1f666e70f2b11f7083f9e7bf4c844a3716a FENNEC_45_0b1_BUILD1 -5e1da6523e97d7f8b01004bbe33118ac784b40ea FIREFOX_45_0b1_RELEASE -6c0fd1f666e70f2b11f7083f9e7bf4c844a3716a FIREFOX_45_0b1_RELEASE -5e1da6523e97d7f8b01004bbe33118ac784b40ea FIREFOX_45_0b1_BUILD1 -6c0fd1f666e70f2b11f7083f9e7bf4c844a3716a FIREFOX_45_0b1_BUILD1 -bbe048ab30ad3321a6505697703e5fee20e91343 FIREFOX_RELEASE_45_BASE -5fe8de3ca9bbf8bc18259c3490aca55c97e31979 FIREFOX_RELEASE_44_END -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -67c66c2878aed17ae3096d7db483ddbb2293c503 FIREFOX_AURORA_46_BASE -d82221ba4219e4ac04ecfe2a5301703411e176fa FIREFOX_AURORA_45_END -89effb961712d4a5f84e90bcdd4e421ed6645eea FIREFOX_BETA_46_BASE -78fe98c670fcc9a1548ac655ae9a488d940fd9c8 FIREFOX_BETA_45_END -fb3494d06dfb73e26df72ca7a4bc4ef5ebf8795c FIREFOX_46_0b1_RELEASE -5904e3eb711dd263a6d2deb63b14e0c44e577054 FIREFOX_46_0b2_BUILD3 -5904e3eb711dd263a6d2deb63b14e0c44e577054 FIREFOX_46_0b2_RELEASE -2f6f69a19150e03ad68062f2ac92342afb1ef787 FIREFOX_46_0b4_BUILD2 -2f6f69a19150e03ad68062f2ac92342afb1ef787 FIREFOX_46_0b4_RELEASE -53d6e6648f97402a740687a82a297c66f5396548 FIREFOX_46_0b5_BUILD2 -53d6e6648f97402a740687a82a297c66f5396548 FIREFOX_46_0b5_RELEASE -97b81104ac035d6a8f6ed59a1aad63fcc23e73c8 FIREFOX_46_0b6_BUILD1 -97b81104ac035d6a8f6ed59a1aad63fcc23e73c8 FIREFOX_46_0b6_RELEASE -191f5eb4cbd72590277296cdb90d355adb347d45 FIREFOX_46_0b7_BUILD2 -191f5eb4cbd72590277296cdb90d355adb347d45 FIREFOX_46_0b7_RELEASE -0334bcac4033f4f163476677165acd406e08fed8 FIREFOX_46_0b8_BUILD1 -0334bcac4033f4f163476677165acd406e08fed8 FIREFOX_46_0b8_RELEASE -b007110e90053e58946b59765605bfca766c30d1 FIREFOX_46_0b9_BUILD1 -b007110e90053e58946b59765605bfca766c30d1 FIREFOX_46_0b9_RELEASE -9ea83990839bd513869018e57bcbedb3454b63bb FIREFOX_46_0b10_BUILD1 -9ea83990839bd513869018e57bcbedb3454b63bb FIREFOX_46_0b10_RELEASE -6c4646c7a6d6506e744c92a8170310191904c98e FIREFOX_RELEASE_46_BASE -64b6b8afb34bf8a4416b1d167b48177d0e30bde9 FIREFOX_RELEASE_45_END -078baf501b55eaa47f3b189fda4dd28dae1fa257 FIREFOX_46_0_BUILD5 -078baf501b55eaa47f3b189fda4dd28dae1fa257 FIREFOX_46_0_RELEASE -0b8492c110bec959b94e3d54d5bd5ca7f7f97f6c FIREFOX_46_0_1_BUILD1 -0b8492c110bec959b94e3d54d5bd5ca7f7f97f6c FIREFOX_46_0_1_RELEASE -076bf6a0ac85ec6a4f3ee7c3efe653964d92b9f2 FIREFOX_46_0b11_BUILD1 -076bf6a0ac85ec6a4f3ee7c3efe653964d92b9f2 FIREFOX_46_0b11_RELEASE -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -68d3781deda0d4d58ec9877862830db89669b3a5 FIREFOX_AURORA_47_BASE -43d92f7052e7bab870c9b994d4b0a0f42d26b7a7 FIREFOX_AURORA_46_END -8551b253f4061db31e4be7829c2f70c2610caf42 FIREFOX_BETA_47_BASE -a2290938ee6cf794896a9347980bcb00ebb24c68 FIREFOX_BETA_46_END -5bbf2e7c2fc6ff9010b1948e2f11477f48ee36e2 FIREFOX_47_0b1_BUILD2 -5bbf2e7c2fc6ff9010b1948e2f11477f48ee36e2 FIREFOX_47_0b1_RELEASE -6f82d30fe05e1412e744cb76af86f0c9ffe509d4 FIREFOX_47_0b2_BUILD1 -6f82d30fe05e1412e744cb76af86f0c9ffe509d4 FIREFOX_47_0b2_RELEASE -609000bcc11211d7c27ceea36fa2d2262fa0523f FIREFOX_47_0b3_BUILD1 -609000bcc11211d7c27ceea36fa2d2262fa0523f FIREFOX_47_0b3_RELEASE -2991f214d4f4d8a3c5cfd95e6223f0660006767d FIREFOX_47_0b4_BUILD1 -2991f214d4f4d8a3c5cfd95e6223f0660006767d FIREFOX_47_0b4_RELEASE -93a53170dedffdff45bf9eb8dac6e5ef7a13c4ba FIREFOX_47_0b5_BUILD1 -93a53170dedffdff45bf9eb8dac6e5ef7a13c4ba FIREFOX_47_0b5_RELEASE -7d1f3450acc47025876964c1eca854ae027934f3 FIREFOX_47_0b6_BUILD1 -7d1f3450acc47025876964c1eca854ae027934f3 FIREFOX_47_0b6_RELEASE -0723a0212f5e0b30d7532d4e35eba7759fb54507 FIREFOX_47_0b7_BUILD1 -0723a0212f5e0b30d7532d4e35eba7759fb54507 FIREFOX_47_0b7_RELEASE -cb27eacbe04abc5f91a0379c23617715aab432ec FIREFOX_47_0b8_BUILD1 -cb27eacbe04abc5f91a0379c23617715aab432ec FIREFOX_47_0b8_RELEASE -2ee4473c729acb2ba7dc723e7affe79ce14bff85 FIREFOX_47_0b9_BUILD1 -2ee4473c729acb2ba7dc723e7affe79ce14bff85 FIREFOX_47_0b9_RELEASE -cf6ec12bd62001b93387ffb184a8841644255b5e FIREFOX_RELEASE_47_BASE -32d716995e14ae1e8eb128fde0881b121b7b53d0 FIREFOX_RELEASE_46_END -b0310cb90fd0158abd0e92850a47768649ba3d77 FIREFOX_47_0_BUILD3 -b0310cb90fd0158abd0e92850a47768649ba3d77 FIREFOX_47_0_RELEASE -7f5abf95991bda0bc2b8e0d774a8866b726b312b FIREFOX_47_0_1_BUILD1 -7f5abf95991bda0bc2b8e0d774a8866b726b312b FIREFOX_47_0_1_RELEASE -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -1c6385ae1fe7e37d8f23f958ce14582f07af729e FIREFOX_AURORA_48_BASE -037f67a2d6c87e32f60b2753f19e4bed69cb60b3 FIREFOX_AURORA_47_END -961e7105e527f5b44e2b3cb6e24f6da33756f6ab FIREFOX_BETA_48_BASE -a86835580095325bf5c85483fad952f5c99d973e FIREFOX_BETA_47_END -55124c7343021091a61fdddac9f22628ca09642a FIREFOX_48_0b1_BUILD2 -55124c7343021091a61fdddac9f22628ca09642a FIREFOX_48_0b1_RELEASE -9798772706750302d87a689cbbf056ae04244f80 FIREFOX_48_0b2_BUILD2 -9798772706750302d87a689cbbf056ae04244f80 FIREFOX_48_0b2_RELEASE -13b02b96281e550c3cdbdf4eaed034aa1edefd69 FIREFOX_48_0b3_BUILD1 -13b02b96281e550c3cdbdf4eaed034aa1edefd69 FIREFOX_48_0b3_RELEASE -676a32cdd41fd372f4c6df3a4954939f73a6ef02 FIREFOX_48_0b4_BUILD1 -676a32cdd41fd372f4c6df3a4954939f73a6ef02 FIREFOX_48_0b4_RELEASE -dd7af1fa4ece1cb3158d08c80dfcbf1c6ca830fb FIREFOX_48_0b5_BUILD1 -dd7af1fa4ece1cb3158d08c80dfcbf1c6ca830fb FIREFOX_48_0b5_RELEASE -d142c49033c015f67272562b37dbe2912cfc7f14 FIREFOX_48_0b6_BUILD1 -d142c49033c015f67272562b37dbe2912cfc7f14 FIREFOX_48_0b6_RELEASE -9d734024ed35d74449601cc04917b327e0973c0d FIREFOX_48_0b7_BUILD1 -9d734024ed35d74449601cc04917b327e0973c0d FIREFOX_48_0b7_RELEASE -d2ab9c39bd1059d74acb3d9ac87dbfbba913427b FIREFOX_48_0b9_BUILD1 -d2ab9c39bd1059d74acb3d9ac87dbfbba913427b FIREFOX_48_0b9_RELEASE -05853bb06a8739b77c2937f418cdf4e1610d0d9f FIREFOX_48_0b10_BUILD1 -05853bb06a8739b77c2937f418cdf4e1610d0d9f FIREFOX_48_0b10_RELEASE -f3d7abb885c267a7657e3b8ea06c18f76eb69641 FIREFOX_RELEASE_48_BASE -2366ae84e268c386a292185bddb0e4a24c2e1d07 FIREFOX_RELEASE_47_END -c1de04f39fa956cfce83f6065b0e709369215ed5 FIREFOX_48_0_BUILD2 -c1de04f39fa956cfce83f6065b0e709369215ed5 FIREFOX_48_0_RELEASE -f36f7ace6f487e06f315f343d560b205fa8bd736 FIREFOX_48_0_1_BUILD3 -f36f7ace6f487e06f315f343d560b205fa8bd736 FIREFOX_48_0_1_RELEASE -d4af0671004007e58d316b3e49679b66879c205a FIREFOX_48_0_2_BUILD1 -d4af0671004007e58d316b3e49679b66879c205a FIREFOX_48_0_2_RELEASE -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -a8fe75f38163d0af067fea60e951a844fb328db9 FIREFOX_AURORA_48_END -d2f65d99fd51e5ee2f34d892115cc5d6c39a8ea9 FIREFOX_BETA_49_BASE -958cee08361af9ed370be06695973bcda3d3aa46 FIREFOX_BETA_48_END -c14631e328bbbd3aabaf06b51597060b55938ba8 FIREFOX_49_0b1_BUILD3 -c14631e328bbbd3aabaf06b51597060b55938ba8 FIREFOX_49_0b1_RELEASE -b1bdd0f3482ae07d38a2ec5fbf190a2c4f2310ee FIREFOX_49_0b2_BUILD1 -b1bdd0f3482ae07d38a2ec5fbf190a2c4f2310ee FIREFOX_49_0b2_RELEASE -36af692196a1c92cc935cf6569e03fdf5dc5e426 FIREFOX_49_0b3_BUILD1 -36af692196a1c92cc935cf6569e03fdf5dc5e426 FIREFOX_49_0b3_RELEASE -ab7b68014a1e20c423aa9b50ca76fd8edccb272c FIREFOX_49_0b4_BUILD1 -ab7b68014a1e20c423aa9b50ca76fd8edccb272c FIREFOX_49_0b4_RELEASE -91505c2a68fb868bcab1e3dc03ffc2e89bf71cac FIREFOX_49_0b5_BUILD1 -91505c2a68fb868bcab1e3dc03ffc2e89bf71cac FIREFOX_49_0b5_RELEASE -e6d6eb0ce3c42b4ebca91b1b1b64b716b2acb9fd FIREFOX_49_0b6_BUILD1 -e6d6eb0ce3c42b4ebca91b1b1b64b716b2acb9fd FIREFOX_49_0b6_RELEASE -b44c72b85a800d9c6e719579d480bb2c3a87a753 FIREFOX_49_0b7_BUILD1 -b44c72b85a800d9c6e719579d480bb2c3a87a753 FIREFOX_49_0b7_RELEASE -68d24e6f784c7e375cf6c84c5c92496464d4f7e0 FIREFOX_49_0b8_BUILD1 -68d24e6f784c7e375cf6c84c5c92496464d4f7e0 FIREFOX_49_0b8_RELEASE -e3cc699ccef2abb7075c39e7b9a081718eb9c159 FIREFOX_49_0b9_BUILD1 -e3cc699ccef2abb7075c39e7b9a081718eb9c159 FIREFOX_49_0b9_RELEASE -77a60bbacb97c2f36815b2c395958a354aa581c9 FIREFOX_49_0b10_BUILD1 -77a60bbacb97c2f36815b2c395958a354aa581c9 FIREFOX_49_0b10_RELEASE -5d1f8216843a6374f3bd2bd74ab2532da67d74ee FIREFOX_RELEASE_49_BASE -31ca1b4c28a9f64e49d59ed01d08469a9af41951 FIREFOX_RELEASE_48_END -416dc3163a1f27b8783ed14660d1b373e830df2f FIREFOX_49_0_BUILD4 -416dc3163a1f27b8783ed14660d1b373e830df2f FIREFOX_49_0_RELEASE -2d931a5eaf8aeee925eca2aea42582a1fb9793c8 FIREFOX_49_0_1_BUILD3 -2d931a5eaf8aeee925eca2aea42582a1fb9793c8 FIREFOX_49_0_1_RELEASE -7356baae8e736a6c9444bdd21562df806a39766b FIREFOX_49_0_2_BUILD2 -7356baae8e736a6c9444bdd21562df806a39766b FIREFOX_49_0_2_RELEASE -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -d98f20c25feeac4dd7ebbd1c022957df1ef58af4 FIREFOX_AURORA_49_BASE -465d150bc8be5bbf9f02a8607d4552b6a5e1697c FIREFOX_AURORA_50_BASE -fa80a27f26dfc653d23392c71f562b1827d82174 FIREFOX_AURORA_49_END -c174d0c3195371011b3bf8044512c06c26f5c741 FIREFOX_BETA_50_BASE -ddeb7907bc1e854738b164bab5ff71c3dcf1d786 FIREFOX_BETA_49_END -91faf7ec36cd18a8ebdc0e2edac966e5bbb15da2 FIREFOX_50_0b1_BUILD2 -91faf7ec36cd18a8ebdc0e2edac966e5bbb15da2 FIREFOX_50_0b1_RELEASE -865939f4946d80fa532aaa168515a2fe69f9a774 FIREFOX_50_0b2_BUILD1 -865939f4946d80fa532aaa168515a2fe69f9a774 FIREFOX_50_0b2_RELEASE -6a7c1c8db5548d077c7fa36bce41af629ba52bd8 FIREFOX_50_0b3_BUILD1 -6a7c1c8db5548d077c7fa36bce41af629ba52bd8 FIREFOX_50_0b3_RELEASE -f4b45ea3c0c836e5a457c8009bff423447e54803 FIREFOX_50_0b4_BUILD1 -f4b45ea3c0c836e5a457c8009bff423447e54803 FIREFOX_50_0b4_RELEASE -49776d31766dd130969f9ec4ea3354a43e8e6d9d FIREFOX_50_0b5_BUILD1 -49776d31766dd130969f9ec4ea3354a43e8e6d9d FIREFOX_50_0b5_RELEASE -70abfe99097824fd510544b188f24c588fd6d5a0 FIREFOX_50_0b6_BUILD1 -70abfe99097824fd510544b188f24c588fd6d5a0 FIREFOX_50_0b6_RELEASE -6efc0964ec62bc4abfdc4cb1dc7cc461c3238634 FIREFOX_50_0b7_BUILD1 -6efc0964ec62bc4abfdc4cb1dc7cc461c3238634 FIREFOX_50_0b7_RELEASE -b7adb2f10487f6f886e047670ba720a248edcb44 FIREFOX_50_0b8_BUILD1 -b7adb2f10487f6f886e047670ba720a248edcb44 FIREFOX_50_0b8_RELEASE -2bb6dc758711c00d84246d74b57e5aa6cae4b447 FIREFOX_50_0b9_BUILD1 -2bb6dc758711c00d84246d74b57e5aa6cae4b447 FIREFOX_50_0b9_RELEASE -38cfded1705240c5d20baff4aef99bdd0a13bcec FIREFOX_50_0b10_BUILD1 -38cfded1705240c5d20baff4aef99bdd0a13bcec FIREFOX_50_0b10_RELEASE -829a3f99f2606759305e3db204185242566a4ca6 FIREFOX_50_0b11_BUILD1 -829a3f99f2606759305e3db204185242566a4ca6 FIREFOX_50_0b11_RELEASE -d7598ee90bc6085d430b2e9e75c13358ef00a5f4 FIREFOX_RELEASE_50_BASE -dd6c8d2be972cbf8729c01292639b8a03ce94728 FIREFOX_RELEASE_49_END -dc617d65c9f0cdbbe4351cc1e5c288b05f25f8f7 FIREFOX_50_0_BUILD2 -dc617d65c9f0cdbbe4351cc1e5c288b05f25f8f7 FIREFOX_50_0_RELEASE -8612c3320053b796678921f8f23358e3e9df997e FIREFOX_50_1_0_BUILD2 -8612c3320053b796678921f8f23358e3e9df997e FIREFOX_50_1_0_RELEASE -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -fc69febcbf6c0dcc4b3dfc7a346d8d348798a65f FIREFOX_AURORA_51_BASE -3fdfaaed6e0fad2d81fc28e49903ff6f0a43b12e FIREFOX_AURORA_50_END -2d9b6132e7d75327e063a15d8e5e279077adf987 FIREFOX_BETA_51_BASE -24b8f08f77565f859898b45f62d2132ccc64c6d8 FIREFOX_BETA_50_END -749a8d32b74eae516b9427f28aad4ec1c11e0a54 FIREFOX_51_0b1_BUILD2 -749a8d32b74eae516b9427f28aad4ec1c11e0a54 FIREFOX_51_0b1_RELEASE -6296ed3dbefd133bba324230ec4f5a07d37041e1 FIREFOX_51_0b2_BUILD1 -6296ed3dbefd133bba324230ec4f5a07d37041e1 FIREFOX_51_0b2_RELEASE -f37e99ebc6e0c682003b52573f415e5fd78d425a FIREFOX_51_0b3_BUILD1 -f37e99ebc6e0c682003b52573f415e5fd78d425a FIREFOX_51_0b3_RELEASE -1b954c82dd04faf1926804d89c0d130dc6b9ab93 FIREFOX_51_0b4_BUILD1 -1b954c82dd04faf1926804d89c0d130dc6b9ab93 FIREFOX_51_0b4_RELEASE -9afe68360fa82c16b760b448b2156230a90caf11 FIREFOX_51_0b5_BUILD1 -9afe68360fa82c16b760b448b2156230a90caf11 FIREFOX_51_0b5_RELEASE -2dec3c6c7c90e2e27093b8a3512c1b32a8263a8f FIREFOX_51_0b6_BUILD1 -2dec3c6c7c90e2e27093b8a3512c1b32a8263a8f FIREFOX_51_0b6_RELEASE -829fcc7f60f04dffff4d29b007ef8015a1cd2c99 FIREFOX_51_0b7_BUILD1 -829fcc7f60f04dffff4d29b007ef8015a1cd2c99 FIREFOX_51_0b7_RELEASE -ae5275b8c53ba76cb98576e4e2a3031b0d659ba3 FIREFOX_51_0b8_BUILD1 -ae5275b8c53ba76cb98576e4e2a3031b0d659ba3 FIREFOX_51_0b8_RELEASE -6e4843d1510be426212d31fec03ad4f2d70b1977 FIREFOX_51_0b9_BUILD1 -6e4843d1510be426212d31fec03ad4f2d70b1977 FIREFOX_51_0b9_RELEASE -4fbf5d14ce92bd45e0c7881dad20a66896402683 FIREFOX_51_0b10_BUILD1 -4fbf5d14ce92bd45e0c7881dad20a66896402683 FIREFOX_51_0b10_RELEASE -0a17d39220700e742bf37a960967480b2f8159f1 FIREFOX_51_0b11_BUILD1 -0a17d39220700e742bf37a960967480b2f8159f1 FIREFOX_51_0b11_RELEASE -9ddd4fee07842e72ba49f1583ec5f596f6e60e72 FIREFOX_51_0b12_BUILD1 -9ddd4fee07842e72ba49f1583ec5f596f6e60e72 FIREFOX_51_0b12_RELEASE -ce55e4d276031458f0730d481acff05d7c797038 FIREFOX_51_0b13_BUILD1 -ce55e4d276031458f0730d481acff05d7c797038 FIREFOX_51_0b13_RELEASE -09142d07fd735e375fc1ae46886a52d6aef43b60 FIREFOX_51_0b14_BUILD1 -09142d07fd735e375fc1ae46886a52d6aef43b60 FIREFOX_51_0b14_RELEASE -15467610e733e3549ea86cdf940b0fccd87eff89 FIREFOX_RELEASE_51_BASE -b1e53b9be6d4834f5b3a58c132dfc5f5c73d2bcd FIREFOX_RELEASE_50_END -ea82b5e20cbbd103f8fa65f0df0386ee4135cc47 FIREFOX_51_0_BUILD2 -ea82b5e20cbbd103f8fa65f0df0386ee4135cc47 FIREFOX_51_0_RELEASE -327e081221b064b05a302d7877c6e4be2949a617 FIREFOX_51_0_1_BUILD3 -327e081221b064b05a302d7877c6e4be2949a617 FIREFOX_51_0_1_RELEASE -9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE -1196bf3032e1bce1fb07a01fd9082a767426c5fb FIREFOX_AURORA_52_BASE -3223a6411d8c8b9ec8bcbc607c990bf099ade099 FIREFOX_AURORA_51_END -24a81d93e07cc96300f8e1f5c69034dd4743bd63 FIREFOX_BETA_52_BASE -8e692dd4176cba81ce020b29ae8b352dc1db724a FIREFOX_BETA_51_END -78ae21055d9f303be257abe155ba9dee466c0651 FIREFOX_52_0b1_BUILD2 -78ae21055d9f303be257abe155ba9dee466c0651 FIREFOX_52_0b1_RELEASE -0f339c1e154f75c484fe2fac507a9a225990d212 FIREFOX_52_0b2_BUILD1 -0f339c1e154f75c484fe2fac507a9a225990d212 FIREFOX_52_0b2_RELEASE -d171c36d484800b1bb00db1612460a7120dd2fdf FIREFOX_52_0b3_BUILD1 -d171c36d484800b1bb00db1612460a7120dd2fdf FIREFOX_52_0b3_RELEASE -501a3fa83897af9598adfd6f794b5d5ea82fe237 FIREFOX_52_0b4_BUILD1 -501a3fa83897af9598adfd6f794b5d5ea82fe237 FIREFOX_52_0b4_RELEASE -49b3ad9f467d48194dab8121f82e4c938b70b484 FIREFOX_52_0b5_BUILD1 -49b3ad9f467d48194dab8121f82e4c938b70b484 FIREFOX_52_0b5_RELEASE -7b8aa893944b94d35e47314e52e0abff576c5ce2 FIREFOX_52_0b6_BUILD1 -7b8aa893944b94d35e47314e52e0abff576c5ce2 FIREFOX_52_0b6_RELEASE -820bc5bd3120853d611af1056f4a2b35528bb927 FIREFOX_52_0b7_BUILD1 -820bc5bd3120853d611af1056f4a2b35528bb927 FIREFOX_52_0b7_RELEASE -3b31bcb88fe341172e93cc8b1143e617c0988694 FIREFOX_52_0b8_BUILD1 -3b31bcb88fe341172e93cc8b1143e617c0988694 FIREFOX_52_0b8_RELEASE -61519976b35f2947eeaabefcad83186b7e004167 FIREFOX_52_0b9_BUILD2 -61519976b35f2947eeaabefcad83186b7e004167 FIREFOX_52_0b9_RELEASE -4bd2e5d2ac0d0b15b4446fca5647bfa821b52d46 FIREFOX_RELEASE_52_BASE -1f0fc9316e65cd171b03d4382b4c0f7443a258dc FIREFOX_RELEASE_51_END -2183f7cb4f886e5f0b619dcff101bee72210ef38 FIREFOX_ESR_52_BASE -15d9d940341f02ef6dcad96899d284619d3d48db FIREFOX_52_0esr_BUILD4 -15d9d940341f02ef6dcad96899d284619d3d48db FIREFOX_52_0esr_RELEASE -3462b933db3cac9b994b32dfc6350f3d549bf2de FIREFOX_52_0_1esr_BUILD2 -3462b933db3cac9b994b32dfc6350f3d549bf2de FIREFOX_52_0_1esr_RELEASE -afa66bcf9203e691f164e5e8a9cc8fad783ccddc FIREFOX_52_0_2esr_BUILD1 -afa66bcf9203e691f164e5e8a9cc8fad783ccddc FIREFOX_52_0_2esr_RELEASE -3ea0e075203185d7f2d42f439455e97735bd1b20 FIREFOX_52_1_0esr_BUILD3 -3ea0e075203185d7f2d42f439455e97735bd1b20 FIREFOX_52_1_0esr_RELEASE -120111e65bc4e9b99da97e9d046765de95fbac8c FIREFOX_52_1_1esr_BUILD1 -120111e65bc4e9b99da97e9d046765de95fbac8c FIREFOX_52_1_1esr_RELEASE -0dc7c28f20648d597b11b60e90be9a15687656aa FIREFOX_52_1_2esr_BUILD1 -0dc7c28f20648d597b11b60e90be9a15687656aa FIREFOX_52_1_2esr_RELEASE -f68e0d98a22a4712a3710998081fd0ea5cd00ccb FIREFOX_52_2_0esr_BUILD1 -f68e0d98a22a4712a3710998081fd0ea5cd00ccb FIREFOX_52_2_0esr_RELEASE -512efd480dac58acf9eebd5f25a76b32917ab56d FIREFOX_52_2_1esr_BUILD2 -512efd480dac58acf9eebd5f25a76b32917ab56d FIREFOX_52_2_1esr_RELEASE -20a1a6ad46d5a4ec83d9800614fc288bf79e14a8 FIREFOX_52_3_0esr_BUILD2 -20a1a6ad46d5a4ec83d9800614fc288bf79e14a8 FIREFOX_52_3_0esr_RELEASE -285cde3988335103bd8d60cc09d6fa36db3c4d78 FIREFOX_52_4_0esr_BUILD2 -285cde3988335103bd8d60cc09d6fa36db3c4d78 FIREFOX_52_4_0esr_RELEASE -e4fec62e5347a77a9a313d6019a2b372e8011a74 FIREFOX_52_4_1esr_BUILD1 -e4fec62e5347a77a9a313d6019a2b372e8011a74 FIREFOX_52_4_1esr_RELEASE -cf34a0574e585fab44fbec1718aca5375790cd97 FIREFOX_52_5_0esr_BUILD2 -cf34a0574e585fab44fbec1718aca5375790cd97 FIREFOX_52_5_0esr_RELEASE -b0a57c57b5ef0150e8afc3219bceadb1d6f1584e FIREFOX_52_5_2esr_BUILD2 -b0a57c57b5ef0150e8afc3219bceadb1d6f1584e FIREFOX_52_5_2esr_RELEASE diff --git a/LICENSE b/LICENSE index 373395d73e..a612ad9813 100644 --- a/LICENSE +++ b/LICENSE @@ -1,9 +1,373 @@ -Please see the file toolkit/content/license.html for the copyright licensing -conditions attached to this codebase, including copies of the licenses -concerned. +Mozilla Public License Version 2.0 +================================== -You are not granted rights or licenses to the trademarks of the -Mozilla Foundation or any party, including without limitation the -Firefox name or logo. +1. Definitions +-------------- -For more information, see: http://www.mozilla.org/foundation/licensing.html +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + 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/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/README.txt b/README.txt deleted file mode 100644 index 658c0dce31..0000000000 --- a/README.txt +++ /dev/null @@ -1,27 +0,0 @@ -An explanation of the Mozilla Source Code Directory Structure and links to -project pages with documentation can be found at: - - https://developer.mozilla.org/en/Mozilla_Source_Code_Directory_Structure - -For information on how to build Mozilla from the source code, see: - - http://developer.mozilla.org/en/docs/Build_Documentation - -To have your bug fix / feature added to Mozilla, you should create a patch and -submit it to Bugzilla (https://bugzilla.mozilla.org). Instructions are at: - - http://developer.mozilla.org/en/docs/Creating_a_patch - http://developer.mozilla.org/en/docs/Getting_your_patch_in_the_tree - -If you have a question about developing Mozilla, and can't find the solution -on http://developer.mozilla.org, you can try asking your question in a -mozilla.* Usenet group, or on IRC at irc.mozilla.org. [The Mozilla news groups -are accessible on Google Groups, or news.mozilla.org with a NNTP reader.] - -You can download nightly development builds from the Mozilla FTP server. -Keep in mind that nightly builds, which are used by Mozilla developers for -testing, may be buggy. Firefox nightlies, for example, can be found at: - - https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/ - - or - - http://nightly.mozilla.org/ diff --git a/addon-sdk/source/.hgignore b/addon-sdk/source/.hgignore deleted file mode 100644 index 05ac424d4d..0000000000 --- a/addon-sdk/source/.hgignore +++ /dev/null @@ -1,15 +0,0 @@ -syntax: glob -local.json -python-lib/cuddlefish/app-extension/components/jetpack.xpt -testdocs.tgz -jetpack-sdk-docs.tgz -.test_tmp -jetpack-sdk-docs -node_modules - -# These should really be in a global .hgignore, but such a thing -# seems ridiculously confusing to set up, so we'll include some -# common intermediate files here. -*.pyc -*~ -*.DS_Store diff --git a/addon-sdk/source/.hgtags b/addon-sdk/source/.hgtags deleted file mode 100644 index e7d9b719ba..0000000000 --- a/addon-sdk/source/.hgtags +++ /dev/null @@ -1,64 +0,0 @@ -39c45211aa250d43f6e54b776a60ef07a7a4cbb6 jep-31-examples -0120642297b217680e75e68c4005a93b16466001 0.1rc1 -1fd7993ff2cec39c5948a1b2535b78c2d4c65858 0.1rc2 -530e51d02922ad05fd43e8cf113618068216b0cf 0.1 -ed11a9e3ae23aefd56ac88042b9816887d10a04f 0.2rc1 -f70ab8998abdce809bda93408435f83648909cdd 0.2rc2 -f70ab8998abdce809bda93408435f83648909cdd 0.2 -436968c6ec833d9c18a15426be26595a44b79283 0.3rc1 -a3b091d29607f0bcecf77fe27801ba901142f1c9 0.3 -06031b56312ad7f1880a9620b4d26ce253a23b23 0.3rc2 -a3b091d29607f0bcecf77fe27801ba901142f1c9 0.3 -4b08c8a8c1eef71ac3aa54e004b68e87049ca56b 0.3 -6884e54fd6a1cfa9ec63910c46d2cbf51495b584 0.3rc3 -4b08c8a8c1eef71ac3aa54e004b68e87049ca56b 0.3 -cd70b7140ec20689255f1248512a1e5b9cf90a32 0.3 -d9d733666ca8738e9665ba816d5d12f41fc0d216 0.4rc1 -8d2871fc10df16740273f53ef05815310da4b210 0.4 -201e60065b1aef23259a71756f93207cffa2abd5 0.4rc2 -8d2871fc10df16740273f53ef05815310da4b210 0.4 -c0e5bbdcafad4572a5de22e533543bf3330a869e 0.4 -201e60065b1aef23259a71756f93207cffa2abd5 0.4rc2 -a8dceaefd6f3376b7bc1619cccd854591b76ecc0 0.4rc2 -c0e5bbdcafad4572a5de22e533543bf3330a869e 0.4 -dfa3bdfedb12d743b5e0ac19d0ecf116b567a0b3 0.4 -b519a0848585e2a665a14aac2fb6f15c0a839e6c 0.4rc3 -dfa3bdfedb12d743b5e0ac19d0ecf116b567a0b3 0.4 -05acdf4987c28d8cc1d5a12d87e71b1445fdd6b7 0.4 -04b5afe48d1cee819d9f0af72ed16556a075b67d 0.5rc1 -1968150561097bcfeeb28a75801ef881d2fcbbf5 0.5 -3236e68e6f2e36353e47f01a9b8acfce56686263 0.5rc2 -1968150561097bcfeeb28a75801ef881d2fcbbf5 0.5 -0097da78aa23be8b7a5a811c4be0e3e35395af43 0.5 -be7016807a69c910ac31ff068a6c2bde0a25c9d4 0.5rc3 -0097da78aa23be8b7a5a811c4be0e3e35395af43 0.5 -83e97107e4a381b898c780b32e30e48b0e4d37f3 0.5 -182a405aa393dbd412e671e8516d2decd8e8d80c 0.6rc1 -96799a3d96abfdb1408f9b8e30479668f1feed70 0.6 -c5f6cdfa36b2ad33d8017e6844992de0b0a6c0e0 0.6rc2 -96799a3d96abfdb1408f9b8e30479668f1feed70 0.6 -65c393fbc6af7db79a4a2e903d06b17e90d254bf 0.6 -3e747e3e307a4e853d468b03357f96b2172bad37 0.7rc1 -b0e97e12eb9115f08127cc447d459f871c5046ed 0.7 -37288479d249168668abd60a907620fa7f593128 0.7rc2 -b0e97e12eb9115f08127cc447d459f871c5046ed 0.7 -db0eabc310619d00ce47372ecaafba7d2539b601 0.7 -37288479d249168668abd60a907620fa7f593128 0.7rc2 -b90bedb83525d8f32ebb4d3833e8d91efa991b6d 0.7rc2 -db0eabc310619d00ce47372ecaafba7d2539b601 0.7 -e6ea2e5c5274cbbb0278dc976844dbf51818a95e 0.7 -b90bedb83525d8f32ebb4d3833e8d91efa991b6d 0.7rc2 -9b978d823509de5d52ca222b9907f72591c68c5a 0.7rc2 -e6ea2e5c5274cbbb0278dc976844dbf51818a95e 0.7 -cd71e1e77c93adf169b9f38184b1f95d423876ba 0.7 -67e3fd285fa955898a2641226c86725365d68b95 0.8rc1 -b2f9405db6d74c21601ca9c250887411c837396a 0.8 -67e3fd285fa955898a2641226c86725365d68b95 0.8rc1 -56e8179ff5b467959ddf33978558d7eb5346ee53 0.8rc1 -b2f9405db6d74c21601ca9c250887411c837396a 0.8 -51a22a186b1c7d8e7292a5ec9670752dad223ca1 0.8 -d150cca77cfef60dee2f2fe7c892fd7fc5ce83c4 0.9rc1 -1e106beb57f65fabc32682f277de51a8101c919b 0.9 -173d56fa8cc1c5622eae70f1ae88ef789de4722b 0.9rc2 -1e106beb57f65fabc32682f277de51a8101c919b 0.9 -cde12eefd178d7a0ee7d5e9ae77f3089bcbdc6ec 0.9 diff --git a/application/palemoon/LICENSE b/application/palemoon/LICENSE new file mode 100644 index 0000000000..e3b7160961 --- /dev/null +++ b/application/palemoon/LICENSE @@ -0,0 +1,7 @@ +Please see the file ../toolkit/content/license.html for the copyright +licensing conditions attached to this codebase, including copies of the +licenses concerned. + +You are not granted rights or licenses to the trademarks of the +Mozilla Foundation, Moonchild Productions or any party, including without +limitation the Pale Moon name or logo. diff --git a/application/palemoon/Makefile.in b/application/palemoon/Makefile.in new file mode 100644 index 0000000000..92527eaa84 --- /dev/null +++ b/application/palemoon/Makefile.in @@ -0,0 +1,13 @@ +# 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/. + +include $(topsrcdir)/config/rules.mk + +ifdef MAKENSISU + +# For Windows build the uninstaller during the application build since the +# uninstaller is included with the application for mar file generation. +libs:: + $(MAKE) -C installer/windows uninstaller +endif diff --git a/application/palemoon/app-rules.mk b/application/palemoon/app-rules.mk new file mode 100644 index 0000000000..2c31653046 --- /dev/null +++ b/application/palemoon/app-rules.mk @@ -0,0 +1 @@ +PURGECACHES_DIRS = $(DIST)/bin/browser diff --git a/application/palemoon/app.mozbuild b/application/palemoon/app.mozbuild new file mode 100644 index 0000000000..0cbce0f723 --- /dev/null +++ b/application/palemoon/app.mozbuild @@ -0,0 +1,17 @@ +# vim: set filetype=python: +# 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/. + +if not CONFIG['LIBXUL_SDK']: + include('/toolkit/toolkit.mozbuild') + +if CONFIG['MOZ_EXTENSIONS']: + DIRS += ['/extensions'] + +DIRS += ['/%s' % CONFIG['MOZ_BRANDING_DIRECTORY']] + +# Never add tier dirs after browser because they apparently won't get +# packaged properly on Mac. +DIRS += ['/browser'] + diff --git a/application/palemoon/app/Makefile.in b/application/palemoon/app/Makefile.in new file mode 100644 index 0000000000..580fcb1640 --- /dev/null +++ b/application/palemoon/app/Makefile.in @@ -0,0 +1,116 @@ +# 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/. + +dist_dest = $(DIST)/$(MOZ_MACBUNDLE_NAME) + +# hardcode en-US for the moment +AB_CD = en-US + +DEFINES += \ + -DAB_CD=$(AB_CD) \ + -DAPP_VERSION="$(MOZ_APP_VERSION)" \ + -DFIREFOX_ICO=\"$(DIST)/branding/firefox.ico\" \ + -DDOCUMENT_ICO=\"$(DIST)/branding/document.ico\" \ + -DNEWWINDOW_ICO=\"$(DIST)/branding/newwindow.ico\" \ + -DNEWTAB_ICO=\"$(DIST)/branding/newtab.ico\" \ + -DPBMODE_ICO=\"$(DIST)/branding/pbmode.ico\" \ + $(NULL) + +# Build a binary bootstrapping with XRE_main + +ifndef MOZ_WINCONSOLE +ifdef MOZ_DEBUG +MOZ_WINCONSOLE = 1 +else +MOZ_WINCONSOLE = 0 +endif +endif + +# This switches $(INSTALL) to copy mode, like $(SYSINSTALL), so things that +# shouldn't get 755 perms need $(IFLAGS1) for either way of calling nsinstall. +NSDISTMODE = copy + +include $(topsrcdir)/config/config.mk + +ifeq ($(OS_ARCH),WINNT) +# Rebuild firefox.exe if the manifest changes - it's included by splash.rc. +# (this dependency should really be just for firefox.exe, not other targets) +EXTRA_DEPS += $(PROGRAM).manifest +endif + +PROGRAMS_DEST = $(DIST)/bin + +include $(topsrcdir)/config/rules.mk + +ifneq (,$(filter-out WINNT,$(OS_ARCH))) + +ifdef COMPILE_ENVIRONMENT +libs:: + cp -p $(MOZ_APP_NAME)$(BIN_SUFFIX) $(DIST)/bin/$(MOZ_APP_NAME)-bin$(BIN_SUFFIX) +endif + +GARBAGE += $(addprefix $(FINAL_TARGET)/defaults/pref/, palemoon.js) + +endif + +ifdef MOZ_WIDGET_GTK +libs:: + $(INSTALL) $(IFLAGS1) $(DIST)/branding/mozicon128.png $(FINAL_TARGET)/icons + $(INSTALL) $(IFLAGS1) $(DIST)/branding/default16.png $(FINAL_TARGET)/chrome/icons/default + $(INSTALL) $(IFLAGS1) $(DIST)/branding/default32.png $(FINAL_TARGET)/chrome/icons/default + $(INSTALL) $(IFLAGS1) $(DIST)/branding/default48.png $(FINAL_TARGET)/chrome/icons/default +endif + +ifndef LIBXUL_SDK +# channel-prefs.js is handled separate from other prefs due to bug 756325 +libs:: $(srcdir)/profile/channel-prefs.js + $(NSINSTALL) -D $(DIST)/bin/defaults/pref + $(call py_action,preprocessor,-Fsubstitution $(PREF_PPFLAGS) $(ACDEFINES) $^ -o $(DIST)/bin/defaults/pref/channel-prefs.js) +endif + +ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT)) + +MAC_APP_NAME = $(MOZ_APP_DISPLAYNAME) + +ifdef MOZ_DEBUG +MAC_APP_NAME := $(MAC_APP_NAME)Debug +endif + +AB_CD = $(MOZ_UI_LOCALE) + +AB := $(firstword $(subst -, ,$(AB_CD))) + +clean clobber repackage:: + $(RM) -r $(dist_dest) + +MAC_BUNDLE_VERSION = $(shell $(PYTHON) $(srcdir)/macversion.py --version=$(MOZ_APP_VERSION) --buildid=$(DEPTH)/config/buildid) + +.PHONY: repackage +tools repackage:: $(PROGRAM) + $(MKDIR) -p $(dist_dest)/Contents/MacOS + $(MKDIR) -p $(dist_dest)/Contents/Resources/$(AB).lproj + rsync -a --exclude '*.in' $(srcdir)/macbuild/Contents $(dist_dest) --exclude English.lproj + rsync -a --exclude '*.in' $(srcdir)/macbuild/Contents/Resources/English.lproj/ $(dist_dest)/Contents/Resources/$(AB).lproj + sed -e 's/%APP_VERSION%/$(MOZ_APP_VERSION)/' -e 's/%MAC_APP_NAME%/$(MAC_APP_NAME)/' -e 's/%MOZ_MACBUNDLE_ID%/$(MOZ_MACBUNDLE_ID)/' -e 's/%MAC_BUNDLE_VERSION%/$(MAC_BUNDLE_VERSION)/' $(srcdir)/macbuild/Contents/Info.plist.in > $(dist_dest)/Contents/Info.plist + sed -e 's/%MAC_APP_NAME%/$(MAC_APP_NAME)/' $(srcdir)/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in | iconv -f UTF-8 -t UTF-16 > $(dist_dest)/Contents/Resources/$(AB).lproj/InfoPlist.strings + rsync -a --exclude-from='$(srcdir)/macbuild/Contents/MacOS-files.in' $(DIST)/bin/ $(dist_dest)/Contents/Resources + rsync -a --include-from='$(srcdir)/macbuild/Contents/MacOS-files.in' --exclude '*' $(DIST)/bin/ $(dist_dest)/Contents/MacOS + $(RM) $(dist_dest)/Contents/MacOS/$(PROGRAM) + rsync -aL $(PROGRAM) $(dist_dest)/Contents/MacOS + cp -RL $(DIST)/branding/firefox.icns $(dist_dest)/Contents/Resources/firefox.icns + cp -RL $(DIST)/branding/document.icns $(dist_dest)/Contents/Resources/document.icns + printf APPLMOZB > $(dist_dest)/Contents/PkgInfo +endif + +ifdef LIBXUL_SDK #{ +ifndef SKIP_COPY_XULRUNNER #{ +libs:: +ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT)) #{ + rsync -a --copy-unsafe-links $(LIBXUL_DIST)/XUL.framework $(dist_dest)/Contents/Frameworks +else + $(NSINSTALL) -D $(DIST)/bin/xulrunner + (cd $(LIBXUL_SDK)/bin && tar $(TAR_CREATE_FLAGS) - .) | (cd $(DIST)/bin/xulrunner && tar -xf -) +endif #} cocoa +endif #} SKIP_COPY_XULRUNNER +endif #} LIBXUL_SDK diff --git a/application/palemoon/app/blocklist.xml b/application/palemoon/app/blocklist.xml new file mode 100644 index 0000000000..9c64af9879 --- /dev/null +++ b/application/palemoon/app/blocklist.xml @@ -0,0 +1,3887 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + security.csp.enable + security.fileuri.strict_origin_policy + security.mixed_content.block_active_content + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + app.update.auto + app.update.enabled + app.update.interval + app.update.url + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browser.startup.homepage + browser.search.defaultenginename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + + + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + + + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + + + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://java.com/ + + + + + https://java.com/ + + + + + + + https://java.com/ + + + + + + + https://java.com/ + + + + + + + https://java.com/ + + + + + + + https://java.com/ + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://java.com/ + + + + + https://java.com/ + + + + + + + https://java.com/ + + + + + + + https://java.com/ + + + + + + + https://java.com/ + + + + + + + https://java.com/ + + + + + + + + + + + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://real.com/ + + + + + https://get.adobe.com/shockwave/ + + + + + https://get.adobe.com/shockwave/ + + + + + https://java.com/ + + + + + https://java.com/ + + + + + + + https://java.com/ + + + + + + + https://java.com/ + + + + + + + https://java.com/ + + + + + + + https://java.com/ + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + https://www.adobe.com/products/flashplayer/distribution3.html + + + + + WINNT 6.1 + 0x10de + + 0x0a6c + + DIRECT2D + BLOCKED_DRIVER_VERSION + 8.17.12.5896 + + LESS_THAN_OR_EQUAL + + + WINNT 6.1 + 0x10de + + 0x0a6c + + DIRECT3D_9_LAYERS + BLOCKED_DRIVER_VERSION + 8.17.12.5896 + + LESS_THAN_OR_EQUAL + + + WINNT 5.1 + 0x10de + DIRECT3D_9_LAYERS + BLOCKED_DRIVER_VERSION + 7.0.0.0 + + GREATER_THAN_OR_EQUAL + + + All + 0x1002 + DIRECT2D + BLOCKED_DRIVER_VERSION + 8.982.0.0 + EQUAL + + + All + 0x1022 + DIRECT2D + BLOCKED_DRIVER_VERSION + 8.982.0.0 + EQUAL + + + All + 0x1022 + DIRECT3D_9_LAYERS + BLOCKED_DRIVER_VERSION + 8.982.0.0 + EQUAL + + + All + 0x1002 + DIRECT3D_9_LAYERS + BLOCKED_DRIVER_VERSION + 8.982.0.0 + EQUAL + + + WINNT 6.2 + 0x1002 + DIRECT2D + BLOCKED_DRIVER_VERSION + 9.10.8.0 + + LESS_THAN_OR_EQUAL + + + WINNT 6.2 + 0x1022 + DIRECT2D + BLOCKED_DRIVER_VERSION + 9.10.8.0 + + LESS_THAN_OR_EQUAL + + + Darwin 10 + 0x10de + WEBGL_MSAA + BLOCKED_DEVICE + + + Darwin 11 + 0x10de + WEBGL_MSAA + BLOCKED_DEVICE + + + Darwin 12 + 0x10de + WEBGL_MSAA + BLOCKED_DEVICE + + + Darwin 10 + 0x8086 + WEBGL_MSAA + BLOCKED_DEVICE + + + Darwin 11 + 0x8086 + WEBGL_MSAA + BLOCKED_DEVICE + + + Darwin 12 + 0x8086 + WEBGL_MSAA + BLOCKED_DEVICE + + + Darwin 10 + 0x1002 + WEBGL_MSAA + BLOCKED_DEVICE + + + Darwin 11 + 0x1002 + WEBGL_MSAA + BLOCKED_DEVICE + + + Darwin 12 + 0x1002 + WEBGL_MSAA + BLOCKED_DEVICE + + + WINNT 6.1 + 0x1002 + + 0x68e1 + 0x68e4 + 0x68e5 + 0x68f9 + 0x9802 + 0x9803 + 0x9803 + 0x9804 + 0x9805 + 0x9806 + 0x9807 + + DIRECT2D + BLOCKED_DEVICE + + + WINNT 6.1 + 0x1002 + + 0x9802 + 0x9803 + 0x9803 + 0x9804 + 0x9805 + 0x9806 + 0x9807 + + DIRECT3D_9_LAYERS + BLOCKED_DEVICE + + + WINNT 10.0 + 0x1002 + + 0x6920 + 0x6921 + 0x6928 + 0x6929 + 0x692b + 0x692f + 0x6930 + 0x6938 + 0x6939 + 0x6900 + 0x6901 + 0x6902 + 0x6903 + 0x6907 + 0x7300 + 0x9870 + 0x9874 + 0x9875 + 0x9876 + 0x9877 + + DIRECT2D + BLOCKED_DRIVER_VERSION + 15.201.1151.0 + LESS_THAN + + + All + 0x8086 + DIRECT2D + BLOCKED_DRIVER_VERSION + 8.15.10.2413 + + LESS_THAN_OR_EQUAL + + + WINNT 8.1 + 0x1002 + + 0x6920 + 0x6921 + 0x6928 + 0x6929 + 0x692b + 0x692f + 0x6930 + 0x6938 + 0x6939 + 0x6900 + 0x6901 + 0x6902 + 0x6903 + 0x6907 + 0x7300 + 0x9870 + 0x9874 + 0x9875 + 0x9876 + 0x9877 + + DIRECT2D + BLOCKED_DRIVER_VERSION + 15.201.1151.0 + LESS_THAN + + + 0x8086 + + 0x2a42 + 0x2e22 + 0x2e12 + 0x2e32 + 0x0046 + + BLOCKED_DRIVER_VERSION + 8.15.10.1851 + EQUAL + + + 0x8086 + + 0x2a42 + 0x2e22 + 0x2e12 + 0x2e32 + 0x0046 + + BLOCKED_DRIVER_VERSION + 8.15.10.1855 + EQUAL + + + 0x8086 + + 0x2a42 + 0x2e22 + 0x2e12 + 0x2e32 + 0x0046 + + BLOCKED_DRIVER_VERSION + 8.15.10.1872 + EQUAL + + + 0x8086 + + 0x2a42 + 0x2e22 + 0x2e12 + 0x2e32 + 0x0046 + + BLOCKED_DRIVER_VERSION + 8.15.10.1883 + EQUAL + + + 0x8086 + + 0x2a42 + 0x2e22 + 0x2e12 + 0x2e32 + 0x0046 + + BLOCKED_DRIVER_VERSION + 8.15.10.1892 + EQUAL + + + 0x8086 + + 0x2a42 + 0x2e22 + 0x2e12 + 0x2e32 + 0x0046 + + BLOCKED_DRIVER_VERSION + 8.15.10.1994 + EQUAL + + + diff --git a/application/palemoon/app/macbuild/Contents/CodeResources b/application/palemoon/app/macbuild/Contents/CodeResources new file mode 100644 index 0000000000..1a65e20cbe --- /dev/null +++ b/application/palemoon/app/macbuild/Contents/CodeResources @@ -0,0 +1 @@ +_CodeSignature/CodeResources \ No newline at end of file diff --git a/application/palemoon/app/macbuild/Contents/Info.plist.in b/application/palemoon/app/macbuild/Contents/Info.plist.in new file mode 100644 index 0000000000..c77ab1ec5c --- /dev/null +++ b/application/palemoon/app/macbuild/Contents/Info.plist.in @@ -0,0 +1,222 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleDocumentTypes + + + CFBundleTypeExtensions + + html + htm + shtml + xht + xhtml + + CFBundleTypeIconFile + document.icns + CFBundleTypeName + HTML Document + CFBundleTypeOSTypes + + HTML + + CFBundleTypeRole + Viewer + + + CFBundleTypeExtensions + + svg + + CFBundleTypeIconFile + document.icns + CFBundleTypeMIMETypes + + image/svg+xml + + CFBundleTypeName + SVG document + CFBundleTypeOSTypes + + TEXT + + CFBundleTypeRole + Viewer + NSDocumentClass + BrowserDocument + + + CFBundleTypeExtensions + + text + txt + js + log + css + xul + rdf + + CFBundleTypeIconFile + document.icns + CFBundleTypeName + Text Document + CFBundleTypeOSTypes + + TEXT + utxt + + CFBundleTypeRole + Viewer + + + CFBundleTypeExtensions + + jpeg + jpg + png + gif + + CFBundleTypeIconFile + fileBookmark.icns + CFBundleTypeName + document.icns + CFBundleTypeOSTypes + + GIFf + JPEG + PNGf + + CFBundleTypeRole + Viewer + + + CFBundleTypeExtensions + + oga + ogg + + CFBundleTypeIconFile + document.icns + CFBundleTypeMIMETypes + + audio/ogg + + CFBundleTypeName + HTML5 Audio (Ogg) + CFBundleTypeRole + Viewer + + + CFBundleTypeExtensions + + ogv + + CFBundleTypeIconFile + document.icns + CFBundleTypeMIMETypes + + video/ogg + + CFBundleTypeName + HTML5 Video (Ogg) + CFBundleTypeRole + Viewer + + + CFBundleTypeExtensions + + webm + + CFBundleTypeIconFile + document.icns + CFBundleTypeMIMETypes + + video/webm + + CFBundleTypeName + HTML5 Video (WebM) + CFBundleTypeRole + Viewer + + + CFBundleExecutable + palemoon + CFBundleGetInfoString + %MAC_APP_NAME% %APP_VERSION% + CFBundleIconFile + firefox + CFBundleIdentifier + %MOZ_MACBUNDLE_ID% + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + %MAC_APP_NAME% + CFBundlePackageType + APPL + CFBundleShortVersionString + %APP_VERSION% + CFBundleSignature + MOZB + CFBundleURLTypes + + + CFBundleURLIconFile + document.icns + CFBundleURLName + http URL + CFBundleURLSchemes + + http + + + + CFBundleURLIconFile + document.icns + CFBundleURLName + https URL + CFBundleURLSchemes + + https + + + + CFBundleURLName + ftp URL + CFBundleURLSchemes + + ftp + + + + CFBundleURLName + file URL + CFBundleURLSchemes + + file + + + + CFBundleVersion + %MAC_BUNDLE_VERSION% + NSAppleScriptEnabled + + LSApplicationCategoryType + public.app-category.productivity + LSMinimumSystemVersion + 10.6 + LSMinimumSystemVersionByArchitecture + + i386 + 10.6.0 + x86_64 + 10.6.0 + + NSSupportsAutomaticGraphicsSwitching + + NSPrincipalClass + GoannaNSApplication + + diff --git a/application/palemoon/app/macbuild/Contents/MacOS-files.in b/application/palemoon/app/macbuild/Contents/MacOS-files.in new file mode 100644 index 0000000000..561366def2 --- /dev/null +++ b/application/palemoon/app/macbuild/Contents/MacOS-files.in @@ -0,0 +1,10 @@ +/*.app/*** +/*.dylib +/certutil +/firefox-bin +/gtest/*** +/pk12util +/ssltunnel +/xpcshell +/XUL + diff --git a/application/palemoon/app/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in b/application/palemoon/app/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in new file mode 100644 index 0000000000..74d192cb08 --- /dev/null +++ b/application/palemoon/app/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in @@ -0,0 +1,5 @@ +/* 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/. */ + +CFBundleName = "%MAC_APP_NAME%"; diff --git a/application/palemoon/app/macbuild/Contents/_CodeSignature/CodeResources b/application/palemoon/app/macbuild/Contents/_CodeSignature/CodeResources new file mode 100644 index 0000000000..6f6e20efff --- /dev/null +++ b/application/palemoon/app/macbuild/Contents/_CodeSignature/CodeResources @@ -0,0 +1,71 @@ + + + + + rules + + ^Info.plist$ + + ^PkgInfo$ + + ^MacOS/ + + ^Resources/ + + ^MacOS/distribution/.* + omit + + weight + 10 + + ^MacOS/override.ini + omit + + weight + 10 + + ^MacOS/updates/.* + omit + + weight + 10 + + ^MacOS/active-update.xml$ + omit + + weight + 10 + + ^MacOS/defaults/.* + omit + + weight + 10 + + ^MacOS/removed-files$ + omit + + weight + 10 + + ^MacOS/updates.xml$ + omit + + weight + 10 + + ^Updated.app/.* + omit + + weight + 10 + + ^updating/.* + omit + + weight + 10 + + + + diff --git a/application/palemoon/app/macversion.py b/application/palemoon/app/macversion.py new file mode 100644 index 0000000000..8c360368e9 --- /dev/null +++ b/application/palemoon/app/macversion.py @@ -0,0 +1,44 @@ +#!/usr/bin/python +# 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/. + + +from optparse import OptionParser +import sys +import re + +o = OptionParser() +o.add_option("--buildid", dest="buildid") +o.add_option("--version", dest="version") + +(options, args) = o.parse_args() + +if not options.buildid: + print >>sys.stderr, "--buildid is required" + sys.exit(1) + +if not options.version: + print >>sys.stderr, "--version is required" + sys.exit(1) + +# We want to build a version number that matches the format allowed for +# CFBundleVersion (nnnnn[.nn[.nn]]). We'll incorporate both the version +# number as well as the date, so that it changes at least daily (for nightly +# builds), but also so that newly-built older versions (e.g. beta build) aren't +# considered "newer" than previously-built newer versions (e.g. a trunk nightly) + +buildid = open(options.buildid, 'r').read() + +# extract only the major version (i.e. "14" from "14.0b1") +majorVersion = re.match(r'^(\d+)[^\d].*', options.version).group(1) +# last two digits of the year +twodigityear = buildid[2:4] +month = buildid[4:6] +if month[0] == '0': + month = month[1] +day = buildid[6:8] +if day[0] == '0': + day = day[1] + +print '%s.%s.%s' % (majorVersion + twodigityear, month, day) diff --git a/application/palemoon/app/module.ver b/application/palemoon/app/module.ver new file mode 100644 index 0000000000..7a00230cf9 --- /dev/null +++ b/application/palemoon/app/module.ver @@ -0,0 +1,8 @@ +WIN32_MODULE_COMPANYNAME=Moonchild Productions +WIN32_MODULE_COPYRIGHT=©Pale Moon, Firefox and Mozilla Developers, available under the MPL 2.0. +WIN32_MODULE_PRODUCTVERSION=@MOZ_APP_WINVERSION@ +WIN32_MODULE_PRODUCTVERSION_STRING=@MOZ_APP_VERSION@ +WIN32_MODULE_TRADEMARKS=The Pale Moon logo and project names are the property of Moonchild Productions. +WIN32_MODULE_DESCRIPTION=Pale Moon web browser +WIN32_MODULE_PRODUCTNAME=Pale Moon +WIN32_MODULE_NAME=Pale Moon diff --git a/application/palemoon/app/moz.build b/application/palemoon/app/moz.build new file mode 100644 index 0000000000..929139a6a3 --- /dev/null +++ b/application/palemoon/app/moz.build @@ -0,0 +1,91 @@ +# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# 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/. + +DIRS += ['profile/extensions'] + + +if CONFIG['OS_ARCH'] == 'WINNT' and CONFIG['MOZ_ASAN']: + GoannaProgram(CONFIG['MOZ_APP_NAME']) +else: + GoannaProgram(CONFIG['MOZ_APP_NAME'], msvcrt='static') + +JS_PREFERENCE_FILES += [ + 'profile/palemoon.js', +] + +if CONFIG['LIBXUL_SDK']: + PREF_JS_EXPORTS += [ + 'profile/channel-prefs.js', + ] + +SOURCES += [ + 'nsBrowserApp.cpp', +] + +FINAL_TARGET_FILES += ['blocklist.xml'] +FINAL_TARGET_FILES.defaults.profile += ['profile/prefs.js'] + +DEFINES['APP_VERSION'] = CONFIG['MOZ_APP_VERSION'] + +for var in ('MOZILLA_OFFICIAL', 'LIBXUL_SDK'): + if CONFIG[var]: + DEFINES[var] = True + +DEFINES['XPCOM_GLUE'] = True + +GENERATED_INCLUDES += [ + '/build', +] + +LOCAL_INCLUDES += [ + '/toolkit/xre', + '/xpcom/base', + '/xpcom/build', +] + +DELAYLOAD_DLLS += [ + 'mozglue.dll', +] +USE_STATIC_LIBS = True + + +if CONFIG['_MSC_VER']: + # Always enter a Windows program through wmain, whether or not we're + # a console application. + WIN32_EXE_LDFLAGS += ['-ENTRY:wmainCRTStartup'] + +if CONFIG['OS_ARCH'] == 'WINNT': + RCINCLUDE = 'splash.rc' + DEFINES['MOZ_PHOENIX'] = True + +# Control the default heap size. +# This is the heap returned by GetProcessHeap(). +# As we use the CRT heap, the default size is too large and wastes VM. +# +# The default heap size is 1MB on Win32. +# The heap will grow if need be. +# +# Set it to 256k. See bug 127069. +if CONFIG['OS_ARCH'] == 'WINNT' and not CONFIG['GNU_CC']: + LDFLAGS += ['/HEAP:0x40000'] + +if CONFIG['OS_ARCH'] == 'WINNT': + USE_LIBS += [ + 'mozglue', + 'xpcomglue_staticruntime', + ] +else: + USE_LIBS += [ + 'xpcomglue', + ] + +DISABLE_STL_WRAPPING = True + +if CONFIG['MOZ_LINKER']: + OS_LIBS += CONFIG['MOZ_ZLIB_LIBS'] + +if CONFIG['HAVE_CLOCK_MONOTONIC']: + OS_LIBS += CONFIG['REALTIME_LIBS'] diff --git a/application/palemoon/app/nsBrowserApp.cpp b/application/palemoon/app/nsBrowserApp.cpp new file mode 100644 index 0000000000..f9645b0c69 --- /dev/null +++ b/application/palemoon/app/nsBrowserApp.cpp @@ -0,0 +1,452 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* 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/. */ + +#include "nsXULAppAPI.h" +#include "mozilla/AppData.h" +#include "application.ini.h" +#include "nsXPCOMGlue.h" +#if defined(XP_WIN) +#undef _WIN32_WINNT +#define _WIN32_WINNT 0x0600 +#include +#include +#include +#include +#include +#include +#elif defined(XP_UNIX) +#include +#include +#include +#endif + +#ifdef XP_MACOSX +#include +#include "MacQuirks.h" +#endif + +#include +#include +#include + +#include "nsCOMPtr.h" +#include "nsIFile.h" +#include "nsStringGlue.h" + +// Easy access to a five second startup delay used to get +// a debugger attached in the metro environment. +// #define DEBUG_delay_start_metro + +#ifdef XP_WIN +// we want a wmain entry point +#include "nsWindowsWMain.cpp" +#define snprintf _snprintf +#define strcasecmp _stricmp +#endif +#include "BinaryPath.h" + +#include "nsXPCOMPrivate.h" // for MAXPATHLEN and XPCOM_DLL +#include "mozilla/StartupTimeline.h" + +using namespace mozilla; + +#ifdef XP_MACOSX +#define kOSXResourcesFolder "Resources" +#endif +#define kDesktopFolder "browser" +#define kMetroFolder "metro" +#define kMetroAppIniFilename "metroapp.ini" +#ifdef XP_WIN +#define kMetroTestFile "tests.ini" +const char* kMetroConsoleIdParam = "testconsoleid="; +#endif + +static void Output(const char *fmt, ... ) +{ + va_list ap; + va_start(ap, fmt); + +#ifndef XP_WIN + vfprintf(stderr, fmt, ap); +#else + char msg[2048]; + vsnprintf_s(msg, _countof(msg), _TRUNCATE, fmt, ap); + + wchar_t wide_msg[2048]; + MultiByteToWideChar(CP_UTF8, + 0, + msg, + -1, + wide_msg, + _countof(wide_msg)); +#if MOZ_WINCONSOLE + fwprintf_s(stderr, wide_msg); +#else + MessageBoxW(nullptr, + wide_msg, + L"Pale Moon", + MB_OK | MB_ICONERROR | MB_SETFOREGROUND); +#endif +#endif + + va_end(ap); +} + +/** + * Return true if |arg| matches the given argument name. + */ +static bool IsArg(const char* arg, const char* s) +{ + if (*arg == '-') + { + if (*++arg == '-') + ++arg; + return !strcasecmp(arg, s); + } + +#if defined(XP_WIN) + if (*arg == '/') + return !strcasecmp(++arg, s); +#endif + + return false; +} + +#ifdef XP_WIN +/* + * AttachToTestHarness - Windows helper for when we are running + * in the immersive environment. Firefox is launched by Windows in + * response to a request by metrotestharness, which is launched by + * runtests.py. As such stdout in fx doesn't point to the right + * stream. This helper touches up stdout such that test output gets + * routed to a named pipe metrotestharness creates and dumps to its + * stdout. + */ +static void AttachToTestHarness() +{ + // attach to the metrotestharness named logging pipe + HANDLE winOut = CreateFileA("\\\\.\\pipe\\metrotestharness", + GENERIC_WRITE, + FILE_SHARE_WRITE, 0, + OPEN_EXISTING, 0, 0); + + if (winOut == INVALID_HANDLE_VALUE) { + OutputDebugStringW(L"Could not create named logging pipe.\n"); + return; + } + + // Set the c runtime handle + int stdOut = _open_osfhandle((intptr_t)winOut, _O_APPEND); + if (stdOut == -1) { + OutputDebugStringW(L"Could not open c-runtime handle.\n"); + return; + } + FILE *fp = _fdopen(stdOut, "a"); + *stdout = *fp; +} +#endif + +XRE_GetFileFromPathType XRE_GetFileFromPath; +XRE_CreateAppDataType XRE_CreateAppData; +XRE_FreeAppDataType XRE_FreeAppData; +#ifdef XRE_HAS_DLL_BLOCKLIST +XRE_SetupDllBlocklistType XRE_SetupDllBlocklist; +#endif +XRE_StartupTimelineRecordType XRE_StartupTimelineRecord; +XRE_mainType XRE_main; +XRE_StopLateWriteChecksType XRE_StopLateWriteChecks; + +static const nsDynamicFunctionLoad kXULFuncs[] = { + { "XRE_GetFileFromPath", (NSFuncPtr*) &XRE_GetFileFromPath }, + { "XRE_CreateAppData", (NSFuncPtr*) &XRE_CreateAppData }, + { "XRE_FreeAppData", (NSFuncPtr*) &XRE_FreeAppData }, +#ifdef XRE_HAS_DLL_BLOCKLIST + { "XRE_SetupDllBlocklist", (NSFuncPtr*) &XRE_SetupDllBlocklist }, +#endif + { "XRE_StartupTimelineRecord", (NSFuncPtr*) &XRE_StartupTimelineRecord }, + { "XRE_main", (NSFuncPtr*) &XRE_main }, + { "XRE_StopLateWriteChecks", (NSFuncPtr*) &XRE_StopLateWriteChecks }, + { nullptr, nullptr } +}; + +static int do_main(int argc, char* argv[], nsIFile *xreDirectory) +{ + nsCOMPtr appini; + nsresult rv; + uint32_t mainFlags = 0; + +#ifdef XP_WIN + if (!IsWindowsVistaOrGreater()) { + Output("Couldn't load valid PE image.\n"); + return 255; + } + +#endif + // Allow palemoon.exe to launch XULRunner apps via -app + // Note that -app must be the *first* argument. + const char *appDataFile = getenv("XUL_APP_FILE"); + if (appDataFile && *appDataFile) { + rv = XRE_GetFileFromPath(appDataFile, getter_AddRefs(appini)); + if (NS_FAILED(rv)) { + Output("Invalid path found: '%s'", appDataFile); + return 255; + } + } + else if (argc > 1 && IsArg(argv[1], "app")) { + if (argc == 2) { + Output("Incorrect number of arguments passed to -app"); + return 255; + } + + rv = XRE_GetFileFromPath(argv[2], getter_AddRefs(appini)); + if (NS_FAILED(rv)) { + Output("application.ini path not recognized: '%s'", argv[2]); + return 255; + } + + char appEnv[MAXPATHLEN]; + snprintf(appEnv, MAXPATHLEN, "XUL_APP_FILE=%s", argv[2]); + if (putenv(appEnv)) { + Output("Couldn't set %s.\n", appEnv); + return 255; + } + argv[2] = argv[0]; + argv += 2; + argc -= 2; + } + + if (appini) { + nsXREAppData *appData; + rv = XRE_CreateAppData(appini, &appData); + if (NS_FAILED(rv)) { + Output("Couldn't read application.ini"); + return 255; + } + // xreDirectory already has a refcount from NS_NewLocalFile + appData->xreDirectory = xreDirectory; + int result = XRE_main(argc, argv, appData, mainFlags); + XRE_FreeAppData(appData); + return result; + } + + // Desktop browser launch + ScopedAppData appData(&sAppData); + nsCOMPtr exeFile; + rv = mozilla::BinaryPath::GetFile(argv[0], getter_AddRefs(exeFile)); + if (NS_FAILED(rv)) { + Output("Couldn't find the application directory.\n"); + return 255; + } + + nsCOMPtr greDir; + exeFile->GetParent(getter_AddRefs(greDir)); +#ifdef XP_MACOSX + nsCOMPtr parent; + greDir->GetParent(getter_AddRefs(parent)); + greDir = parent.forget(); + greDir->AppendNative(NS_LITERAL_CSTRING(kOSXResourcesFolder)); +#endif + nsCOMPtr appSubdir; + greDir->Clone(getter_AddRefs(appSubdir)); + appSubdir->Append(NS_LITERAL_STRING(kDesktopFolder)); + + SetStrongPtr(appData.directory, static_cast(appSubdir.get())); + // xreDirectory already has a refcount from NS_NewLocalFile + appData.xreDirectory = xreDirectory; + + return XRE_main(argc, argv, &appData, mainFlags); +} + +/** + * Local TimeStamp::Now()-compatible implementation used to record timestamps + * which will be passed to XRE_StartupTimelineRecord(). + */ +static uint64_t +TimeStamp_Now() +{ +#ifdef XP_WIN + LARGE_INTEGER freq; + ::QueryPerformanceFrequency(&freq); + return GetTickCount64() * freq.QuadPart; +#elif defined(XP_MACOSX) + return mach_absolute_time(); +#elif defined(HAVE_CLOCK_MONOTONIC) + struct timespec ts; + int rv = clock_gettime(CLOCK_MONOTONIC, &ts); + + if (rv != 0) { + return 0; + } + + uint64_t baseNs = (uint64_t)ts.tv_sec * 1000000000; + return baseNs + (uint64_t)ts.tv_nsec; +#endif +} + +static bool +FileExists(const char *path) +{ +#ifdef XP_WIN + wchar_t wideDir[MAX_PATH]; + MultiByteToWideChar(CP_UTF8, 0, path, -1, wideDir, MAX_PATH); + DWORD fileAttrs = GetFileAttributesW(wideDir); + return fileAttrs != INVALID_FILE_ATTRIBUTES; +#else + return access(path, R_OK) == 0; +#endif +} + +#ifdef LIBXUL_SDK +# define XPCOM_PATH "xulrunner" XPCOM_FILE_PATH_SEPARATOR XPCOM_DLL +#else +# define XPCOM_PATH XPCOM_DLL +#endif +static nsresult +InitXPCOMGlue(const char *argv0, nsIFile **xreDirectory) +{ + char exePath[MAXPATHLEN]; + + nsresult rv = mozilla::BinaryPath::Get(argv0, exePath); + if (NS_FAILED(rv)) { + Output("Couldn't find the application directory.\n"); + return rv; + } + + char *lastSlash = strrchr(exePath, XPCOM_FILE_PATH_SEPARATOR[0]); + if (!lastSlash || (size_t(lastSlash - exePath) > MAXPATHLEN - sizeof(XPCOM_PATH) - 1)) + return NS_ERROR_FAILURE; + + strcpy(lastSlash + 1, XPCOM_PATH); + lastSlash += sizeof(XPCOM_PATH) - sizeof(XPCOM_DLL); + + if (!FileExists(exePath)) { +#if defined(LIBXUL_SDK) && defined(XP_MACOSX) + // Check for /Contents/Frameworks/XUL.framework/libxpcom.dylib + bool greFound = false; + CFBundleRef appBundle = CFBundleGetMainBundle(); + if (!appBundle) + return NS_ERROR_FAILURE; + CFURLRef fwurl = CFBundleCopyPrivateFrameworksURL(appBundle); + CFURLRef absfwurl = nullptr; + if (fwurl) { + absfwurl = CFURLCopyAbsoluteURL(fwurl); + CFRelease(fwurl); + } + if (absfwurl) { + CFURLRef xulurl = + CFURLCreateCopyAppendingPathComponent(nullptr, absfwurl, + CFSTR("XUL.framework"), + true); + + if (xulurl) { + CFURLRef xpcomurl = + CFURLCreateCopyAppendingPathComponent(nullptr, xulurl, + CFSTR("libxpcom.dylib"), + false); + + if (xpcomurl) { + if (CFURLGetFileSystemRepresentation(xpcomurl, true, + (UInt8*) exePath, + sizeof(exePath)) && + access(tbuffer, R_OK | X_OK) == 0) { + if (realpath(tbuffer, exePath)) { + greFound = true; + } + } + CFRelease(xpcomurl); + } + CFRelease(xulurl); + } + CFRelease(absfwurl); + } + } + if (!greFound) { +#endif + Output("Could not find the Mozilla runtime.\n"); + return NS_ERROR_FAILURE; + } + + // We do this because of data in bug 771745 + XPCOMGlueEnablePreload(); + + rv = XPCOMGlueStartup(exePath); + if (NS_FAILED(rv)) { + Output("Couldn't load XPCOM.\n"); + return rv; + } + + rv = XPCOMGlueLoadXULFunctions(kXULFuncs); + if (NS_FAILED(rv)) { + Output("Couldn't load XRE functions.\n"); + return rv; + } + + NS_LogInit(); + + // chop XPCOM_DLL off exePath + *lastSlash = '\0'; +#ifdef XP_MACOSX + lastSlash = strrchr(exePath, XPCOM_FILE_PATH_SEPARATOR[0]); + strcpy(lastSlash + 1, kOSXResourcesFolder); +#endif +#ifdef XP_WIN + rv = NS_NewLocalFile(NS_ConvertUTF8toUTF16(exePath), false, + xreDirectory); +#else + rv = NS_NewNativeLocalFile(nsDependentCString(exePath), false, + xreDirectory); +#endif + + return rv; +} + +int main(int argc, char* argv[]) +{ +#ifdef DEBUG_delay_start_metro + Sleep(5000); +#endif + uint64_t start = TimeStamp_Now(); + +#ifdef XP_MACOSX + TriggerQuirks(); +#endif + + int gotCounters; +#if defined(XP_UNIX) + struct rusage initialRUsage; + gotCounters = !getrusage(RUSAGE_SELF, &initialRUsage); +#elif defined(XP_WIN) + IO_COUNTERS ioCounters; + gotCounters = GetProcessIoCounters(GetCurrentProcess(), &ioCounters); +#endif + + nsIFile *xreDirectory; + + nsresult rv = InitXPCOMGlue(argv[0], &xreDirectory); + if (NS_FAILED(rv)) { + return 255; + } + + XRE_StartupTimelineRecord(mozilla::StartupTimeline::START, start); + +#ifdef XRE_HAS_DLL_BLOCKLIST + XRE_SetupDllBlocklist(); +#endif + + int result = do_main(argc, argv, xreDirectory); + + NS_LogTerm(); + +#ifdef XP_MACOSX + // Allow writes again. While we would like to catch writes from static + // destructors to allow early exits to use _exit, we know that there is + // at least one such write that we don't control (see bug 826029). For + // now we enable writes again and early exits will have to use exit instead + // of _exit. + XRE_StopLateWriteChecks(); +#endif + + return result; +} diff --git a/application/palemoon/app/palemoon.exe.manifest b/application/palemoon/app/palemoon.exe.manifest new file mode 100644 index 0000000000..465effa449 --- /dev/null +++ b/application/palemoon/app/palemoon.exe.manifest @@ -0,0 +1,48 @@ + + + +Pale Moon + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + diff --git a/application/palemoon/app/profile/channel-prefs.js b/application/palemoon/app/profile/channel-prefs.js new file mode 100644 index 0000000000..feb27c1a3a --- /dev/null +++ b/application/palemoon/app/profile/channel-prefs.js @@ -0,0 +1,6 @@ +#filter substitution +/* 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/. */ + +pref("app.update.channel", "@MOZ_UPDATE_CHANNEL@"); diff --git a/application/palemoon/app/profile/extensions/moz.build b/application/palemoon/app/profile/extensions/moz.build new file mode 100644 index 0000000000..df43182059 --- /dev/null +++ b/application/palemoon/app/profile/extensions/moz.build @@ -0,0 +1,7 @@ +# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# 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/. + +DIRS += ['{972ce4c6-7e08-4474-a285-3208198ce6fd}'] diff --git a/application/palemoon/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/Makefile.in b/application/palemoon/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/Makefile.in new file mode 100644 index 0000000000..ff9319df95 --- /dev/null +++ b/application/palemoon/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/Makefile.in @@ -0,0 +1,10 @@ +# +# 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/. + +FILES := \ + install.rdf.in \ + $(NULL) +FILES_PATH = $(FINAL_TARGET)/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} +PP_TARGETS := FILES diff --git a/application/palemoon/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf.in b/application/palemoon/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf.in new file mode 100644 index 0000000000..f49501300a --- /dev/null +++ b/application/palemoon/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf.in @@ -0,0 +1,40 @@ + + + + +#filter substitution + + + + + {972ce4c6-7e08-4474-a285-3208198ce6fd} + @MOZ_APP_VERSION@ + + + + + @MOZ_APP_ID@ + @MOZ_APP_VERSION@ + @MOZ_APP_VERSION@ + + + + + Default + The default theme. + + + Moonchild Productions + Mozilla Contributors + + + true + + classic/1.0 + + + diff --git a/application/palemoon/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/moz.build b/application/palemoon/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/moz.build new file mode 100644 index 0000000000..e14ac8e218 --- /dev/null +++ b/application/palemoon/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/moz.build @@ -0,0 +1,8 @@ +# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# 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/. + +DEFINES['MOZ_APP_VERSION'] = CONFIG['MOZ_APP_VERSION'] +DEFINES['MOZ_APP_ID'] = CONFIG['MOZ_APP_ID'] \ No newline at end of file diff --git a/application/palemoon/app/profile/pagethemes.rdf b/application/palemoon/app/profile/pagethemes.rdf new file mode 100644 index 0000000000..3d09b95f59 --- /dev/null +++ b/application/palemoon/app/profile/pagethemes.rdf @@ -0,0 +1,7 @@ + + + + + diff --git a/application/palemoon/app/profile/palemoon.js b/application/palemoon/app/profile/palemoon.js new file mode 100644 index 0000000000..7338a83a2f --- /dev/null +++ b/application/palemoon/app/profile/palemoon.js @@ -0,0 +1,1156 @@ +# -*- Mode: JavaScript; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- +# 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/. + +// XXX Toolkit-specific preferences should be moved into toolkit.js + +#filter substitution + +# +# SYNTAX HINTS: +# +# - Dashes are delimiters; use underscores instead. +# - The first character after a period must be alphabetic. +# - Computed values (e.g. 50 * 1024) don't work. +# + +#ifdef XP_UNIX +#ifndef XP_MACOSX +#define UNIX_BUT_NOT_MAC +#endif +#endif + +pref("browser.chromeURL","chrome://browser/content/"); +pref("browser.hiddenWindowChromeURL", "chrome://browser/content/hiddenWindow.xul"); + +// Display the "Get Add-ons" pane in the Add-on Manager +pref("extensions.getAddons.showPane", true); + +// Enables some extra Extension System Logging (can reduce performance) +pref("extensions.logging.enabled", false); + +// Disables strict compatibility, making addons compatible-by-default. +pref("extensions.strictCompatibility", false); + +// Specifies a minimum maxVersion an addon needs to say it's compatible with +// for it to be compatible by default. +pref("extensions.minCompatibleAppVersion", "1.5"); + +// Preferences for AMO integration +pref("extensions.getAddons.cache.enabled", true); +pref("extensions.getAddons.maxResults", 15); +pref("extensions.getAddons.get.url", "https://services.addons.mozilla.org/%LOCALE%/firefox/api/%API_VERSION%/search/guid:%IDS%?src=firefox&appOS=%OS%&appVersion=%VERSION%"); +pref("extensions.getAddons.getWithPerformance.url", "https://services.addons.mozilla.org/%LOCALE%/firefox/api/%API_VERSION%/search/guid:%IDS%?src=firefox&appOS=%OS%&appVersion=%VERSION%&tMain=%TIME_MAIN%&tFirstPaint=%TIME_FIRST_PAINT%&tSessionRestored=%TIME_SESSION_RESTORED%"); +pref("extensions.getAddons.search.browseURL", "https://addons.mozilla.org/%LOCALE%/firefox/search?q=%TERMS%&platform=%OS%&appver=%VERSION%"); +pref("extensions.getAddons.search.url", "https://services.addons.mozilla.org/%LOCALE%/firefox/api/%API_VERSION%/search/%TERMS%/all/%MAX_RESULTS%/%OS%/%VERSION%/%COMPATIBILITY_MODE%?src=firefox"); +pref("extensions.webservice.discoverURL", "https://services.addons.mozilla.org/%LOCALE%/firefox/discovery/pane/%VERSION%/%OS%/%COMPATIBILITY_MODE%"); +pref("extensions.getAddons.recommended.url", "https://services.addons.mozilla.org/%LOCALE%/%APP%/api/%API_VERSION%/list/recommended/all/%MAX_RESULTS%/%OS%/%VERSION%?src=firefox"); + +// Blocklist preferences +pref("extensions.blocklist.enabled", true); +pref("extensions.blocklist.interval", 86400); +pref("extensions.blocklist.level.updated", false); +// Controls what level the blocklist switches from warning about items to forcibly +// blocking them. +pref("extensions.blocklist.level", 2); +pref("extensions.blocklist.url", "https://addons.mozilla.org/blocklist/3/%APP_ID%/%APP_VERSION%/%PRODUCT%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/%PING_COUNT%/%TOTAL_PING_COUNT%/%DAYS_SINCE_LAST_PING%/"); +pref("extensions.blocklist.detailsURL", "https://www.mozilla.org/%LOCALE%/blocklist/"); +pref("extensions.blocklist.itemURL", "https://addons.mozilla.org/%LOCALE%/%APP%/blocked/%blockID%"); + +pref("extensions.update.autoUpdateDefault", true); + +// Disable add-ons that are not installed by the user in all scopes by default. +// See the SCOPE constants in AddonManager.jsm for values to use here. +pref("extensions.autoDisableScopes", 15); + +// Dictionary download preference +pref("browser.dictionaries.download.url", "https://addons.mozilla.org/%LOCALE%/firefox/dictionaries/"); + +// Get More Tools link URL +pref("browser.getdevtools.url","https://addons.mozilla.org/firefox/collections/mozilla/webdeveloper/"); + +// Feedback URL +pref("browser.feedback.url", "https://forum.palemoon.org"); + +// Help button in slow startup dialog +pref("browser.slowstartup.help.url", "http://www.palemoon.org/support/slowstartup.shtml"); + +// Whether to escape to a content-less page if a user presses "Get me out of here" +// on a network error page (e.g. cert error) +pref("browser.escape_to_blank", false); + +// The minimum delay in seconds for the timer to fire. +// default=2 minutes +pref("app.update.timerMinimumDelay", 120); + +// App-specific update preferences + +// The interval to check for updates (app.update.interval) is defined in +// palemoon-branding.js + +// Alternative windowtype for an application update user interface window. When +// a window with this windowtype is open the application update service won't +// open the normal application update user interface window. +pref("app.update.altwindowtype", "Browser:About"); + +// Enables some extra Application Update Logging (can reduce performance) +pref("app.update.log", false); + +// The number of general background check failures to allow before notifying the +// user of the failure. User initiated update checks always notify the user of +// the failure. +pref("app.update.backgroundMaxErrors", 10); + +// When |app.update.cert.requireBuiltIn| is true or not specified the +// final certificate and all certificates the connection is redirected to before +// the final certificate for the url specified in the |app.update.url| +// preference must be built-in. +pref("app.update.cert.requireBuiltIn", true); + +// When |app.update.cert.checkAttributes| is true or not specified the +// certificate attributes specified in the |app.update.certs.| preference branch +// are checked against the certificate for the url specified by the +// |app.update.url| preference. +pref("app.update.cert.checkAttributes", true); + +// The number of certificate attribute check failures to allow for background +// update checks before notifying the user of the failure. User initiated update +// checks always notify the user of the certificate attribute check failure. +pref("app.update.cert.maxErrors", 5); + +// The |app.update.certs.| preference branch contains branches that are +// sequentially numbered starting at 1 that contain attribute name / value +// pairs for the certificate used by the server that hosts the update xml file +// as specified in the |app.update.url| preference. When these preferences are +// present the following conditions apply for a successful update check: +// 1. the uri scheme must be https +// 2. the preference name must exist as an attribute name on the certificate and +// the value for the name must be the same as the value for the attribute name +// on the certificate. +// If these conditions aren't met it will be treated the same as when there is +// no update available. This validation will not be performed when the +// |app.update.url.override| user preference has been set for testing updates or +// when the |app.update.cert.checkAttributes| preference is set to false. Also, +// the |app.update.url.override| preference should ONLY be used for testing. +pref("app.update.certs.1.issuerName", "CN=COMODO RSA Domain Validation Secure Server CA,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB"); +pref("app.update.certs.1.commonName", "*.palemoon.org"); + +// Whether or not app updates are enabled +pref("app.update.enabled", true); + +// This preference turns on app.update.mode and allows automatic download and +// install to take place. We use a separate boolean toggle for this to make +// the UI easier to construct. +pref("app.update.auto", true); + +// See chart in nsUpdateService.js source for more details +pref("app.update.mode", 1); + +// If set to true, the Update Service will present no UI for any event. +pref("app.update.silent", false); + +// If set to true, the Update Service will apply updates in the background +// when it finishes downloading them. +pref("app.update.staging.enabled", true); + +// Update service URL: +pref("app.update.url", "https://aus3.mozilla.org/update/3/%PRODUCT%/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml"); +// app.update.url.manual is in branding section +// app.update.url.details is in branding section + +// User-settable override to app.update.url for testing purposes. +//pref("app.update.url.override", ""); + +// app.update.interval is in branding section +// app.update.promptWaitTime is in branding section + +// Show the Update Checking/Ready UI when the user was idle for x seconds +pref("app.update.idletime", 60); + +// Whether or not we show a dialog box informing the user that the update was +// successfully applied. This is off in Firefox by default since we show a +// upgrade start page instead! Other apps may wish to show this UI, and supply +// a whatsNewURL field in their brand.properties that contains a link to a page +// which tells users what's new in this new update. +pref("app.update.showInstalledUI", false); + +// 0 = suppress prompting for incompatibilities if there are updates available +// to newer versions of installed addons that resolve them. +// 1 = suppress prompting for incompatibilities only if there are VersionInfo +// updates available to installed addons that resolve them, not newer +// versions. +pref("app.update.incompatible.mode", 0); + +// Symmetric (can be overridden by individual extensions) update preferences. +// e.g. +// extensions.{GUID}.update.enabled +// extensions.{GUID}.update.url +// .. etc .. +// +pref("extensions.update.enabled", true); +pref("extensions.update.url", "https://versioncheck.addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=%APP_OS%&appABI=%APP_ABI%&locale=%APP_LOCALE%¤tAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%"); +pref("extensions.update.background.url", "https://versioncheck-bg.addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=%APP_OS%&appABI=%APP_ABI%&locale=%APP_LOCALE%¤tAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%"); +pref("extensions.update.interval", 86400); // Check for updates to Extensions and + // Themes every day +// Non-symmetric (not shared by extensions) extension-specific [update] preferences +pref("extensions.dss.enabled", false); // Dynamic Skin Switching +pref("extensions.dss.switchPending", false); // Non-dynamic switch pending after next + // restart. + +pref("extensions.{972ce4c6-7e08-4474-a285-3208198ce6fd}.name", "chrome://browser/locale/browser.properties"); +pref("extensions.{972ce4c6-7e08-4474-a285-3208198ce6fd}.description", "chrome://browser/locale/browser.properties"); + +pref("xpinstall.whitelist.add", "addons.mozilla.org,www.palemoon.org,addons.palemoon.org"); +pref("xpinstall.whitelist.add.36", ""); +pref("xpinstall.whitelist.add.180", ""); +pref("xpinstall.whitelist.required", false); +// Allow installing XPI add-ons by direct URL requests (no referrer) +pref("xpinstall.whitelist.directRequest", true); +// Allow installing XPI add-ons from file referrers (chrome/file) +pref("xpinstall.whitelist.fileRequest", true); + +pref("extensions.install.requireBuiltInCerts", false); +// Only allow installation of extensions from https, chrome or file schemes +pref("extensions.install.requireSecureOrigin", false); +// Allow installation of distribution/bundles extensions +pref("extensions.installDistroAddons", true); + +pref("lightweightThemes.update.enabled", true); +pref("lightweightThemes.animation.enabled", false); + +pref("keyword.enabled", true); + +pref("general.useragent.locale", "@AB_CD@"); +pref("general.skins.selectedSkin", "classic/1.0"); + +pref("general.smoothScroll", true); +#ifdef UNIX_BUT_NOT_MAC +pref("general.autoScroll", false); +#else +pref("general.autoScroll", true); +#endif + +pref("general.useragent.complexOverride.moodle", false); // bug 797703 + +// At startup, check if we're the default browser and prompt user if not. +pref("browser.shell.checkDefaultBrowser", true); +pref("browser.shell.shortcutFavicons",true); + +// 0 = blank, 1 = home (browser.startup.homepage), 2 = last visited page, 3 = resume previous browser session +// The behavior of option 3 is detailed at: http://wiki.mozilla.org/Session_Restore +pref("browser.startup.page", 1); +pref("browser.startup.homepage", "chrome://branding/locale/browserconfig.properties"); + +pref("browser.slowStartup.notificationDisabled", false); +pref("browser.slowStartup.timeThreshold", 60000); +pref("browser.slowStartup.maxSamples", 5); + +pref("browser.enable_automatic_image_resizing", true); +pref("browser.chrome.site_icons", true); +pref("browser.chrome.favicons", true); +// browser.warnOnQuit == false will override all other possible prompts when quitting or restarting +pref("browser.warnOnQuit", true); +// browser.showQuitWarning specifically controls the quit warning dialog. We +// might still show the window closing dialog with showQuitWarning == false. +pref("browser.showQuitWarning", false); +pref("browser.fullscreen.autohide", true); +pref("browser.fullscreen.animateUp", 1); +pref("browser.overlink-delay", 80); + +pref("browser.urlbar.clickSelectsAll", true); +pref("browser.urlbar.doubleClickSelectsAll", false); +pref("browser.urlbar.autoFill", true); +pref("browser.urlbar.autoFill.typed", true); +// 0: Match anywhere (e.g., middle of words) +// 1: Match on word boundaries and then try matching anywhere +// 2: Match only on word boundaries (e.g., after / or .) +// 3: Match at the beginning of the url or title +pref("browser.urlbar.matchBehavior", 1); +pref("browser.urlbar.filter.javascript", true); + +// the maximum number of results to show in autocomplete when doing richResults +pref("browser.urlbar.maxRichResults", 12); +// The amount of time (ms) to wait after the user has stopped typing +// before starting to perform autocomplete. 50 is the default set in +// autocomplete.xml. +pref("browser.urlbar.delay", 50); + +// The special characters below can be typed into the urlbar to either restrict +// the search to visited history, bookmarked, tagged pages; or force a match on +// just the title text or url. +pref("browser.urlbar.restrict.history", "^"); +pref("browser.urlbar.restrict.bookmark", "*"); +pref("browser.urlbar.restrict.tag", "+"); +pref("browser.urlbar.restrict.openpage", "%"); +pref("browser.urlbar.restrict.typed", "~"); +pref("browser.urlbar.match.title", "#"); +pref("browser.urlbar.match.url", "@"); + +// The default behavior for the urlbar can be configured to use any combination +// of the match filters with each additional filter adding more results (union). +pref("browser.urlbar.suggest.history", true); +pref("browser.urlbar.suggest.bookmark", true); +pref("browser.urlbar.suggest.openpage", true); + +// Restrictions to current suggestions can also be applied (intersection). +// Typed suggestion works only if history is set to true. +pref("browser.urlbar.suggest.history.onlyTyped", false); + +pref("browser.urlbar.formatting.enabled", true); +pref("browser.urlbar.trimURLs", true); + +// Display punycode in identity panel: +// 0 = Display IDN name +// 1 = Display punycode name for DV domains +// 2 = Also display punycode for HTTP sites if IDN name used +pref("browser.identity.display_punycode", 1); + +// Address bar RSS icon control, show by default +pref("browser.urlbar.rss", true); + +pref("browser.altClickSave", false); + +// Enable logging downloads operations to the Error Console. +pref("browser.download.debug", false); + +// Number of milliseconds to wait for the http headers (and thus +// the Content-Disposition filename) before giving up and falling back to +// picking a filename without that info in hand so that the user sees some +// feedback from their action. +pref("browser.download.saveLinkAsFilenameTimeout", 4000); + +pref("browser.download.useDownloadDir", true); + +pref("browser.download.folderList", 1); +pref("browser.download.manager.showAlertOnComplete", true); +pref("browser.download.manager.showAlertInterval", 2000); +pref("browser.download.manager.retention", 2); +pref("browser.download.manager.showWhenStarting", true); +pref("browser.download.manager.closeWhenDone", false); +pref("browser.download.manager.focusWhenStarting", false); +pref("browser.download.manager.flashCount", 2); +pref("browser.download.manager.addToRecentDocs", true); +pref("browser.download.manager.quitBehavior", 2); +pref("browser.download.manager.scanWhenDone", true); +pref("browser.download.manager.resumeOnWakeDelay", 10000); + +// This records whether or not the panel has been shown at least once. +pref("browser.download.panel.shown", false); + +// This records whether or not at least one session with the Downloads Panel +// enabled has been completed already. +pref("browser.download.panel.firstSessionCompleted", false); + +// search engines URL +pref("browser.search.searchEnginesURL", "https://addons.mozilla.org/%LOCALE%/firefox/search-engines/"); + +// pointer to the default engine name +pref("browser.search.defaultenginename", "chrome://browser-region/locale/region.properties"); + +// disable logging for the search service by default +pref("browser.search.log", false); + +// Ordering of Search Engines in the Engine list. +pref("browser.search.order.1", "chrome://browser-region/locale/region.properties"); +pref("browser.search.order.2", "chrome://browser-region/locale/region.properties"); +pref("browser.search.order.3", "chrome://browser-region/locale/region.properties"); +pref("browser.search.order.4", "chrome://browser-region/locale/region.properties"); + +// search bar results always open in a new tab +pref("browser.search.openintab", false); + +// context menu searches open in the foreground +pref("browser.search.context.loadInBackground", false); + +// if no result, add the search term so that the panel of the new UI is shown anyway +pref("browser.search.showOneOffButtons", true); + +// send ping to the server to update +pref("browser.search.update", true); + +// disable logging for the search service update system by default +pref("browser.search.update.log", false); + +// Check whether we need to perform engine updates every 6 hours +pref("browser.search.update.interval", 21600); + +// enable search suggestions by default +pref("browser.search.suggest.enabled", true); + +#ifdef MOZ_OFFICIAL_BRANDING +// {moz:official} expands to "official" +pref("browser.search.official", true); +#endif + +pref("browser.sessionhistory.max_entries", 50); + +// handle links targeting new windows +// 1=current window/tab, 2=new window, 3=new tab in most recent window +pref("browser.link.open_newwindow", 3); + +// handle external links (i.e. links opened from a different application) +// default: use browser.link.open_newwindow +// 1-3: see browser.link.open_newwindow for interpretation +pref("browser.link.open_newwindow.override.external", -1); + +// 0: no restrictions - divert everything +// 1: don't divert window.open at all +// 2: don't divert window.open with features +pref("browser.link.open_newwindow.restriction", 2); + +// If true, this pref causes windows opened by window.open to be forced into new +// tabs (rather than potentially opening separate windows, depending on +// window.open arguments) when the browser is in fullscreen mode. +// We set this differently on Mac because the fullscreen implementation there is +// different. +#ifdef XP_MACOSX +pref("browser.link.open_newwindow.disabled_in_fullscreen", true); +#else +pref("browser.link.open_newwindow.disabled_in_fullscreen", false); +#endif + +// Tabbed browser +pref("browser.tabs.autoHide", false); +pref("browser.tabs.closeWindowWithLastTab", true); +pref("browser.tabs.insertRelatedAfterCurrent", true); +pref("browser.tabs.warnOnClose", true); +pref("browser.tabs.warnOnCloseOtherTabs", true); +pref("browser.tabs.warnOnOpen", true); +pref("browser.tabs.maxOpenBeforeWarn", 15); +pref("browser.tabs.loadInBackground", true); +pref("browser.tabs.opentabfor.middleclick", true); +pref("browser.tabs.loadDivertedInBackground", false); +pref("browser.tabs.loadBookmarksInBackground", false); +pref("browser.tabs.noWindowActivationOnExternal", false); +pref("browser.tabs.tabClipWidth", 140); +pref("browser.tabs.animate", true); +pref("browser.tabs.onTop", true); +#ifdef XP_WIN +pref("browser.tabs.drawInTitlebar", true); +#else +pref("browser.tabs.drawInTitlebar", false); +#endif +pref("browser.tabs.resize_immediately", false); + +// Where to show tab close buttons: +// 0 on active tab only +// 1 on all tabs until tabClipWidth is reached, then active tab only +// 2 no close buttons at all +// 3 at the end of the tabstrip +pref("browser.tabs.closeButtons", 1); + +// When tabs opened by links in other tabs via a combination of +// browser.link.open_newwindow being set to 3 and target="_blank" etc are +// closed: +// true return to the tab that opened this tab (its owner) +// false return to the adjacent tab (old default) +pref("browser.tabs.selectOwnerOnClose", true); + +pref("browser.allTabs.previews", false); +pref("browser.ctrlTab.previews", false); +pref("browser.ctrlTab.recentlyUsedLimit", 7); + +// By default, do not export HTML at shutdown. +// If true, at shutdown the bookmarks in your menu and toolbar will +// be exported as HTML to the bookmarks.html file. +pref("browser.bookmarks.autoExportHTML", false); + +// The maximum number of daily bookmark backups to +// keep in {PROFILEDIR}/bookmarkbackups. Special values: +// -1: unlimited +// 0: no backups created (and deletes all existing backups) +pref("browser.bookmarks.max_backups", 10); + +// Scripts & Windows prefs +pref("dom.disable_open_during_load", true); +pref("javascript.options.showInConsole", true); +#ifdef DEBUG +pref("general.warnOnAboutConfig", false); +#endif + +// This is the pref to control the location bar, change this to true to +// force this - this makes the origin of popup windows more obvious to avoid +// spoofing. We would rather not do it by default because it affects UE for web +// applications, but without it there isn't a really good way to prevent chrome +// spoofing, see bug 337344 +pref("dom.disable_window_open_feature.location", true); +// prevent JS from setting status messages +pref("dom.disable_window_status_change", true); +// allow JS to move and resize existing windows +pref("dom.disable_window_move_resize", false); +// prevent JS from monkeying with window focus, etc +pref("dom.disable_window_flip", true); + +// Disable touch events on Desktop Firefox by default until they are properly +// supported (bug 736048) +pref("dom.w3c_touch_events.enabled", 0); + +// popups.policy 1=allow,2=reject +pref("privacy.popups.policy", 1); +pref("privacy.popups.usecustom", true); +pref("privacy.popups.showBrowserMessage", true); + +pref("privacy.item.cookies", false); + +pref("privacy.clearOnShutdown.history", true); +pref("privacy.clearOnShutdown.formdata", true); +pref("privacy.clearOnShutdown.passwords", false); +pref("privacy.clearOnShutdown.downloads", true); +pref("privacy.clearOnShutdown.cookies", true); +pref("privacy.clearOnShutdown.cache", true); +pref("privacy.clearOnShutdown.sessions", true); +pref("privacy.clearOnShutdown.offlineApps", false); +pref("privacy.clearOnShutdown.siteSettings", false); +pref("privacy.clearOnShutdown.connectivityData", false); + +pref("privacy.cpd.history", true); +pref("privacy.cpd.formdata", true); +pref("privacy.cpd.passwords", false); +pref("privacy.cpd.downloads", true); +pref("privacy.cpd.cookies", true); +pref("privacy.cpd.cache", true); +pref("privacy.cpd.sessions", true); +pref("privacy.cpd.offlineApps", false); +pref("privacy.cpd.siteSettings", false); +pref("privacy.cpd.connectivityData", false); + +// What default should we use for the time span in the sanitizer: +// 0 - Clear everything +// 1 - Last Hour +// 2 - Last 2 Hours +// 3 - Last 4 Hours +// 4 - Today +pref("privacy.sanitize.timeSpan", 1); +pref("privacy.sanitize.sanitizeOnShutdown", false); + +pref("privacy.sanitize.migrateFx3Prefs", false); + +pref("network.proxy.share_proxy_settings", false); // use the same proxy settings for all protocols + +// simple gestures support +pref("browser.gesture.swipe.left", "Browser:BackOrBackDuplicate"); +pref("browser.gesture.swipe.right", "Browser:ForwardOrForwardDuplicate"); +pref("browser.gesture.swipe.up", "cmd_scrollTop"); +pref("browser.gesture.swipe.down", "cmd_scrollBottom"); +#ifdef XP_MACOSX +pref("browser.gesture.pinch.latched", true); +pref("browser.gesture.pinch.threshold", 150); +#else +pref("browser.gesture.pinch.latched", false); +pref("browser.gesture.pinch.threshold", 25); +#endif +#ifdef XP_WIN +// Enabled for touch input display zoom. +pref("browser.gesture.pinch.out", "cmd_fullZoomEnlarge"); +pref("browser.gesture.pinch.in", "cmd_fullZoomReduce"); +pref("browser.gesture.pinch.out.shift", "cmd_fullZoomReset"); +pref("browser.gesture.pinch.in.shift", "cmd_fullZoomReset"); +#else +// Disabled by default due to issues with track pad input. +pref("browser.gesture.pinch.out", ""); +pref("browser.gesture.pinch.in", ""); +pref("browser.gesture.pinch.out.shift", ""); +pref("browser.gesture.pinch.in.shift", ""); +#endif +pref("browser.gesture.twist.latched", false); +pref("browser.gesture.twist.threshold", 0); +pref("browser.gesture.twist.right", "cmd_gestureRotateRight"); +pref("browser.gesture.twist.left", "cmd_gestureRotateLeft"); +pref("browser.gesture.twist.end", "cmd_gestureRotateEnd"); +pref("browser.gesture.tap", "cmd_fullZoomReset"); + +pref("browser.snapshots.limit", 0); + +// 0: Nothing happens +// 1: Scroll contents +// 2: Go back or go forward, in your history +// 3: Zoom in or out +// 4: Scroll contents with X and Y swapped +#ifdef XP_MACOSX +// On OS X, if the wheel has one axis only, shift+wheel comes through as a +// horizontal scroll event. Thus, we can't assign anything other than normal +// scrolling to shift+wheel. +pref("mousewheel.with_alt.action", 2); +pref("mousewheel.with_shift.action", 1); +// On MacOS X, control+wheel is typically handled by system and we don't +// receive the event. So, command key which is the main modifier key for +// acceleration is the best modifier for zoom-in/out. However, we should keep +// the control key setting for backward compatibility. +pref("mousewheel.with_meta.action", 3); // command key on Mac +// Disable control-/meta-modified horizontal mousewheel events, since +// those are used on Mac as part of modified swipe gestures (e.g. +// Left swipe+Cmd = go back in a new tab). +pref("mousewheel.with_control.action.override_x", 0); +pref("mousewheel.with_meta.action.override_x", 0); +#else +pref("mousewheel.with_alt.action", 1); +pref("mousewheel.with_shift.action", 2); +pref("mousewheel.with_meta.action", 1); // win key on Win, Super/Hyper on Linux +#endif +pref("mousewheel.with_control.action",3); +pref("mousewheel.with_win.action", 1); + +pref("browser.xul.error_pages.enabled", true); +pref("browser.xul.error_pages.expert_bad_cert", false); + +// Work Offline is best manually managed by the user. +pref("network.manage-offline-status", false); + +// We want to make sure mail URLs are handled externally... +pref("network.protocol-handler.external.mailto", true); // for mail +pref("network.protocol-handler.external.news", true); // for news +pref("network.protocol-handler.external.snews", true); // for secure news +pref("network.protocol-handler.external.nntp", true); // also news +#ifdef XP_WIN +pref("network.protocol-handler.external.ms-windows-store", true); +#endif + +// ...without warning dialogs +pref("network.protocol-handler.warn-external.mailto", false); +pref("network.protocol-handler.warn-external.news", false); +pref("network.protocol-handler.warn-external.snews", false); +pref("network.protocol-handler.warn-external.nntp", false); +#ifdef XP_WIN +pref("network.protocol-handler.warn-external.ms-windows-store", false); +#endif + +// By default, all protocol handlers are exposed. This means that +// the browser will respond to openURL commands for all URL types. +// It will also try to open link clicks inside the browser before +// failing over to the system handlers. +pref("network.protocol-handler.expose-all", true); +pref("network.protocol-handler.expose.mailto", false); +pref("network.protocol-handler.expose.news", false); +pref("network.protocol-handler.expose.snews", false); +pref("network.protocol-handler.expose.nntp", false); + +pref("accessibility.typeaheadfind", false); +pref("accessibility.typeaheadfind.timeout", 5000); +pref("accessibility.typeaheadfind.linksonly", false); +pref("accessibility.typeaheadfind.flashBar", 1); + +// by default we show an infobar message when pages require plugins that are blocked, or are outdated +pref("plugins.hide_infobar_for_blocked_plugin", false); +pref("plugins.hide_infobar_for_outdated_plugin", false); + +// Pale Moon:pref to always show the plugin indicator or not (default=false) +pref("plugins.always_show_indicator", false); + +pref("plugins.update.url", "https://www.mozilla.org/%LOCALE%/plugincheck/"); +pref("plugins.update.notifyUser", false); + +//Enable tri-state option (Always/Never/Ask) +pref("plugins.click_to_play", true); + +#ifdef XP_WIN +pref("browser.preferences.instantApply", false); +#else +pref("browser.preferences.instantApply", true); +#endif +#ifdef XP_MACOSX +pref("browser.preferences.animateFadeIn", true); +#else +pref("browser.preferences.animateFadeIn", false); +#endif + +pref("browser.download.show_plugins_in_list", true); +pref("browser.download.hide_plugins_without_extensions", true); + +// Backspace and Shift+Backspace behavior +// 0 goes Back/Forward +// 1 act like PgUp/PgDown +// 2 and other values, nothing +#ifdef UNIX_BUT_NOT_MAC +pref("browser.backspace_action", 2); +#else +pref("browser.backspace_action", 0); +#endif + +// this will automatically enable inline spellchecking (if it is available) for +// editable elements in HTML +// 0 = spellcheck nothing +// 1 = check multi-line controls [default] +// 2 = check multi/single line controls +pref("layout.spellcheckDefault", 1); + +pref("browser.send_pings", false); + +/* initial web feed readers list */ +pref("browser.contentHandlers.types.0.title", "chrome://browser-region/locale/region.properties"); +pref("browser.contentHandlers.types.0.uri", "chrome://browser-region/locale/region.properties"); +pref("browser.contentHandlers.types.0.type", "application/vnd.mozilla.maybe.feed"); +pref("browser.contentHandlers.types.1.title", "chrome://browser-region/locale/region.properties"); +pref("browser.contentHandlers.types.1.uri", "chrome://browser-region/locale/region.properties"); +pref("browser.contentHandlers.types.1.type", "application/vnd.mozilla.maybe.feed"); +pref("browser.contentHandlers.types.2.title", "chrome://browser-region/locale/region.properties"); +pref("browser.contentHandlers.types.2.uri", "chrome://browser-region/locale/region.properties"); +pref("browser.contentHandlers.types.2.type", "application/vnd.mozilla.maybe.feed"); +pref("browser.contentHandlers.types.3.title", "chrome://browser-region/locale/region.properties"); +pref("browser.contentHandlers.types.3.uri", "chrome://browser-region/locale/region.properties"); +pref("browser.contentHandlers.types.3.type", "application/vnd.mozilla.maybe.feed"); +pref("browser.contentHandlers.types.4.title", "chrome://browser-region/locale/region.properties"); +pref("browser.contentHandlers.types.4.uri", "chrome://browser-region/locale/region.properties"); +pref("browser.contentHandlers.types.4.type", "application/vnd.mozilla.maybe.feed"); +pref("browser.contentHandlers.types.5.title", "chrome://browser-region/locale/region.properties"); +pref("browser.contentHandlers.types.5.uri", "chrome://browser-region/locale/region.properties"); +pref("browser.contentHandlers.types.5.type", "application/vnd.mozilla.maybe.feed"); + +pref("browser.feeds.handler", "ask"); +pref("browser.videoFeeds.handler", "ask"); +pref("browser.audioFeeds.handler", "ask"); + +// At startup, if the handler service notices that the version number in the +// region.properties file is newer than the version number in the handler +// service datastore, it will add any new handlers it finds in the prefs (as +// seeded by this file) to its datastore. +pref("goanna.handlerService.defaultHandlersVersion", "chrome://browser-region/locale/region.properties"); + +// The default set of web-based protocol handlers shown in the application +// selection dialog for webcal: ; I've arbitrarily picked 4 default handlers +// per protocol, but if some locale wants more than that (or defaults for some +// protocol not currently listed here), we should go ahead and add those. + +// webcal +pref("goanna.handlerService.schemes.webcal.0.name", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.webcal.0.uriTemplate", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.webcal.1.name", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.webcal.1.uriTemplate", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.webcal.2.name", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.webcal.2.uriTemplate", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.webcal.3.name", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.webcal.3.uriTemplate", "chrome://browser-region/locale/region.properties"); + +// mailto +pref("goanna.handlerService.schemes.mailto.0.name", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.mailto.0.uriTemplate", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.mailto.1.name", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.mailto.1.uriTemplate", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.mailto.2.name", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.mailto.2.uriTemplate", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.mailto.3.name", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.mailto.3.uriTemplate", "chrome://browser-region/locale/region.properties"); + +// irc +pref("goanna.handlerService.schemes.irc.0.name", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.irc.0.uriTemplate", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.irc.1.name", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.irc.1.uriTemplate", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.irc.2.name", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.irc.2.uriTemplate", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.irc.3.name", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.irc.3.uriTemplate", "chrome://browser-region/locale/region.properties"); + +// ircs +pref("goanna.handlerService.schemes.ircs.0.name", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.ircs.0.uriTemplate", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.ircs.1.name", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.ircs.1.uriTemplate", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.ircs.2.name", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.ircs.2.uriTemplate", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.ircs.3.name", "chrome://browser-region/locale/region.properties"); +pref("goanna.handlerService.schemes.ircs.3.uriTemplate", "chrome://browser-region/locale/region.properties"); + +// By default, we don't want protocol/content handlers to be registered from a different host, see bug 402287 +pref("goanna.handlerService.allowRegisterFromDifferentHost", false); + +pref("browser.geolocation.warning.infoURL", "http://www.palemoon.org/info-url/geolocation.shtml"); +pref("browser.mixedcontent.warning.infoURL", "http://www.palemoon.org/info-url/mixedcontent.shtml"); + +pref("browser.EULA.version", 3); +pref("browser.rights.version", 3); +pref("browser.rights.3.shown", false); + +#ifdef DEBUG +// Don't show the about:rights notification in debug builds. +pref("browser.rights.override", true); +#endif + +pref("browser.sessionstore.resume_from_crash", true); +pref("browser.sessionstore.resume_session_once", false); + +// minimal interval between two save operations in milliseconds +pref("browser.sessionstore.interval", 15000); +// maximum amount of POSTDATA to be saved in bytes per history entry (-1 = all of it) +// (NB: POSTDATA will be saved either entirely or not at all) +pref("browser.sessionstore.postdata", 0); +// on which sites to save text data, POSTDATA and cookies +// 0 = everywhere, 1 = unencrypted sites, 2 = nowhere +pref("browser.sessionstore.privacy_level", 0); +// the same as browser.sessionstore.privacy_level, but for saving deferred session data +pref("browser.sessionstore.privacy_level_deferred", 1); +// how many tabs can be reopened (per window) +pref("browser.sessionstore.max_tabs_undo", 10); +// how many windows can be reopened (per session) - on non-OS X platforms this +// pref may be ignored when dealing with pop-up windows to ensure proper startup +pref("browser.sessionstore.max_windows_undo", 3); +// number of crashes that can occur before the about:sessionrestore page is displayed +// (this pref has no effect if more than 6 hours have passed since the last crash) +pref("browser.sessionstore.max_resumed_crashes", 1); +// number of back button session history entries to save (-1 = all of them) +pref("browser.sessionstore.max_serialize_back", 10); +// number of forward button session history entries to save (-1 = all of them) +pref("browser.sessionstore.max_serialize_forward", -1); +// restore_on_demand overrides browser.sessionstore.max_concurrent_tabs +// and restore_hidden_tabs. When true, tabs will not be restored until they are +// focused (also applies to tabs that aren't visible). When false, the values +// for browser.sessionstore.max_concurrent_tabs and restore_hidden_tabs are +// respected. Selected tabs are always restored regardless of this pref. +pref("browser.sessionstore.restore_on_demand", true); +// The number of tabs that can restore concurrently. +// Sane values are 1..10, default 3. +pref("browser.sessionstore.max_concurrent_tabs", 3); +// Whether to automatically restore hidden tabs (i.e., tabs in other tab groups) or not +pref("browser.sessionstore.restore_hidden_tabs", false); +// If restore_on_demand is set, pinned tabs are restored on startup by default. +// When set to true, this pref overrides that behavior, and pinned tabs will only +// be restored when they are focused. +pref("browser.sessionstore.restore_pinned_tabs_on_demand", false); +// Pale Moon: Allow the user to bypass cached versions of pages when restoring +// tabs from a previous session +// 0 = standard behavior: pull fully from cache +// 1 = perform a soft refresh when restoring a tab (check network) +// 2 = perform a hard refresh when restoring a tab (bypass cache completely) +pref("browser.sessionstore.cache_behavior", 0); +// Pale Moon: Allow exact positioning of windows to previous locations, even +// if they would be outside of the screen bounds +pref("browser.sessionstore.exactPos", false); + +// allow META refresh by default +pref("accessibility.blockautorefresh", false); + +// Whether history is enabled or not. +pref("places.history.enabled", true); + +// the (maximum) number of the recent visits to sample +// when calculating frecency +pref("places.frecency.numVisits", 10); + +// buckets (in days) for frecency calculation +pref("places.frecency.firstBucketCutoff", 4); +pref("places.frecency.secondBucketCutoff", 14); +pref("places.frecency.thirdBucketCutoff", 31); +pref("places.frecency.fourthBucketCutoff", 90); + +// weights for buckets for frecency calculations +pref("places.frecency.firstBucketWeight", 100); +pref("places.frecency.secondBucketWeight", 70); +pref("places.frecency.thirdBucketWeight", 50); +pref("places.frecency.fourthBucketWeight", 30); +pref("places.frecency.defaultBucketWeight", 10); + +// bonus (in percent) for visit transition types for frecency calculations +pref("places.frecency.embedVisitBonus", 0); +pref("places.frecency.framedLinkVisitBonus", 0); +pref("places.frecency.linkVisitBonus", 100); +pref("places.frecency.typedVisitBonus", 2000); +pref("places.frecency.bookmarkVisitBonus", 75); +pref("places.frecency.downloadVisitBonus", 0); +pref("places.frecency.permRedirectVisitBonus", 0); +pref("places.frecency.tempRedirectVisitBonus", 0); +pref("places.frecency.defaultVisitBonus", 0); + +// bonus (in percent) for place types for frecency calculations +pref("places.frecency.unvisitedBookmarkBonus", 140); +pref("places.frecency.unvisitedTypedBonus", 200); + +// Controls behavior of the "Add Exception" dialog launched from SSL error pages +// 0 - don't pre-populate anything +// 1 - pre-populate site URL, but don't fetch certificate +// 2 - pre-populate site URL and pre-fetch certificate +pref("browser.ssl_override_behavior", 2); + +// Controls the behavior of data storage for offline apps +// 0 - Deny storage of offline app data without prompting (breaks sites!) +// 1 - Ask the user if a website wants to store offline app data +// 2 - Allow storage of offline app data without prompting (default) +pref("offline-apps.permissions", 2); +// True if storage of offline app data is allowed without prompting. +pref("offline-apps.allow_by_default", true); +// True if the user should be prompted when a web application supports +// offline apps. +pref("browser.offline-apps.notify", true); + +// if true, use full page zoom instead of text zoom +pref("browser.zoom.full", true); + +// Whether or not to save and restore zoom levels on a per-site basis. +pref("browser.zoom.siteSpecific", true); + +// Whether or not to update background tabs to the current zoom level. +pref("browser.zoom.updateBackgroundTabs", true); + +// base URL for web-based support pages +pref("app.support.baseURL", "https://support.mozilla.org/1/firefox/%VERSION%/%OS%/%LOCALE%/"); + +// Name of alternate about: page for certificate errors (when undefined, defaults to about:neterror) +pref("security.alternate_certificate_error_page", "certerror"); + +// Whether to start the private browsing mode at application startup +pref("browser.privatebrowsing.autostart", false); + +// Don't try to alter this pref, it'll be reset the next time you use the +// bookmarking dialog +pref("browser.bookmarks.editDialog.firstEditField", "namePicker"); + +// Whether to use a panel that looks like an OS X sheet for customization +#ifdef XP_MACOSX +pref("toolbar.customization.usesheet", true); +#else +pref("toolbar.customization.usesheet", false); +#endif + +#ifdef XP_MACOSX +// On mac, the default pref is per-architecture +pref("dom.ipc.plugins.enabled.i386", true); +pref("dom.ipc.plugins.enabled.x86_64", true); +#else +pref("dom.ipc.plugins.enabled", true); +#endif + +pref("browser.tabs.remote", false); + +// This pref governs whether we attempt to work around problems caused by +// plugins using OS calls to manipulate the cursor while running out-of- +// process. These workarounds all involve intercepting (hooking) certain +// OS calls in the plugin process, then arranging to make certain OS calls +// in the browser process. Eventually plugins will be required to use the +// NPAPI to manipulate the cursor, and these workarounds will be removed. +// See bug 621117. +#ifdef XP_MACOSX +pref("dom.ipc.plugins.nativeCursorSupport", true); +#endif + +#ifdef XP_WIN +pref("browser.taskbar.previews.enable", false); +pref("browser.taskbar.previews.max", 20); +pref("browser.taskbar.previews.cachetime", 5); +pref("browser.taskbar.lists.enabled", true); +pref("browser.taskbar.lists.frequent.enabled", true); +pref("browser.taskbar.lists.recent.enabled", false); +pref("browser.taskbar.lists.maxListItemCount", 7); +pref("browser.taskbar.lists.tasks.enabled", true); +pref("browser.taskbar.lists.refreshInSeconds", 120); +#endif + +#ifdef MOZ_SERVICES_SYNC +// Info when outdated sync detected +pref("services.sync.outdated.url", "http://www.palemoon.org/sync/update/"); +// The sync engines to use. +pref("services.sync.registerEngines", "Bookmarks,Form,History,Password,Prefs,Tab,Addons"); +// Preferences to be synced by default +pref("services.sync.prefs.sync.accessibility.blockautorefresh", true); +pref("services.sync.prefs.sync.accessibility.browsewithcaret", true); +pref("services.sync.prefs.sync.accessibility.typeaheadfind", true); +pref("services.sync.prefs.sync.accessibility.typeaheadfind.linksonly", true); +pref("services.sync.prefs.sync.addons.ignoreUserEnabledChanges", true); +// The addons prefs related to repository verification are intentionally +// not synced for security reasons. If a system is compromised, a user +// could weaken the pref locally, install an add-on from an untrusted +// source, and this would propagate automatically to other, +// uncompromised Sync-connected devices. +pref("services.sync.prefs.sync.app.update.mode", true); +pref("services.sync.prefs.sync.browser.download.manager.closeWhenDone", true); +pref("services.sync.prefs.sync.browser.download.manager.retention", true); +pref("services.sync.prefs.sync.browser.download.manager.scanWhenDone", true); +pref("services.sync.prefs.sync.browser.download.manager.showWhenStarting", true); +pref("services.sync.prefs.sync.browser.formfill.enable", true); +pref("services.sync.prefs.sync.browser.link.open_newwindow", true); +pref("services.sync.prefs.sync.browser.offline-apps.notify", true); +pref("services.sync.prefs.sync.browser.search.selectedEngine", true); +pref("services.sync.prefs.sync.browser.search.update", true); +pref("services.sync.prefs.sync.browser.sessionstore.restore_on_demand", true); +pref("services.sync.prefs.sync.browser.startup.homepage", true); +pref("services.sync.prefs.sync.browser.startup.page", true); +pref("services.sync.prefs.sync.browser.tabs.autoHide", true); +pref("services.sync.prefs.sync.browser.tabs.closeButtons", true); +pref("services.sync.prefs.sync.browser.tabs.loadInBackground", true); +pref("services.sync.prefs.sync.browser.tabs.warnOnClose", true); +pref("services.sync.prefs.sync.browser.tabs.warnOnOpen", true); +pref("services.sync.prefs.sync.browser.urlbar.autocomplete.enabled", true); +pref("services.sync.prefs.sync.browser.urlbar.default.behavior", true); +pref("services.sync.prefs.sync.browser.urlbar.maxRichResults", true); +pref("services.sync.prefs.sync.dom.disable_open_during_load", true); +pref("services.sync.prefs.sync.dom.disable_window_flip", true); +pref("services.sync.prefs.sync.dom.disable_window_move_resize", true); +pref("services.sync.prefs.sync.dom.event.contextmenu.enabled", true); +pref("services.sync.prefs.sync.extensions.personas.current", true); +pref("services.sync.prefs.sync.extensions.update.enabled", true); +pref("services.sync.prefs.sync.intl.accept_languages", true); +pref("services.sync.prefs.sync.javascript.enabled", true); +pref("services.sync.prefs.sync.layout.spellcheckDefault", true); +pref("services.sync.prefs.sync.lightweightThemes.isThemeSelected", true); +pref("services.sync.prefs.sync.lightweightThemes.usedThemes", true); +pref("services.sync.prefs.sync.network.cookie.cookieBehavior", true); +pref("services.sync.prefs.sync.network.cookie.lifetimePolicy", true); +pref("services.sync.prefs.sync.permissions.default.image", true); +pref("services.sync.prefs.sync.pref.advanced.images.disable_button.view_image", true); +pref("services.sync.prefs.sync.pref.advanced.javascript.disable_button.advanced", true); +pref("services.sync.prefs.sync.pref.downloads.disable_button.edit_actions", true); +pref("services.sync.prefs.sync.pref.privacy.disable_button.cookie_exceptions", true); +pref("services.sync.prefs.sync.privacy.clearOnShutdown.cache", true); +pref("services.sync.prefs.sync.privacy.clearOnShutdown.cookies", true); +pref("services.sync.prefs.sync.privacy.clearOnShutdown.downloads", true); +pref("services.sync.prefs.sync.privacy.clearOnShutdown.formdata", true); +pref("services.sync.prefs.sync.privacy.clearOnShutdown.history", true); +pref("services.sync.prefs.sync.privacy.clearOnShutdown.offlineApps", true); +pref("services.sync.prefs.sync.privacy.clearOnShutdown.passwords", true); +pref("services.sync.prefs.sync.privacy.clearOnShutdown.sessions", true); +pref("services.sync.prefs.sync.privacy.clearOnShutdown.siteSettings", true); +pref("services.sync.prefs.sync.privacy.clearOnShutdown.connectivityData", true); +pref("services.sync.prefs.sync.privacy.donottrackheader.enabled", true); +pref("services.sync.prefs.sync.privacy.donottrackheader.value", true); +pref("services.sync.prefs.sync.privacy.sanitize.sanitizeOnShutdown", true); +pref("services.sync.prefs.sync.security.OCSP.enabled", true); +pref("services.sync.prefs.sync.security.OCSP.require", true); +pref("services.sync.prefs.sync.security.default_personal_cert", true); +pref("services.sync.prefs.sync.security.tls.version.min", true); +pref("services.sync.prefs.sync.security.tls.version.max", true); +pref("services.sync.prefs.sync.signon.rememberSignons", true); +pref("services.sync.prefs.sync.spellchecker.dictionary", true); +pref("services.sync.prefs.sync.xpinstall.whitelist.required", true); +#endif + + + +// Enable the error console +pref("devtools.errorconsole.enabled", true); + +// Whether the character encoding menu is under the main Firefox button. This +// preference is a string so that localizers can alter it. +pref("browser.menu.showCharacterEncoding", "chrome://browser/locale/browser.properties"); + +// Allow using tab-modal prompts when possible. +pref("prompts.tab_modal.enabled", true); +// Allow tab-modal prompts to switch tab focus +pref("prompts.tab_modal.focusSwitch", true); + +// Whether the Panorama should animate going in/out of tabs +pref("browser.panorama.animate_zoom", true); + +// Defines the url to be used for new tabs. +pref("browser.newtab.url", "about:logopage"); +// Activates preloading of the new tab url. +pref("browser.newtab.preload", false); + +// Toggles the content of 'about:newtab'. Shows the grid when enabled. +pref("browser.newtabpage.enabled", true); + +// number of columns of newtab grid +pref("browser.newtabpage.columns", 4); + +// number of rows of newtab grid +pref("browser.newtabpage.rows", 4); + +// Enable the DOM fullscreen API. +pref("full-screen-api.enabled", true); + +// True if the fullscreen API requires approval upon a domain entering fullscreen. +// Domains that have already had fullscreen permission granted won't re-request +// approval. +pref("full-screen-api.approval-required", true); + +// about:permissions +// Maximum number of sites to return from the places database. +// 0-100 (currently) +pref("permissions.places-sites-limit", 50); + +// Startup Crash Tracking +// number of startup crashes that can occur before starting into safe mode automatically +// (this pref has no effect if more than 6 hours have passed since the last crash) +pref("toolkit.startup.max_resumed_crashes", 3); + +// The maximum amount of decoded image data we'll willingly keep around (we +// might keep around more than this, but we'll try to get down to this value). +// (This is intentionally on the high side; see bug 746055.) +pref("image.mem.max_decoded_image_kb", 256000); + +// Turn on the CSP 1.0 parser for Content Security Policy headers +pref("security.csp.speccompliant", true); + +// Block insecure active content on https pages +pref("security.mixed_content.block_active_content", true); + + +// Override the Goanna-default value of false for Firefox. +pref("plain_text.wrap_long_lines", true); + +pref("media.webaudio.enabled", true); + +// If this turns true, Moz*Gesture events are not called stopPropagation() +// before content. +pref("dom.debug.propagate_gesture_events_through_content", false); + +// The request URL of the GeoLocation backend. +pref("geo.wifi.uri", "http://ip-api.com/json/?fields=lat,lon,status,message"); + +//Pale Moon padlock overlay preferences +pref("browser.padlock.shown", true); +/* Where to show the padlock + 1 = inside identity button, right side + 2 = inside identity button, left side + 3 = urlbar, right side (next to bookmark star) + 4 = statusbar + 5 = tabs bar, right side + 6-10 = same locations, classic style padlock */ +pref("browser.padlock.style", 1); +// address bar border, 0 = no border, 1 = border, 2 = border only on secure sites +pref("browser.padlock.urlbar_background", 2); + +//Pale Moon standalone image background color +pref("browser.display.standalone_images.background_color", "#2E3B41"); + +// ****************** domain-specific UAs ****************** + +// AMO needs "Firefox", obviously - pass on the OS (determined at build time) +#ifdef XP_UNIX +#ifdef XP_MACOSX +pref("general.useragent.override.addons.mozilla.org","Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:27.9) Gecko/20100101 Firefox/27.9 (Pale Moon)"); +#else +pref("general.useragent.override.addons.mozilla.org","Mozilla/5.0 (Linux; X11; rv:27.9) Gecko/20100101 Firefox/27.9 (Pale Moon)"); +#endif +#else +pref("general.useragent.override.addons.mozilla.org","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.9) Gecko/20100101 Firefox/27.9 (Pale Moon)"); +#endif + +// ****************** s4e prefs ****************** +pref("status4evar.addonbar.borderStyle", false); +pref("status4evar.addonbar.closeButton", false); +pref("status4evar.addonbar.legacyShim", true); +pref("status4evar.addonbar.windowGripper", true); + +pref("status4evar.advanced.status.detectFullScreen", false); +pref("status4evar.advanced.status.detectVideo", true); + +pref("status4evar.download.button.action", 1); +pref("status4evar.download.button.action.command", ""); +pref("status4evar.download.color.active", "#333399"); +pref("status4evar.download.color.paused", "#808080"); +pref("status4evar.download.force", false); +pref("status4evar.download.label", 0); +pref("status4evar.download.label.force", true); +pref("status4evar.download.notify.animate", true); +pref("status4evar.download.notify.timeout", 60); +pref("status4evar.download.progress", 1); +pref("status4evar.download.tooltip", 2); + +pref("status4evar.firstRun", true); + +pref("status4evar.progress.toolbar.css", "#333399"); +pref("status4evar.progress.toolbar.force", false); +pref("status4evar.progress.toolbar.style", false); +pref("status4evar.progress.toolbar.style.advanced", false); + +pref("status4evar.status", 1); +pref("status4evar.status.default", true); +pref("status4evar.status.network", true); +pref("status4evar.status.network.xhr", true); +pref("status4evar.status.timeout", 30); +pref("status4evar.status.linkOver", 1); +pref("status4evar.status.linkOver.delay.show", 0); +pref("status4evar.status.linkOver.delay.hide", 0); + +pref("status4evar.status.toolbar.maxLength", 0); + +pref("status4evar.status.popup.invertMirror", false); +pref("status4evar.status.popup.mouseMirror", true); diff --git a/application/palemoon/app/profile/prefs.js b/application/palemoon/app/profile/prefs.js new file mode 100644 index 0000000000..8c6f0d6390 --- /dev/null +++ b/application/palemoon/app/profile/prefs.js @@ -0,0 +1,13 @@ +/* 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/. */ + +# Mozilla User Preferences + +/* Do not edit this file. + * + * If you make changes to this file while the browser is running, + * the changes will be overwritten when the browser exits. + * + * To make a manual change to preferences, you can visit the URL about:config + */ diff --git a/application/palemoon/app/splash.rc b/application/palemoon/app/splash.rc new file mode 100644 index 0000000000..539c342c85 --- /dev/null +++ b/application/palemoon/app/splash.rc @@ -0,0 +1,21 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* 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/. */ + +#include +#include "nsNativeAppSupportWin.h" + +1 24 "palemoon.exe.manifest" + +IDI_APPICON ICON FIREFOX_ICO +IDI_DOCUMENT ICON DOCUMENT_ICO +IDI_APPLICATION ICON FIREFOX_ICO +IDI_NEWWINDOW ICON NEWWINDOW_ICO +IDI_NEWTAB ICON NEWTAB_ICO +IDI_PBMODE ICON PBMODE_ICO + +STRINGTABLE DISCARDABLE +BEGIN + IDS_STARTMENU_APPNAME, "@MOZ_APP_DISPLAYNAME@" +END diff --git a/application/palemoon/base/content/aboutDialog.css b/application/palemoon/base/content/aboutDialog.css new file mode 100644 index 0000000000..aa79b0795c --- /dev/null +++ b/application/palemoon/base/content/aboutDialog.css @@ -0,0 +1,70 @@ +/* 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/. */ + +#PMaboutDialog { + width: 620px; +} + +#PMrightBox { + background-image: url("chrome://branding/content/about-wordmark.png"); + background-repeat: no-repeat; + /* padding-top creates room for the wordmark */ + padding-top: 38px; + margin-top:20px; +} + +#PMrightBox:-moz-locale-dir(rtl) { + background-position: 100% 0; +} + +#PMbottomBox { + padding: 15px 10px 0; +} + +#PMversion { + margin-top: 10px; + -moz-margin-start: 0; + -moz-user-select: text; + -moz-user-focus: normal; + cursor: text; +} + +#distribution, +#distributionId { + font-weight: bold; + display: none; + margin-top: 0; + margin-bottom: 0; +} + +.text-blurb { + margin-bottom: 10px; + -moz-margin-start: 0; + -moz-padding-start: 0; +} + +#updateButton, +#updateDeck > hbox > label { + -moz-margin-start: 0; + -moz-padding-start: 0; +} + +.update-throbber { + width: 16px; + min-height: 16px; + -moz-margin-end: 3px; + list-style-image: url("chrome://global/skin/icons/loading_16.png"); +} + +.text-link, +.text-link:focus { + margin: 0px; + padding: 0px; +} + +.bottom-link, +.bottom-link:focus { + text-align: center; + margin: 0 40px; +} diff --git a/application/palemoon/base/content/aboutDialog.js b/application/palemoon/base/content/aboutDialog.js new file mode 100644 index 0000000000..f4c2a990ca --- /dev/null +++ b/application/palemoon/base/content/aboutDialog.js @@ -0,0 +1,590 @@ +# 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/. + +// Services = object with smart getters for common XPCOM services +Components.utils.import("resource://gre/modules/Services.jsm"); + +function init(aEvent) +{ + if (aEvent.target != document) + return; + + try { + var distroId = Services.prefs.getCharPref("distribution.id"); + if (distroId) { + var distroVersion = Services.prefs.getCharPref("distribution.version"); + + var distroIdField = document.getElementById("distributionId"); + distroIdField.value = distroId + " - " + distroVersion; + distroIdField.style.display = "block"; + + try { + // This is in its own try catch due to bug 895473 and bug 900925. + var distroAbout = Services.prefs.getComplexValue("distribution.about", + Components.interfaces.nsISupportsString); + var distroField = document.getElementById("distribution"); + distroField.value = distroAbout; + distroField.style.display = "block"; + } + catch (ex) { + // Pref is unset + Components.utils.reportError(ex); + } + } + } + catch (e) { + // Pref is unset + } + + // Include the build ID if this is an "a#" or "b#" build + let version = Services.appinfo.version; + if (/[ab]\d+$/.test(version)) { + let buildID = Services.appinfo.appBuildID; + let buildDate = buildID.slice(0,4) + "-" + buildID.slice(4,6) + "-" + buildID.slice(6,8); + document.getElementById("PMversion").textContent += " (" + buildDate + ")"; + } + +#ifdef MOZ_UPDATER + gAppUpdater = new appUpdater(); +#endif + +#ifdef XP_MACOSX + // it may not be sized at this point, and we need its width to calculate its position + window.sizeToContent(); + window.moveTo((screen.availWidth / 2) - (window.outerWidth / 2), screen.availHeight / 5); +#endif + +// get release notes URL from prefs + var formatter = Components.classes["@mozilla.org/toolkit/URLFormatterService;1"] + .getService(Components.interfaces.nsIURLFormatter); + var releaseNotesURL = formatter.formatURLPref("app.releaseNotesURL"); + if (releaseNotesURL != "about:blank") { + var relnotes = document.getElementById("releaseNotesURL"); + relnotes.setAttribute("href", releaseNotesURL); + } +} + +#ifdef MOZ_UPDATER +Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); +Components.utils.import("resource://gre/modules/DownloadUtils.jsm"); +Components.utils.import("resource://gre/modules/AddonManager.jsm"); + +var gAppUpdater; + +function onUnload(aEvent) { + if (gAppUpdater.isChecking) + gAppUpdater.checker.stopChecking(Components.interfaces.nsIUpdateChecker.CURRENT_CHECK); + // Safe to call even when there isn't a download in progress. + gAppUpdater.removeDownloadListener(); + gAppUpdater = null; +} + + +function appUpdater() +{ + this.updateDeck = document.getElementById("updateDeck"); + + // Hide the update deck when there is already an update window open to avoid + // syncing issues between them. + if (Services.wm.getMostRecentWindow("Update:Wizard")) { + this.updateDeck.hidden = true; + return; + } + + XPCOMUtils.defineLazyServiceGetter(this, "aus", + "@mozilla.org/updates/update-service;1", + "nsIApplicationUpdateService"); + XPCOMUtils.defineLazyServiceGetter(this, "checker", + "@mozilla.org/updates/update-checker;1", + "nsIUpdateChecker"); + XPCOMUtils.defineLazyServiceGetter(this, "um", + "@mozilla.org/updates/update-manager;1", + "nsIUpdateManager"); + + this.bundle = Services.strings. + createBundle("chrome://browser/locale/browser.properties"); + + this.updateBtn = document.getElementById("updateButton"); + + // The button label value must be set so its height is correct. + this.setupUpdateButton("update.checkInsideButton"); + + let manualURL = Services.urlFormatter.formatURLPref("app.update.url.manual"); + let manualLink = document.getElementById("manualLink"); + manualLink.value = manualURL; + manualLink.href = manualURL; + document.getElementById("failedLink").href = manualURL; + + if (this.updateDisabledAndLocked) { + this.selectPanel("adminDisabled"); + return; + } + + if (this.isPending || this.isApplied) { + this.setupUpdateButton("update.restart." + + (this.isMajor ? "upgradeButton" : "updateButton")); + return; + } + + if (this.aus.isOtherInstanceHandlingUpdates) { + this.selectPanel("otherInstanceHandlingUpdates"); + return; + } + + if (this.isDownloading) { + this.startDownload(); + return; + } + + if (this.updateEnabled && this.updateAuto) { + this.selectPanel("checkingForUpdates"); + this.isChecking = true; + this.checker.checkForUpdates(this.updateCheckListener, true); + return; + } +} + +appUpdater.prototype = +{ + // true when there is an update check in progress. + isChecking: false, + + // true when there is an update already staged / ready to be applied. + get isPending() { + if (this.update) { + return this.update.state == "pending" || + this.update.state == "pending-service"; + } + return this.um.activeUpdate && + (this.um.activeUpdate.state == "pending" || + this.um.activeUpdate.state == "pending-service"); + }, + + // true when there is an update already installed in the background. + get isApplied() { + if (this.update) + return this.update.state == "applied" || + this.update.state == "applied-service"; + return this.um.activeUpdate && + (this.um.activeUpdate.state == "applied" || + this.um.activeUpdate.state == "applied-service"); + }, + + // true when there is an update download in progress. + get isDownloading() { + if (this.update) + return this.update.state == "downloading"; + return this.um.activeUpdate && + this.um.activeUpdate.state == "downloading"; + }, + + // true when the update type is major. + get isMajor() { + if (this.update) + return this.update.type == "major"; + return this.um.activeUpdate.type == "major"; + }, + + // true when updating is disabled by an administrator. + get updateDisabledAndLocked() { + return !this.updateEnabled && + Services.prefs.prefIsLocked("app.update.enabled"); + }, + + // true when updating is enabled. + get updateEnabled() { + try { + return Services.prefs.getBoolPref("app.update.enabled"); + } + catch (e) { } + return true; // Firefox default is true + }, + + // true when updating in background is enabled. + get backgroundUpdateEnabled() { + return this.updateEnabled && + gAppUpdater.aus.canStageUpdates; + }, + + // true when updating is automatic. + get updateAuto() { + try { + return Services.prefs.getBoolPref("app.update.auto"); + } + catch (e) { } + return true; // Firefox default is true + }, + + /** + * Sets the deck's selected panel. + * + * @param aChildID + * The id of the deck's child to select. + */ + selectPanel: function(aChildID) { + this.updateDeck.selectedPanel = document.getElementById(aChildID); + this.updateBtn.disabled = (aChildID != "updateButtonBox"); + }, + + /** + * Sets the update button's label and accesskey. + * + * @param aKeyPrefix + * The prefix for the properties file entry to use for setting the + * label and accesskey. + */ + setupUpdateButton: function(aKeyPrefix) { + this.updateBtn.label = this.bundle.GetStringFromName(aKeyPrefix + ".label"); + this.updateBtn.accessKey = this.bundle.GetStringFromName(aKeyPrefix + ".accesskey"); + if (!document.commandDispatcher.focusedElement || + document.commandDispatcher.focusedElement == this.updateBtn) + this.updateBtn.focus(); + }, + + /** + * Handles oncommand for the update button. + */ + buttonOnCommand: function() { + if (this.isPending || this.isApplied) { + // Notify all windows that an application quit has been requested. + let cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"]. + createInstance(Components.interfaces.nsISupportsPRBool); + Services.obs.notifyObservers(cancelQuit, "quit-application-requested", "restart"); + + // Something aborted the quit process. + if (cancelQuit.data) + return; + + let appStartup = Components.classes["@mozilla.org/toolkit/app-startup;1"]. + getService(Components.interfaces.nsIAppStartup); + + // If already in safe mode restart in safe mode (bug 327119) + if (Services.appinfo.inSafeMode) { + appStartup.restartInSafeMode(Components.interfaces.nsIAppStartup.eAttemptQuit); + return; + } + + appStartup.quit(Components.interfaces.nsIAppStartup.eAttemptQuit | + Components.interfaces.nsIAppStartup.eRestart); + return; + } + + const URI_UPDATE_PROMPT_DIALOG = "chrome://mozapps/content/update/updates.xul"; + // Firefox no longer displays a license for updates and the licenseURL check + // is just in case a distibution does. + if (this.update) { + var ary = null; + ary = Components.classes["@mozilla.org/supports-array;1"]. + createInstance(Components.interfaces.nsISupportsArray); + ary.AppendElement(this.update); + var openFeatures = "chrome,centerscreen,dialog=no,resizable=no,titlebar,toolbar=no"; + Services.ww.openWindow(null, URI_UPDATE_PROMPT_DIALOG, "", openFeatures, ary); + window.close(); + return; + } + + this.selectPanel("checkingForUpdates"); + this.isChecking = true; + this.checker.checkForUpdates(this.updateCheckListener, true); + }, + + /** + * Implements nsIUpdateCheckListener. The methods implemented by + * nsIUpdateCheckListener are in a different scope from nsIIncrementalDownload + * to make it clear which are used by each interface. + */ + updateCheckListener: { + /** + * See nsIUpdateService.idl + */ + onCheckComplete: function(aRequest, aUpdates, aUpdateCount) { + gAppUpdater.isChecking = false; + gAppUpdater.update = gAppUpdater.aus. + selectUpdate(aUpdates, aUpdates.length); + if (!gAppUpdater.update) { + gAppUpdater.selectPanel("noUpdatesFound"); + return; + } + + if (gAppUpdater.update.unsupported) { + if (gAppUpdater.update.detailsURL) { + let unsupportedLink = document.getElementById("unsupportedLink"); + unsupportedLink.href = gAppUpdater.update.detailsURL; + } + gAppUpdater.selectPanel("unsupportedSystem"); + return; + } + + if (!gAppUpdater.aus.canApplyUpdates) { + gAppUpdater.selectPanel("manualUpdate"); + return; + } + + gAppUpdater.selectPanel("updateButtonBox"); + gAppUpdater.setupUpdateButton("update.openUpdateUI." + + (this.isMajor ? "upgradeButton" + : "applyButton")); + }, + + /** + * See nsIUpdateService.idl + */ + onError: function(aRequest, aUpdate) { + // Errors in the update check are treated as no updates found. If the + // update check fails repeatedly without a success the user will be + // notified with the normal app update user interface so this is safe. + gAppUpdater.isChecking = false; + gAppUpdater.selectPanel("noUpdatesFound"); + }, + + /** + * See nsISupports.idl + */ + QueryInterface: function(aIID) { + if (!aIID.equals(Components.interfaces.nsIUpdateCheckListener) && + !aIID.equals(Components.interfaces.nsISupports)) + throw Components.results.NS_ERROR_NO_INTERFACE; + return this; + } + }, + + /** + * Checks the compatibility of add-ons for the application update. + */ + checkAddonCompatibility: function() { + var self = this; + AddonManager.getAllAddons(function(aAddons) { + self.addons = []; + self.addonsCheckedCount = 0; + aAddons.forEach(function(aAddon) { + // Protect against code that overrides the add-ons manager and doesn't + // implement the isCompatibleWith or the findUpdates method. + if (!("isCompatibleWith" in aAddon) || !("findUpdates" in aAddon)) { + let errMsg = "Add-on doesn't implement either the isCompatibleWith " + + "or the findUpdates method!"; + if (aAddon.id) + errMsg += " Add-on ID: " + aAddon.id; + Components.utils.reportError(errMsg); + return; + } + + // If an add-on isn't appDisabled and isn't userDisabled then it is + // either active now or the user expects it to be active after the + // restart. If that is the case and the add-on is not installed by the + // application and is not compatible with the new application version + // then the user should be warned that the add-on will become + // incompatible. If an addon's type equals plugin it is skipped since + // checking plugins compatibility information isn't supported and + // getting the scope property of a plugin breaks in some environments + // (see bug 566787). + try { + if (aAddon.type != "plugin" && aAddon.isCompatible && + !aAddon.appDisabled && !aAddon.userDisabled && + aAddon.scope != AddonManager.SCOPE_APPLICATION && + !aAddon.isCompatibleWith(self.update.appVersion, + self.update.platformVersion)) + self.addons.push(aAddon); + } + catch (e) { + Components.utils.reportError(e); + } + }); + self.addonsTotalCount = self.addons.length; + if (self.addonsTotalCount == 0) { + self.startDownload(); + return; + } + + self.checkAddonsForUpdates(); + }); + }, + + /** + * Checks if there are updates for add-ons that are incompatible with the + * application update. + */ + checkAddonsForUpdates: function() { + this.addons.forEach(function(aAddon) { + aAddon.findUpdates(this, AddonManager.UPDATE_WHEN_NEW_APP_DETECTED, + this.update.appVersion, + this.update.platformVersion); + }, this); + }, + + /** + * See XPIProvider.jsm + */ + onCompatibilityUpdateAvailable: function(aAddon) { + for (var i = 0; i < this.addons.length; ++i) { + if (this.addons[i].id == aAddon.id) { + this.addons.splice(i, 1); + break; + } + } + }, + + /** + * See XPIProvider.jsm + */ + onUpdateAvailable: function(aAddon, aInstall) { + if (!Services.blocklist.isAddonBlocklisted(aAddon.id, aInstall.version, + this.update.appVersion, + this.update.platformVersion)) { + // Compatibility or new version updates mean the same thing here. + this.onCompatibilityUpdateAvailable(aAddon); + } + }, + + /** + * See XPIProvider.jsm + */ + onUpdateFinished: function(aAddon) { + ++this.addonsCheckedCount; + + if (this.addonsCheckedCount < this.addonsTotalCount) + return; + + if (this.addons.length == 0) { + // Compatibility updates or new version updates were found for all add-ons + this.startDownload(); + return; + } + + this.selectPanel("updateButtonBox"); + this.setupUpdateButton("update.openUpdateUI." + + (this.isMajor ? "upgradeButton" : "applyButton")); + }, + + /** + * Starts the download of an update mar. + */ + startDownload: function() { + if (!this.update) + this.update = this.um.activeUpdate; + this.update.QueryInterface(Components.interfaces.nsIWritablePropertyBag); + this.update.setProperty("foregroundDownload", "true"); + + this.aus.pauseDownload(); + let state = this.aus.downloadUpdate(this.update, false); + if (state == "failed") { + this.selectPanel("downloadFailed"); + return; + } + + this.setupDownloadingUI(); + }, + + /** + * Switches to the UI responsible for tracking the download. + */ + setupDownloadingUI: function() { + this.downloadStatus = document.getElementById("downloadStatus"); + this.downloadStatus.value = + DownloadUtils.getTransferTotal(0, this.update.selectedPatch.size); + this.selectPanel("downloading"); + this.aus.addDownloadListener(this); + }, + + removeDownloadListener: function() { + if (this.aus) { + this.aus.removeDownloadListener(this); + } + }, + + /** + * See nsIRequestObserver.idl + */ + onStartRequest: function(aRequest, aContext) { + }, + + /** + * See nsIRequestObserver.idl + */ + onStopRequest: function(aRequest, aContext, aStatusCode) { + switch (aStatusCode) { + case Components.results.NS_ERROR_UNEXPECTED: + if (this.update.selectedPatch.state == "download-failed" && + (this.update.isCompleteUpdate || this.update.patchCount != 2)) { + // Verification error of complete patch, informational text is held in + // the update object. + this.removeDownloadListener(); + this.selectPanel("downloadFailed"); + break; + } + // Verification failed for a partial patch, complete patch is now + // downloading so return early and do NOT remove the download listener! + break; + case Components.results.NS_BINDING_ABORTED: + // Do not remove UI listener since the user may resume downloading again. + break; + case Components.results.NS_OK: + this.removeDownloadListener(); + if (this.backgroundUpdateEnabled) { + this.selectPanel("applying"); + let update = this.um.activeUpdate; + let self = this; + Services.obs.addObserver(function (aSubject, aTopic, aData) { + // Update the UI when the background updater is finished + let status = aData; + if (status == "applied" || status == "applied-service" || + status == "pending" || status == "pending-service") { + // If the update is successfully applied, or if the updater has + // fallen back to non-staged updates, show the Restart to Update + // button. + self.selectPanel("updateButtonBox"); + self.setupUpdateButton("update.restart." + + (self.isMajor ? "upgradeButton" : "updateButton")); + } else if (status == "failed") { + // Background update has failed, let's show the UI responsible for + // prompting the user to update manually. + self.selectPanel("downloadFailed"); + } else if (status == "downloading") { + // We've fallen back to downloading the full update because the + // partial update failed to get staged in the background. + // Therefore we need to keep our observer. + self.setupDownloadingUI(); + return; + } + Services.obs.removeObserver(arguments.callee, "update-staged"); + }, "update-staged", false); + } else { + this.selectPanel("updateButtonBox"); + this.setupUpdateButton("update.restart." + + (this.isMajor ? "upgradeButton" : "updateButton")); + } + break; + default: + this.removeDownloadListener(); + this.selectPanel("downloadFailed"); + break; + } + + }, + + /** + * See nsIProgressEventSink.idl + */ + onStatus: function(aRequest, aContext, aStatus, aStatusArg) { + }, + + /** + * See nsIProgressEventSink.idl + */ + onProgress: function(aRequest, aContext, aProgress, aProgressMax) { + this.downloadStatus.value = + DownloadUtils.getTransferTotal(aProgress, aProgressMax); + }, + + /** + * See nsISupports.idl + */ + QueryInterface: function(aIID) { + if (!aIID.equals(Components.interfaces.nsIProgressEventSink) && + !aIID.equals(Components.interfaces.nsIRequestObserver) && + !aIID.equals(Components.interfaces.nsISupports)) + throw Components.results.NS_ERROR_NO_INTERFACE; + return this; + } +}; +#endif diff --git a/application/palemoon/base/content/aboutDialog.xul b/application/palemoon/base/content/aboutDialog.xul new file mode 100644 index 0000000000..1ba8f06a1a --- /dev/null +++ b/application/palemoon/base/content/aboutDialog.xul @@ -0,0 +1,120 @@ + + +# 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/. + + + + + + +%brandDTD; + +%aboutDialogDTD; +]> + +#ifdef XP_MACOSX + +#endif + + + + + + + + + + + +
+ + +
+

&robots.errorTitleText;

+
+ + +
+ + +
+

&robots.errorShortDescText;

+
+ + +
+
    +
  • &robots.errorLongDesc1;
  • +
  • &robots.errorLongDesc2;
  • +
  • &robots.errorLongDesc3;
  • +
  • &robots.errorLongDesc4;
  • +
+
+ + +
+

&robots.errorTrailerDescText;

+
+ +
+ + + + + + +
+ + + diff --git a/application/palemoon/base/content/abouthome/aboutHome.css b/application/palemoon/base/content/abouthome/aboutHome.css new file mode 100644 index 0000000000..73c6862021 --- /dev/null +++ b/application/palemoon/base/content/abouthome/aboutHome.css @@ -0,0 +1,339 @@ +%if 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/. */ +%endif + +html { + font: message-box; + font-size: 100%; + background-color: hsl(0,0%,90%); + color: #000; + height: 100%; +} + +body { + margin: 0; + display: -moz-box; + -moz-box-orient: vertical; + width: 100%; + height: 100%; + background-image: url(chrome://browser/content/abouthome/noise.png), + linear-gradient(hsla(0,0%,100%,.7), hsla(0,0%,100%,.4)); +} + +input, +button { + font-size: inherit; + font-family: inherit; +} + +a { + color: -moz-nativehyperlinktext; + text-decoration: none; +} + +.spacer { + -moz-box-flex: 1; +} + +#topSection { + text-align: center; +} + +#brandLogo { + height: 192px; + width: 192px; + margin: 22px auto 31px; + background-image: url("chrome://branding/content/about-logo.png"); + background-size: 192px auto; + background-position: center center; + background-repeat: no-repeat; +} + +#searchForm { + width: 470px; +} + +#searchForm { + display: -moz-box; +} + +#searchLogoContainer { + display: -moz-box; + -moz-box-align: center; + padding-top: 2px; + -moz-padding-end: 8px; +} + +#searchLogoContainer[hidden] { + display: none; +} + +#searchEngineLogo { + display: inline-block; + height: 28px; + width: 70px; + min-width: 70px; +} + +#searchText { + -moz-box-flex: 1; + padding: 6px 8px; + background: hsla(0,0%,100%,.9) padding-box; + border: 1px solid; + border-color: hsla(210,54%,20%,.15) hsla(210,54%,20%,.17) hsla(210,54%,20%,.2); + box-shadow: 0 1px 0 hsla(210,65%,9%,.02) inset, + 0 0 2px hsla(210,65%,9%,.1) inset, + 0 1px 0 hsla(0,0%,100%,.2); + border-radius: 2.5px 0 0 2.5px; +} + +#searchText:-moz-dir(rtl) { + border-radius: 0 2.5px 2.5px 0; +} + +#searchText:focus, +#searchText[autofocus] { + border-color: hsla(206,100%,60%,.6) hsla(206,76%,52%,.6) hsla(204,100%,40%,.6); +} + +#searchSubmit { + -moz-margin-start: -1px; + background: linear-gradient(hsla(0,0%,100%,.8), hsla(0,0%,100%,.1)) padding-box; + padding: 0 9px; + border: 1px solid; + border-color: hsla(210,54%,20%,.15) hsla(210,54%,20%,.17) hsla(210,54%,20%,.2); + -moz-border-start: 1px solid transparent; + border-radius: 0 2.5px 2.5px 0; + box-shadow: 0 0 2px hsla(0,0%,100%,.5) inset, + 0 1px 0 hsla(0,0%,100%,.2); + cursor: pointer; + transition-property: background-color, border-color, box-shadow; + transition-duration: 150ms; +} + +#searchSubmit:-moz-dir(rtl) { + border-radius: 2.5px 0 0 2.5px; +} + +#searchText:focus + #searchSubmit, +#searchText + #searchSubmit:hover, +#searchText[autofocus] + #searchSubmit { + border-color: #59b5fc #45a3e7 #3294d5; + color: white; +} + +#searchText:focus + #searchSubmit, +#searchText[autofocus] + #searchSubmit { + background-image: linear-gradient(#4cb1ff, #1793e5); + box-shadow: 0 1px 0 hsla(0,0%,100%,.2) inset, + 0 0 0 1px hsla(0,0%,100%,.1) inset, + 0 1px 0 hsla(210,54%,20%,.03); +} + +#searchText + #searchSubmit:hover { + background-image: linear-gradient(#66bdff, #0d9eff); + box-shadow: 0 1px 0 hsla(0,0%,100%,.2) inset, + 0 0 0 1px hsla(0,0%,100%,.1) inset, + 0 1px 0 hsla(210,54%,20%,.03), + 0 0 4px hsla(206,100%,20%,.2); +} + +#searchText + #searchSubmit:hover:active { + box-shadow: 0 1px 1px hsla(211,79%,6%,.1) inset, + 0 0 1px hsla(211,79%,6%,.2) inset; + transition-duration: 0ms; +} + +#launcher { + display: -moz-box; + -moz-box-align: center; + -moz-box-pack: center; + width: 100%; + background-color: hsla(0,0%,0%,.03); + border-top: 1px solid hsla(0,0%,0%,.03); + box-shadow: 0 1px 2px hsla(0,0%,0%,.02) inset, + 0 -1px 0 hsla(0,0%,100%,.25); +} + +#launcher:not([session]), +body[narrow] #launcher[session] { + display: block; /* display separator and restore button on separate lines */ + text-align: center; + white-space: nowrap; /* prevent navigational buttons from wrapping */ +} + +.launchButton { + display: -moz-box; + -moz-box-orient: vertical; + margin: 16px 1px; + padding: 14px 6px; + min-width: 88px; + max-width: 176px; + max-height: 85px; + vertical-align: top; + white-space: normal; + background: transparent padding-box; + border: 1px solid transparent; + border-radius: 2.5px; + color: #525c66; + font-size: 75%; + cursor: pointer; + transition-property: background-color, border-color, box-shadow; + transition-duration: 150ms; +} + +body[narrow] #launcher[session] > .launchButton { + margin: 4px 1px; +} + +.launchButton:hover { + background-color: hsla(211,79%,6%,.03); + border-color: hsla(210,54%,20%,.15) hsla(210,54%,20%,.17) hsla(210,54%,20%,.2); +} + +.launchButton:hover:active { + background-image: linear-gradient(hsla(211,79%,6%,.02), hsla(211,79%,6%,.05)); + border-color: hsla(210,54%,20%,.2) hsla(210,54%,20%,.23) hsla(210,54%,20%,.25); + box-shadow: 0 1px 1px hsla(211,79%,6%,.05) inset, + 0 0 1px hsla(211,79%,6%,.1) inset; + transition-duration: 0ms; +} + +.launchButton[hidden], +#launcher:not([session]) > #restorePreviousSessionSeparator, +#launcher:not([session]) > #restorePreviousSession { + display: none; +} + +#restorePreviousSessionSeparator { + width: 3px; + height: 116px; + margin: 0 10px; + background-image: linear-gradient(hsla(0,0%,100%,0), hsla(0,0%,100%,.35), hsla(0,0%,100%,0)), + linear-gradient(hsla(211,79%,6%,0), hsla(211,79%,6%,.2), hsla(211,79%,6%,0)), + linear-gradient(hsla(0,0%,100%,0), hsla(0,0%,100%,.35), hsla(0,0%,100%,0)); + background-position: left top, center, right bottom; + background-size: 1px auto; + background-repeat: no-repeat; +} + +body[narrow] #restorePreviousSessionSeparator { + margin: 0 auto; + width: 512px; + height: 3px; + background-image: linear-gradient(to right, hsla(0,0%,100%,0), hsla(0,0%,100%,.35), hsla(0,0%,100%,0)), + linear-gradient(to right, hsla(211,79%,6%,0), hsla(211,79%,6%,.2), hsla(211,79%,6%,0)), + linear-gradient(to right, hsla(0,0%,100%,0), hsla(0,0%,100%,.35), hsla(0,0%,100%,0)); + background-size: auto 1px; +} + +#restorePreviousSession { + max-width: none; + font-size: 90%; +} + +body[narrow] #restorePreviousSession { + font-size: 80%; +} + +.launchButton::before { + display: block; + width: 32px; + height: 32px; + margin: 0 auto 6px; + line-height: 0; /* remove extra vertical space due to non-zero font-size */ +} + +#downloads::before { + content: url("chrome://browser/content/abouthome/downloads.png"); +} + +#bookmarks::before { + content: url("chrome://browser/content/abouthome/bookmarks.png"); +} + +#history::before { + content: url("chrome://browser/content/abouthome/history.png"); +} + +#addons::before { + content: url("chrome://browser/content/abouthome/addons.png"); +} + +#sync::before { + content: url("chrome://browser/content/abouthome/sync.png"); +} + +#settings::before { + content: url("chrome://browser/content/abouthome/settings.png"); +} + +#restorePreviousSession::before { + content: url("chrome://browser/content/abouthome/restore-large.png"); + height: 48px; + width: 48px; + display: inline-block; /* display on same line as text label */ + vertical-align: middle; + margin-bottom: 0; + -moz-margin-end: 8px; +} + +#restorePreviousSession:-moz-dir(rtl)::before { + transform: scaleX(-1); +} + +body[narrow] #restorePreviousSession::before { + content: url("chrome://browser/content/abouthome/restore.png"); + height: 32px; + width: 32px; +} + +/* [HiDPI] + * At resolutions above 1dppx, prefer downscaling the 2x Retina graphics + * rather than upscaling the original-size ones (bug 818940). + */ +@media not all and (max-resolution: 1dppx) { + #brandLogo { + background-image: url("chrome://branding/content/about-logo@2x.png"); + } + + .launchButton::before { + transform: scale(.5); + transform-origin: 0 0; + } + + #downloads::before { + content: url("chrome://browser/content/abouthome/downloads@2x.png"); + } + + #bookmarks::before { + content: url("chrome://browser/content/abouthome/bookmarks@2x.png"); + } + + #history::before { + content: url("chrome://browser/content/abouthome/history@2x.png"); + } + + #addons::before { + content: url("chrome://browser/content/abouthome/addons@2x.png"); + } + + #sync::before { + content: url("chrome://browser/content/abouthome/sync@2x.png"); + } + + #settings::before { + content: url("chrome://browser/content/abouthome/settings@2x.png"); + } + + #restorePreviousSession::before { + content: url("chrome://browser/content/abouthome/restore-large@2x.png"); + } + + body[narrow] #restorePreviousSession::before { + content: url("chrome://browser/content/abouthome/restore@2x.png"); + } +} + diff --git a/application/palemoon/base/content/abouthome/aboutHome.js b/application/palemoon/base/content/abouthome/aboutHome.js new file mode 100644 index 0000000000..9e826b69e9 --- /dev/null +++ b/application/palemoon/base/content/abouthome/aboutHome.js @@ -0,0 +1,354 @@ +/* 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 SEARCH_ENGINES = { + "Google": { + // This is the "2x" image designed for OS X retina resolution, Windows at 192dpi, etc.; + // it will be scaled down as necessary on lower-dpi displays. + image: "data:image/png;base64," + + "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" + }, + "DuckDuckGo": { + image: "data:image/png;base64," + + "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" + } +}; + +// This global tracks if the page has been set up before, to prevent double inits +let gInitialized = false; +let gObserver = new MutationObserver(function (mutations) { + for (let mutation of mutations) { + if (mutation.attributeName == "searchEngineURL") { + setupSearchEngine(); + if (!gInitialized) { + gInitialized = true; + } + return; + } + } +}); + +window.addEventListener("pageshow", function () { + // Delay search engine setup, cause browser.js::BrowserOnAboutPageLoad runs + // later and may use asynchronous getters. + window.gObserver.observe(document.documentElement, { attributes: true }); + fitToWidth(); + window.addEventListener("resize", fitToWidth); +}); + +window.addEventListener("pagehide", function() { + window.gObserver.disconnect(); + window.removeEventListener("resize", fitToWidth); +}); + +function onSearchSubmit(aEvent) +{ + let searchTerms = document.getElementById("searchText").value; + let searchURL = document.documentElement.getAttribute("searchEngineURL"); + + if (searchURL && searchTerms.length > 0) { + // Send an event that a search was performed. This was originally + // added so Firefox Health Report could record that a search from + // about:home had occurred. + let engineName = document.documentElement.getAttribute("searchEngineName"); + let event = new CustomEvent("AboutHomeSearchEvent", {detail: engineName}); + document.dispatchEvent(event); + + const SEARCH_TOKEN = "_searchTerms_"; + let searchPostData = document.documentElement.getAttribute("searchEnginePostData"); + if (searchPostData) { + // Check if a post form already exists. If so, remove it. + const POST_FORM_NAME = "searchFormPost"; + let form = document.forms[POST_FORM_NAME]; + if (form) { + form.parentNode.removeChild(form); + } + + // Create a new post form. + form = document.body.appendChild(document.createElement("form")); + form.setAttribute("name", POST_FORM_NAME); + // Set the URL to submit the form to. + form.setAttribute("action", searchURL.replace(SEARCH_TOKEN, searchTerms)); + form.setAttribute("method", "post"); + + // Create new elements for search param. + searchPostData = searchPostData.split("&"); + for (let postVar of searchPostData) { + let [name, value] = postVar.split("="); + if (value == SEARCH_TOKEN) { + value = searchTerms; + } + let input = document.createElement("input"); + input.setAttribute("type", "hidden"); + input.setAttribute("name", name); + input.setAttribute("value", value); + form.appendChild(input); + } + // Submit the form. + form.submit(); + } else { + searchURL = searchURL.replace(SEARCH_TOKEN, encodeURIComponent(searchTerms)); + window.location.href = searchURL; + } + } + + aEvent.preventDefault(); +} + + +function setupSearchEngine() +{ + // The "autofocus" attribute doesn't focus the form element + // immediately when the element is first drawn, so the + // attribute is also used for styling when the page first loads. + let searchText = document.getElementById("searchText"); + searchText.addEventListener("blur", function searchText_onBlur() { + searchText.removeEventListener("blur", searchText_onBlur); + searchText.removeAttribute("autofocus"); + }); + + let searchEngineName = document.documentElement.getAttribute("searchEngineName"); + let searchEngineInfo = SEARCH_ENGINES[searchEngineName]; + let logoElt = document.getElementById("searchEngineLogo"); + + // Add search engine logo. + if (searchEngineInfo && searchEngineInfo.image) { + logoElt.parentNode.hidden = false; + logoElt.src = searchEngineInfo.image; + logoElt.alt = searchEngineName; + searchText.placeholder = ""; + } + else { + logoElt.parentNode.hidden = true; + searchText.placeholder = searchEngineName; + } + +} + +function fitToWidth() { + if (window.scrollMaxX) { + document.body.setAttribute("narrow", "true"); + } else if (document.body.hasAttribute("narrow")) { + document.body.removeAttribute("narrow"); + fitToWidth(); + } +} diff --git a/application/palemoon/base/content/abouthome/aboutHome.xhtml b/application/palemoon/base/content/abouthome/aboutHome.xhtml new file mode 100644 index 0000000000..cb3fa634a6 --- /dev/null +++ b/application/palemoon/base/content/abouthome/aboutHome.xhtml @@ -0,0 +1,60 @@ + + + + + + %htmlDTD; + + %globalDTD; + + %aboutHomeDTD; + + %browserDTD; +]> + + + + &abouthome.pageTitle; + + + + + + + + + +
+ + +
+

&safeb.blocked.phishingPage.title;

+

&safeb.blocked.malwarePage.title;

+
+ +
+ + +
+

&safeb.blocked.phishingPage.shortDesc;

+

&safeb.blocked.malwarePage.shortDesc;

+
+ + +
+

&safeb.blocked.phishingPage.longDesc;

+

&safeb.blocked.malwarePage.longDesc;

+
+ + +
+ + + +
+
+
+ +
+
+ + + + diff --git a/application/palemoon/base/content/browser-addons.js b/application/palemoon/base/content/browser-addons.js new file mode 100644 index 0000000000..7993a0c9c9 --- /dev/null +++ b/application/palemoon/base/content/browser-addons.js @@ -0,0 +1,536 @@ +# -*- Mode: javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- +# 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/. + +// Removes a doorhanger notification if all of the installs it was notifying +// about have ended in some way. +function removeNotificationOnEnd(notification, installs) { + let count = installs.length; + + function maybeRemove(install) { + install.removeListener(this); + + if (--count == 0) { + // Check that the notification is still showing + let current = PopupNotifications.getNotification(notification.id, notification.browser); + if (current === notification) + notification.remove(); + } + } + + for (let install of installs) { + install.addListener({ + onDownloadCancelled: maybeRemove, + onDownloadFailed: maybeRemove, + onInstallFailed: maybeRemove, + onInstallEnded: maybeRemove + }); + } +} + +const gXPInstallObserver = { + _findChildShell: function (aDocShell, aSoughtShell) + { + if (aDocShell == aSoughtShell) + return aDocShell; + + var node = aDocShell.QueryInterface(Components.interfaces.nsIDocShellTreeItem); + for (var i = 0; i < node.childCount; ++i) { + var docShell = node.getChildAt(i); + docShell = this._findChildShell(docShell, aSoughtShell); + if (docShell == aSoughtShell) + return docShell; + } + return null; + }, + + _getBrowser: function (aDocShell) + { + for (let browser of gBrowser.browsers) { + if (this._findChildShell(browser.docShell, aDocShell)) + return browser; + } + return null; + }, + + observe: function (aSubject, aTopic, aData) + { + var brandBundle = document.getElementById("bundle_brand"); + var installInfo = aSubject.QueryInterface(Components.interfaces.amIWebInstallInfo); + var browser = installInfo.browser; + + // Make sure the browser is still alive. + if (!browser || gBrowser.browsers.indexOf(browser) == -1) + return; + + const anchorID = "addons-notification-icon"; + var messageString, action; + var brandShortName = brandBundle.getString("brandShortName"); + + var notificationID = aTopic; + // Make notifications persist a minimum of 30 seconds + var options = { + timeout: Date.now() + 30000 + }; + + switch (aTopic) { + case "addon-install-disabled": + notificationID = "xpinstall-disabled" + + if (gPrefService.prefIsLocked("xpinstall.enabled")) { + messageString = gNavigatorBundle.getString("xpinstallDisabledMessageLocked"); + buttons = []; + } + else { + messageString = gNavigatorBundle.getString("xpinstallDisabledMessage"); + + action = { + label: gNavigatorBundle.getString("xpinstallDisabledButton"), + accessKey: gNavigatorBundle.getString("xpinstallDisabledButton.accesskey"), + callback: function editPrefs() { + gPrefService.setBoolPref("xpinstall.enabled", true); + } + }; + } + + PopupNotifications.show(browser, notificationID, messageString, anchorID, + action, null, options); + break; + case "addon-install-origin-blocked": { + messageString = gNavigatorBundle.getFormattedString("xpinstallPromptWarningOrigin", + [brandShortName]); + + let popup = PopupNotifications.show(browser, notificationID, + messageString, anchorID, + null, null, options); + removeNotificationOnEnd(popup, installInfo.installs); + break; } + case "addon-install-blocked": + let originatingHost; + try { + originatingHost = installInfo.originatingURI.host; + } catch (ex) { + // Need to deal with missing originatingURI and with about:/data: URIs more gracefully, + // see bug 1063418 - but for now, bail: + return; + } + messageString = gNavigatorBundle.getFormattedString("xpinstallPromptWarning", + [brandShortName, originatingHost]); + + action = { + label: gNavigatorBundle.getString("xpinstallPromptAllowButton"), + accessKey: gNavigatorBundle.getString("xpinstallPromptAllowButton.accesskey"), + callback: function() { + installInfo.install(); + } + }; + + let popup = PopupNotifications.show(browser, notificationID, messageString, + anchorID, action, null, options); + removeNotificationOnEnd(popup, installInfo.installs); + break; + case "addon-install-started": + var needsDownload = function needsDownload(aInstall) { + return aInstall.state != AddonManager.STATE_DOWNLOADED; + } + // If all installs have already been downloaded then there is no need to + // show the download progress + if (!installInfo.installs.some(needsDownload)) + return; + notificationID = "addon-progress"; + messageString = gNavigatorBundle.getString("addonDownloading"); + messageString = PluralForm.get(installInfo.installs.length, messageString); + options.installs = installInfo.installs; + options.contentWindow = browser.contentWindow; + options.sourceURI = browser.currentURI; + options.eventCallback = function(aEvent) { + if (aEvent != "removed") + return; + options.contentWindow = null; + options.sourceURI = null; + }; + PopupNotifications.show(browser, notificationID, messageString, anchorID, + null, null, options); + break; + case "addon-install-failed": + // TODO This isn't terribly ideal for the multiple failure case + for (let install of installInfo.installs) { + let host = (installInfo.originatingURI instanceof Ci.nsIStandardURL) && + installInfo.originatingURI.host; + if (!host) + host = (install.sourceURI instanceof Ci.nsIStandardURL) && + install.sourceURI.host; + + let error = (host || install.error == 0) ? "addonError" : "addonLocalError"; + if (install.error != 0) + error += install.error; + else if (install.addon.jetsdk) + error += "JetSDK"; + else if (install.addon.blocklistState == Ci.nsIBlocklistService.STATE_BLOCKED) + error += "Blocklisted"; + else + error += "Incompatible"; + + messageString = gNavigatorBundle.getString(error); + messageString = messageString.replace("#1", install.name); + if (host) + messageString = messageString.replace("#2", host); + messageString = messageString.replace("#3", brandShortName); + messageString = messageString.replace("#4", Services.appinfo.version); + + PopupNotifications.show(browser, notificationID, messageString, anchorID, + action, null, options); + } + break; + case "addon-install-complete": + var needsRestart = installInfo.installs.some(function(i) { + return i.addon.pendingOperations != AddonManager.PENDING_NONE; + }); + + if (needsRestart) { + messageString = gNavigatorBundle.getString("addonsInstalledNeedsRestart"); + action = { + label: gNavigatorBundle.getString("addonInstallRestartButton"), + accessKey: gNavigatorBundle.getString("addonInstallRestartButton.accesskey"), + callback: function() { + Application.restart(); + } + }; + } + else { + messageString = gNavigatorBundle.getString("addonsInstalled"); + action = null; + } + + messageString = PluralForm.get(installInfo.installs.length, messageString); + messageString = messageString.replace("#1", installInfo.installs[0].name); + messageString = messageString.replace("#2", installInfo.installs.length); + messageString = messageString.replace("#3", brandShortName); + + // Remove notificaion on dismissal, since it's possible to cancel the + // install through the addons manager UI, making the "restart" prompt + // irrelevant. + options.removeOnDismissal = true; + + PopupNotifications.show(browser, notificationID, messageString, anchorID, + action, null, options); + break; + } + } +}; + +/* + * When addons are installed/uninstalled, check and see if the number of items + * on the add-on bar changed: + * - If an add-on was installed, incrementing the count, show the bar. + * - If an add-on was uninstalled, and no more items are left, hide the bar. + */ +let AddonsMgrListener = { + get addonBar() document.getElementById("addon-bar"), + get statusBar() document.getElementById("status-bar"), + getAddonBarItemCount: function() { + // Take into account the contents of the status bar shim for the count. + var itemCount = this.statusBar.childNodes.length; + + var defaultOrNoninteractive = this.addonBar.getAttribute("defaultset") + .split(",") + .concat(["separator", "spacer", "spring"]); + for (let item of this.addonBar.currentSet.split(",")) { + if (defaultOrNoninteractive.indexOf(item) == -1) + itemCount++; + } + + return itemCount; + }, + onInstalling: function(aAddon) { + this.lastAddonBarCount = this.getAddonBarItemCount(); + }, + onInstalled: function(aAddon) { + if (this.getAddonBarItemCount() > this.lastAddonBarCount) + setToolbarVisibility(this.addonBar, true); + }, + onUninstalling: function(aAddon) { + this.lastAddonBarCount = this.getAddonBarItemCount(); + }, + onUninstalled: function(aAddon) { + if (this.getAddonBarItemCount() == 0) + setToolbarVisibility(this.addonBar, false); + }, + onEnabling: function(aAddon) this.onInstalling(), + onEnabled: function(aAddon) this.onInstalled(), + onDisabling: function(aAddon) this.onUninstalling(), + onDisabled: function(aAddon) this.onUninstalled(), +}; + + +var LightWeightThemeWebInstaller = { + handleEvent: function (event) { + switch (event.type) { + case "InstallBrowserTheme": + case "PreviewBrowserTheme": + case "ResetBrowserThemePreview": + // ignore requests from background tabs + if (event.target.ownerDocument.defaultView.top != content) + return; + } + switch (event.type) { + case "InstallBrowserTheme": + this._installRequest(event); + break; + case "PreviewBrowserTheme": + this._preview(event); + break; + case "ResetBrowserThemePreview": + this._resetPreview(event); + break; + case "pagehide": + case "TabSelect": + this._resetPreview(); + break; + } + }, + + get _manager () { + var temp = {}; + Cu.import("resource://gre/modules/LightweightThemeManager.jsm", temp); + delete this._manager; + return this._manager = temp.LightweightThemeManager; + }, + + _installRequest: function (event) { + var node = event.target; + var data = this._getThemeFromNode(node); + if (!data) + return; + + if (this._isAllowed(node)) { + this._install(data); + return; + } + + var allowButtonText = + gNavigatorBundle.getString("lwthemeInstallRequest.allowButton"); + var allowButtonAccesskey = + gNavigatorBundle.getString("lwthemeInstallRequest.allowButton.accesskey"); + var message = + gNavigatorBundle.getFormattedString("lwthemeInstallRequest.message", + [node.ownerDocument.location.host]); + var buttons = [{ + label: allowButtonText, + accessKey: allowButtonAccesskey, + callback: function () { + LightWeightThemeWebInstaller._install(data); + } + }]; + + this._removePreviousNotifications(); + + var notificationBox = gBrowser.getNotificationBox(); + var notificationBar = + notificationBox.appendNotification(message, "lwtheme-install-request", "", + notificationBox.PRIORITY_INFO_MEDIUM, + buttons); + notificationBar.persistence = 1; + }, + + _install: function (newLWTheme) { + var previousLWTheme = this._manager.currentTheme; + + var listener = { + onEnabling: function(aAddon, aRequiresRestart) { + if (!aRequiresRestart) + return; + + let messageString = gNavigatorBundle.getFormattedString("lwthemeNeedsRestart.message", + [aAddon.name], 1); + + let action = { + label: gNavigatorBundle.getString("lwthemeNeedsRestart.button"), + accessKey: gNavigatorBundle.getString("lwthemeNeedsRestart.accesskey"), + callback: function () { + Application.restart(); + } + }; + + let options = { + timeout: Date.now() + 30000 + }; + + PopupNotifications.show(gBrowser.selectedBrowser, "addon-theme-change", + messageString, "addons-notification-icon", + action, null, options); + }, + + onEnabled: function(aAddon) { + LightWeightThemeWebInstaller._postInstallNotification(newLWTheme, previousLWTheme); + } + }; + + AddonManager.addAddonListener(listener); + this._manager.currentTheme = newLWTheme; + AddonManager.removeAddonListener(listener); + }, + + _postInstallNotification: function (newTheme, previousTheme) { + function text(id) { + return gNavigatorBundle.getString("lwthemePostInstallNotification." + id); + } + + var buttons = [{ + label: text("undoButton"), + accessKey: text("undoButton.accesskey"), + callback: function () { + LightWeightThemeWebInstaller._manager.forgetUsedTheme(newTheme.id); + LightWeightThemeWebInstaller._manager.currentTheme = previousTheme; + } + }, { + label: text("manageButton"), + accessKey: text("manageButton.accesskey"), + callback: function () { + BrowserOpenAddonsMgr("addons://list/theme"); + } + }]; + + this._removePreviousNotifications(); + + var notificationBox = gBrowser.getNotificationBox(); + var notificationBar = + notificationBox.appendNotification(text("message"), + "lwtheme-install-notification", "", + notificationBox.PRIORITY_INFO_MEDIUM, + buttons); + notificationBar.persistence = 1; + notificationBar.timeout = Date.now() + 20000; // 20 seconds + }, + + _removePreviousNotifications: function () { + var box = gBrowser.getNotificationBox(); + + ["lwtheme-install-request", + "lwtheme-install-notification"].forEach(function (value) { + var notification = box.getNotificationWithValue(value); + if (notification) + box.removeNotification(notification); + }); + }, + + _previewWindow: null, + _preview: function (event) { + if (!this._isAllowed(event.target)) + return; + + var data = this._getThemeFromNode(event.target); + if (!data) + return; + + this._resetPreview(); + + this._previewWindow = event.target.ownerDocument.defaultView; + this._previewWindow.addEventListener("pagehide", this, true); + gBrowser.tabContainer.addEventListener("TabSelect", this, false); + + this._manager.previewTheme(data); + }, + + _resetPreview: function (event) { + if (!this._previewWindow || + event && !this._isAllowed(event.target)) + return; + + this._previewWindow.removeEventListener("pagehide", this, true); + this._previewWindow = null; + gBrowser.tabContainer.removeEventListener("TabSelect", this, false); + + this._manager.resetPreview(); + }, + + _isAllowed: function (node) { + var pm = Services.perms; + + var uri = node.ownerDocument.documentURIObject; + return pm.testPermission(uri, "install") == pm.ALLOW_ACTION; + }, + + _getThemeFromNode: function (node) { + return this._manager.parseTheme(node.getAttribute("data-browsertheme"), + node.baseURI); + } +} + +/* + * Listen for Lightweight Theme styling changes and update the browser's theme accordingly. + */ +let LightweightThemeListener = { + _modifiedStyles: [], + + init: function () { + XPCOMUtils.defineLazyGetter(this, "styleSheet", function() { + for (let i = document.styleSheets.length - 1; i >= 0; i--) { + let sheet = document.styleSheets[i]; + if (sheet.href == "chrome://browser/skin/browser-lightweightTheme.css") + return sheet; + } + }); + + Services.obs.addObserver(this, "lightweight-theme-styling-update", false); + Services.obs.addObserver(this, "lightweight-theme-optimized", false); + if (document.documentElement.hasAttribute("lwtheme")) + this.updateStyleSheet(document.documentElement.style.backgroundImage); + }, + + uninit: function () { + Services.obs.removeObserver(this, "lightweight-theme-styling-update"); + Services.obs.removeObserver(this, "lightweight-theme-optimized"); + }, + + /** + * Append the headerImage to the background-image property of all rulesets in + * browser-lightweightTheme.css. + * + * @param headerImage - a string containing a CSS image for the lightweight theme header. + */ + updateStyleSheet: function(headerImage) { + if (!this.styleSheet) + return; + this.substituteRules(this.styleSheet.cssRules, headerImage); + }, + + substituteRules: function(ruleList, headerImage, existingStyleRulesModified = 0) { + let styleRulesModified = 0; + for (let i = 0; i < ruleList.length; i++) { + let rule = ruleList[i]; + if (rule instanceof Ci.nsIDOMCSSGroupingRule) { + // Add the number of modified sub-rules to the modified count + styleRulesModified += this.substituteRules(rule.cssRules, headerImage, existingStyleRulesModified + styleRulesModified); + } else if (rule instanceof Ci.nsIDOMCSSStyleRule) { + if (!rule.style.backgroundImage) + continue; + let modifiedIndex = existingStyleRulesModified + styleRulesModified; + if (!this._modifiedStyles[modifiedIndex]) + this._modifiedStyles[modifiedIndex] = { backgroundImage: rule.style.backgroundImage }; + + rule.style.backgroundImage = this._modifiedStyles[modifiedIndex].backgroundImage + ", " + headerImage; + styleRulesModified++; + } else { + Cu.reportError("Unsupported rule encountered"); + } + } + return styleRulesModified; + }, + + // nsIObserver + observe: function (aSubject, aTopic, aData) { + if ((aTopic != "lightweight-theme-styling-update" && aTopic != "lightweight-theme-optimized") || + !this.styleSheet) + return; + + if (aTopic == "lightweight-theme-optimized" && aSubject != window) + return; + + let themeData = JSON.parse(aData); + if (!themeData) + return; + this.updateStyleSheet("url(" + themeData.headerURL + ")"); + }, +}; diff --git a/application/palemoon/base/content/browser-appmenu.inc b/application/palemoon/base/content/browser-appmenu.inc new file mode 100644 index 0000000000..835bf22bcf --- /dev/null +++ b/application/palemoon/base/content/browser-appmenu.inc @@ -0,0 +1,394 @@ +# -*- Mode: HTML -*- +# 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/. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#ifdef MOZ_DEVTOOLS + + + + + + + + +#endif + + +#ifdef MOZ_DEVTOOLS + +#endif + + + +#define ID_PREFIX appmenu_developer_ +#define OMIT_ACCESSKEYS +#include browser-charsetmenu.inc +#undef ID_PREFIX +#undef OMIT_ACCESSKEYS + + + + +#define ID_PREFIX appmenu_ +#define OMIT_ACCESSKEYS +#include browser-charsetmenu.inc +#undef ID_PREFIX +#undef OMIT_ACCESSKEYS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#ifdef MOZ_SERVICES_SYNC + +#endif + + + + + + + + + + + + + + +#ifdef MOZ_SERVICES_SYNC + + + +#endif + + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/palemoon/base/content/browser-charsetmenu.inc b/application/palemoon/base/content/browser-charsetmenu.inc new file mode 100644 index 0000000000..628de1341f --- /dev/null +++ b/application/palemoon/base/content/browser-charsetmenu.inc @@ -0,0 +1,62 @@ +# 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/. + +#filter substitution + +#expand + + + + + + + + + + + + diff --git a/application/palemoon/base/content/browser-context.inc b/application/palemoon/base/content/browser-context.inc new file mode 100644 index 0000000000..f672ede615 --- /dev/null +++ b/application/palemoon/base/content/browser-context.inc @@ -0,0 +1,379 @@ +# -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +# 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/. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#ifdef CONTEXT_COPY_IMAGE_CONTENTS + +#endif + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +