summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarsten Schoenert <c.schoenert@t-online.de>2019-03-26 21:44:03 +0100
committerCarsten Schoenert <c.schoenert@t-online.de>2019-03-26 21:44:03 +0100
commit407d18c607a2540f5d9c4a086d7bec336f99b5a7 (patch)
tree27da53c2557c44eb5ee55162c27d9856fa4ebaad
parent4965c2af11b2b150630bb86985f06fa198501d6c (diff)
New upstream version 60.6.1upstream/60.6.1
-rw-r--r--.cron.yml1
-rw-r--r--.eslintignore1
-rw-r--r--.taskcluster.yml63
-rw-r--r--browser/app/blocklist.xml150
-rw-r--r--browser/base/content/test/about/browser_aboutSupport.js16
-rw-r--r--browser/base/content/test/siteIdentity/browser_insecureLoginForms.js6
-rw-r--r--browser/base/content/test/tabs/browser_contextmenu_openlink_after_tabnavigated.js9
-rw-r--r--browser/components/enterprisepolicies/Policies.jsm46
-rw-r--r--browser/components/enterprisepolicies/schemas/policies-schema.json10
-rw-r--r--browser/components/enterprisepolicies/tests/browser/browser_policies_simple_pref_policies.js24
-rw-r--r--browser/components/enterprisepolicies/tests/browser/browser_policies_sorted_alphabetically.js2
-rw-r--r--browser/components/enterprisepolicies/tests/browser/browser_policy_default_browser_check.js15
-rw-r--r--browser/components/originattributes/test/browser/browser_firstPartyIsolation.js5
-rw-r--r--browser/components/preferences/connection.js2
-rw-r--r--browser/components/preferences/connection.xul6
-rw-r--r--browser/components/preferences/in-content/tests/browser.ini2
-rw-r--r--browser/components/preferences/in-content/tests/browser_extension_controlled.js12
-rw-r--r--browser/components/resistfingerprinting/test/browser/browser.ini1
-rw-r--r--browser/components/resistfingerprinting/test/browser/browser_navigator.js39
-rw-r--r--browser/components/resistfingerprinting/test/browser/browser_navigator_header.sjs11
-rw-r--r--browser/components/search/test/browser_google.js30
-rw-r--r--browser/components/search/test/browser_google_behavior.js20
-rw-r--r--browser/config/mozconfigs/linux32/common-opt3
-rw-r--r--browser/config/mozconfigs/linux64/common-opt3
-rw-r--r--browser/config/mozconfigs/macosx64/common-opt3
-rw-r--r--browser/config/mozconfigs/win32/common-opt12
-rw-r--r--browser/config/mozconfigs/win64/common-opt12
-rw-r--r--browser/config/version.txt2
-rw-r--r--browser/config/version_display.txt2
-rw-r--r--browser/locales/en-US/chrome/browser/preferences/connection.dtd2
-rw-r--r--browser/locales/search/list.json239
-rw-r--r--browser/locales/searchplugins/google-b-1-d.xml15
-rw-r--r--browser/locales/searchplugins/google-b-1-e.xml17
-rw-r--r--browser/locales/searchplugins/google-b-d.xml15
-rw-r--r--browser/locales/searchplugins/google-b-e.xml17
-rw-r--r--browser/locales/searchplugins/mapy-cz.xml2
-rw-r--r--build/debian-packages/sqlite3-wheezy.diff58
-rw-r--r--build/virtualenv_packages.txt1
-rw-r--r--comm/.taskcluster.yml88
-rw-r--r--comm/calendar/resources/content/datetimepickers/datetimepickers.xml23
-rw-r--r--comm/calendar/test/unit/data/previous.json2
-rwxr-xr-xcomm/calendar/timezones/update-zones.py6
-rw-r--r--comm/calendar/timezones/zones.json37
-rw-r--r--comm/mail/base/content/msgHdrViewOverlay.js25
-rw-r--r--comm/mail/components/about-support/content/aboutSupport.js7
-rw-r--r--comm/mail/components/about-support/content/aboutSupport.xhtml13
-rw-r--r--comm/mail/components/accountcreation/content/util.js29
-rw-r--r--comm/mail/components/addrbook/content/abCard.inc2
-rw-r--r--comm/mail/components/addrbook/content/abCard.js17
-rw-r--r--comm/mail/components/addrbook/content/abEditListDialog.xul2
-rw-r--r--comm/mail/components/addrbook/content/abMailListDialog.xul2
-rw-r--r--comm/mail/components/addrbook/content/addressbook.xul2
-rw-r--r--comm/mail/components/cloudfile/wetransfer/moz.build18
-rw-r--r--comm/mail/components/cloudfile/wetransfer/webextension/_locales/de/messages.json17
-rw-r--r--comm/mail/components/cloudfile/wetransfer/webextension/_locales/ia/messages.json17
-rw-r--r--comm/mail/components/cloudfile/wetransfer/webextension/_locales/nb_NO/messages.json17
-rw-r--r--comm/mail/components/cloudfile/wetransfer/webextension/_locales/nl/messages.json4
-rw-r--r--comm/mail/components/cloudfile/wetransfer/webextension/_locales/si/messages.json17
-rw-r--r--comm/mail/components/cloudfile/wetransfer/webextension/_locales/uk/messages.json17
-rw-r--r--comm/mail/components/cloudfile/wetransfer/webextension/_locales/vi/messages.json17
-rw-r--r--comm/mail/components/compose/content/messengercompose.xul2
-rw-r--r--comm/mail/config/version.txt2
-rw-r--r--comm/mail/config/version_display.txt2
-rwxr-xr-xcomm/mail/installer/windows/nsis/shared.nsh4
-rw-r--r--comm/mail/themes/osx/mail/accountCreation.css2
-rw-r--r--comm/mail/themes/shared/mail/messenger.css5
-rw-r--r--comm/mail/themes/windows/mail/messenger.css2
-rw-r--r--comm/mailnews/addrbook/src/nsAbDirProperty.cpp4
-rw-r--r--comm/mailnews/addrbook/src/nsAbMDBDirectory.cpp25
-rw-r--r--comm/mailnews/addrbook/src/nsAbManager.cpp14
-rw-r--r--comm/mailnews/addrbook/src/nsAddrDatabase.cpp22
-rw-r--r--comm/mailnews/addrbook/test/unit/test_bug1522453.js86
-rw-r--r--comm/mailnews/addrbook/test/unit/test_uid.js134
-rw-r--r--comm/mailnews/addrbook/test/unit/xpcshell.ini1
-rw-r--r--comm/mailnews/base/test/unit/test_nsMsgDBView_headerValues.js6
-rw-r--r--comm/mailnews/compose/src/nsMsgCompFields.cpp5
-rw-r--r--comm/mailnews/compose/src/nsMsgCompose.cpp8
-rw-r--r--comm/mailnews/extensions/newsblog/content/feed-subscriptions.js6
-rw-r--r--comm/mailnews/mapi/mapiDll/MapiDll.cpp104
-rw-r--r--comm/mailnews/mapi/mapihook/build/msgMapi.idl26
-rw-r--r--comm/mailnews/mapi/mapihook/src/msgMapiHook.cpp165
-rw-r--r--comm/mailnews/mapi/mapihook/src/msgMapiHook.h9
-rw-r--r--comm/mailnews/mapi/mapihook/src/msgMapiImp.cpp55
-rw-r--r--comm/mailnews/mapi/mapihook/src/msgMapiImp.h30
-rw-r--r--comm/mailnews/mapi/mapihook/src/msgMapiMain.cpp20
-rw-r--r--comm/mailnews/mapi/mapihook/src/msgMapiMain.h13
-rw-r--r--comm/mailnews/mime/public/MimeHeaderParser.h4
-rw-r--r--comm/mailnews/mime/public/nsIMsgHeaderParser.idl15
-rw-r--r--comm/mailnews/mime/src/MimeHeaderParser.cpp18
-rw-r--r--comm/mailnews/mime/src/mimeJSComponents.js17
-rw-r--r--comm/mailnews/mime/src/mimeleaf.cpp15
-rw-r--r--comm/mailnews/mime/src/nsCMS.cpp30
-rw-r--r--comm/mozharness/single_locale/comm-beta.py13
-rw-r--r--comm/mozharness/single_locale/comm-central.py13
-rw-r--r--comm/mozharness/single_locale/comm-esr60.py12
-rw-r--r--comm/mozharness/single_locale/thunderbird.py5
-rw-r--r--comm/mozharness/single_locale/try-comm-central.py14
-rw-r--r--comm/suite/app/Makefile.in6
-rw-r--r--comm/suite/components/shell/moz.build6
-rw-r--r--comm/suite/installer/Makefile.in4
-rw-r--r--comm/suite/installer/package-manifest.in57
-rw-r--r--comm/suite/installer/removed-files.in1007
-rw-r--r--comm/suite/installer/windows/nsis/shared.nsh1
-rw-r--r--comm/suite/locales/Makefile.in2
-rw-r--r--comm/suite/locales/l10n-beta.ini1
-rw-r--r--comm/suite/locales/l10n-central.ini1
-rw-r--r--comm/suite/locales/l10n.ini1
-rw-r--r--comm/suite/locales/l10n.toml4
-rw-r--r--comm/suite/mailnews/components/addrbook/content/abListOverlay.xul2
-rw-r--r--comm/taskcluster/ci/build/windows.yml33
-rw-r--r--comm/taskcluster/ci/config.yml3
-rw-r--r--comm/taskcluster/ci/nightly-l10n/kind.yml26
-rw-r--r--comm/taskcluster/ci/packages/kind.yml1
-rw-r--r--comm/taskcluster/ci/release-balrog-scheduling/kind.yml2
-rw-r--r--comm/taskcluster/ci/release-balrog-submit-toplevel/kind.yml2
-rw-r--r--comm/taskcluster/ci/release-mark-as-started/kind.yml43
-rw-r--r--comm/taskcluster/ci/repackage-l10n/kind.yml5
-rw-r--r--comm/taskcluster/ci/repackage/kind.yml5
-rw-r--r--comm/taskcluster/ci/upload-symbols/kind.yml3
-rw-r--r--config/milestone.txt2
-rwxr-xr-xconfigure25
-rw-r--r--dom/base/Navigator.cpp13
-rw-r--r--dom/canvas/WebGLContext.cpp7
-rw-r--r--dom/fetch/FetchDriver.cpp2
-rw-r--r--dom/html/HTMLTableElement.cpp15
-rw-r--r--dom/html/HTMLTableSectionElement.cpp2
-rw-r--r--dom/html/nsHTMLDocument.cpp3
-rw-r--r--dom/ipc/ContentPrefs.cpp1
-rwxr-xr-xdom/ipc/TabParent.cpp7
-rw-r--r--dom/media/BufferReader.h1
-rw-r--r--dom/media/VideoFrameContainer.cpp12
-rw-r--r--dom/media/mediasource/TrackBuffersManager.cpp1
-rw-r--r--dom/media/mediasource/test/1516754.webmbin0 -> 1081344 bytes
-rw-r--r--dom/media/mediasource/test/1516754.webm^headers^1
-rw-r--r--dom/media/mediasource/test/mochitest.ini2
-rw-r--r--dom/media/mediasource/test/test_AbortAfterPartialMediaSegment.html55
-rw-r--r--dom/script/ScriptLoader.cpp5
-rw-r--r--dom/script/ScriptLoader.h6
-rw-r--r--dom/security/nsContentSecurityManager.cpp7
-rw-r--r--dom/smil/nsSMILAnimationController.cpp2
-rw-r--r--dom/tests/mochitest/dom-level0/test_setting_document.domain_to_shortened_ipaddr.html12
-rw-r--r--dom/u2f/tests/browser/browser_appid_localhost.js2
-rw-r--r--extensions/cookie/test/test_same_base_domain_6.html13
-rw-r--r--gfx/layers/CanvasRenderer.cpp3
-rw-r--r--gfx/layers/CanvasRenderer.h38
-rw-r--r--gfx/layers/CopyableCanvasRenderer.cpp7
-rw-r--r--gfx/layers/apz/src/AsyncPanZoomController.cpp14
-rw-r--r--gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js50
-rw-r--r--gfx/layers/apz/test/mochitest/apz_test_utils.js3
-rw-r--r--gfx/layers/apz/test/mochitest/helper_basic_pan.html2
-rw-r--r--gfx/layers/apz/test/mochitest/helper_bug1280013.html6
-rw-r--r--gfx/layers/apz/test/mochitest/helper_bug1346632.html37
-rw-r--r--gfx/layers/apz/test/mochitest/helper_div_pan.html2
-rw-r--r--gfx/layers/apz/test/mochitest/helper_iframe_pan.html2
-rw-r--r--gfx/layers/apz/test/mochitest/helper_touch_action.html14
-rw-r--r--gfx/layers/apz/test/mochitest/helper_touch_action_complex.html10
-rw-r--r--gfx/layers/client/CanvasClient.cpp9
-rw-r--r--gfx/layers/ipc/LayerTransactionParent.cpp9
-rw-r--r--gfx/layers/wr/WebRenderBridgeParent.cpp9
-rw-r--r--js/public/Value.h7
-rw-r--r--js/src/gc/Nursery.cpp1
-rw-r--r--js/src/gc/Nursery.h1
-rw-r--r--js/src/jit/AliasAnalysisShared.cpp3
-rw-r--r--js/src/jit/BaselineIC.cpp14
-rw-r--r--js/src/jit/CacheIR.cpp156
-rw-r--r--js/src/jit/CacheIR.h11
-rw-r--r--js/src/jit/IonAnalysis.cpp20
-rw-r--r--js/src/jit/IonBuilder.cpp10
-rw-r--r--js/src/jit/IonIC.cpp13
-rw-r--r--js/src/jit/MIR.cpp17
-rw-r--r--js/src/jit/MIR.h6
-rw-r--r--js/src/jit/VMFunctions.h2
-rw-r--r--js/src/jsapi.cpp9
-rw-r--r--js/src/jsapi.h60
-rw-r--r--js/src/jslibmath.h11
-rw-r--r--js/src/vm/NativeObject.cpp8
-rw-r--r--js/src/wasm/WasmSignalHandlers.cpp15
-rw-r--r--js/xpconnect/src/XPCJSContext.cpp6
-rw-r--r--layout/base/PresShell.cpp2
-rw-r--r--mfbt/RangedPtr.h2
-rw-r--r--mobile/android/config/mozconfigs/android-api-16-gradle-dependencies/nightly3
-rw-r--r--mobile/android/config/mozconfigs/common3
-rwxr-xr-xmobile/android/mach_commands.py7
-rw-r--r--mobile/locales/search/list.json96
-rw-r--r--mobile/locales/searchplugins/mapy-cz.xml2
-rw-r--r--modules/libpref/init/all.js11
-rw-r--r--netwerk/base/nsProtocolProxyService.cpp6
-rw-r--r--netwerk/dns/effective_tld_names.dat58
-rw-r--r--netwerk/protocol/http/nsHttpHandler.cpp2
-rw-r--r--netwerk/sctp/datachannel/DataChannel.cpp11
-rw-r--r--netwerk/test/unit/test_protocolproxyservice.js31
-rw-r--r--netwerk/test/unit/test_proxy-failover_canceled.js3
-rw-r--r--old-configure16610
-rw-r--r--python/mozrelease/mozrelease/buglist_creator.py1
-rw-r--r--security/manager/ssl/StaticHPKPins.h24
-rw-r--r--security/manager/ssl/nsSTSPreloadList.inc3682
-rw-r--r--security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp5
-rw-r--r--sourcestamp.txt2
-rw-r--r--taskcluster/ci/build/android-stuff.yml2
-rw-r--r--taskcluster/ci/build/linux.yml1
-rwxr-xr-xtaskcluster/ci/build/windows.yml30
-rwxr-xr-xtaskcluster/ci/config.yml4
-rw-r--r--taskcluster/ci/docker-image/kind.yml13
-rw-r--r--taskcluster/ci/l10n/kind.yml37
-rw-r--r--taskcluster/ci/nightly-l10n/kind.yml55
-rw-r--r--taskcluster/ci/packages/kind.yml11
-rw-r--r--taskcluster/ci/push-apk/kind.yml2
-rw-r--r--taskcluster/ci/release-balrog-scheduling/kind.yml2
-rw-r--r--taskcluster/ci/release-balrog-submit-toplevel/kind.yml2
-rw-r--r--taskcluster/ci/repackage-l10n/kind.yml5
-rw-r--r--taskcluster/ci/repackage/kind.yml5
-rw-r--r--taskcluster/ci/searchfox/kind.yml1
-rw-r--r--taskcluster/ci/static-analysis/kind.yml4
-rwxr-xr-xtaskcluster/ci/toolchain/linux.yml7
-rw-r--r--taskcluster/ci/toolchain/macosx.yml7
-rwxr-xr-xtaskcluster/ci/toolchain/windows.yml14
-rw-r--r--taskcluster/ci/upload-generated-sources/kind.yml6
-rw-r--r--taskcluster/ci/upload-symbols/kind.yml12
-rw-r--r--taskcluster/docker/debian-base/Dockerfile3
-rwxr-xr-xtaskcluster/docker/debian-base/setup_packages.sh14
-rw-r--r--taskcluster/docker/debian-build/Dockerfile (renamed from taskcluster/docker/debian7-build/Dockerfile)21
-rw-r--r--taskcluster/docker/debian7-mozjs-rust-build/Dockerfile3
-rw-r--r--taskcluster/docker/diffoscope/get_and_diffoscope9
-rw-r--r--taskcluster/docker/funsize-update-generator/Pipfile.lock291
-rw-r--r--taskcluster/docker/funsize-update-generator/runme.sh13
-rwxr-xr-xtaskcluster/docker/funsize-update-generator/scripts/funsize.py8
-rw-r--r--taskcluster/docker/image_builder/Dockerfile2
-rwxr-xr-xtaskcluster/docker/image_builder/build-image.sh4
-rw-r--r--taskcluster/docker/index-task/Dockerfile6
-rw-r--r--taskcluster/docker/index-task/insert-indexes.js7
-rw-r--r--taskcluster/docker/index-task/npm-shrinkwrap.json309
-rw-r--r--taskcluster/docker/index-task/package.json7
-rw-r--r--taskcluster/docker/index-task/yarn.lock326
-rwxr-xr-xtaskcluster/docker/periodic-updates/runme.sh13
-rwxr-xr-xtaskcluster/docker/periodic-updates/scripts/periodic_file_updates.sh21
-rwxr-xr-xtaskcluster/docker/periodic-updates/setup.sh1
-rwxr-xr-xtaskcluster/docker/pipfile-updates/runme.sh13
-rw-r--r--taskcluster/docker/toolchain-build/Dockerfile3
-rw-r--r--taskcluster/docs/attributes.rst4
-rw-r--r--taskcluster/docs/optimization-process.rst4
-rw-r--r--taskcluster/docs/parameters.rst5
-rw-r--r--taskcluster/docs/partials.rst2
-rw-r--r--taskcluster/docs/taskgraph.rst5
-rw-r--r--taskcluster/docs/transforms.rst7
-rw-r--r--taskcluster/mach_commands.py12
-rwxr-xr-xtaskcluster/scripts/misc/build-libdmg-hfsplus.sh9
-rwxr-xr-xtaskcluster/scripts/misc/fetch-content28
-rwxr-xr-xtaskcluster/scripts/run-task163
-rw-r--r--taskcluster/scripts/tester/test-linux.sh19
-rw-r--r--taskcluster/taskgraph/actions/add_new_jobs.py19
-rw-r--r--taskcluster/taskgraph/actions/cancel_all.py43
-rw-r--r--taskcluster/taskgraph/actions/create_interactive.py12
-rw-r--r--taskcluster/taskgraph/actions/registry.py3
-rw-r--r--taskcluster/taskgraph/create.py17
-rw-r--r--taskcluster/taskgraph/cron/decision.py16
-rw-r--r--taskcluster/taskgraph/cron/schema.py9
-rw-r--r--taskcluster/taskgraph/decision.py43
-rw-r--r--taskcluster/taskgraph/generator.py14
-rw-r--r--taskcluster/taskgraph/loader/push_apk.py22
-rw-r--r--taskcluster/taskgraph/morph.py9
-rw-r--r--taskcluster/taskgraph/optimize.py13
-rw-r--r--taskcluster/taskgraph/parameters.py3
-rw-r--r--taskcluster/taskgraph/target_tasks.py8
-rw-r--r--taskcluster/taskgraph/test/test_decision.py25
-rw-r--r--taskcluster/taskgraph/test/test_generator.py2
-rw-r--r--taskcluster/taskgraph/test/test_graph.py4
-rw-r--r--taskcluster/taskgraph/test/test_util_docker.py10
-rw-r--r--taskcluster/taskgraph/test/test_util_parameterization.py43
-rw-r--r--taskcluster/taskgraph/test/test_util_schema.py2
-rw-r--r--taskcluster/taskgraph/transforms/balrog_submit.py12
-rw-r--r--taskcluster/taskgraph/transforms/beetmover.py16
-rw-r--r--taskcluster/taskgraph/transforms/beetmover_checksums.py12
-rw-r--r--taskcluster/taskgraph/transforms/beetmover_emefree_checksums.py6
-rw-r--r--taskcluster/taskgraph/transforms/beetmover_l10n.py2
-rw-r--r--taskcluster/taskgraph/transforms/beetmover_langpack_checksums.py6
-rw-r--r--taskcluster/taskgraph/transforms/beetmover_push_to_release.py11
-rw-r--r--taskcluster/taskgraph/transforms/beetmover_repackage.py23
-rw-r--r--taskcluster/taskgraph/transforms/beetmover_repackage_l10n.py2
-rw-r--r--taskcluster/taskgraph/transforms/beetmover_repackage_partner.py5
-rw-r--r--taskcluster/taskgraph/transforms/beetmover_source_checksums.py6
-rw-r--r--taskcluster/taskgraph/transforms/build.py1
-rw-r--r--taskcluster/taskgraph/transforms/checksums_signing.py12
-rw-r--r--taskcluster/taskgraph/transforms/diffoscope.py12
-rw-r--r--taskcluster/taskgraph/transforms/docker_image.py3
-rw-r--r--taskcluster/taskgraph/transforms/final_verify.py11
-rw-r--r--taskcluster/taskgraph/transforms/job/common.py33
-rw-r--r--taskcluster/taskgraph/transforms/job/debian_package.py8
-rw-r--r--taskcluster/taskgraph/transforms/job/hazard.py6
-rw-r--r--taskcluster/taskgraph/transforms/job/mach.py30
-rw-r--r--taskcluster/taskgraph/transforms/job/mozharness.py15
-rw-r--r--taskcluster/taskgraph/transforms/job/mozharness_test.py19
-rw-r--r--taskcluster/taskgraph/transforms/job/run_task.py90
-rw-r--r--taskcluster/taskgraph/transforms/job/spidermonkey.py2
-rw-r--r--taskcluster/taskgraph/transforms/job/toolchain.py6
-rw-r--r--taskcluster/taskgraph/transforms/l10n.py41
-rw-r--r--taskcluster/taskgraph/transforms/partials.py15
-rw-r--r--taskcluster/taskgraph/transforms/push_apk.py28
-rw-r--r--taskcluster/taskgraph/transforms/repackage.py14
-rw-r--r--taskcluster/taskgraph/transforms/repackage_partner.py7
-rw-r--r--taskcluster/taskgraph/transforms/signing.py20
-rw-r--r--taskcluster/taskgraph/transforms/source_checksums_signing.py6
-rw-r--r--taskcluster/taskgraph/transforms/source_test.py2
-rw-r--r--taskcluster/taskgraph/transforms/task.py61
-rw-r--r--taskcluster/taskgraph/transforms/upload_generated_sources.py3
-rw-r--r--taskcluster/taskgraph/transforms/upload_symbols.py7
-rw-r--r--taskcluster/taskgraph/try_option_syntax.py2
-rw-r--r--taskcluster/taskgraph/util/attributes.py1
-rw-r--r--taskcluster/taskgraph/util/docker.py4
-rw-r--r--taskcluster/taskgraph/util/hg.py16
-rw-r--r--taskcluster/taskgraph/util/parameterization.py70
-rw-r--r--taskcluster/taskgraph/util/schema.py10
-rw-r--r--taskcluster/taskgraph/util/taskcluster.py125
-rw-r--r--taskcluster/taskgraph/util/treeherder.py10
-rw-r--r--taskcluster/taskgraph/util/verify.py23
-rw-r--r--taskcluster/taskgraph/util/workertypes.py2
-rw-r--r--testing/mozharness/configs/builds/releng_base_android_64_builds.py7
-rw-r--r--testing/mozharness/configs/builds/releng_base_linux_32_builds.py7
-rw-r--r--testing/mozharness/configs/builds/releng_base_linux_64_builds.py7
-rw-r--r--testing/mozharness/configs/builds/releng_base_mac_64_cross_builds.py7
-rwxr-xr-xtesting/mozharness/configs/builds/releng_base_windows_32_mingw_builds.py7
-rwxr-xr-xtesting/mozharness/configs/builds/releng_base_windows_64_mingw_builds.py7
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/32_artifact.py2
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/32_debug_artifact.py1
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_artifact.py8
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_debug_artifact.py1
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_searchfox_and_debug.py1
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_stat_and_debug.py1
-rw-r--r--testing/mozharness/configs/builds/releng_sub_mac_configs/64_artifact.py2
-rw-r--r--testing/mozharness/configs/builds/releng_sub_mac_configs/64_debug_artifact.py1
-rw-r--r--testing/mozharness/configs/builds/taskcluster_base_windows.py17
-rw-r--r--testing/mozharness/configs/merge_day/beta_to_release.py2
-rw-r--r--testing/mozharness/configs/merge_day/bump_central.py3
-rw-r--r--testing/mozharness/configs/merge_day/bump_esr.py3
-rw-r--r--testing/mozharness/configs/merge_day/central_to_beta.py2
-rw-r--r--testing/mozharness/configs/merge_day/release_to_esr.py2
-rw-r--r--testing/mozharness/configs/merge_day/staging_beta_migration.py2
-rw-r--r--testing/mozharness/configs/single_locale/alder.py16
-rw-r--r--testing/mozharness/configs/single_locale/ash.py16
-rw-r--r--testing/mozharness/configs/single_locale/ash_android-api-16.py36
-rw-r--r--testing/mozharness/configs/single_locale/autoland.py16
-rw-r--r--testing/mozharness/configs/single_locale/autoland_android-api-16.py36
-rw-r--r--testing/mozharness/configs/single_locale/devedition.py7
-rw-r--r--testing/mozharness/configs/single_locale/firefox.py7
-rw-r--r--testing/mozharness/configs/single_locale/jamun.py16
-rw-r--r--testing/mozharness/configs/single_locale/jamun_android-api-16.py33
-rw-r--r--testing/mozharness/configs/single_locale/linux.py19
-rw-r--r--[l---------]testing/mozharness/configs/single_locale/linux32.py9
l---------testing/mozharness/configs/single_locale/linux32_devedition.py1
-rw-r--r--testing/mozharness/configs/single_locale/linux64.py11
-rw-r--r--testing/mozharness/configs/single_locale/linux64_devedition.py20
-rw-r--r--testing/mozharness/configs/single_locale/linux_devedition.py20
-rw-r--r--testing/mozharness/configs/single_locale/macosx64.py13
-rw-r--r--testing/mozharness/configs/single_locale/macosx64_devedition.py26
-rw-r--r--testing/mozharness/configs/single_locale/maple_android-api-16.py33
-rw-r--r--testing/mozharness/configs/single_locale/mozilla-aurora.py16
-rw-r--r--testing/mozharness/configs/single_locale/mozilla-aurora_android-api-16.py36
-rw-r--r--testing/mozharness/configs/single_locale/mozilla-beta.py16
-rw-r--r--testing/mozharness/configs/single_locale/mozilla-beta_android-api-16.py33
-rw-r--r--testing/mozharness/configs/single_locale/mozilla-beta_devedition.py11
-rw-r--r--testing/mozharness/configs/single_locale/mozilla-central.py16
-rw-r--r--testing/mozharness/configs/single_locale/mozilla-central_android-api-16.py36
-rw-r--r--testing/mozharness/configs/single_locale/mozilla-esr60.py16
-rw-r--r--testing/mozharness/configs/single_locale/mozilla-inbound.py16
-rw-r--r--testing/mozharness/configs/single_locale/mozilla-inbound_android-api-16.py36
-rw-r--r--testing/mozharness/configs/single_locale/mozilla-release.py16
-rw-r--r--testing/mozharness/configs/single_locale/mozilla-release_android-api-16.py32
-rw-r--r--testing/mozharness/configs/single_locale/onchange.py3
-rw-r--r--testing/mozharness/configs/single_locale/tc_android-api-16.py17
-rw-r--r--testing/mozharness/configs/single_locale/tc_linux32.py1
-rw-r--r--testing/mozharness/configs/single_locale/tc_linux_common.py (renamed from testing/mozharness/configs/single_locale/tc_linux64.py)3
-rw-r--r--testing/mozharness/configs/single_locale/tc_macosx64.py3
-rw-r--r--testing/mozharness/configs/single_locale/tc_win32.py5
-rw-r--r--testing/mozharness/configs/single_locale/tc_win64.py5
-rw-r--r--testing/mozharness/configs/single_locale/try.py16
-rw-r--r--testing/mozharness/configs/single_locale/try_android-api-16.py33
-rw-r--r--testing/mozharness/configs/single_locale/win32.py20
-rw-r--r--testing/mozharness/configs/single_locale/win32_devedition.py28
-rw-r--r--testing/mozharness/configs/single_locale/win64.py20
-rw-r--r--testing/mozharness/configs/single_locale/win64_devedition.py28
-rw-r--r--testing/mozharness/mozharness/base/python.py5
-rw-r--r--testing/mozharness/mozharness/mozilla/mar.py36
-rw-r--r--testing/mozharness/mozharness/mozilla/secrets.py2
-rwxr-xr-xtesting/mozharness/scripts/desktop_l10n.py61
-rwxr-xr-xtesting/mozharness/scripts/merge_day/gecko_migration.py19
-rwxr-xr-xtesting/mozharness/scripts/mobile_l10n.py24
-rw-r--r--third_party/python/taskcluster-urls/LICENSE373
-rw-r--r--third_party/python/taskcluster-urls/MANIFEST.in4
-rw-r--r--third_party/python/taskcluster-urls/PKG-INFO253
-rw-r--r--third_party/python/taskcluster-urls/README.md236
-rw-r--r--third_party/python/taskcluster-urls/package.json25
-rw-r--r--third_party/python/taskcluster-urls/setup.cfg7
-rw-r--r--third_party/python/taskcluster-urls/setup.py28
-rw-r--r--third_party/python/taskcluster-urls/taskcluster_urls/__init__.py66
-rw-r--r--thunderbird-l10n/ar/manifest.json2
-rw-r--r--thunderbird-l10n/ast/manifest.json2
-rw-r--r--thunderbird-l10n/be/manifest.json2
-rw-r--r--thunderbird-l10n/bg/manifest.json2
-rw-r--r--thunderbird-l10n/br/manifest.json2
-rw-r--r--thunderbird-l10n/ca/manifest.json2
-rw-r--r--thunderbird-l10n/cs/manifest.json2
-rw-r--r--thunderbird-l10n/cy/manifest.json2
-rw-r--r--thunderbird-l10n/da/manifest.json2
-rw-r--r--thunderbird-l10n/de/manifest.json2
-rw-r--r--thunderbird-l10n/dsb/manifest.json2
-rw-r--r--thunderbird-l10n/el/manifest.json2
-rw-r--r--thunderbird-l10n/en-GB/manifest.json2
-rw-r--r--thunderbird-l10n/es-AR/manifest.json2
-rw-r--r--thunderbird-l10n/es-ES/manifest.json2
-rw-r--r--thunderbird-l10n/et/manifest.json2
-rw-r--r--thunderbird-l10n/eu/manifest.json2
-rw-r--r--thunderbird-l10n/fi/manifest.json2
-rw-r--r--thunderbird-l10n/fr/manifest.json2
-rw-r--r--thunderbird-l10n/fy-NL/manifest.json2
-rw-r--r--thunderbird-l10n/ga-IE/manifest.json2
-rw-r--r--thunderbird-l10n/gd/manifest.json2
-rw-r--r--thunderbird-l10n/gl/chrome/gl/locale/gl/global/aboutSupport.dtd1
-rw-r--r--thunderbird-l10n/gl/manifest.json2
-rw-r--r--thunderbird-l10n/he/manifest.json2
-rw-r--r--thunderbird-l10n/hr/manifest.json2
-rw-r--r--thunderbird-l10n/hsb/manifest.json2
-rw-r--r--thunderbird-l10n/hu/manifest.json2
-rw-r--r--thunderbird-l10n/hy-AM/manifest.json2
-rw-r--r--thunderbird-l10n/id/manifest.json2
-rw-r--r--thunderbird-l10n/is/manifest.json2
-rw-r--r--thunderbird-l10n/it/manifest.json2
-rw-r--r--thunderbird-l10n/ja/manifest.json2
-rw-r--r--thunderbird-l10n/kab/manifest.json2
-rw-r--r--thunderbird-l10n/kk/manifest.json2
-rw-r--r--thunderbird-l10n/ko/manifest.json2
-rw-r--r--thunderbird-l10n/lt/manifest.json2
-rw-r--r--thunderbird-l10n/ms/manifest.json2
-rw-r--r--thunderbird-l10n/nb-NO/manifest.json2
-rw-r--r--thunderbird-l10n/nl/manifest.json2
-rw-r--r--thunderbird-l10n/nn-NO/manifest.json2
-rw-r--r--thunderbird-l10n/pl/manifest.json2
-rw-r--r--thunderbird-l10n/pt-BR/manifest.json2
-rw-r--r--thunderbird-l10n/pt-PT/manifest.json2
-rw-r--r--thunderbird-l10n/rm/manifest.json2
-rw-r--r--thunderbird-l10n/ro/manifest.json2
-rw-r--r--thunderbird-l10n/ru/manifest.json2
-rw-r--r--thunderbird-l10n/si/chrome/si/locale/si/global/aboutSupport.dtd1
-rw-r--r--thunderbird-l10n/si/manifest.json2
-rw-r--r--thunderbird-l10n/sk/manifest.json2
-rw-r--r--thunderbird-l10n/sl/manifest.json2
-rw-r--r--thunderbird-l10n/sq/manifest.json2
-rw-r--r--thunderbird-l10n/sr/manifest.json2
-rw-r--r--thunderbird-l10n/sv-SE/manifest.json2
-rw-r--r--thunderbird-l10n/tr/manifest.json2
-rw-r--r--thunderbird-l10n/uk/manifest.json2
-rw-r--r--thunderbird-l10n/vi/chrome/vi/locale/vi/global/aboutSupport.dtd1
-rw-r--r--thunderbird-l10n/vi/manifest.json2
-rw-r--r--thunderbird-l10n/zh-CN/manifest.json2
-rw-r--r--thunderbird-l10n/zh-TW/manifest.json2
-rw-r--r--toolkit/components/passwordmgr/test/browser/browser_insecurePasswordConsoleWarning.js2
-rw-r--r--toolkit/components/resistfingerprinting/nsRFPService.cpp8
-rw-r--r--toolkit/components/resistfingerprinting/nsRFPService.h11
-rw-r--r--toolkit/components/search/nsSearchService.js45
-rw-r--r--toolkit/components/search/tests/xpcshell/test_json_cache.js19
-rw-r--r--toolkit/components/url-classifier/SafeBrowsing.jsm6
-rw-r--r--toolkit/components/url-classifier/tests/mochitest/test_safebrowsing_bug1272239.html4
-rw-r--r--toolkit/components/urlformatter/nsURLFormatter.js8
-rw-r--r--toolkit/components/urlformatter/tests/unit/test_urlformatter.js9
-rw-r--r--toolkit/content/aboutSupport.js7
-rw-r--r--toolkit/content/aboutSupport.xhtml13
-rw-r--r--toolkit/content/widgets/datetimebox.xml2
-rw-r--r--toolkit/locales/en-US/chrome/global/aboutSupport.dtd1
-rw-r--r--toolkit/modules/AppConstants.jsm3
-rw-r--r--toolkit/modules/Troubleshoot.jsm7
-rw-r--r--toolkit/modules/moz.build3
-rw-r--r--toolkit/modules/tests/browser/browser_Troubleshoot.js5
-rw-r--r--toolkit/moz.configure11
-rw-r--r--toolkit/mozapps/extensions/content/extensions.js5
-rw-r--r--toolkit/mozapps/extensions/internal/XPIProviderUtils.js6
-rw-r--r--toolkit/xre/nsAppRunner.cpp12
-rw-r--r--toolkit/xre/test/browser.ini4
-rw-r--r--tools/tryselect/cli.py2
-rw-r--r--tools/tryselect/docs/selectors/chooser.rst33
-rw-r--r--tools/tryselect/docs/selectors/index.rst2
-rw-r--r--tools/tryselect/mach_commands.py20
-rw-r--r--tools/tryselect/selectors/chooser/.eslintrc.js12
-rw-r--r--tools/tryselect/selectors/chooser/__init__.py50
-rw-r--r--tools/tryselect/selectors/chooser/app.py190
-rw-r--r--tools/tryselect/selectors/chooser/static/filter.js105
-rw-r--r--tools/tryselect/selectors/chooser/static/select.js38
-rw-r--r--tools/tryselect/selectors/chooser/static/style.css104
-rw-r--r--tools/tryselect/selectors/chooser/templates/chooser.html74
-rw-r--r--tools/tryselect/selectors/chooser/templates/close.html8
-rw-r--r--tools/tryselect/selectors/chooser/templates/layout.html33
-rw-r--r--tools/tryselect/tasks.py2
-rw-r--r--uriloader/exthandler/win/nsOSHelperAppService.cpp23
-rw-r--r--widget/cocoa/nsChildView.mm14
-rw-r--r--widget/windows/ScreenHelperWin.cpp23
-rw-r--r--xpcom/base/nsTraceRefcnt.cpp39
-rw-r--r--xpcom/ds/nsBaseHashtable.h1
-rw-r--r--xpcom/io/nsStringStream.cpp35
495 files changed, 8958 insertions, 21587 deletions
diff --git a/.cron.yml b/.cron.yml
index 44065cc..5aab573 100644
--- a/.cron.yml
+++ b/.cron.yml
@@ -95,6 +95,7 @@ jobs:
type: decision-task
treeherder-symbol: Searchfox
target-tasks-method: searchfox_index
+ optimize-target-tasks: false
run-on-projects:
- mozilla-central
when:
diff --git a/.eslintignore b/.eslintignore
index 3fcc46d..6513e2e 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -418,6 +418,7 @@ toolkit/components/urlformatter/nsURLFormatter.js
toolkit/modules/AppConstants.jsm
toolkit/mozapps/downloads/nsHelperAppDlg.js
toolkit/mozapps/update/tests/data/xpcshellConstantsPP.js
+tools/tryselect/selectors/chooser/templates/chooser.html
# Third party
toolkit/modules/third_party/**
diff --git a/.taskcluster.yml b/.taskcluster.yml
index 504a35f..c381eb0 100644
--- a/.taskcluster.yml
+++ b/.taskcluster.yml
@@ -1,7 +1,52 @@
# This file is rendered via JSON-e by
-# - mozilla-taskcluster - https://docs.taskcluster.net/reference/integrations/mozilla-taskcluster/docs/taskcluster-yml
-# - cron tasks - taskcluster/taskgraph/cron/decision.py
-# - action tasks - taskcluster/taskgraph/actions/registry.py
+# - mozilla-taskcluster - See
+# https://docs.taskcluster.net/reference/integrations/mozilla-taskcluster/docs/taskcluster-yml
+# {
+# tasks_for: 'hg-push',
+# push: {owner, comment, pushlog_id, pushdate},
+# repository: {url, project, level},
+# now,
+# as_slugid: // function
+# ownTaskId: // taskId of the task that will be created
+# }
+#
+# - cron tasks - See taskcluster/taskgraph/cron/decision.py
+# {
+# tasks_for: 'cron',
+# push: {revision, pushlog_id, pushdate, owner}
+# repository: {url, project, level},
+# cron: {task_id, job_name, job_symbol, quoted_args},
+# now,
+# ownTaskId: // taskId of the task that will be created
+# }
+#
+# - action tasks - See:
+# * taskcluster/taskgraph/actions/registry.py,
+# * https://docs.taskcluster.net/docs/manual/using/actions/spec
+# * ci-admin:ciadmin/generate/in_tree_actions.py
+#
+# The registry generates the hookPayload that appears in actions.json, and
+# contains data from the decision task as well as JSON-e code to combine that
+# with data supplied as part of the action spec. When the hook is fired, the
+# hookPayload is rendered with JSON-e to produce a payload for the hook task
+# template.
+#
+# The ci-admin code wraps the content of this file (.taskcluster.yml) with a
+# JSON-e $let statement that produces the context described below, and
+# installs that as the hook task template.
+#
+# {
+# tasks_for: 'action',
+# push: {owner, pushlog_id, revision},
+# repository: {url, project, level},
+# input,
+# parameters,
+# taskId, // targetted taskId
+# taskGroupId, // targetted taskGroupId
+# action: {name, title, description, taskGroupId, symbol, repo_scope, cb_name}
+# ownTaskId: // taskId of the task that will be created
+# }
+
version: 1
tasks:
# NOTE: support for actions in ci-admin requires that the `tasks` property be an array *before* JSON-e rendering
@@ -14,13 +59,13 @@ tasks:
# ensure there's no trailing `/` on the repo URL
repoUrl: {$if: 'repository.url[-1] == "/"', then: {$eval: 'repository.url[:-1]'}, else: {$eval: 'repository.url'}}
in:
- taskId: {$if: 'tasks_for != "action"', then: '${as_slugid("decision")}'}
+ taskId: {$if: 'tasks_for != "action"', then: '${ownTaskId}'}
taskGroupId:
$if: 'tasks_for == "action"'
then:
'${action.taskGroupId}'
else:
- '${as_slugid("decision")}' # same as taskId; this is how automation identifies a decision tsak
+ '${ownTaskId}' # same as taskId; this is how automation identifies a decision tsak
schedulerId: 'gecko-level-${repository.level}'
created: {$fromNow: ''}
@@ -90,7 +135,7 @@ tasks:
- "index.gecko.v2.${repository.project}.revision.${push.revision}.taskgraph.decision-${cron.job_name}"
- "index.gecko.v2.${repository.project}.pushlog-id.${push.pushlog_id}.decision-${cron.job_name}"
# list each cron task on this revision, so actions can find them
- - 'index.gecko.v2.${repository.project}.revision.${push.revision}.cron.${as_slugid("decision")}'
+ - 'index.gecko.v2.${repository.project}.revision.${push.revision}.cron.${ownTaskId}'
# BUG 1500166 Notify ciduty by email if a nightly hook fails
- "notify.email.ciduty+failedcron@mozilla.com.on-failed"
- "notify.email.ciduty+exceptioncron@mozilla.com.on-exception"
@@ -143,9 +188,11 @@ tasks:
GECKO_HEAD_REPOSITORY: '${repoUrl}'
GECKO_HEAD_REF: '${push.revision}'
GECKO_HEAD_REV: '${push.revision}'
- GECKO_COMMIT_MSG: {$if: 'tasks_for != "action"', then: '${push.comment}'}
HG_STORE_PATH: /builds/worker/checkouts/hg-store
TASKCLUSTER_CACHES: /builds/worker/checkouts
+ # someday, these will be provided by the worker - Bug 1492664
+ TASKCLUSTER_ROOT_URL: https://taskcluster.net
+ TASKCLUSTER_PROXY_URL: http://taskcluster
- $if: 'tasks_for == "action"'
then:
ACTION_TASK_GROUP_ID: '${action.taskGroupId}' # taskGroupId of the target task
@@ -189,9 +236,9 @@ tasks:
--pushlog-id='${push.pushlog_id}'
--pushdate='${push.pushdate}'
--project='${repository.project}'
- --message="$GECKO_COMMIT_MSG"
--owner='${ownerEmail}'
--level='${repository.level}'
+ --tasks-for='${tasks_for}'
--base-repository="$GECKO_BASE_REPOSITORY"
--head-repository="$GECKO_HEAD_REPOSITORY"
--head-ref="$GECKO_HEAD_REF"
diff --git a/browser/app/blocklist.xml b/browser/app/blocklist.xml
index b828f9a..7cf9a7b 100644
--- a/browser/app/blocklist.xml
+++ b/browser/app/blocklist.xml
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
-<blocklist lastupdate="1549627400713" xmlns="http://www.mozilla.org/2006/addons-blocklist">
+<blocklist lastupdate="1553080348264" xmlns="http://www.mozilla.org/2006/addons-blocklist">
<emItems>
<emItem blockID="i334" id="{0F827075-B026-42F3-885D-98981EE7B1AE}">
<prefs/>
@@ -2492,6 +2492,150 @@
<prefs/>
<versionRange minVersion="0" maxVersion="*" severity="3"/>
</emItem>
+ <emItem blockID="d94f7e0f-7088-43c9-a8da-eae102781079" id="/^((odnenajaeicndaeiapagpglohiklndhe@chrome-store-foxified-2174031944)|(akdibckdjeocfbcjaikipkhhbggcbgkg@chrome-store-foxified-699805590)|(\{bd9f5830-bf8c-4e38-933d-09f85b24d744\})|(youtube-downloader@addoncrop\.com)|(dailymotion-downloader@addoncrop\.com)|(youtube-mp3-iframe-downloader@addoncrop\.com)|(youtube-downloader-lite@addoncrop\.com)|(dailymotion-downloader-lite@addoncrop\.com)|(generated-p5qj07ef5ceqfktp5v8whw@chrome-store-foxified--505607522)|(generated-tuag2j5gwq73xzp8fbw3j8@chrome-store-foxified--505607522)|(generated-uj53d5j612ap5pz11hwgv2@chrome-store-foxified--505607522)|(\{f51f0244-bfb0-40ce-bf9d-af49f5949e61\})|(\{81751484-2dc9-47bf-aec3-b8e556237178\})|(\{d89d1e20-57af-4164-82cc-650af45cf0a5\})|(\{a5e28713-14c3-4967-befe-2ec253e317cd\})|(\{335ac35b-6c16-4304-93f0-64a418e5bf81\})|(\{d3fdb429-ef84-40a4-b160-010745ee0098\})|(\{d66db057-7d38-4df4-a0ba-63c272be25ee\})|(\{ff7f7151-09e3-4e35-9052-b21e23e7e2c1\})|(\{1479da02-e759-4a6f-8f62-c08096583806\})|(\{42d59cda-c117-459e-b244-1b850c27ccc9\})|(\{bec48f33-7869-4158-8cbc-5cf1606f9afa\})|(\{08ca656c-4973-46a8-85a9-3d771399c86e\})|(\{dc5336c8-5624-4f74-a794-bb15f3760f34\})|(\{6a3d97de-1b42-4624-880a-1a68bc917142\})|(\{ad965166-3a34-449d-8230-a636fb5cae57\})|(video-view@vv\.us)|(video-view@excoe\.com)|(xeco@rama\.com)|(ghj@brem\.com)|(fgtr@rembgr\.com)|(xero@saltam\.com)|(sora@remjem\.com)|(repo@saram\.com)|(tora@empoytr\.net)|(saving@ropbart\.com)|(japa@vbgt\.com)|(rtya@nop\.net)|(asan@khazan\.com)|(xerb@tangot\.com)|(audiotools@ramdeen\.com)|(webat@extrolm\.com)|(media@medplus\.com)|(audio@audequl\.com)|(control@medcontrols\.com)|(sabqo@rimjim\.com)|(repto@secroa\.com)|(meters@videobf\.com)|(betro@diskra\.com)|(codeca@vxmrop\.com)|(revoca@feronx\.com)|(brota@vidbrghta\.com))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="d6b2dbad-31e9-4984-b649-19036cd38e1d" id="/^((((generated-e0yf8zkhypow3jjifkqzwo)|(iiinclagpealgnaglbmkdbfbgchjjbpg)|(jaehkpjddfdgiiefcnhahapilbejohhj))@chrome-store-foxified--?\d+)|(jid1-9ETkKdBARv7Iww@jetpack)|(\{813fe658-5a29-4dcc-ba6c-3941676e4f19\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="f2483d7d-1895-4ae6-9901-7321e59062a6" id="/^((pohhpifegcbplaijeeonlbkjgocfgjbf@chrome-store-foxified-18573537)|(pohhpifegcbplaijeeonlbkjgocfgjbf@chrome-store-foxified-570932499)|(aackamlchlgmalkmcphbhhcjebbpnfdf@chrome-store-foxified-233164420)|(pohhpifegcbplaijeeonlbkjgocfgjbf@chrome-store-foxified-1808417494)|(nnfhjlgginbfdejaajhbboeemajpjgfp@chrome-store-foxified-699139867)|(dilkapnoekabmkkhhdlpnpfgjcmddlia@chrome-store-foxified-1808417494)|(dilkapnoekabmkkhhdlpnpfgjcmddlia@chrome-store-foxified-1190639722)|(nnfhjlgginbfdejaajhbboeemajpjgfp@chrome-store-foxified-2745518014)|(fibaefnljghpmdibfkhnlaniblfkkndi@chrome-store-foxified-1955364993)|(dilkapnoekabmkkhhdlpnpfgjcmddlia@chrome-store-foxified-1516694386)|(generated-rk4dtanssk56goquir78sz@chrome-store-foxified--1594555229)|(nnfhjlgginbfdejaajhbboeemajpjgfp@chrome-store-foxified-1388315457)|(oaoebpgbkehlcdggaeeohgfpopdhjell@chrome-store-foxified-1823310541)|(fibaefnljghpmdibfkhnlaniblfkkndi@chrome-store-foxified--1031675095)|(ancjheohbkbnkgcmfaldcaepoeeplkgh@chrome-store-foxified-1823310541)|(generated-lwcbpuj27wcknyyl6pkap7@chrome-store-foxified-1823310541)|(generated-bmtr2hbgikv399aj6aeycd@chrome-store-foxified-1823310541)|(generated-8w9odie82h2ugbsrofooj3@chrome-store-foxified-1823310541)|(\{4170faaa-ee87-4a0e-b57a-1aec49282887\})|(\{b66dd4bc-7f5e-41d9-bc43-84c5736d0c87\})|(\{507ad1fb-08ae-43ac-a596-fd5b6e7dea9a\})|(\{8bf85207-66df-4eb7-b913-ac162498c687\})|(\{b063895a-8077-452d-b049-ebc20a39f882\})|(\{5776bd90-3d09-43b5-a769-8da373e9820f\})|(\{f6bdce44-3d5a-4f88-9a64-e39fcb4f0717\})|(\{1c22e687-6a02-440c-a6d5-c1ccaf520e10\})|(\{f7be824f-7287-466a-8590-2f48007a223b\})|(\{89ffc0b4-97f7-447c-bd6f-9c519b0188bd\})|(\{3a67084b-c231-4b4b-a924-ffa741f90921\})|(\{fac8b1d0-f321-491d-9234-c40d89b3660d\})|(\{a8053a83-8d1a-4f0e-9f88-d31cfe00cf83\})|(\{d10fa57e-37d3-43d3-39f8-e6d5b2a7759d\})|(savetube_downloader@savetube\.co)|(\{95a8a08c-53a8-7e1d-5a80-f1a5cd4751bf\})|(\{5037bd74-c23b-4bbf-8865-6b5a09e07342\})|(\{830c558c-70f0-4b07-95f1-8e06ad34ee2c\})|(\{e4d93c37-1299-452f-9b60-adee15ad3802\})|(googlemaps@search))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="27917953-17fb-4ffc-bcf1-5fc2727174b4" id="restore.old@youtube.com">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="9600b4cd-da02-4947-a4f5-c56c657ba197" id="{5288d05d-253f-4675-be3b-152bf02aa3ec}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="5b3fe8de-6d05-4d95-a6d2-cd5695f1b0c0" id="{157cd8f9-48f0-43a1-9bcf-c4316753e083}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="32227de6-a7bf-454c-bf44-4478ddd96abe" id="{4603d01d-ae80-4653-9288-d5ef98b99a17}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="ec121e9e-d56d-436b-bb2d-735fdcff3c03" id="/^((\{8387ccbe-b9ac-438d-b049-c86b30a6dacb\})|(\{2ef58672-740c-46bd-a50d-b9880986b574\})|(\{7ff51e81-f4b1-4682-9f45-43a771d80748\})|(\{ecb03616-f3c2-4580-99dd-6a233047abdd\})|(\{850be3a2-ca5f-47ad-838c-fe39b006e0da\})|(\{df9f6ab1-c82c-41d4-85ce-86dcfe839ce9\})|(\{a59679da-f097-4db4-b2bc-6ad7b645e127\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="7bb234b0-cfda-4a23-bf02-9c82fb3500a3" id="{9d7cfde2-39ae-11e9-bde0-02427e2eba50}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="37252271-9e38-46a9-b23a-2b6d7048c0db" id="/^((\{e0686c32-99b4-44d8-972f-88bf08b68f88\})|(\{b2225e4c-9d1d-472b-8aeb-5ff203bcff9a\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="01825fea-8c5c-4d76-bd06-e1019c188056" id="{ba74c7ee-32b1-11e9-ade5-1f2222a4f325}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="1d596a69-157f-4743-9465-f86d6452206b" id="Youtube-downloader@Myaddons.com">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="a30f9f2a-aa68-48b7-88cc-8a582405b385" id="Youtube-video@Myaddons.com">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="77a32be3-94ce-49c2-b129-fa2562a7f47b" id="/^((\{6745ccb4-833d-497e-b582-d98a5e790e8c\})|(\{cd205ddb-b106-4d2a-a965-5d1c610b5072\})|(\{218ec82e-2839-42da-acaa-e527454f4237\})|(\{7af25a3d-1caf-49f8-8be9-8ae6065db7c5\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="7718be46-8e84-4bc7-a5a9-4c5de18378ee" id="/^((\{5084f455-bc8f-483c-b145-91245bcbfd64\})|(\{bd69d5d0-4b2f-48cb-bab5-dcf1e0f9c63b\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="aca80fb4-760e-4cd4-9fec-649fb38b2947" id="/^((\{ee2d725e-9726-43ac-8040-60ce9ff2831b\})|(\{55417a80-e6f7-4d77-8d73-f59045e5e890\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="2c739daa-ffee-48d9-a825-e53c8fd2bb3c" id="{c04d9d7d-1c8c-4eab-a51a-828c47e1b8b7}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="b57d9505-21bf-4a24-accb-05ceac50dadc" id="/^((\{86c18738-11ed-4c16-af92-786aa036c83c\})|(\{d0fee16a-f4eb-4dc1-9961-82b913e5943d\})|(\{1c4937a1-c678-4607-8665-a16384ee302e\})|(\{22caeb02-38a3-415d-b168-64fadccbb4a4\})|(\{1c9372e7-5f0e-4541-99cf-dfbf2ab00b01\})|(\{9fe66994-8ed1-4317-a20a-1d0544ca062f\})|(\{6df222d8-97c7-42bf-9683-1cf8119c1e9e\})|(\{4c2dda03-bad0-4160-a8a1-6d089200420e\})|(\{7aae7d4f-55b9-42eb-b683-932591265e17\})|(\{e6f8ab99-3c96-410c-95d1-267ad48ed3e2\})|(\{6d8c5068-d0cb-47a5-af5e-3f23064f4608\})|(\{90481f38-d06a-465e-a54c-206bbb1ee9ae\})|(\{4b75aeb8-f14a-4ef3-b1ad-09733b40dac3\})|(\{3a8ca495-f5ab-4320-b070-4f44266fe3d1\})|(\{84f8914f-0dec-48ed-a0fd-4a7712c06793\})|(\{aa613fce-603c-41df-bf49-9b09614cebe6\})|(\{30314350-199a-4951-9c05-c3537a946492\})|(\{a2edce1d-10ab-483d-8c01-5e5fe0c82902\})|(\{ec91a3d4-8311-4700-aa15-b3941f21a052\})|(\{e9049687-164a-4cf3-be1f-1291cfb0f44a\})|(\{2be73925-ebaf-43ca-8b26-bd820887f591\})|(\{840eadea-1c68-411f-b4e9-08d9f236385d\})|(\{0a89d040-5fb1-46d7-bf81-43b55e83695d\})|(\{6a1e76ed-4ac2-4a0c-8beb-43ae63558b36\})|(\{1b90c930-e7d7-486a-9085-8b57129489c7\})|(\{eab649ca-af76-4de9-95b0-8036e35a66cc\})|(\{0628e652-98f4-4e58-9ecb-ad996b061aef\})|(elfr@geckoaddon\.org)|(else@geckoaddon\.org)|(fr_b@iext\.pro)|(it_b@iext\.pro)|(sv_b@iext\.pro)|(no_b1@iext\.pro)|(fi_b@iext\.pro)|(au_b@iext\.pro)|(elfr12@geckoaddon\.org)|(test@informations\.to)|(se_pop@informations\.to)|(it@spongebog\.funny-ok\.com)|(it@tsunami\.funny-ok\.com)|(fi@spongebog\.funny-ok\.com)|(fi@tsunami\.funny-ok\.com)|(no@spongebog\.funny-ok\.com)|(no@tsunami\.funny-ok\.com)|(fr@tsunami\.funny-ok\.com)|(fr@spongebog\.funny-ok\.com)|(se@tsunami\.funny-ok\.com)|(se@spongebog\.funny-ok\.com)|(au@spongebog\.funny-ok\.com)|(au@tsunami\.funny-ok\.com)|(nz@spongebog\.funny-ok\.com)|(nz@tsunami\.funny-ok\.com)|(gr@spongebog\.funny-ok\.com)|(gr@tsunami\.funny-ok\.com)|(nz_fnew@tsunami\.funny-ok\.com))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="67025e3b-860c-4680-949f-ec472cd72fae" id="/^((ads@firefox\.pl)|(adsfinland@firefox\.pl)|(adsfrance@firefox\.pl)|(dodateknowy@o2\.pl)|(dodateksuper1@firefox\.pl)|(dodateksuper2@firefox\.pl)|(dodateksuper3@firefox\.pl)|(dodateksuper5@firefox\.pl)|(dodateksuper6@firefox\.pl)|(dodateksuper@firefox\.pl)|(test_b@iext\.pro)|(\{697be03c-cdd2-430e-b6cf-0f9b5f0556ee\})|(\{c9ced03f-a5cf-4dbf-b5ba-67673e442590\})|(\{cbe59f66-a23a-45c1-81ac-d0cbedf9ea4e\})|(\{dbf0a186-d41c-40ae-8841-e9d8a6b49d8d\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="3d52fe32-71e5-47bd-8eda-d98fa0c489e9" id="web-private@ext.com">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="3cfd9af5-a7d0-49d3-971b-7af5e2eab78f" id="{ae5b30dd-b29d-4ae6-844b-5d7bfc3d7915}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="ed853ce8-83e0-42b7-8d93-7f48041d4987" id="{6fb28b6b-abf2-4937-af28-340851faa971}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="e9227d28-b627-48b8-8392-e9fb5a00d9b6" id="{7b6def45-d585-431a-a479-5bb2badf2506}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="4bec4aaf-dd5b-4754-bd01-461fdc7ea5ca" id="{54fc344c-e8ba-462a-a6d9-9ce1b794ce46}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="ce66baec-1237-481c-87db-ccc1bcf0359d" id="{fb62e856-f09b-4cbc-ba07-642ab55f6cb4}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="5027a1c1-e050-434f-ba77-56417bc2d7cf" id="{e19fed8c-637a-42e3-b62a-3a6c4040ded8}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="5b807d5f-a192-450a-a0b3-98113c4beff1" id="{b6f5f2d0-1aa3-4e43-b536-6db1b1bf7d1c}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="f9cd41dd-9e52-4506-bb58-a31e189f4ab9" id="/^((\{0f6b717d-1625-4434-b770-5ae33eb64b16\})|(\{6d092be7-0bad-46af-9489-04e4b3988644\})|(\{7f6049d6-e8b0-4c42-8028-204d1458ddb6\})|(\{12b75028-c038-40bd-be5b-2809b7d18d78\})|(\{46f35a01-faaf-4fab-95e6-7dfc8b6d8b73\})|(\{55d2c6f7-62fa-4091-988b-7f4c4b3c1bff\})|(\{75aeaeec-d415-404d-84ba-bd70bcc5e70c\})|(\{76b8cf24-227d-4e2b-af4c-39ec5b47babf\})|(\{77b725cc-5d0e-4b82-88f0-ec6961acd697\})|(\{90fc8426-06ba-43ab-8110-7478ff86f531\})|(\{90fc8426-06ba-43ab-8110-7478ff86f539\})|(\{157cd8f9-48f0-43a1-9bcf-c4316753e084\})|(\{157cd8f9-48f0-43a1-9bcf-c4316753e085\})|(\{201ec7f7-57b1-48dd-945c-b1ea7489195d\})|(\{280fc0f5-6dfb-4a3c-92ae-acb2d5352175\})|(\{388f6d65-4a1b-43ac-b791-387882c30599\})|(\{0575cabd-38f3-4964-bdc3-0141a2f062e9\})|(\{927e4189-4f56-437e-a0d4-5e232612b5c7\})|(\{7277d7cf-c598-420b-ab6e-ab066e1e2fdd\})|(\{67775ec2-c879-438b-9409-89fba7ffc684\})|(\{397386d2-bb76-4b69-8121-86fad15c5216\})|(\{bd7f03dc-b362-4744-b118-43ab916205f9\})|(\{c133fb29-c967-4aec-953a-4974e8cbdb26\})|(\{cc94c8a7-efa3-435c-91fe-ca305f70e39d\})|(\{cfd2ff68-6579-4448-8a26-561bdb63877c\})|(\{d00f0050-a66c-49fc-9236-1498d4d29f67\})|(\{daa287a2-5916-413e-9b61-52c00b5aa061\})|(\{dcfac76f-2fd2-4477-9a60-22d167cabcb4\})|(\{dd1bbcf4-bff3-4f15-8a2c-3d52ce987f70\})|(\{ddb546b5-6490-4af5-8813-8e701bc06e26\})|(\{ead6848b-4bd6-4f9a-93bd-b8460c6f6973\})|(\{eb8f7a97-ffb0-40f1-9321-5ab1de884f1c\})|(\{ec3e8a3d-df39-4f84-ab31-dae369a225e4\})|(\{ef986f55-2dc9-4e39-8c87-618cf4fe5e69\})|(\{f8b4b601-7917-40c1-94ec-8efbbf125a46\})|(\{f8bc456c-0fb4-4d5d-a85f-dfeb25459e76\})|(\{f0458469-cc09-407e-a891-be8606553341\})|(\{fa73622c-8b41-45b8-9d93-6d66e7633765\})|(@loveroms)|(loveroms-ash1280@jetpack)|(searchdimension@gmail\.com))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="d2da9c45-59f8-4257-9d7e-07c4fa5de958" id="{a4491aab-e273-4bc3-b45e-a7b9b9414a5f}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="25f18cc5-6ecc-419f-b093-b79e9f261062" id="/^((\{1d758385-fddd-478e-85a0-13eef59f60e5\})|(\{1ec3e92a-fd3c-4e16-82e2-56d44bd7bdf4\})|(\{3dadda0d-d67c-4452-9475-246c33198192\})|(\{4a48f6a8-c9d6-4ae2-8513-a7e9fe785a56\})|(\{4d2da172-b160-42b5-9fea-0ede63e0ab52\})|(\{5bcd4feb-ce52-4e6f-9da6-eef2a75a4f70\})|(\{5eb45d74-0f46-4269-bc0e-8a2a49d64267\})|(\{7e8c27c0-b94c-4026-8068-2d152143f073\})|(\{9ede19b2-bb97-4d1c-abab-b1d72e7d4c74\})|(\{19abb7a0-fb4d-41ff-97d4-65f1680c1348\})|(\{25efbdeb-04fa-4998-a9f8-99c1293c7b7f\})|(\{0049a401-f02d-4d16-8b5e-5933e5855a4c\})|(\{65b91ca5-cd06-42a6-9637-8ecde3a69fd6\})|(\{146ec14e-f623-4cb2-88ed-7d3bb8101090\})|(\{790d2797-82f3-4bc3-8759-c00d426bbf2f\})|(\{865f42b5-e073-4a36-84b1-47d09096b48b\})|(\{90055a5b-45a8-45c1-b0a0-979ab2a9064f\})|(\{a4f5c163-7b64-46c4-bfd3-348ecc99873a\})|(\{a8c40ee7-a376-417b-8022-40909a10181b\})|(\{a1031346-14d3-464f-9e50-c30dfd88ad92\})|(\{abd16535-2fa8-4bfd-b84e-ed09c9c60e53\})|(\{b5ee8c58-b5e5-4ba0-a899-9a54a2f0e386\})|(\{b246bb42-577e-4587-adf2-7274b378b0b4\})|(\{bb43765b-fe06-4d50-9802-0c6742b220aa\})|(\{bf3f628d-9e52-4727-b940-054c65a5a304\})|(\{c6bc710d-8cc8-4224-9287-44ecfa452a81\})|(\{c232edce-83c9-4184-9782-22df800f65e2\})|(\{c5397be4-b756-45b8-a247-339846fada52\})|(\{c6675bc5-f7ea-4a11-8252-1152d3783ae3\})|(\{cc6a088b-5a84-4e48-8de8-d2f6be3abae7\})|(\{e6c12219-f67e-4ea0-a9c3-2c541febeff1\})|(\{eb3a7ef7-a4d0-49a4-8b21-2a91c1758100\})|(\{ec34588b-86b4-4de3-a3bf-f4d1d8386475\})|(\{f4fd8825-648f-4b63-a499-3fd702d42149\})|(\{fc4f31f6-c5ed-4afd-8c19-df96e107ce7d\})|(\{fe337ef5-bb69-44bf-82a8-ee5c13406165\})|(\{ff285a1c-5672-44c3-890e-6c4f25976b83\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="a3f5ce2f-d8ef-4dae-9fce-1d7fb69d2b37" id="amqp-dwn-all-vd@artur.brown">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="12874e4d-28b5-4e98-8c33-b6cf5eb032bf" id="{47610aad-982f-4822-93ca-8c27dc96a13b}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="6a7f932a-3911-4884-8cb9-d282d282c0cc" id="{3b52063a-0683-4de2-b6e1-6192c78b6ba3}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="81759002-967e-4856-9f55-61d7c30cdb3b" id="{781b89d4-fa53-45a1-bea4-151dd4c8b288}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="478d4acd-3c01-4dd5-b784-4e06b69d1c05" id="/^((\{9332d73d-7991-46bf-8b67-6db1a21f0167\})|(\{b33715d3-eff8-4186-a252-0af5094b8644\})|(\{eb7aff78-6145-4a31-a7f5-f3c353ddb312\})|(\{6c5cd693-2919-4458-b776-2ac5b6ab1cb0\})|(\{daacefee-aaba-4f10-8d4d-059904d8a153\})|(\{94d8d504-838c-4392-9971-cd2f6e21ca21\})|(\{6574bb31-c971-454f-b08c-a75bfee00855\})|(\{1688ecb0-e382-481f-8c70-541d70bdd2e9\})|(\{f7b9f777-7b01-4f73-8eb8-f2ad85d4da1c\})|(\{598d7ac6-1789-4573-ae6a-5798ed7f6d83\})|(\{c0eb4d03-d18e-40bf-b21b-8237ee1bed76\})|(\{d0513185-1f20-4045-a232-f3a4252af379\})|(\{9ae8269f-eea1-4097-87fd-b7d2f102184d\})|(\{5683f95b-2517-4ca7-9d19-83d7f309b62a\})|(\{013d3691-0dd6-471b-bf0d-2750d7406a22\})|(\{ae73a262-1a27-4d1d-9be7-4b41a84dfd23\})|(\{1d92fc5d-5353-401f-8c5f-373b3b6dae67\})|(\{e8a81b54-3728-4a9c-8c63-18ef803ef9be\})|(\{d604961b-3a3d-4f60-87ae-35977c10b787\})|(\{cbe9b620-fac0-407a-b3be-b0a61b319ef8\})|(\{1cdb403e-11c7-421b-9c87-0c0d90263626\})|(\{f5fa0bfe-a981-48ff-b809-8faa3126f0bc\})|(\{7dc6d0d2-b2f0-4334-979d-6ebeff77785a\})|(\{13623b47-de82-4226-85f8-d3ae343e619b\})|(\{db7b6ea7-2605-44c7-807b-2419d7eec531\})|(\{b9298a4a-acca-446d-aa72-d37f5e1576cd\})|(\{2e689bc0-735f-445c-bcc7-2cc495f5eb40\})|(\{04acd977-4c2b-4162-af33-8c585bea90c5\})|(\{2436dde0-3230-4933-9020-c15b3b9e693b\})|(\{dcb556aa-ef6e-4778-9f60-c5ae18a72cfb\})|(\{5a24385f-ada4-455d-95ad-62cb6256360d\})|(\{97f88a13-5b79-4345-a85e-2560d54f577c\})|(\{12f4cde8-7d1c-4a9e-9ef7-431f5ecd53a4\})|(\{18a93813-7deb-40cf-b3a6-402369e6d817\})|(\{9cee5c92-eb1e-4892-86ff-d2d1c627f5b9\})|(\{cb1c544e-d444-4c85-8224-64aa26e82230\})|(\{1c3b247f-2ef4-4483-93a6-0a3da7bc3548\})|(\{1f6913f2-dead-4f96-bf96-0e64affd46ae\})|(\{109adc7d-f308-43a5-aa0e-07ccdc5dad2c\})|(\{7170e23c-c706-48a7-919f-c1c22548dbfb\})|(\{6aa47f05-1f3f-4798-908a-0ed01b2361e0\})|(\{33ef0e7b-15ea-4b08-a779-173731ac20b3\})|(\{a0361564-9461-4da0-8ec0-7dc6f418f707\})|(\{c12631ed-993a-4c2e-9bf0-37867ae40491\})|(\{00b79649-3f0e-4b12-a8f0-376a7b2db716\})|(\{89096e44-c8b4-4ce5-aad2-f5bac765f608\})|(\{6f4eff89-0e32-42bd-a5c1-354adc8417fd\})|(\{482c54ae-e080-4596-bf7c-ae972fdff9a3\})|(\{04868575-532f-4b43-9325-7e707c109c25\})|(\{042c3065-1291-4409-bae5-8d11f3c268e2\})|(\{126e7fc4-bf2d-4467-88b1-f3b17bc10da4\})|(\{cea21739-b9ce-46c7-ad3e-3607b1ff6538\})|(\{06eea1e7-a8be-4794-8cd5-ed12e5f86161\})|(\{50993bc5-011c-4322-b522-41e6f3997163\})|(\{219a2146-5d9b-472a-8630-4c96a0994bec\})|(\{1db94c2f-d957-4b12-a1dc-903bb28f5ff5\})|(\{2f7d887c-7d56-41fa-bf9b-eadf6e500427\})|(\{2b16f4ab-a2a9-43fd-8fd6-ad6f354b0d28\})|(\{034d2b14-29e6-42ad-b2db-2c31286f3fb7\})|(\{77058195-5ae1-440c-8f86-c60a96d12ca9\})|(\{8082ff2f-2151-4281-8134-1423e5961ca1\})|(\{9fa797e8-d7d4-4851-b7e9-76b61ecf046f\})|(\{87178fbe-17a5-4d8d-b5ed-48d17179b101\})|(\{f010d9e9-0878-4c83-af45-df966cbe8d26\})|(\{2aa8c5cd-18fa-4991-b354-d6f459efeca9\})|(\{4021839d-3f4a-4866-94fb-9fa809c5245b\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="f60b3eec-b8b8-4bd7-8d2b-3f7912c3451f" id="{28ac81f1-b04d-448f-94be-1b8cc8fbd58d}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
</emItems>
<pluginItems>
<pluginItem blockID="p332">
@@ -2527,12 +2671,12 @@
<pluginItem blockID="832dc9ff-3314-4df2-abcf-7bd65a645371">
<match exp="(NPSWF32.*\.dll)|(NPSWF64.*\.dll)|(Flash\ Player\.plugin)" name="filename"/>
<infoURL>https://get.adobe.com/flashplayer/</infoURL>
- <versionRange maxVersion="31.0.0.153" minVersion="0" severity="0" vulnerabilitystatus="1"/>
+ <versionRange maxVersion="32.0.0.114" minVersion="0" severity="0" vulnerabilitystatus="1"/>
</pluginItem>
<pluginItem blockID="49b843cc-a8fc-4ede-be0c-a0da56d0214f" os="Linux">
<match exp="libflashplayer\.so" name="filename"/>
<infoURL>https://get.adobe.com/flashplayer/</infoURL>
- <versionRange maxVersion="31.0.0.153" minVersion="0" severity="0" vulnerabilitystatus="1"/>
+ <versionRange maxVersion="32.0.0.114" minVersion="0" severity="0" vulnerabilitystatus="1"/>
</pluginItem>
</pluginItems>
<gfxItems>
diff --git a/browser/base/content/test/about/browser_aboutSupport.js b/browser/base/content/test/about/browser_aboutSupport.js
index cd91c34..cc7921b 100644
--- a/browser/base/content/test/about/browser_aboutSupport.js
+++ b/browser/base/content/test/about/browser_aboutSupport.js
@@ -13,13 +13,21 @@ add_task(async function() {
let allowedStates = [strings.GetStringFromName("found"),
strings.GetStringFromName("missing")];
- let keyGoogleStatus = await ContentTask.spawn(browser, null, async function() {
- let textBox = content.document.getElementById("key-google-box");
+ let keyLocationServiceGoogleStatus = await ContentTask.spawn(browser, null, async function() {
+ let textBox = content.document.getElementById("key-location-service-google-box");
await ContentTaskUtils.waitForCondition(() => textBox.textContent.trim(),
- "Google API key status loaded");
+ "Google location service API key status loaded");
return textBox.textContent;
});
- ok(allowedStates.includes(keyGoogleStatus), "Google API key status shown");
+ ok(allowedStates.includes(keyLocationServiceGoogleStatus), "Google location service API key status shown");
+
+ let keySafebrowsingGoogleStatus = await ContentTask.spawn(browser, null, async function() {
+ let textBox = content.document.getElementById("key-safebrowsing-google-box");
+ await ContentTaskUtils.waitForCondition(() => textBox.textContent.trim(),
+ "Google Safebrowsing API key status loaded");
+ return textBox.textContent;
+ });
+ ok(allowedStates.includes(keySafebrowsingGoogleStatus), "Google Safebrowsing API key status shown");
let keyMozillaStatus = await ContentTask.spawn(browser, null, async function() {
let textBox = content.document.getElementById("key-mozilla-box");
diff --git a/browser/base/content/test/siteIdentity/browser_insecureLoginForms.js b/browser/base/content/test/siteIdentity/browser_insecureLoginForms.js
index cc06406..155cd22 100644
--- a/browser/base/content/test/siteIdentity/browser_insecureLoginForms.js
+++ b/browser/base/content/test/siteIdentity/browser_insecureLoginForms.js
@@ -18,7 +18,11 @@ function waitForInsecureLoginFormsStateChange(browser, count) {
*/
add_task(async function test_simple() {
await SpecialPowers.pushPrefEnv({
- "set": [["security.insecure_password.ui.enabled", true]],
+ "set": [
+ ["security.insecure_password.ui.enabled", true],
+ // By default, proxies don't apply to 127.0.0.1. We need them to for this test, though:
+ ["network.proxy.no_proxies_on", ""],
+ ],
});
for (let [origin, expectWarning] of [
diff --git a/browser/base/content/test/tabs/browser_contextmenu_openlink_after_tabnavigated.js b/browser/base/content/test/tabs/browser_contextmenu_openlink_after_tabnavigated.js
index a7223f0..110f6bc 100644
--- a/browser/base/content/test/tabs/browser_contextmenu_openlink_after_tabnavigated.js
+++ b/browser/base/content/test/tabs/browser_contextmenu_openlink_after_tabnavigated.js
@@ -20,7 +20,7 @@ add_task(async function test_contextmenu_openlink_after_tabnavigated() {
gBrowser.selectedBrowser.loadURI("about:blank");
await BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser);
- let awaitNewTabOpen = BrowserTestUtils.waitForNewTab(gBrowser, "http://example.com/");
+ let awaitNewTabOpen = BrowserTestUtils.waitForNewTab(gBrowser, "http://example.com/", true);
info("Click the 'open link in new tab' menu item");
let openLinkMenuItem = contextMenu.querySelector("#context-openlinkintab");
@@ -32,11 +32,8 @@ add_task(async function test_contextmenu_openlink_after_tabnavigated() {
// Close the contextMenu popup if it has not been closed yet.
contextMenu.hidePopup();
- await BrowserTestUtils.browserLoaded(newTab.linkedBrowser);
- const newTabURL = await ContentTask.spawn(newTab.linkedBrowser, null, async function() {
- return content.location.href;
- });
- is(newTabURL, "http://example.com/", "Got the expected URL loaded in the new tab");
+ is(newTab.linkedBrowser.currentURI.spec, "http://example.com/",
+ "Got the expected URL loaded in the new tab");
await BrowserTestUtils.removeTab(newTab);
await BrowserTestUtils.removeTab(tab);
diff --git a/browser/components/enterprisepolicies/Policies.jsm b/browser/components/enterprisepolicies/Policies.jsm
index f9055ff..636f4aa 100644
--- a/browser/components/enterprisepolicies/Policies.jsm
+++ b/browser/components/enterprisepolicies/Policies.jsm
@@ -454,7 +454,7 @@ var Policies = {
"DontCheckDefaultBrowser": {
onBeforeUIStartup(manager, param) {
- setAndLockPref("browser.shell.checkDefaultBrowser", false);
+ setAndLockPref("browser.shell.checkDefaultBrowser", !param);
}
},
@@ -540,6 +540,7 @@ var Policies = {
},
onInstallEnded: () => {
install.removeListener(listener);
+ install.addon.userDisabled = false;
log.debug(`Installation succeeded - ${location}`);
}
};
@@ -646,6 +647,7 @@ var Policies = {
setAndLockPref("xpinstall.enabled", param.Default);
if (!param.Default) {
blockAboutPage(manager, "about:debugging");
+ manager.disallowFeature("xpinstall");
}
}
}
@@ -875,6 +877,48 @@ var Policies = {
},
},
+ "SSLVersionMax": {
+ onBeforeAddons(manager, param) {
+ let tlsVersion;
+ switch (param) {
+ case "tls1":
+ tlsVersion = 1;
+ break;
+ case "tls1.1":
+ tlsVersion = 2;
+ break;
+ case "tls1.2":
+ tlsVersion = 3;
+ break;
+ case "tls1.3":
+ tlsVersion = 4;
+ break;
+ }
+ setAndLockPref("security.tls.version.max", tlsVersion);
+ },
+ },
+
+ "SSLVersionMin": {
+ onBeforeAddons(manager, param) {
+ let tlsVersion;
+ switch (param) {
+ case "tls1":
+ tlsVersion = 1;
+ break;
+ case "tls1.1":
+ tlsVersion = 2;
+ break;
+ case "tls1.2":
+ tlsVersion = 3;
+ break;
+ case "tls1.3":
+ tlsVersion = 4;
+ break;
+ }
+ setAndLockPref("security.tls.version.min", tlsVersion);
+ },
+ },
+
"WebsiteFilter": {
onBeforeUIStartup(manager, param) {
this.filter = new WebsiteFilter(param.Block || [], param.Exceptions || []);
diff --git a/browser/components/enterprisepolicies/schemas/policies-schema.json b/browser/components/enterprisepolicies/schemas/policies-schema.json
index 9e09001..41ac704 100644
--- a/browser/components/enterprisepolicies/schemas/policies-schema.json
+++ b/browser/components/enterprisepolicies/schemas/policies-schema.json
@@ -768,6 +768,16 @@
}
},
+ "SSLVersionMax": {
+ "type": "string",
+ "enum": ["tls1", "tls1.1", "tls1.2", "tls1.3"]
+ },
+
+ "SSLVersionMin": {
+ "type": "string",
+ "enum": ["tls1", "tls1.1", "tls1.2", "tls1.3"]
+ },
+
"WebsiteFilter": {
"description": "Blocks websites from being visited. The parameters take an array of Match Patterns, as documented in https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Match_patterns. Only http/https accesses are supported at the moment. The arrays are limited to 1000 entries each.",
"first_available": "60.0",
diff --git a/browser/components/enterprisepolicies/tests/browser/browser_policies_simple_pref_policies.js b/browser/components/enterprisepolicies/tests/browser/browser_policies_simple_pref_policies.js
index f70d997..3189b24 100644
--- a/browser/components/enterprisepolicies/tests/browser/browser_policies_simple_pref_policies.js
+++ b/browser/components/enterprisepolicies/tests/browser/browser_policies_simple_pref_policies.js
@@ -154,6 +154,30 @@ const POLICIES_TESTS = [
"privacy.clearOnShutdown.offlineApps": true,
}
},
+
+ // POLICY: SSLVersionMin/SSLVersionMax (1)
+ {
+ policies: {
+ "SSLVersionMin": "tls1",
+ "SSLVersionMax": "tls1.1",
+ },
+ lockedPrefs: {
+ "security.tls.version.min": 1,
+ "security.tls.version.max": 2,
+ },
+ },
+
+ // POLICY: SSLVersionMin/SSLVersionMax (2)
+ {
+ policies: {
+ "SSLVersionMin": "tls1.2",
+ "SSLVersionMax": "tls1.3",
+ },
+ lockedPrefs: {
+ "security.tls.version.min": 3,
+ "security.tls.version.max": 4,
+ },
+ },
];
add_task(async function test_policy_remember_passwords() {
diff --git a/browser/components/enterprisepolicies/tests/browser/browser_policies_sorted_alphabetically.js b/browser/components/enterprisepolicies/tests/browser/browser_policies_sorted_alphabetically.js
index 30f965d..8d1c423 100644
--- a/browser/components/enterprisepolicies/tests/browser/browser_policies_sorted_alphabetically.js
+++ b/browser/components/enterprisepolicies/tests/browser/browser_policies_sorted_alphabetically.js
@@ -5,7 +5,7 @@
function checkArrayIsSorted(array, msg) {
let sorted = true;
- let sortedArray = array.slice().sort();
+ let sortedArray = array.slice().sort(function(a, b) { return a.localeCompare(b); });
for (let i = 0; i < array.length; i++) {
if (array[i] != sortedArray[i]) {
diff --git a/browser/components/enterprisepolicies/tests/browser/browser_policy_default_browser_check.js b/browser/components/enterprisepolicies/tests/browser/browser_policy_default_browser_check.js
index 063c8d5..c72db32 100644
--- a/browser/components/enterprisepolicies/tests/browser/browser_policy_default_browser_check.js
+++ b/browser/components/enterprisepolicies/tests/browser/browser_policy_default_browser_check.js
@@ -25,3 +25,18 @@ add_task(async function test_default_browser_check() {
is(ShellService.shouldCheckDefaultBrowser, false, "Policy is enforced");
});
+
+add_task(async function test_default_browser_check() {
+ await setupPolicyEngineWithJson({
+ "policies": {
+ "DontCheckDefaultBrowser": false,
+ },
+ });
+
+ is(ShellService.shouldCheckDefaultBrowser, true, "Policy changed it to check");
+
+ // Try to change it to false and check that it doesn't take effect
+ ShellService.shouldCheckDefaultBrowser = false;
+
+ is(ShellService.shouldCheckDefaultBrowser, true, "Policy is enforced");
+});
diff --git a/browser/components/originattributes/test/browser/browser_firstPartyIsolation.js b/browser/components/originattributes/test/browser/browser_firstPartyIsolation.js
index 560de8c..26a09af 100644
--- a/browser/components/originattributes/test/browser/browser_firstPartyIsolation.js
+++ b/browser/components/originattributes/test/browser/browser_firstPartyIsolation.js
@@ -14,6 +14,11 @@ add_task(async function setup() {
* firstPartyDomain attribute.
*/
add_task(async function principal_test() {
+ Services.prefs.setCharPref("network.proxy.no_proxies_on", "");
+ registerCleanupFunction(function() {
+ Services.prefs.clearUserPref("network.proxy.no_proxies_on");
+ });
+
let tab = BrowserTestUtils.addTab(gBrowser, BASE_URL + "test_firstParty.html");
await BrowserTestUtils.browserLoaded(tab.linkedBrowser, true, function(url) {
return url == BASE_URL + "test_firstParty.html";
diff --git a/browser/components/preferences/connection.js b/browser/components/preferences/connection.js
index 62aa6bb..e357e4c 100644
--- a/browser/components/preferences/connection.js
+++ b/browser/components/preferences/connection.js
@@ -120,7 +120,7 @@ var gConnectionsDialog = {
var autologinProxyPref = Preferences.get("signon.autologin.proxy");
autologinProxyPref.disabled = proxyTypePref.value == 0;
var noProxiesPref = Preferences.get("network.proxy.no_proxies_on");
- noProxiesPref.disabled = proxyTypePref.value != 1;
+ noProxiesPref.disabled = proxyTypePref.value == 0;
var autoconfigURLPref = Preferences.get("network.proxy.autoconfig_url");
autoconfigURLPref.disabled = proxyTypePref.value != 2;
diff --git a/browser/components/preferences/connection.xul b/browser/components/preferences/connection.xul
index 4822a4d..26a6bd5 100644
--- a/browser/components/preferences/connection.xul
+++ b/browser/components/preferences/connection.xul
@@ -137,9 +137,6 @@
</radiogroup>
</box>
</row>
- <label accesskey="&noproxy2.accesskey;" control="networkProxyNone">&noproxy2.label;</label>
- <textbox id="networkProxyNone" preference="network.proxy.no_proxies_on" multiline="true" rows="2"/>
- <label control="networkProxyNone">&noproxyExplain.label;</label>
</rows>
</grid>
<radio value="2" label="&autoTypeRadio2.label;" accesskey="&autoTypeRadio2.accesskey;"/>
@@ -154,6 +151,9 @@
</radiogroup>
</groupbox>
<separator class="thin"/>
+ <label accesskey="&noproxy2.accesskey;" control="networkProxyNone">&noproxy2.label;</label>
+ <textbox id="networkProxyNone" preference="network.proxy.no_proxies_on" multiline="true" rows="2"/>
+ <label control="networkProxyNone">&noproxyExplain.label;</label>
<checkbox id="autologinProxy"
label="&autologinproxy.label;"
accesskey="&autologinproxy.accesskey;"
diff --git a/browser/components/preferences/in-content/tests/browser.ini b/browser/components/preferences/in-content/tests/browser.ini
index ab2920a..daa891b 100644
--- a/browser/components/preferences/in-content/tests/browser.ini
+++ b/browser/components/preferences/in-content/tests/browser.ini
@@ -22,7 +22,7 @@ skip-if = !updater
[browser_bug705422.js]
[browser_bug731866.js]
[browser_search_within_preferences_1.js]
-skip-if = (os == 'win' && processor == "x86_64") # Bug 1480314
+skip-if = os == 'win' # Bug 1480314
[browser_search_within_preferences_2.js]
[browser_search_within_preferences_command.js]
[browser_search_subdialogs_within_preferences_1.js]
diff --git a/browser/components/preferences/in-content/tests/browser_extension_controlled.js b/browser/components/preferences/in-content/tests/browser_extension_controlled.js
index 9ef6693..43395f4 100644
--- a/browser/components/preferences/in-content/tests/browser_extension_controlled.js
+++ b/browser/components/preferences/in-content/tests/browser_extension_controlled.js
@@ -676,12 +676,14 @@ add_task(async function testExtensionControlledProxyConfig() {
let manualControlContainer = controlGroup.querySelector("grid");
return {
manualControls: [
- ...manualControlContainer.querySelectorAll("label"),
- ...manualControlContainer.querySelectorAll("textbox"),
+ ...manualControlContainer.querySelectorAll("label:not([control=networkProxyNone])"),
+ ...manualControlContainer.querySelectorAll("textbox:not(#networkProxyNone)"),
...manualControlContainer.querySelectorAll("checkbox"),
...doc.querySelectorAll("#networkProxySOCKSVersion > radio")],
pacControls: [doc.getElementById("networkProxyAutoconfigURL")],
otherControls: [
+ doc.querySelector("label[control=networkProxyNone]"),
+ doc.getElementById("networkProxyNone"),
...controlGroup.querySelectorAll(":scope > radio"),
...doc.querySelectorAll("#ConnectionsDialogPane > checkbox")],
};
@@ -690,14 +692,14 @@ add_task(async function testExtensionControlledProxyConfig() {
let controls = getProxyControls();
for (let element of controls.manualControls) {
let disabled = isControlled || proxyType !== proxySvc.PROXYCONFIG_MANUAL;
- is(element.disabled, disabled, `Proxy controls are ${controlState}.`);
+ is(element.disabled, disabled, `Manual proxy controls should be ${controlState} - control: ${element.outerHTML}.`);
}
for (let element of controls.pacControls) {
let disabled = isControlled || proxyType !== proxySvc.PROXYCONFIG_PAC;
- is(element.disabled, disabled, `Proxy controls are ${controlState}.`);
+ is(element.disabled, disabled, `PAC proxy controls should be ${controlState} - control: ${element.outerHTML}.`);
}
for (let element of controls.otherControls) {
- is(element.disabled, isControlled, `Proxy controls are ${controlState}.`);
+ is(element.disabled, isControlled, `Other proxy controls should be ${controlState} - control: ${element.outerHTML}.`);
}
} else {
is(doc.getElementById(CONNECTION_SETTINGS_DESC_ID).textContent,
diff --git a/browser/components/resistfingerprinting/test/browser/browser.ini b/browser/components/resistfingerprinting/test/browser/browser.ini
index 3d69aed..024ee29 100644
--- a/browser/components/resistfingerprinting/test/browser/browser.ini
+++ b/browser/components/resistfingerprinting/test/browser/browser.ini
@@ -1,6 +1,7 @@
[DEFAULT]
tags = resistfingerprinting
support-files =
+ browser_navigator_header.sjs
file_dummy.html
file_keyBoardEvent.sjs
file_navigator.html
diff --git a/browser/components/resistfingerprinting/test/browser/browser_navigator.js b/browser/components/resistfingerprinting/test/browser/browser_navigator.js
index e0aaf6f..c2948b9 100644
--- a/browser/components/resistfingerprinting/test/browser/browser_navigator.js
+++ b/browser/components/resistfingerprinting/test/browser/browser_navigator.js
@@ -11,7 +11,8 @@ ChromeUtils.defineModuleGetter(this, "AppConstants",
const TEST_PATH = "http://example.net/browser/browser/" +
"components/resistfingerprinting/test/browser/";
-var spoofedUserAgent;
+var spoofedUserAgentNavigator;
+var spoofedUserAgentHeader;
const SPOOFED_APPNAME = "Netscape";
@@ -36,13 +37,20 @@ const SPOOFED_OSCPU = {
android: "Linux armv7l",
other: "Linux x86_64",
};
-const SPOOFED_UA_OS = {
+const SPOOFED_UA_NAVIGATOR_OS = {
linux: "X11; Linux x86_64",
win: "Windows NT 6.1; Win64; x64",
macosx: "Macintosh; Intel Mac OS X 10.13",
android: "Android 6.0; Mobile",
other: "X11; Linux x86_64",
};
+const SPOOFED_UA_HTTPHEADER_OS = {
+ linux: "Windows NT 6.1",
+ win: "Windows NT 6.1",
+ macosx: "Windows NT 6.1",
+ android: "Android 6.0; Mobile",
+ other: "Windows NT 6.1",
+};
const SPOOFED_BUILDID = "20100101";
const SPOOFED_HW_CONCURRENCY = 2;
@@ -52,6 +60,20 @@ const CONST_PRODUCTSUB = "20100101";
const CONST_VENDOR = "";
const CONST_VENDORSUB = "";
+async function testUserAgentHeader() {
+ const BASE = "http://mochi.test:8888/browser/browser/components/resistfingerprinting/test/browser/";
+ const TEST_TARGET_URL = `${BASE}browser_navigator_header.sjs?`;
+ let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, TEST_TARGET_URL);
+
+ let result = await ContentTask.spawn(tab.linkedBrowser, null, function() {
+ return content.document.body.textContent;
+ });
+
+ is(result, spoofedUserAgentHeader, "User Agent HTTP Header is correctly spoofed.");
+
+ BrowserTestUtils.removeTab(tab);
+}
+
async function testNavigator() {
// Open a tab to collect result.
let tab = await BrowserTestUtils.openNewForegroundTab(
@@ -66,7 +88,7 @@ async function testNavigator() {
is(result.appName, SPOOFED_APPNAME, "Navigator.appName is correctly spoofed.");
is(result.appVersion, SPOOFED_APPVERSION[AppConstants.platform], "Navigator.appVersion is correctly spoofed.");
is(result.platform, SPOOFED_PLATFORM[AppConstants.platform], "Navigator.platform is correctly spoofed.");
- is(result.userAgent, spoofedUserAgent, "Navigator.userAgent is correctly spoofed.");
+ is(result.userAgent, spoofedUserAgentNavigator, "Navigator.userAgent is correctly spoofed.");
is(result.mimeTypesLength, 0, "Navigator.mimeTypes has a length of 0.");
is(result.pluginsLength, 0, "Navigator.plugins has a length of 0.");
is(result.oscpu, SPOOFED_OSCPU[AppConstants.platform], "Navigator.oscpu is correctly spoofed.");
@@ -104,7 +126,7 @@ async function testWorkerNavigator() {
is(result.appName, SPOOFED_APPNAME, "Navigator.appName is correctly spoofed.");
is(result.appVersion, SPOOFED_APPVERSION[AppConstants.platform], "Navigator.appVersion is correctly spoofed.");
is(result.platform, SPOOFED_PLATFORM[AppConstants.platform], "Navigator.platform is correctly spoofed.");
- is(result.userAgent, spoofedUserAgent, "Navigator.userAgent is correctly spoofed.");
+ is(result.userAgent, spoofedUserAgentNavigator, "Navigator.userAgent is correctly spoofed.");
is(result.hardwareConcurrency, SPOOFED_HW_CONCURRENCY, "Navigator.hardwareConcurrency is correctly spoofed.");
is(result.appCodeName, CONST_APPCODENAME, "Navigator.appCodeName reports correct constant value.");
@@ -120,13 +142,18 @@ add_task(async function setup() {
let appVersion = parseInt(Services.appinfo.version);
let spoofedVersion = appVersion - ((appVersion - 4) % 7);
- spoofedUserAgent = `Mozilla/5.0 (${SPOOFED_UA_OS[AppConstants.platform]}; rv:${spoofedVersion}.0) Gecko/20100101 Firefox/${spoofedVersion}.0`;
+ spoofedUserAgentNavigator = `Mozilla/5.0 (${SPOOFED_UA_NAVIGATOR_OS[AppConstants.platform]}; rv:${spoofedVersion}.0) Gecko/20100101 Firefox/${spoofedVersion}.0`;
+ spoofedUserAgentHeader = `Mozilla/5.0 (${SPOOFED_UA_HTTPHEADER_OS[AppConstants.platform]}; rv:${spoofedVersion}.0) Gecko/20100101 Firefox/${spoofedVersion}.0`;
});
add_task(async function runNavigatorTest() {
await testNavigator();
});
+add_task(async function runHTTPHeaderTest() {
+ await testUserAgentHeader();
+});
+
add_task(async function runWorkerNavigatorTest() {
await testWorkerNavigator();
});
@@ -147,4 +174,6 @@ add_task(async function runOverrideTest() {
await testNavigator();
await testWorkerNavigator();
+
+ await testUserAgentHeader();
});
diff --git a/browser/components/resistfingerprinting/test/browser/browser_navigator_header.sjs b/browser/components/resistfingerprinting/test/browser/browser_navigator_header.sjs
new file mode 100644
index 0000000..7a6200d
--- /dev/null
+++ b/browser/components/resistfingerprinting/test/browser/browser_navigator_header.sjs
@@ -0,0 +1,11 @@
+"use strict";
+
+function handleRequest(request, response) {
+ response.setHeader("Content-Type", "text/plain; charset=UTF-8", false);
+
+ if (request.hasHeader("user-agent")) {
+ response.write(request.getHeader("user-agent"));
+ } else {
+ response.write("no user agent header");
+ }
+} \ No newline at end of file
diff --git a/browser/components/search/test/browser_google.js b/browser/components/search/test/browser_google.js
index 9aa9427..ba00b46 100644
--- a/browser/components/search/test/browser_google.js
+++ b/browser/components/search/test/browser_google.js
@@ -59,47 +59,49 @@ function test() {
let code = "";
switch (countryCode) {
case "US":
- code = "firefox-b-1";
+ if (AppConstants.MOZ_APP_VERSION_DISPLAY.endsWith("esr")) {
+ code = "firefox-b-1-e";
+ } else {
+ code = "firefox-b-1-d";
+ }
break;
case "DE":
- code = "firefox-b";
+ if (AppConstants.MOZ_APP_VERSION_DISPLAY.endsWith("esr")) {
+ code = "firefox-b-e";
+ } else {
+ code = "firefox-b-d";
+ }
break;
case "RU":
- // Covered by test but doesn't use a code
+ if (AppConstants.MOZ_APP_VERSION_DISPLAY.endsWith("esr")) {
+ code = "firefox-b-e";
+ } else {
+ code = "firefox-b-d";
+ }
break;
}
let base = "https://www.google.com/search?q=foo&ie=utf-8&oe=utf-8";
// Keyword uses a slightly different code
- let keywordBase = base;
if (code) {
let suffix = `&client=${code}`;
base += suffix;
- keywordBase += `${suffix}-ab`;
expectedEngine.searchForm += suffix;
let urlParams = expectedEngine.wrappedJSObject._urls[1].params;
urlParams.push({
name: "client",
- value: `${code}-ab`,
- purpose: "keyword",
- });
- urlParams.push({
- name: "client",
value: code,
- purpose: "searchbar",
});
}
let url;
// Test search URLs (including purposes).
- let purposes = ["", "contextmenu", "searchbar", "homepage", "newtab"];
+ let purposes = ["", "contextmenu", "searchbar", "homepage", "newtab", "keyword"];
for (let purpose of purposes) {
url = engine.getSubmission("foo", null, purpose).uri.spec;
is(url, base, `Check ${purpose} search URL for 'foo'`);
}
- url = engine.getSubmission("foo", null, "keyword").uri.spec;
- is(url, keywordBase, "Check keyword search URL for 'foo'");
// Check search suggestion URL.
url = engine.getSubmission("foo", "application/x-suggestions+json").uri.spec;
diff --git a/browser/components/search/test/browser_google_behavior.js b/browser/components/search/test/browser_google_behavior.js
index d063271..cfb2d98 100644
--- a/browser/components/search/test/browser_google_behavior.js
+++ b/browser/components/search/test/browser_google_behavior.js
@@ -25,13 +25,25 @@ let countryCode = Services.prefs.getCharPref("browser.search.countryCode");
let code = "";
switch (countryCode) {
case "US":
- code = "firefox-b-1";
+ if (AppConstants.MOZ_APP_VERSION_DISPLAY.endsWith("esr")) {
+ code = "firefox-b-1-e";
+ } else {
+ code = "firefox-b-1-d";
+ }
break;
case "DE":
- code = "firefox-b";
+ if (AppConstants.MOZ_APP_VERSION_DISPLAY.endsWith("esr")) {
+ code = "firefox-b-e";
+ } else {
+ code = "firefox-b-d";
+ }
break;
case "RU":
- // Covered by test but doesn't use a code
+ if (AppConstants.MOZ_APP_VERSION_DISPLAY.endsWith("esr")) {
+ code = "firefox-b-e";
+ } else {
+ code = "firefox-b-d";
+ }
break;
}
@@ -41,7 +53,7 @@ if (code) {
codes.context = suffix;
codes.newTab = suffix;
codes.submission = suffix;
- codes.keyword = `${suffix}-ab`;
+ codes.keyword = suffix;
}
function promiseContentSearchReady(browser) {
diff --git a/browser/config/mozconfigs/linux32/common-opt b/browser/config/mozconfigs/linux32/common-opt
index 4ba77c5..c60f333 100644
--- a/browser/config/mozconfigs/linux32/common-opt
+++ b/browser/config/mozconfigs/linux32/common-opt
@@ -3,7 +3,8 @@
. $topsrcdir/build/mozconfig.stylo
ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL}
-ac_add_options --with-google-api-keyfile=/builds/gapi.data
+ac_add_options --with-google-location-service-api-keyfile=/builds/gls-gapi.data
+ac_add_options --with-google-safebrowsing-api-keyfile=/builds/sb-gapi.data
ac_add_options --with-mozilla-api-keyfile=/builds/mozilla-desktop-geoloc-api.key
. $topsrcdir/build/unix/mozconfig.linux32
diff --git a/browser/config/mozconfigs/linux64/common-opt b/browser/config/mozconfigs/linux64/common-opt
index 2b810f2..a7b2ff0 100644
--- a/browser/config/mozconfigs/linux64/common-opt
+++ b/browser/config/mozconfigs/linux64/common-opt
@@ -3,7 +3,8 @@
. $topsrcdir/build/mozconfig.stylo
ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL}
-ac_add_options --with-google-api-keyfile=/builds/gapi.data
+ac_add_options --with-google-location-service-api-keyfile=/builds/gls-gapi.data
+ac_add_options --with-google-safebrowsing-api-keyfile=/builds/sb-gapi.data
ac_add_options --with-mozilla-api-keyfile=/builds/mozilla-desktop-geoloc-api.key
. $topsrcdir/build/unix/mozconfig.linux
diff --git a/browser/config/mozconfigs/macosx64/common-opt b/browser/config/mozconfigs/macosx64/common-opt
index 413fb6d..9b25033 100644
--- a/browser/config/mozconfigs/macosx64/common-opt
+++ b/browser/config/mozconfigs/macosx64/common-opt
@@ -3,7 +3,8 @@
. $topsrcdir/build/macosx/mozconfig.common
ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL}
-ac_add_options --with-google-api-keyfile=/builds/gapi.data
+ac_add_options --with-google-location-service-api-keyfile=/builds/gls-gapi.data
+ac_add_options --with-google-safebrowsing-api-keyfile=/builds/sb-gapi.data
ac_add_options --with-mozilla-api-keyfile=/builds/mozilla-desktop-geoloc-api.key
# Needed to enable breakpad in application.ini
diff --git a/browser/config/mozconfigs/win32/common-opt b/browser/config/mozconfigs/win32/common-opt
index cec7b0b..9518aa3 100644
--- a/browser/config/mozconfigs/win32/common-opt
+++ b/browser/config/mozconfigs/win32/common-opt
@@ -7,14 +7,10 @@
ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL}
ac_add_options --enable-jemalloc
-if [ -f /c/builds/gapi.data ]; then
- _gapi_keyfile=c:/builds/gapi.data
-else
- _gapi_keyfile=e:/builds/gapi.data
-fi
-ac_add_options --with-google-api-keyfile=${_gapi_keyfile}
-
-ac_add_options --with-mozilla-api-keyfile=c:/builds/mozilla-desktop-geoloc-api.key
+ac_add_options --with-google-location-service-api-keyfile=${WORKSPACE}/gls-gapi.data
+ac_add_options --with-google-safebrowsing-api-keyfile=${WORKSPACE}/sb-gapi.data
+
+ac_add_options --with-mozilla-api-keyfile=${WORKSPACE}/mozilla-desktop-geoloc-api.key
# Needed to enable breakpad in application.ini
export MOZILLA_OFFICIAL=1
diff --git a/browser/config/mozconfigs/win64/common-opt b/browser/config/mozconfigs/win64/common-opt
index 4cd8607..80e406f 100644
--- a/browser/config/mozconfigs/win64/common-opt
+++ b/browser/config/mozconfigs/win64/common-opt
@@ -6,14 +6,10 @@
ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL}
ac_add_options --enable-jemalloc
-if [ -f /c/builds/gapi.data ]; then
- _gapi_keyfile=c:/builds/gapi.data
-else
- _gapi_keyfile=e:/builds/gapi.data
-fi
-ac_add_options --with-google-api-keyfile=${_gapi_keyfile}
-
-ac_add_options --with-mozilla-api-keyfile=c:/builds/mozilla-desktop-geoloc-api.key
+ac_add_options --with-google-location-service-api-keyfile=${WORKSPACE}/gls-gapi.data
+ac_add_options --with-google-safebrowsing-api-keyfile=${WORKSPACE}/sb-gapi.data
+
+ac_add_options --with-mozilla-api-keyfile=${WORKSPACE}/mozilla-desktop-geoloc-api.key
# Needed to enable breakpad in application.ini
export MOZILLA_OFFICIAL=1
diff --git a/browser/config/version.txt b/browser/config/version.txt
index b96fd2d..a3fc1cf 100644
--- a/browser/config/version.txt
+++ b/browser/config/version.txt
@@ -1 +1 @@
-60.5.1
+60.6.1
diff --git a/browser/config/version_display.txt b/browser/config/version_display.txt
index bec0ced..d0c9161 100644
--- a/browser/config/version_display.txt
+++ b/browser/config/version_display.txt
@@ -1 +1 @@
-60.5.1esr
+60.6.1esr
diff --git a/browser/locales/en-US/chrome/browser/preferences/connection.dtd b/browser/locales/en-US/chrome/browser/preferences/connection.dtd
index b57ee5d..cfc7b7a 100644
--- a/browser/locales/en-US/chrome/browser/preferences/connection.dtd
+++ b/browser/locales/en-US/chrome/browser/preferences/connection.dtd
@@ -39,7 +39,7 @@
<!ENTITY SSLport.accesskey "o">
<!ENTITY FTPport.accesskey "r">
<!ENTITY SOCKSport.accesskey "t">
-<!ENTITY noproxy2.label "No Proxy for">
+<!ENTITY noproxy2.label "No proxy for">
<!ENTITY noproxy2.accesskey "n">
<!ENTITY noproxyExplain.label "Example: .mozilla.org, .net.nz, 192.168.1.0/24">
<!ENTITY shareproxy.label "Use this proxy server for all protocols">
diff --git a/browser/locales/search/list.json b/browser/locales/search/list.json
index be9b923..d7ce3b7 100644
--- a/browser/locales/search/list.json
+++ b/browser/locales/search/list.json
@@ -1,32 +1,17 @@
{
"default": {
"visibleDefaultEngines": [
- "google", "amazondotcom", "bing", "ddg", "ebay", "twitter", "wikipedia"
+ "google-b-d", "amazondotcom", "bing", "ddg", "ebay", "twitter", "wikipedia"
]
},
"regionOverrides": {
"US": {
- "google": "google-2018"
+ "google-b-d": "google-b-1-d"
},
"CA": {
"ebay": "ebay-ca",
"ebay-fr": "ebay-ca"
},
- "KZ": {
- "google": "google-nocodes"
- },
- "BY": {
- "google": "google-nocodes"
- },
- "RU": {
- "google": "google-nocodes"
- },
- "TR": {
- "google": "google-nocodes"
- },
- "CN": {
- "google": "google-nocodes"
- },
"AT": {
"ebay-de": "ebay-at"
},
@@ -53,172 +38,184 @@
},
"GB": {
"ebay": "ebay-uk"
+ },
+ "esronly-1": {
+ "google-b-d": "google-b-e"
+ },
+ "esronly-2": {
+ "google-b-d": "google-b-1-e"
+ },
+ "esronly-3": {
+ "google-b-d": "google"
+ },
+ "esronly-4": {
+ "google-b-d": "google-2018"
}
},
"locales": {
"en-US": {
"default": {
"visibleDefaultEngines": [
- "google", "amazondotcom", "bing", "ddg", "ebay", "twitter", "wikipedia"
+ "google-b-d", "amazondotcom", "bing", "ddg", "ebay", "twitter", "wikipedia"
]
},
"experimental-hidden": {
"visibleDefaultEngines": [
- "amazon-ca", "amazon-au", "google-2018", "yandex-en"
+ "amazon-ca", "amazon-au", "yandex-en"
]
}
},
"ach": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia"
+ "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia"
]
}
},
"af": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "wikipedia-af"
+ "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-af"
]
}
},
"an": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "ebay-es", "wikipedia-an", "ddg", "twitter"
+ "google-b-d", "bing", "ebay-es", "wikipedia-an", "ddg", "twitter"
]
}
},
"ar": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "wikipedia-ar"
+ "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-ar"
]
}
},
"as": {
"default": {
"visibleDefaultEngines": [
- "google", "amazondotcom", "ddg", "wikipedia-as"
+ "google-b-d", "amazondotcom", "ddg", "wikipedia-as"
]
}
},
"ast": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "diccionariu-alla", "ddg", "ebay-es", "wikipedia-ast"
+ "google-b-d", "bing", "diccionariu-alla", "ddg", "ebay-es", "wikipedia-ast"
]
}
},
"az": {
"default": {
"visibleDefaultEngines": [
- "google", "amazondotcom", "azerdict", "bing", "ddg", "wikipedia-az", "yandex-az"
+ "google-b-d", "amazondotcom", "azerdict", "bing", "ddg", "wikipedia-az", "yandex-az"
]
}
},
"be": {
"default": {
"visibleDefaultEngines": [
- "yandex-by", "google", "ddg", "wikipedia-be", "wikipedia-be-tarask"
+ "yandex-by", "google-b-d", "ddg", "wikipedia-be", "wikipedia-be-tarask"
]
}
},
"bg": {
"default": {
"visibleDefaultEngines": [
- "google", "amazondotcom", "ddg", "portalbgdict", "wikipedia-bg"
+ "google-b-d", "amazondotcom", "ddg", "portalbgdict", "wikipedia-bg"
]
}
},
"bn-BD": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "ddg", "wikipedia-bn"
+ "google-b-d", "bing", "ddg", "wikipedia-bn"
]
}
},
"bn-IN": {
"default": {
"visibleDefaultEngines": [
- "google", "amazondotcom", "bing", "ddg", "rediff", "wikipedia-bn"
+ "google-b-d", "amazondotcom", "bing", "ddg", "rediff", "wikipedia-bn"
]
}
},
"br": {
"default": {
"visibleDefaultEngines": [
- "google", "amazon-france", "ddg", "ebay-fr", "freelang", "klask", "wikipedia-br"
+ "google-b-d", "amazon-france", "ddg", "ebay-fr", "freelang", "klask", "wikipedia-br"
]
}
},
"bs": {
"default": {
"visibleDefaultEngines": [
- "google", "ddg", "olx", "twitter", "wikipedia-bs"
+ "google-b-d", "ddg", "olx", "twitter", "wikipedia-bs"
]
}
},
"ca": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "diec2", "ddg", "ebay-es", "twitter", "wikipedia-ca"
+ "google-b-d", "bing", "diec2", "ddg", "ebay-es", "twitter", "wikipedia-ca"
]
}
},
"cak": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "wikipedia-es"
+ "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-es"
]
}
},
"cs": {
"default": {
"visibleDefaultEngines": [
- "google", "seznam-cz", "ddg", "heureka-cz", "mapy-cz", "wikipedia-cz"
+ "google-b-d", "seznam-cz", "ddg", "heureka-cz", "mapy-cz", "wikipedia-cz"
]
}
},
"cy": {
"default": {
"visibleDefaultEngines": [
- "google", "amazon-en-GB", "ddg", "ebay-uk", "palasprint", "termau", "wikipedia-cy"
+ "google-b-d", "amazon-en-GB", "ddg", "ebay-uk", "palasprint", "termau", "wikipedia-cy"
]
}
},
"da": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-en-GB", "ddg", "wikipedia-da"
+ "google-b-d", "bing", "amazon-en-GB", "ddg", "wikipedia-da"
]
}
},
"de": {
"default": {
"visibleDefaultEngines": [
- "google", "amazondotcom-de", "bing", "ddg", "ebay-de", "ecosia", "leo_ende_de", "wikipedia-de"
+ "google-b-d", "amazondotcom-de", "bing", "ddg", "ebay-de", "ecosia", "leo_ende_de", "wikipedia-de"
]
}
},
"dsb": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom-de", "ddg", "ebay-de", "leo_ende_de", "wikipedia-dsb"
+ "google-b-d", "bing", "amazondotcom-de", "ddg", "ebay-de", "leo_ende_de", "wikipedia-dsb"
]
}
},
"el": {
"default": {
"visibleDefaultEngines": [
- "google", "amazon-en-GB", "bing", "ddg", "wikipedia-el"
+ "google-b-d", "amazon-en-GB", "bing", "ddg", "wikipedia-el"
]
}
},
"en-GB": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-en-GB", "chambers-en-GB", "ddg", "ebay-uk", "twitter", "wikipedia"
+ "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ddg", "ebay-uk", "twitter", "wikipedia"
]
},
"experimental-hidden": {
@@ -230,42 +227,42 @@
"en-ZA": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia"
+ "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia"
]
}
},
"eo": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "reta-vortaro", "wikipedia-eo"
+ "google-b-d", "bing", "amazondotcom", "ddg", "reta-vortaro", "wikipedia-eo"
]
}
},
"es-AR": {
"default": {
"visibleDefaultEngines": [
- "google", "amazondotcom", "drae", "ddg", "mercadolibre-ar", "wikipedia-es"
+ "google-b-d", "amazondotcom", "drae", "ddg", "mercadolibre-ar", "wikipedia-es"
]
}
},
"es-CL": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "drae", "ddg", "mercadolibre-cl", "wikipedia-es"
+ "google-b-d", "bing", "drae", "ddg", "mercadolibre-cl", "wikipedia-es"
]
}
},
"es-ES": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "drae", "ddg", "ebay-es", "twitter", "wikipedia-es"
+ "google-b-d", "bing", "drae", "ddg", "ebay-es", "twitter", "wikipedia-es"
]
}
},
"es-MX": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "ddg", "mercadolibre-mx", "wikipedia-es"
+ "google-b-d", "bing", "ddg", "mercadolibre-mx", "wikipedia-es"
]
},
"experimental-hidden": {
@@ -277,49 +274,49 @@
"et": {
"default": {
"visibleDefaultEngines": [
- "google", "neti-ee", "ddg", "osta-ee", "wikipedia-et", "eki-ee"
+ "google-b-d", "neti-ee", "ddg", "osta-ee", "wikipedia-et", "eki-ee"
]
}
},
"eu": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-en-GB", "ddg", "ebay-es", "elebila", "wikipedia-eu"
+ "google-b-d", "bing", "amazon-en-GB", "ddg", "ebay-es", "elebila", "wikipedia-eu"
]
}
},
"fa": {
"default": {
"visibleDefaultEngines": [
- "google", "amazondotcom", "bing", "ddg", "wikipedia-fa"
+ "google-b-d", "amazondotcom", "bing", "ddg", "wikipedia-fa"
]
}
},
"ff": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-france", "ddg", "cnrtl-tlfi-fr", "wikipedia-fr"
+ "google-b-d", "bing", "amazon-france", "ddg", "cnrtl-tlfi-fr", "wikipedia-fr"
]
}
},
"fi": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "bookplus-fi", "ddg", "wikipedia-fi"
+ "google-b-d", "bing", "bookplus-fi", "ddg", "wikipedia-fi"
]
}
},
"fr": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-france", "ddg", "ebay-fr", "cnrtl-tlfi-fr", "qwant", "wikipedia-fr"
+ "google-b-d", "bing", "amazon-france", "ddg", "ebay-fr", "cnrtl-tlfi-fr", "qwant", "wikipedia-fr"
]
}
},
"fy-NL": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "bolcom-fy-NL", "ddg", "ebay-nl", "marktplaats-fy-NL", "wikipedia-fy-NL"
+ "google-b-d", "bing", "bolcom-fy-NL", "ddg", "ebay-nl", "marktplaats-fy-NL", "wikipedia-fy-NL"
]
},
"experimental-hidden": {
@@ -331,259 +328,259 @@
"ga-IE": {
"default": {
"visibleDefaultEngines": [
- "google", "amazon-en-GB", "ddg", "ebay-ie", "tearma", "twitter", "wikipedia-ga-IE"
+ "google-b-d", "amazon-en-GB", "ddg", "ebay-ie", "tearma", "twitter", "wikipedia-ga-IE"
]
}
},
"gd": {
"default": {
"visibleDefaultEngines": [
- "google", "amazon-en-GB", "bbc-alba", "ddg", "ebay-uk", "faclair-beag", "wikipedia-gd"
+ "google-b-d", "amazon-en-GB", "bbc-alba", "ddg", "ebay-uk", "faclair-beag", "wikipedia-gd"
]
}
},
"gl": {
"default": {
"visibleDefaultEngines": [
- "google", "amazon-en-GB", "ddg", "ebay-es", "wikipedia-gl"
+ "google-b-d", "amazon-en-GB", "ddg", "ebay-es", "wikipedia-gl"
]
}
},
"gn": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-gn"
+ "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-gn"
]
}
},
"gu-IN": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "ddg", "gujaratilexicon", "wikipedia-gu"
+ "google-b-d", "bing", "ddg", "gujaratilexicon", "wikipedia-gu"
]
}
},
"he": {
"default": {
"visibleDefaultEngines": [
- "google", "ddg", "wikipedia-he", "morfix-dic"
+ "google-b-d", "ddg", "wikipedia-he", "morfix-dic"
]
}
},
"hi-IN": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "ddg", "wikipedia-hi"
+ "google-b-d", "bing", "ddg", "wikipedia-hi"
]
}
},
"hr": {
"default": {
"visibleDefaultEngines": [
- "google", "amazon-en-GB", "bing", "ddg", "eudict", "twitter", "wikipedia-hr"
+ "google-b-d", "amazon-en-GB", "bing", "ddg", "eudict", "twitter", "wikipedia-hr"
]
}
},
"hsb": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom-de", "ddg", "ebay-de", "leo_ende_de", "wikipedia-hsb"
+ "google-b-d", "bing", "amazondotcom-de", "ddg", "ebay-de", "leo_ende_de", "wikipedia-hsb"
]
}
},
"hu": {
"default": {
"visibleDefaultEngines": [
- "google", "ddg", "sztaki-en-hu", "vatera", "wikipedia-hu"
+ "google-b-d", "ddg", "sztaki-en-hu", "vatera", "wikipedia-hu"
]
}
},
"hy-AM": {
"default": {
"visibleDefaultEngines": [
- "google", "amazondotcom", "ddg", "list-am", "wikipedia-hy"
+ "google-b-d", "amazondotcom", "ddg", "list-am", "wikipedia-hy"
]
}
},
"ia": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-ia"
+ "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-ia"
]
}
},
"id": {
"default": {
"visibleDefaultEngines": [
- "google", "ddg", "wikipedia-id"
+ "google-b-d", "ddg", "wikipedia-id"
]
}
},
"is": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "leit-is", "wikipedia-is"
+ "google-b-d", "bing", "amazondotcom", "ddg", "leit-is", "wikipedia-is"
]
}
},
"it": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-it", "ddg", "ebay-it", "hoepli", "wikipedia-it"
+ "google-b-d", "bing", "amazon-it", "ddg", "ebay-it", "hoepli", "wikipedia-it"
]
}
},
"ja-JP-mac": {
"default": {
"visibleDefaultEngines": [
- "google", "yahoo-jp", "bing", "amazon-jp", "rakuten", "yahoo-jp-auctions", "oshiete-goo", "twitter-ja", "wikipedia-ja", "ddg"
+ "google-b-d", "yahoo-jp", "bing", "amazon-jp", "rakuten", "yahoo-jp-auctions", "oshiete-goo", "twitter-ja", "wikipedia-ja", "ddg"
]
}
},
"ja": {
"default": {
"visibleDefaultEngines": [
- "google", "yahoo-jp", "bing", "amazon-jp", "rakuten", "yahoo-jp-auctions", "oshiete-goo", "twitter-ja", "wikipedia-ja", "ddg"
+ "google-b-d", "yahoo-jp", "bing", "amazon-jp", "rakuten", "yahoo-jp-auctions", "oshiete-goo", "twitter-ja", "wikipedia-ja", "ddg"
]
}
},
"ka": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-ka"
+ "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-ka"
]
}
},
"kab": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "ddg", "wikipedia-kab"
+ "google-b-d", "bing", "ddg", "wikipedia-kab"
]
}
},
"kk": {
"default": {
"visibleDefaultEngines": [
- "yandex-kk", "google", "ddg", "flip", "kaz-kk", "twitter", "wikipedia-kk"
+ "yandex-kk", "google-b-d", "ddg", "flip", "kaz-kk", "twitter", "wikipedia-kk"
]
}
},
"km": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-km"
+ "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-km"
]
}
},
"kn": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "kannadastore", "wikipedia-kn"
+ "google-b-d", "bing", "amazondotcom", "ddg", "kannadastore", "wikipedia-kn"
]
}
},
"ko": {
"default": {
"visibleDefaultEngines": [
- "google", "ddg", "naver-kr", "danawa-kr", "daum-kr", "wikipedia-kr"
+ "google-b-d", "ddg", "naver-kr", "danawa-kr", "daum-kr", "wikipedia-kr"
]
}
},
"lij": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-it", "ddg", "ebay-it", "paroledigenova-lij", "wikipedia-lij"
+ "google-b-d", "bing", "amazon-it", "ddg", "ebay-it", "paroledigenova-lij", "wikipedia-lij"
]
}
},
"lo": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "ddg", "wikipedia-lo", "twitter"
+ "google-b-d", "bing", "ddg", "wikipedia-lo", "twitter"
]
}
},
"lt": {
"default": {
"visibleDefaultEngines": [
- "google", "wikipedia-lt", "bing", "amazondotcom", "ddg", "twitter"
+ "google-b-d", "wikipedia-lt", "bing", "amazondotcom", "ddg", "twitter"
]
}
},
"ltg": {
"default": {
"visibleDefaultEngines": [
- "google", "dict-enlv", "ddg", "salidzinilv", "sslv", "wikipedia-ltg"
+ "google-b-d", "dict-enlv", "ddg", "salidzinilv", "sslv", "wikipedia-ltg"
]
}
},
"lv": {
"default": {
"visibleDefaultEngines": [
- "google", "dict-enlv", "ddg", "salidzinilv", "sslv", "wikipedia-lv"
+ "google-b-d", "dict-enlv", "ddg", "salidzinilv", "sslv", "wikipedia-lv"
]
}
},
"mai": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "ddg", "twitter", "wikipedia-hi"
+ "google-b-d", "bing", "ddg", "twitter", "wikipedia-hi"
]
}
},
"mk": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "wikipedia-mk"
+ "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-mk"
]
}
},
"ml": {
"default": {
"visibleDefaultEngines": [
- "google", "webdunia", "bing", "ddg", "rediff", "wikipedia", "wikipedia-ml"
+ "google-b-d", "webdunia", "bing", "ddg", "rediff", "wikipedia", "wikipedia-ml"
]
}
},
"mr": {
"default": {
"visibleDefaultEngines": [
- "google", "amazondotcom", "ddg", "rediff", "wikipedia-mr"
+ "google-b-d", "amazondotcom", "ddg", "rediff", "wikipedia-mr"
]
}
},
"ms": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-ms"
+ "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-ms"
]
}
},
"my": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-my"
+ "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-my"
]
}
},
"nb-NO": {
"default": {
"visibleDefaultEngines": [
- "google", "amazon-en-GB", "bing", "ddg", "gulesider-NO", "bok-NO", "qxl-NO", "wikipedia-NO"
+ "google-b-d", "amazon-en-GB", "bing", "ddg", "gulesider-NO", "bok-NO", "qxl-NO", "wikipedia-NO"
]
}
},
"ne-NP": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "ddg", "twitter", "wikipedia-ne"
+ "google-b-d", "bing", "ddg", "twitter", "wikipedia-ne"
]
}
},
"nl": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "bolcom-nl", "ddg", "ebay-nl", "marktplaats-nl", "wikipedia-nl"
+ "google-b-d", "bing", "bolcom-nl", "ddg", "ebay-nl", "marktplaats-nl", "wikipedia-nl"
]
},
"experimental-hidden": {
@@ -595,42 +592,42 @@
"nn-NO": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-en-GB", "ddg", "gulesider-NO", "bok-NO", "qxl-NO", "wikipedia-NN"
+ "google-b-d", "bing", "amazon-en-GB", "ddg", "gulesider-NO", "bok-NO", "qxl-NO", "wikipedia-NN"
]
}
},
"oc": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "ddg", "twitter", "wikipedia-oc", "wiktionary-oc"
+ "google-b-d", "bing", "ddg", "twitter", "wikipedia-oc", "wiktionary-oc"
]
}
},
"or": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "wikipedia-or"
+ "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-or"
]
}
},
"pa-IN": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "ddg", "wikipedia-pa"
+ "google-b-d", "bing", "ddg", "wikipedia-pa"
]
}
},
"pl": {
"default": {
"visibleDefaultEngines": [
- "google", "allegro-pl", "ddg", "pwn-pl", "wikipedia-pl", "wolnelektury-pl"
+ "google-b-d", "allegro-pl", "ddg", "pwn-pl", "wikipedia-pl", "wolnelektury-pl"
]
}
},
"pt-BR": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "buscape", "ddg", "mercadolivre", "twitter", "wikipedia-pt"
+ "google-b-d", "bing", "buscape", "ddg", "mercadolivre", "twitter", "wikipedia-pt"
]
},
"experimental-hidden": {
@@ -642,168 +639,168 @@
"pt-PT": {
"default": {
"visibleDefaultEngines": [
- "google", "amazon-en-GB", "ddg", "priberam", "sapo", "wikipedia-pt"
+ "google-b-d", "amazon-en-GB", "ddg", "priberam", "sapo", "wikipedia-pt"
]
}
},
"rm": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "ddg", "ebay-ch", "leo_ende_de-rm", "pledarigrond", "wikipedia-rm"
+ "google-b-d", "bing", "ddg", "ebay-ch", "leo_ende_de-rm", "pledarigrond", "wikipedia-rm"
]
}
},
"ro": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "wikipedia-ro"
+ "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-ro"
]
}
},
"ru": {
"default": {
"visibleDefaultEngines": [
- "yandex-ru", "google", "ddg", "ozonru", "priceru", "wikipedia-ru", "mailru"
+ "yandex-ru", "google-b-d", "ddg", "ozonru", "priceru", "wikipedia-ru", "mailru"
]
}
},
"si": {
"default": {
"visibleDefaultEngines": [
- "google", "amazondotcom", "ddg", "wikipedia-si"
+ "google-b-d", "amazondotcom", "ddg", "wikipedia-si"
]
}
},
"sk": {
"default": {
"visibleDefaultEngines": [
- "google", "azet-sk", "atlas-sk", "ddg", "slovnik-sk", "wikipedia-sk", "zoznam-sk"
+ "google-b-d", "azet-sk", "atlas-sk", "ddg", "slovnik-sk", "wikipedia-sk", "zoznam-sk"
]
}
},
"sl": {
"default": {
"visibleDefaultEngines": [
- "google", "ceneji", "ddg", "najdi-si", "odpiralni", "twitter", "wikipedia-sl"
+ "google-b-d", "ceneji", "ddg", "najdi-si", "odpiralni", "twitter", "wikipedia-sl"
]
}
},
"son": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-france", "ddg", "cnrtl-tlfi-fr", "wikipedia-fr"
+ "google-b-d", "bing", "amazon-france", "ddg", "cnrtl-tlfi-fr", "wikipedia-fr"
]
}
},
"sq": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-en-GB", "ddg", "wikipedia-sq"
+ "google-b-d", "bing", "amazon-en-GB", "ddg", "wikipedia-sq"
]
}
},
"sr": {
"default": {
"visibleDefaultEngines": [
- "google", "amazon-en-GB", "bing", "ddg", "wikipedia-sr", "pogodak"
+ "google-b-d", "amazon-en-GB", "bing", "ddg", "wikipedia-sr", "pogodak"
]
}
},
"sv-SE": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "allaannonser-sv-SE", "ddg", "prisjakt-sv-SE", "tyda-sv-SE", "wikipedia-sv-SE"
+ "google-b-d", "bing", "allaannonser-sv-SE", "ddg", "prisjakt-sv-SE", "tyda-sv-SE", "wikipedia-sv-SE"
]
}
},
"ta": {
"default": {
"visibleDefaultEngines": [
- "google", "ddg", "wikipedia-ta"
+ "google-b-d", "ddg", "wikipedia-ta"
]
}
},
"te": {
"default": {
"visibleDefaultEngines": [
- "google", "amazondotcom", "ddg", "wikipedia-te", "wiktionary-te"
+ "google-b-d", "amazondotcom", "ddg", "wikipedia-te", "wiktionary-te"
]
}
},
"th": {
"default": {
"visibleDefaultEngines": [
- "google", "amazondotcom", "bing", "ddg", "longdo", "wikipedia-th"
+ "google-b-d", "amazondotcom", "bing", "ddg", "longdo", "wikipedia-th"
]
}
},
"tl": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-tl"
+ "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-tl"
]
}
},
"tr": {
"default": {
"visibleDefaultEngines": [
- "yandex-tr", "google", "ddg", "twitter", "wikipedia-tr"
+ "yandex-tr", "google-b-d", "ddg", "twitter", "wikipedia-tr"
]
}
},
"uk": {
"default": {
"visibleDefaultEngines": [
- "google", "yandex-uk", "meta-ua", "ddg", "wikipedia-uk", "metamarket"
+ "google-b-d", "yandex-uk", "meta-ua", "ddg", "wikipedia-uk", "metamarket"
]
}
},
"ur": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-in", "ddg", "twitter", "wikipedia-ur"
+ "google-b-d", "bing", "amazon-in", "ddg", "twitter", "wikipedia-ur"
]
}
},
"uz": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-uz"
+ "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-uz"
]
}
},
"vi": {
"default": {
"visibleDefaultEngines": [
- "google", "coccoc", "ddg", "wikipedia-vi"
+ "google-b-d", "coccoc", "ddg", "wikipedia-vi"
]
}
},
"wo": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-france", "ddg", "ebay-fr", "twitter", "wikipedia-wo"
+ "google-b-d", "bing", "amazon-france", "ddg", "ebay-fr", "twitter", "wikipedia-wo"
]
}
},
"xh": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "ddg", "wikipedia"
+ "google-b-d", "bing", "ddg", "wikipedia"
]
}
},
"zh-CN": {
"default": {
"visibleDefaultEngines": [
- "baidu", "google", "bing", "ddg", "wikipedia-zh-CN", "amazondotcn"
+ "baidu", "google-b-d", "bing", "ddg", "wikipedia-zh-CN", "amazondotcn"
]
}
},
"zh-TW": {
"default": {
"visibleDefaultEngines": [
- "google", "ddg", "readmoo", "wikipedia-zh-TW"
+ "google-b-d", "ddg", "readmoo", "wikipedia-zh-TW"
]
}
}
diff --git a/browser/locales/searchplugins/google-b-1-d.xml b/browser/locales/searchplugins/google-b-1-d.xml
new file mode 100644
index 0000000..2d43390
--- /dev/null
+++ b/browser/locales/searchplugins/google-b-1-d.xml
@@ -0,0 +1,15 @@
+<!-- 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/. -->
+
+<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
+<ShortName>Google</ShortName>
+<Description>Google Search</Description>
+<InputEncoding>UTF-8</InputEncoding>
+<Image width="16" height="16">resource://search-plugins/images/google.ico</Image>
+<Url type="application/x-suggestions+json" method="GET" template="https://www.google.com/complete/search?client=firefox&amp;q={searchTerms}"/>
+<Url type="text/html" method="GET" template="https://www.google.com/search" rel="searchform">
+ <Param name="client" value="firefox-b-1-d"/>
+ <Param name="q" value="{searchTerms}"/>
+</Url>
+</SearchPlugin>
diff --git a/browser/locales/searchplugins/google-b-1-e.xml b/browser/locales/searchplugins/google-b-1-e.xml
new file mode 100644
index 0000000..d5fc246
--- /dev/null
+++ b/browser/locales/searchplugins/google-b-1-e.xml
@@ -0,0 +1,17 @@
+<!-- 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/. -->
+
+<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
+<ShortName>Google</ShortName>
+<Description>Google Search</Description>
+<InputEncoding>UTF-8</InputEncoding>
+<Image width="16" height="16">data:image/x-icon;base64,AAABAAIAEBAAAAEAIABoBAAAJgAAACAgAAABACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///zD9/f2W/f392P39/fn9/f35/f391/39/ZT+/v4uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7+Cf39/Zn///////////////////////////////////////////39/ZX///8IAAAAAAAAAAAAAAAA/v7+Cf39/cH/////+v35/7TZp/92ul3/WKs6/1iqOv9yuFn/rNWd//j79v///////f39v////wgAAAAAAAAAAP39/Zn/////7PXp/3G3WP9TqDT/U6g0/1OoNP9TqDT/U6g0/1OoNP+Or1j//vDo///////9/f2VAAAAAP///zD/////+vz5/3G3V/9TqDT/WKo6/6LQkf/U6cz/1urO/6rUm/+Zo0r/8IZB//adZ////v7///////7+/i79/f2Y/////4nWzf9Lqkj/Vqo4/9Xqzv///////////////////////ebY//SHRv/0hUL//NjD///////9/f2U/f392v////8sxPH/Ebzt/43RsP/////////////////////////////////4roL/9IVC//i1jf///////f391/39/fr/////Cr37/wW8+/+16/7/////////////////9IVC//SFQv/0hUL/9IVC//SFQv/3pnX///////39/fn9/f36/////wu++/8FvPv/tuz+//////////////////SFQv/0hUL/9IVC//SFQv/0hUL/96p7///////9/f35/f392/////81yfz/CrL5/2uk9v///////////////////////////////////////////////////////f392P39/Zn/////ks/7/zdS7P84Rur/0NT6///////////////////////9/f////////////////////////39/Zb+/v4y//////n5/v9WYu3/NUPq/ztJ6/+VnPT/z9L6/9HU+v+WnfT/Ul7t/+Hj/P////////////////////8wAAAAAP39/Z3/////6Or9/1hj7v81Q+r/NUPq/zVD6v81Q+r/NUPq/zVD6v9sdvD////////////9/f2YAAAAAAAAAAD///8K/f39w//////5+f7/paz2/11p7v88Suv/Okfq/1pm7v+iqfX/+fn+///////9/f3B/v7+CQAAAAAAAAAAAAAAAP///wr9/f2d///////////////////////////////////////////9/f2Z/v7+CQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/jL9/f2Z/f392/39/fr9/f36/f392v39/Zj///8wAAAAAAAAAAAAAAAAAAAAAPAPAADAAwAAgAEAAIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIABAACAAQAAwAMAAPAPAAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/g3+/v5X/f39mf39/cj9/f3q/f39+f39/fn9/f3q/f39yP39/Zn+/v5W////DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/iT9/f2c/f399f/////////////////////////////////////////////////////9/f31/f39mv7+/iMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/gn9/f2K/f39+////////////////////////////////////////////////////////////////////////////f39+v39/Yf///8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/v4k/f390v////////////////////////////////////////////////////////////////////////////////////////////////39/dD///8iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP39/er//////////////////////////+r05v+v16H/gsBs/2WxSf9Wqjj/Vqk3/2OwRv99vWX/pdKV/97u2P////////////////////////////39/ej+/v4vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/iT9/f3q/////////////////////+v15/+Pxnv/VKk2/1OoNP9TqDT/U6g0/1OoNP9TqDT/U6g0/1OoNP9TqDT/U6g0/36+Z//d7tf///////////////////////39/ej///8iAAAAAAAAAAAAAAAAAAAAAAAAAAD///8K/f390//////////////////////E4bn/XKw+/1OoNP9TqDT/U6g0/1OoNP9TqDT/U6g0/1OoNP9TqDT/U6g0/1OoNP9TqDT/U6g0/1apN/+x0pv///////////////////////39/dD///8IAAAAAAAAAAAAAAAAAAAAAP39/Yv/////////////////////sdij/1OoNP9TqDT/U6g0/1OoNP9TqDT/U6g0/1OoNP9TqDT/U6g0/1OoNP9TqDT/U6g0/1OoNP9TqDT/YKU1/8qOPv/5wZ////////////////////////39/YcAAAAAAAAAAAAAAAD+/v4l/f39+////////////////8Lgt/9TqDT/U6g0/1OoNP9TqDT/U6g0/1OoNP9utlT/n86N/7faqv+426v/pdKV/3u8ZP9UqDX/U6g0/3egN//jiUH/9IVC//SFQv/82MP//////////////////f39+v7+/iMAAAAAAAAAAP39/Z3////////////////q9Ob/W6w+/1OoNP9TqDT/U6g0/1OoNP9nskz/zOXC/////////////////////////////////+Dv2v+osWP/8YVC//SFQv/0hUL/9IVC//WQVP/++fb//////////////////f39mgAAAAD+/v4O/f399v///////////////4LHj/9TqDT/U6g0/1OoNP9TqDT/dblc//L58P/////////////////////////////////////////////8+v/3p3f/9IVC//SFQv/0hUL/9IVC//rIqf/////////////////9/f31////DP7+/ln////////////////f9v7/Cbz2/zOwhv9TqDT/U6g0/2KwRv/v9+z///////////////////////////////////////////////////////738//1kFT/9IVC//SFQv/0hUL/9plg///////////////////////+/v5W/f39nP///////////////4jf/f8FvPv/Bbz7/yG1s/9QqDz/vN2w//////////////////////////////////////////////////////////////////rHqP/0hUL/9IVC//SFQv/0hUL//vDn//////////////////39/Zn9/f3L////////////////R878/wW8+/8FvPv/Bbz7/y7C5P/7/fr//////////////////////////////////////////////////////////////////ere//SFQv/0hUL/9IVC//SFQv/718H//////////////////f39yP39/ez///////////////8cwvv/Bbz7/wW8+/8FvPv/WNL8///////////////////////////////////////0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//rIqv/////////////////9/f3q/f39+v///////////////we9+/8FvPv/Bbz7/wW8+/993P3///////////////////////////////////////SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/+cGf//////////////////39/fn9/f36////////////////B737/wW8+/8FvPv/Bbz7/33c/f//////////////////////////////////////9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/6xaX//////////////////f39+f39/e3///////////////8cwvv/Bbz7/wW8+/8FvPv/WdP8///////////////////////////////////////0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//vVv//////////////////9/f3q/f39y////////////////0bN/P8FvPv/Bbz7/wW8+/8hrvn/+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/cj9/f2c////////////////ht/9/wW8+/8FvPv/FZP1/zRJ6/+zuPf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////f39mf7+/lr////////////////d9v7/B7n7/yB38f81Q+r/NUPq/0hV7P/u8P3////////////////////////////////////////////////////////////////////////////////////////////////////////////+/v5X////D/39/ff///////////////9tkPT/NUPq/zVD6v81Q+r/NUPq/2Fs7//y8v7////////////////////////////////////////////09f7//////////////////////////////////////////////////f399f7+/g0AAAAA/f39n////////////////+Tm/P89Suv/NUPq/zVD6v81Q+r/NUPq/1Bc7f/IzPn/////////////////////////////////x8v5/0xY7P+MlPP////////////////////////////////////////////9/f2cAAAAAAAAAAD+/v4n/f39/P///////////////7W69/81Q+r/NUPq/zVD6v81Q+r/NUPq/zVD6v9ZZe7/k5v0/6609/+vtff/lJv0/1pm7v81Q+r/NUPq/zVD6v+GjvL//v7//////////////////////////////f39+/7+/iQAAAAAAAAAAAAAAAD9/f2N/////////////////////6Cn9f81Q+r/NUPq/zVD6v81Q+r/NUPq/zVD6v81Q+r/NUPq/zVD6v81Q+r/NUPq/zVD6v81Q+r/NUPq/zVD6v+BivL////////////////////////////9/f2KAAAAAAAAAAAAAAAAAAAAAP7+/gv9/f3V/////////////////////7W69/8+S+v/NUPq/zVD6v81Q+r/NUPq/zVD6v81Q+r/NUPq/zVD6v81Q+r/NUPq/zVD6v81Q+r/P0zr/7q/+P///////////////////////f390v7+/gkAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/ib9/f3r/////////////////////+Xn/P94gfH/NkTq/zVD6v81Q+r/NUPq/zVD6v81Q+r/NUPq/zVD6v81Q+r/NkTq/3Z/8f/l5/z///////////////////////39/er+/v4kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/jL9/f3r///////////////////////////k5vz/nqX1/2p08P9IVez/OEbq/zdF6v9GU+z/aHLv/5qh9f/i5Pz////////////////////////////9/f3q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/ib9/f3V/////////////////////////////////////////////////////////////////////////////////////////////////f390v7+/iQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wr9/f2N/f39/P///////////////////////////////////////////////////////////////////////////f39+/39/Yv+/v4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/v4n/f39n/39/ff//////////////////////////////////////////////////////f399v39/Z3+/v4lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7+Dv7+/lr9/f2c/f39y/39/e39/f36/f39+v39/ez9/f3L/f39nP7+/ln+/v4OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/AA///AAD//AAAP/gAAB/wAAAP4AAAB8AAAAPAAAADgAAAAYAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABgAAAAcAAAAPAAAAD4AAAB/AAAA/4AAAf/AAAP/8AAP//wAP/</Image>
+<Url type="application/x-suggestions+json" method="GET" template="https://www.google.com/complete/search?client=firefox&amp;q={searchTerms}"/>
+<Url type="text/html" method="GET" template="https://www.google.com/search" rel="searchform">
+ <Param name="q" value="{searchTerms}"/>
+ <Param name="ie" value="utf-8"/>
+ <Param name="oe" value="utf-8"/>
+ <Param name="client" value="firefox-b-1-e"/>
+</Url>
+</SearchPlugin>
diff --git a/browser/locales/searchplugins/google-b-d.xml b/browser/locales/searchplugins/google-b-d.xml
new file mode 100644
index 0000000..9b7f5e7
--- /dev/null
+++ b/browser/locales/searchplugins/google-b-d.xml
@@ -0,0 +1,15 @@
+<!-- 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/. -->
+
+<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
+<ShortName>Google</ShortName>
+<Description>Google Search</Description>
+<InputEncoding>UTF-8</InputEncoding>
+<Image width="16" height="16">resource://search-plugins/images/google.ico</Image>
+<Url type="application/x-suggestions+json" method="GET" template="https://www.google.com/complete/search?client=firefox&amp;q={searchTerms}"/>
+<Url type="text/html" method="GET" template="https://www.google.com/search" rel="searchform">
+ <Param name="client" value="firefox-b-d"/>
+ <Param name="q" value="{searchTerms}"/>
+</Url>
+</SearchPlugin>
diff --git a/browser/locales/searchplugins/google-b-e.xml b/browser/locales/searchplugins/google-b-e.xml
new file mode 100644
index 0000000..cb5850d
--- /dev/null
+++ b/browser/locales/searchplugins/google-b-e.xml
@@ -0,0 +1,17 @@
+<!-- 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/. -->
+
+<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
+<ShortName>Google</ShortName>
+<Description>Google Search</Description>
+<InputEncoding>UTF-8</InputEncoding>
+<Image width="16" height="16">data:image/x-icon;base64,AAABAAIAEBAAAAEAIABoBAAAJgAAACAgAAABACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///zD9/f2W/f392P39/fn9/f35/f391/39/ZT+/v4uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7+Cf39/Zn///////////////////////////////////////////39/ZX///8IAAAAAAAAAAAAAAAA/v7+Cf39/cH/////+v35/7TZp/92ul3/WKs6/1iqOv9yuFn/rNWd//j79v///////f39v////wgAAAAAAAAAAP39/Zn/////7PXp/3G3WP9TqDT/U6g0/1OoNP9TqDT/U6g0/1OoNP+Or1j//vDo///////9/f2VAAAAAP///zD/////+vz5/3G3V/9TqDT/WKo6/6LQkf/U6cz/1urO/6rUm/+Zo0r/8IZB//adZ////v7///////7+/i79/f2Y/////4nWzf9Lqkj/Vqo4/9Xqzv///////////////////////ebY//SHRv/0hUL//NjD///////9/f2U/f392v////8sxPH/Ebzt/43RsP/////////////////////////////////4roL/9IVC//i1jf///////f391/39/fr/////Cr37/wW8+/+16/7/////////////////9IVC//SFQv/0hUL/9IVC//SFQv/3pnX///////39/fn9/f36/////wu++/8FvPv/tuz+//////////////////SFQv/0hUL/9IVC//SFQv/0hUL/96p7///////9/f35/f392/////81yfz/CrL5/2uk9v///////////////////////////////////////////////////////f392P39/Zn/////ks/7/zdS7P84Rur/0NT6///////////////////////9/f////////////////////////39/Zb+/v4y//////n5/v9WYu3/NUPq/ztJ6/+VnPT/z9L6/9HU+v+WnfT/Ul7t/+Hj/P////////////////////8wAAAAAP39/Z3/////6Or9/1hj7v81Q+r/NUPq/zVD6v81Q+r/NUPq/zVD6v9sdvD////////////9/f2YAAAAAAAAAAD///8K/f39w//////5+f7/paz2/11p7v88Suv/Okfq/1pm7v+iqfX/+fn+///////9/f3B/v7+CQAAAAAAAAAAAAAAAP///wr9/f2d///////////////////////////////////////////9/f2Z/v7+CQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/jL9/f2Z/f392/39/fr9/f36/f392v39/Zj///8wAAAAAAAAAAAAAAAAAAAAAPAPAADAAwAAgAEAAIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIABAACAAQAAwAMAAPAPAAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/g3+/v5X/f39mf39/cj9/f3q/f39+f39/fn9/f3q/f39yP39/Zn+/v5W////DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/iT9/f2c/f399f/////////////////////////////////////////////////////9/f31/f39mv7+/iMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/gn9/f2K/f39+////////////////////////////////////////////////////////////////////////////f39+v39/Yf///8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/v4k/f390v////////////////////////////////////////////////////////////////////////////////////////////////39/dD///8iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP39/er//////////////////////////+r05v+v16H/gsBs/2WxSf9Wqjj/Vqk3/2OwRv99vWX/pdKV/97u2P////////////////////////////39/ej+/v4vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/iT9/f3q/////////////////////+v15/+Pxnv/VKk2/1OoNP9TqDT/U6g0/1OoNP9TqDT/U6g0/1OoNP9TqDT/U6g0/36+Z//d7tf///////////////////////39/ej///8iAAAAAAAAAAAAAAAAAAAAAAAAAAD///8K/f390//////////////////////E4bn/XKw+/1OoNP9TqDT/U6g0/1OoNP9TqDT/U6g0/1OoNP9TqDT/U6g0/1OoNP9TqDT/U6g0/1apN/+x0pv///////////////////////39/dD///8IAAAAAAAAAAAAAAAAAAAAAP39/Yv/////////////////////sdij/1OoNP9TqDT/U6g0/1OoNP9TqDT/U6g0/1OoNP9TqDT/U6g0/1OoNP9TqDT/U6g0/1OoNP9TqDT/YKU1/8qOPv/5wZ////////////////////////39/YcAAAAAAAAAAAAAAAD+/v4l/f39+////////////////8Lgt/9TqDT/U6g0/1OoNP9TqDT/U6g0/1OoNP9utlT/n86N/7faqv+426v/pdKV/3u8ZP9UqDX/U6g0/3egN//jiUH/9IVC//SFQv/82MP//////////////////f39+v7+/iMAAAAAAAAAAP39/Z3////////////////q9Ob/W6w+/1OoNP9TqDT/U6g0/1OoNP9nskz/zOXC/////////////////////////////////+Dv2v+osWP/8YVC//SFQv/0hUL/9IVC//WQVP/++fb//////////////////f39mgAAAAD+/v4O/f399v///////////////4LHj/9TqDT/U6g0/1OoNP9TqDT/dblc//L58P/////////////////////////////////////////////8+v/3p3f/9IVC//SFQv/0hUL/9IVC//rIqf/////////////////9/f31////DP7+/ln////////////////f9v7/Cbz2/zOwhv9TqDT/U6g0/2KwRv/v9+z///////////////////////////////////////////////////////738//1kFT/9IVC//SFQv/0hUL/9plg///////////////////////+/v5W/f39nP///////////////4jf/f8FvPv/Bbz7/yG1s/9QqDz/vN2w//////////////////////////////////////////////////////////////////rHqP/0hUL/9IVC//SFQv/0hUL//vDn//////////////////39/Zn9/f3L////////////////R878/wW8+/8FvPv/Bbz7/y7C5P/7/fr//////////////////////////////////////////////////////////////////ere//SFQv/0hUL/9IVC//SFQv/718H//////////////////f39yP39/ez///////////////8cwvv/Bbz7/wW8+/8FvPv/WNL8///////////////////////////////////////0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//rIqv/////////////////9/f3q/f39+v///////////////we9+/8FvPv/Bbz7/wW8+/993P3///////////////////////////////////////SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/+cGf//////////////////39/fn9/f36////////////////B737/wW8+/8FvPv/Bbz7/33c/f//////////////////////////////////////9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/6xaX//////////////////f39+f39/e3///////////////8cwvv/Bbz7/wW8+/8FvPv/WdP8///////////////////////////////////////0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//vVv//////////////////9/f3q/f39y////////////////0bN/P8FvPv/Bbz7/wW8+/8hrvn/+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/cj9/f2c////////////////ht/9/wW8+/8FvPv/FZP1/zRJ6/+zuPf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////f39mf7+/lr////////////////d9v7/B7n7/yB38f81Q+r/NUPq/0hV7P/u8P3////////////////////////////////////////////////////////////////////////////////////////////////////////////+/v5X////D/39/ff///////////////9tkPT/NUPq/zVD6v81Q+r/NUPq/2Fs7//y8v7////////////////////////////////////////////09f7//////////////////////////////////////////////////f399f7+/g0AAAAA/f39n////////////////+Tm/P89Suv/NUPq/zVD6v81Q+r/NUPq/1Bc7f/IzPn/////////////////////////////////x8v5/0xY7P+MlPP////////////////////////////////////////////9/f2cAAAAAAAAAAD+/v4n/f39/P///////////////7W69/81Q+r/NUPq/zVD6v81Q+r/NUPq/zVD6v9ZZe7/k5v0/6609/+vtff/lJv0/1pm7v81Q+r/NUPq/zVD6v+GjvL//v7//////////////////////////////f39+/7+/iQAAAAAAAAAAAAAAAD9/f2N/////////////////////6Cn9f81Q+r/NUPq/zVD6v81Q+r/NUPq/zVD6v81Q+r/NUPq/zVD6v81Q+r/NUPq/zVD6v81Q+r/NUPq/zVD6v+BivL////////////////////////////9/f2KAAAAAAAAAAAAAAAAAAAAAP7+/gv9/f3V/////////////////////7W69/8+S+v/NUPq/zVD6v81Q+r/NUPq/zVD6v81Q+r/NUPq/zVD6v81Q+r/NUPq/zVD6v81Q+r/P0zr/7q/+P///////////////////////f390v7+/gkAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/ib9/f3r/////////////////////+Xn/P94gfH/NkTq/zVD6v81Q+r/NUPq/zVD6v81Q+r/NUPq/zVD6v81Q+r/NkTq/3Z/8f/l5/z///////////////////////39/er+/v4kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/jL9/f3r///////////////////////////k5vz/nqX1/2p08P9IVez/OEbq/zdF6v9GU+z/aHLv/5qh9f/i5Pz////////////////////////////9/f3q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/ib9/f3V/////////////////////////////////////////////////////////////////////////////////////////////////f390v7+/iQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wr9/f2N/f39/P///////////////////////////////////////////////////////////////////////////f39+/39/Yv+/v4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/v4n/f39n/39/ff//////////////////////////////////////////////////////f399v39/Z3+/v4lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7+Dv7+/lr9/f2c/f39y/39/e39/f36/f39+v39/ez9/f3L/f39nP7+/ln+/v4OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/AA///AAD//AAAP/gAAB/wAAAP4AAAB8AAAAPAAAADgAAAAYAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABgAAAAcAAAAPAAAAD4AAAB/AAAA/4AAAf/AAAP/8AAP//wAP/</Image>
+<Url type="application/x-suggestions+json" method="GET" template="https://www.google.com/complete/search?client=firefox&amp;q={searchTerms}"/>
+<Url type="text/html" method="GET" template="https://www.google.com/search" rel="searchform">
+ <Param name="q" value="{searchTerms}"/>
+ <Param name="ie" value="utf-8"/>
+ <Param name="oe" value="utf-8"/>
+ <Param name="client" value="firefox-b-e"/>
+</Url>
+</SearchPlugin>
diff --git a/browser/locales/searchplugins/mapy-cz.xml b/browser/locales/searchplugins/mapy-cz.xml
index 719d68f..7ebfd11 100644
--- a/browser/locales/searchplugins/mapy-cz.xml
+++ b/browser/locales/searchplugins/mapy-cz.xml
@@ -8,7 +8,7 @@
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">data:image/x-icon;base64,AAABAAIAICAAAAEAIACvBAAAJgAAABAQAAABACAAPwIAANUEAACJUE5HDQoaCgAAAA1JSERSAAAAIAAAACAIBgAAAHN6evQAAAR2SURBVFiFrZdbbFRVFIa/OZ1pO+20ldILLa3FtJpgSbmJLQRiFE3KRZMqidYHfTEYCMTwYo0PxCcDvkCMEmM0UR/EBy9EoEGUEIlGIKXBYqPSYrlVpJUO08tM22nn92HOnOlczplBWMlK9tn73/9aZ52191nLtftUK1mKD9gEPA4sAx4ASsy1ADAAnAdOAkeB8WxI3VlgGoAOoB0otMFUmNoMvApMAAeBvUC/E7khCRvNl7RHUq+kVyQVOmCTtdDc0ytpr8mVFmvYOFYP/GK+eW4WUbKTXOB1k6shHcAtKXluBdAJVN6F4WRZBvwEbAS65y4kR6ABOHaPjcek0uROiMTcCHiBL4HydLu3LO5gaeUT+EM3+OaPfQwEfv0/TpQDXwEtQAjAAGHqW6Clc54TdEn5Oly4KPVW075kNwXukrS4LLTJtAUIQwKJeold5jitTs4Erdco8BTx2KIXbbESNFe30Vq/DeRKt75LokGKR+ANkMfJ84hmE2K5qmqDbRQWz1/D5ge3sbb2WVbXtKXDeEybGJKKJLVnOtu5OfkJDuTm5LO6ti0FV+17iOcb38TlcgHwaPVmO84XJBUZkjZmc8l4jLyUjGpZ+DRuI8/ClOYv5OWlb+PJiWPLCmucLquNBmh9psTxeUrJMVJv7QJPMY9UbQDEfO9Ctq7chy/3vgSMC5cT93pDoskpmSQo89ZYhJLoGTplPa+7fwsV3kVsXbmf4rz5KU5GFHHibjIk1WcKf1Vx/O4YDl7l29/fJTw7DcA8bxU7Wz60jE9MBzh68QMLPzUTdOKuN0DFmT5Bbclii3BwrI+x6WF+vva1Nec2PAD4Q//w/tntDI7+aa1Nzow7cRcbUoRM2jBvuUV4xf8bUoQfBz5nenbSmr8a6OW9M9v5N3gVFzlzHJhw5DYkjTqFf0FhA0V5pRbhZf8FJDE+PcIPlz4D4Mz1Ixw4u4PRqaGUIxt1wJZ/1A26BJSlZI8pjZVrrXEoPMaN8Ytm+ODkwKecvnaI0EwgaVf8Dxv/BGnlkltSD9FKJq0sX/CkNb4wdIrZSOKNGAzfTtkzYyYoQMiMgI30GBIn7I5JTdHDVPjqLHTX9e8cj2tMQ+F4OTgZDjphT7hBnURruJR6b01dmzW+OX6Zv0a6cAinJbeCg3EH7D9BEOg0JI1J+iI5QbzuElZUP2Whv+//xLxUMteEgakh/h7tA+CKv9cOd1DSWKwg2QO8BHhiBptrn8FtRMvBvlvn6B48hrJ4+5gcOL2TCl8dA/7z6ZbDRCtm3GZ4+oF9RAvIqAM1m+i/1c25weN0DR5GRLI2DjARHmHAP2K3vB/oA3C9dnhVbNILnAaa7sjSnUsPsJpoDiSUZCHQc6DhTFfzXeiwaSMYm3NLCaHtB1q592U5wE2iZXlCp5SuMekG1hIN1b2SHpOzO3nBrjXrl9Qs6R1J4WyOno2GTY5mkzMFY9eaAUwSbc0agY8wkyZLCQEfm3s7TK604tpxaFm2pD5gM4nteaz+uk1ie36ELNvz/wAQuz6qTTbcEAAAAABJRU5ErkJggolQTkcNChoKAAAADUlIRFIAAAAQAAAAEAgGAAAAH/P/YQAAAgZJREFUOI2Nk01I1FEUxX/z/I9OVJKKEZmCFX0YmGSUSFARYxa4Mlq06gukUISE3ERtA1sVJrUQqm3UQhd9uDIiCowIlQgiZiwKRXIxmc0097T5P/s7zKILB+5977z7zuHdF7s63k5B7ADOAEeBWiAGpIHnwD1gMkoOJPm8DLgOdANBQdMKYDdwCRgE+oBctEEpMAIkC+UUhAN6gO1AB5B1kpA0ICkZ5lzcM0jf/gesDirxawVok3RDEk5Sg6TuKGFVvJx1ifUkN59ecfBA7UlaN3X6+oKkBidZl2ROMjx8NG04wtp4FZLRWH2Y9i3nOb61y/MCyc4Gkh2KmowRY01pBaY8JbGA1rpOUj/ec2LX5WVO5JI2Z6Z6M+FRWVZD4OK8/TYGQEtNB6carzG/+JXZTAqACL/OSfmslMejvrIJgPTCFPffXaG0JEF6YZqhNz1kcguhgn/8QLIZoMpr2lndAsCn+QnmFlMMT/Tzcf41eeWKWUg7M417SQlXzraqfQB8z3wmb8bU7Aty+Sxm4lcuU2jhmZPsrmQmGc01xwhcnIeTA0RfxWPu58yyAsn+SDbsJJuSbFAymjcmeZl+zKv0o6INRj/cov/JQV/fkWw61juy14/y6H+Mso+xcJSX/ABlJeuQ7GYoraiC0OrtkLsk2Yrf+BvoBYaAc6GaunDvC/CUIt/5L8Hdoep4zHF5AAAAAElFTkSuQmCC</Image>
<Url type="text/html" method="GET" template="https://www.mapy.cz/" resultdomain="mapy.cz">
- <Param name="query" value="{searchTerms}"/>
+ <Param name="q" value="{searchTerms}"/>
<Param name="sourceid" value="Searchmodule_3"/>
</Url>
<SearchForm>https://www.mapy.cz/</SearchForm>
diff --git a/build/debian-packages/sqlite3-wheezy.diff b/build/debian-packages/sqlite3-wheezy.diff
new file mode 100644
index 0000000..ea93b72
--- /dev/null
+++ b/build/debian-packages/sqlite3-wheezy.diff
@@ -0,0 +1,58 @@
+diff --git a/debian/changelog b/debian/changelog
+index ba3d92c..8a122c3 100644
+--- a/debian/changelog
++++ b/debian/changelog
+@@ -1,3 +1,12 @@
++sqlite3 (3.16.2-5.deb7moz1) wheezy; urgency=medium
++
++ * Mozilla backport for wheezy.
++ * debian/control, debian/rules:
++ - Downgrade tcl version from 8.6 to 8.5.
++ - Update tcl library path to reflect lack of multiarch.
++
++ -- Gregory Szorc <gps@mozilla.com> Tue, 11 Dec 2018 12:13:00 -0700
++
+ sqlite3 (3.16.2-5) unstable; urgency=medium
+
+ * Backport fix for corruption due to REPLACE in an auto-vacuumed database.
+diff --git a/debian/control b/debian/control
+index af12a8d..e150d02 100644
+--- a/debian/control
++++ b/debian/control
+@@ -2,8 +2,8 @@ Source: sqlite3
+ Section: devel
+ Priority: optional
+ Maintainer: Laszlo Boszormenyi (GCS) <gcs@debian.org>
+-Build-Depends: dpkg-dev (>= 1.16.1~), debhelper (>= 9), autoconf (>= 2.59), libtool (>= 1.5.2), automake, autotools-dev, chrpath, libreadline-dev, tcl8.6-dev, dh-autoreconf
+-Build-Conflicts: tcl8.4, tcl8.4-dev, tcl8.5, tcl8.5-dev
++Build-Depends: dpkg-dev (>= 1.16.1~), debhelper (>= 9), autoconf (>= 2.59), libtool (>= 1.5.2), automake, autotools-dev, chrpath, libreadline-dev, tcl8.5-dev, dh-autoreconf
++Build-Conflicts: tcl8.4, tcl8.4-dev
+ Homepage: http://www.sqlite.org/
+ Standards-Version: 3.9.8
+
+diff --git a/debian/rules b/debian/rules
+index 72333f7..198f716 100755
+--- a/debian/rules
++++ b/debian/rules
+@@ -22,10 +22,10 @@ export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+
+ export LDFLAGS += -Wl,--as-needed
+ ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
+- confflags += --build $(DEB_HOST_GNU_TYPE) --with-tcl=/usr/lib/$(DEB_HOST_MULTIARCH)/tcl8.6
++ confflags += --build $(DEB_HOST_GNU_TYPE) --with-tcl=/usr/lib/tcl8.5
+ export CROSS_BUILDING=no
+ else
+- confflags += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) --with-tcl=/usr/lib/$(DEB_HOST_MULTIARCH)/tcl8.6
++ confflags += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) --with-tcl=/usr/lib/tcl8.5
+ LDFLAGS += -L/usr/lib/$(DEB_HOST_MULTIARCH)
+ export CROSS_BUILDING=yes
+ endif
+@@ -115,7 +115,7 @@ install: build
+ ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
+ echo "pkg_mkIndex -verbose $(DESTDIR)/usr/lib/tcltk/sqlite3" | \
+ LD_LIBRARY_PATH=$(DESTDIR)/usr/lib/$(DEB_HOST_MULTIARCH) \
+- tclsh8.6
++ tclsh8.5
+ grep -q 'package ifneeded sqlite3' \
+ $(DESTDIR)/usr/lib/tcltk/sqlite3/pkgIndex.tcl || \
+ (echo "pkgIndex.tcl seems to be wrong" && exit 1)
diff --git a/build/virtualenv_packages.txt b/build/virtualenv_packages.txt
index fc10813..0409d1c 100644
--- a/build/virtualenv_packages.txt
+++ b/build/virtualenv_packages.txt
@@ -37,6 +37,7 @@ mozilla.pth:third_party/python/pytest
mozilla.pth:third_party/python/pytoml
mozilla.pth:third_party/python/redo
mozilla.pth:third_party/python/six
+mozilla.pth:third_party/python/taskcluster-urls
mozilla.pth:third_party/python/voluptuous
mozilla.pth:third_party/python/json-e
mozilla.pth:build
diff --git a/comm/.taskcluster.yml b/comm/.taskcluster.yml
index e5a5d76..3f371cf 100644
--- a/comm/.taskcluster.yml
+++ b/comm/.taskcluster.yml
@@ -1,8 +1,52 @@
---
# This file is rendered via JSON-e by
-# - mozilla-taskcluster - https://docs.taskcluster.net/reference/integrations/mozilla-taskcluster/docs/taskcluster-yml
-# - cron tasks - taskcluster/taskgraph/cron/decision.py
-# - action tasks - taskcluster/taskgraph/actions/registry.py
+# - mozilla-taskcluster - See
+# https://docs.taskcluster.net/reference/integrations/mozilla-taskcluster/docs/taskcluster-yml
+# {
+# tasks_for: 'hg-push',
+# push: {owner, comment, pushlog_id, pushdate},
+# repository: {url, project, level},
+# now,
+# as_slugid: // function
+# ownTaskId: // taskId of the task that will be created
+# }
+#
+# - cron tasks - See taskcluster/taskgraph/cron/decision.py
+# {
+# tasks_for: 'cron',
+# push: {revision, pushlog_id, pushdate, owner}
+# repository: {url, project, level},
+# cron: {task_id, job_name, job_symbol, quoted_args},
+# now,
+# ownTaskId: // taskId of the task that will be created
+# }
+#
+# - action tasks - See:
+# * taskcluster/taskgraph/actions/registry.py,
+# * https://docs.taskcluster.net/docs/manual/using/actions/spec
+# * ci-admin:ciadmin/generate/in_tree_actions.py
+#
+# The registry generates the hookPayload that appears in actions.json, and
+# contains data from the decision task as well as JSON-e code to combine that
+# with data supplied as part of the action spec. When the hook is fired, the
+# hookPayload is rendered with JSON-e to produce a payload for the hook task
+# template.
+#
+# The ci-admin code wraps the content of this file (.taskcluster.yml) with a
+# JSON-e $let statement that produces the context described below, and
+# installs that as the hook task template.
+#
+# {
+# tasks_for: 'action',
+# push: {owner, pushlog_id, revision},
+# repository: {url, project, level},
+# input,
+# parameters,
+# taskId, // targetted taskId
+# taskGroupId, // targetted taskGroupId
+# action: {name, title, description, taskGroupId, symbol, repo_scope, cb_name}
+# ownTaskId: // taskId of the task that will be created
+# }
version: 1
@@ -12,14 +56,16 @@ tasks:
ownerEmail: {$if: '"@" in push.owner', then: '${push.owner}', else: '${push.owner}@noreply.mozilla.org'}
# ensure there's no trailing `/` on the repo URL
repoUrl: {$if: 'repository.url[-1] == "/"', then: {$eval: 'repository.url[:-1]'}, else: {$eval: 'repository.url'}}
+ # Hardcode cron push info for now, so that we can transition to using real values without breaking callers of Chain of Trust
+ _pushId: {$if: 'tasks_for == "cron"', then: '-1', else: {$eval: 'push.pushlog_id'}}
in:
- taskId: {$if: 'tasks_for != "action"', then: '${as_slugid("decision")}'}
+ taskId: {$if: 'tasks_for != "action"', then: '${ownTaskId}'}
taskGroupId:
$if: 'tasks_for == "action"'
then:
'${action.taskGroupId}'
else:
- '${as_slugid("decision")}' # same as taskId; this is how automation identifies a decision tsak
+ '${ownTaskId}' # same as taskId; this is how automation identifies a decision tsak
schedulerId: 'gecko-level-${repository.level}'
created: {$fromNow: ''}
@@ -65,19 +111,22 @@ tasks:
- "index.comm.v2.${repository.project}.revision.${push.revision}.taskgraph.decision"
- "index.comm.v2.${repository.project}.pushlog-id.${push.pushlog_id}.decision"
- "notify.email.${ownerEmail}.on-failed"
- - $if: '"mozilla@hocat.ca" in ownerEmail'
- # Until taskcluster is ready for general consumption, don't report exceptions from taskcluster.
- then: "notify.email.${ownerEmail}.on-exception"
+ - "notify.email.${ownerEmail}.on-exception"
else:
- - $if: 'tasks_for == "action"'
- then: "index.comm.v2.${repository.project}.pushlog-id.${push.pushlog_id}.actions.$ownTaskId"
- else: "index.comm.v2.${repository.project}.latest.taskgraph.decision-${cron.job_name}"
+ $if: 'tasks_for == "action"'
+ then:
+ - "notify.email.taskcluster-notifications+action-task@mozilla.com.on-failed"
+ - "notify.email.taskcluster-notifications+action-task@mozilla.com.on-exception"
+ - "index.comm.v2.${repository.project}.pushlog-id.${_pushId}.actions.${ownTaskId}"
+ else:
+ - "index.comm.v2.${repository.project}.latest.taskgraph.decision-${cron.job_name}"
scopes:
$if: 'tasks_for == "hg-push"'
then:
- 'assume:repo:${repoUrl[8:]}:branch:default'
- 'queue:route:notify.email.${ownerEmail}.*'
+ - 'in-tree:hook-action:project-comm/in-tree-action-${repository.level}-*'
else:
$if: 'tasks_for == "action"'
then:
@@ -99,21 +148,20 @@ tasks:
- GECKO_BASE_REPOSITORY: 'https://hg.mozilla.org/mozilla-unified'
GECKO_HEAD_REPOSITORY: 'https://hg.mozilla.org/releases/mozilla-esr60'
GECKO_HEAD_REF: 'THUNDERBIRD_60_VERBRANCH'
- GECKO_HEAD_REV: '6a830d12f15493a70b1192022c9985eba2139910'
+ GECKO_HEAD_REV: 'ac46edc9c4223fb6613501d3287705f49d1dfc57'
COMM_BASE_REPOSITORY: 'https://hg.mozilla.org/comm-central'
COMM_HEAD_REPOSITORY: '${repoUrl}'
COMM_HEAD_REF: '${push.revision}'
COMM_HEAD_REV: '${push.revision}'
- HG_STORE_PATH: /buillds/worker/checkouts/hg-store
+ HG_STORE_PATH: /builds/worker/checkouts/hg-store
TASKCLUSTER_CACHES: /builds/worker/checkouts
- - $if: 'tasks_for != "action"'
- then:
- COMM_COMMIT_MSG: '${push.comment}'
+ # someday, these will be provided by the worker - Bug 1492664
+ TASKCLUSTER_ROOT_URL: https://taskcluster.net
+ TASKCLUSTER_PROXY_URL: http://taskcluster
- $if: 'tasks_for == "action"'
then:
- ACTION_TASK_GROUP_ID: '${ownTaskId}'
- ACTION_TASK_ID: {$json: {$eval: 'taskId'}}
- ACTION_TASK: {$json: {$eval: 'task'}}
+ ACTION_TASK_GROUP_ID: '${action.taskGroupId}' # taskGroupId of the target task
+ ACTION_TASK_ID: {$json: {$eval: 'taskId'}} # taskId of the target task (JSON-encoded)
ACTION_INPUT: {$json: {$eval: 'input'}}
ACTION_CALLBACK: '${action.cb_name}'
ACTION_PARAMETERS: {$json: {$eval: 'parameters'}}
@@ -160,9 +208,9 @@ tasks:
--pushlog-id='${push.pushlog_id}'
--pushdate='${push.pushdate}'
--project='${repository.project}'
- --message="$COMM_COMMIT_MSG"
--owner='${ownerEmail}'
--level='${repository.level}'
+ --tasks-for='${tasks_for}'
--base-repository="$GECKO_BASE_REPOSITORY"
--head-repository="$GECKO_HEAD_REPOSITORY"
--head-ref="$GECKO_HEAD_REF"
diff --git a/comm/calendar/resources/content/datetimepickers/datetimepickers.xml b/comm/calendar/resources/content/datetimepickers/datetimepickers.xml
index 2a1d83a..f32312c 100644
--- a/comm/calendar/resources/content/datetimepickers/datetimepickers.xml
+++ b/comm/calendar/resources/content/datetimepickers/datetimepickers.xml
@@ -1692,8 +1692,11 @@
// Made of digits & nonDigits. (Nondigits may be unicode letters
// which do not match \w, esp. in CJK locales.)
this.parseShortDateRegex = /^\D*(\d+)\D+(\d+)\D+(\d+)\D?$/;
- let probeDate = new Date(2002, 2, 4); // month is 0-based
- let probeString = this.formatDate(probeDate);
+ // Make sure to use UTC date and timezone here to avoid the pattern
+ // detection to fail if the probe date output would have an timezone
+ // offset due to our lack of support of historic timezone definitions.
+ let probeDate = new Date(Date.UTC(2002, 3, 6)); // month is 0-based
+ let probeString = this.formatDate(probeDate, cal.dtz.UTC);
let probeArray = this.parseShortDateRegex.exec(probeString);
if (probeArray) {
// Numeric month format
@@ -1701,8 +1704,9 @@
switch (Number(probeArray[i])) {
case 2: this.twoDigitYear = true; // falls through
case 2002: this.yearIndex = i; break;
- case 3: this.monthIndex = i; break;
- case 4: this.dayIndex = i; break;
+ case 4: this.monthIndex = i; break;
+ case 5: // falls through for OS timezones western to GMT
+ case 6: this.dayIndex = i; break;
}
}
// All three indexes are set (not -1) at this point.
@@ -1723,7 +1727,8 @@
switch (Number(probeArray[j])) {
case 2: this.twoDigitYear = true; // falls through
case 2002: this.yearIndex = j; break;
- case 4: this.dayIndex = j; break;
+ case 5: // falls through for OS timezones western to GMT
+ case 6: this.dayIndex = j; break;
default: this.monthIndex = j; break;
}
}
@@ -1862,8 +1867,14 @@
<method name="formatDate">
<parameter name="aDate"/>
+ <parameter name="aTimezone"/>
<body><![CDATA[
- return cal.getDateFormatter().formatDateShort(cal.dtz.jsDateToDateTime(aDate, cal.dtz.floating));
+ // Usually, floating is ok here, so no need to pass aTimezone - we just need to pass
+ // it in if we need to make sure formatting happens without a timezone conversion.
+ let timezone = aTimezone || cal.dtz.floating;
+ return cal.getDateFormatter().formatDateShort(
+ cal.dtz.jsDateToDateTime(aDate, timezone)
+ );
]]></body>
</method>
diff --git a/comm/calendar/test/unit/data/previous.json b/comm/calendar/test/unit/data/previous.json
index 6eb407d..f4adadd 100644
--- a/comm/calendar/test/unit/data/previous.json
+++ b/comm/calendar/test/unit/data/previous.json
@@ -1,5 +1,5 @@
{
- "version": "2.2018d",
+ "version": "2.2018e",
"aliases": [
"AUS Central Standard Time",
"AUS Eastern Standard Time",
diff --git a/comm/calendar/timezones/update-zones.py b/comm/calendar/timezones/update-zones.py
index 9fcc6cd..5f1a395 100755
--- a/comm/calendar/timezones/update-zones.py
+++ b/comm/calendar/timezones/update-zones.py
@@ -317,5 +317,11 @@ def main():
shutil.rmtree(zoneinfo_path)
shutil.rmtree(zoneinfo_pure_path)
+ print """
+When updating timezone definitions, please check the zones America/Campo_Grande,
+America/Cuiaba, and America/Sao_Paulo are not reset to their previous buggy state.
+See bug 1515937 for more information.
+"""
+
if __name__ == "__main__":
main()
diff --git a/comm/calendar/timezones/zones.json b/comm/calendar/timezones/zones.json
index 2e36d97..5f562a3 100644
--- a/comm/calendar/timezones/zones.json
+++ b/comm/calendar/timezones/zones.json
@@ -1,5 +1,5 @@
{
- "version": "2.2018e",
+ "version": "2.2018i",
"aliases": {
"AUS Central Standard Time": {
"aliasTo": "Australia/Darwin"
@@ -471,7 +471,7 @@
"longitude": "+0311500"
},
"Africa/Casablanca": {
- "ics": "BEGIN:VTIMEZONE\r\nTZID:Africa/Casablanca\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nTZNAME:WET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:WEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nEND:VTIMEZONE",
+ "ics": "BEGIN:VTIMEZONE\r\nTZID:Africa/Casablanca\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:+01\r\nDTSTART:19700101T000000\r\nEND:STANDARD\r\nEND:VTIMEZONE",
"latitude": "+0333900",
"longitude": "-0073500"
},
@@ -506,7 +506,7 @@
"longitude": "+0094200"
},
"Africa/El_Aaiun": {
- "ics": "BEGIN:VTIMEZONE\r\nTZID:Africa/El_Aaiun\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nTZNAME:WET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:WEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nEND:VTIMEZONE",
+ "ics": "BEGIN:VTIMEZONE\r\nTZID:Africa/El_Aaiun\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:+01\r\nDTSTART:19700101T000000\r\nEND:STANDARD\r\nEND:VTIMEZONE",
"latitude": "+0270900",
"longitude": "-0131200"
},
@@ -646,7 +646,7 @@
"longitude": "+0023700"
},
"Africa/Sao_Tome": {
- "ics": "BEGIN:VTIMEZONE\r\nTZID:Africa/Sao_Tome\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:WAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD\r\nEND:VTIMEZONE",
+ "ics": "BEGIN:VTIMEZONE\r\nTZID:Africa/Sao_Tome\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19700101T000000\r\nEND:STANDARD\r\nEND:VTIMEZONE",
"latitude": "+0002000",
"longitude": "+0064400"
},
@@ -816,7 +816,7 @@
"longitude": "-1050310"
},
"America/Campo_Grande": {
- "ics": "BEGIN:VTIMEZONE\r\nTZID:America/Campo_Grande\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19701101T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:-04\r\nDTSTART:19700215T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=2;BYDAY=3SU\r\nEND:STANDARD\r\nEND:VTIMEZONE",
+ "ics": "BEGIN:VTIMEZONE\r\nTZID:America/Campo_Grande\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19701101T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nTZNAME:-04\r\nDTSTART:19700215T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=2;BYDAY=3SU\r\nEND:STANDARD\r\nEND:VTIMEZONE",
"latitude": "-0202700",
"longitude": "-0543700"
},
@@ -861,7 +861,7 @@
"longitude": "-1163100"
},
"America/Cuiaba": {
- "ics": "BEGIN:VTIMEZONE\r\nTZID:America/Cuiaba\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19701101T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:-04\r\nDTSTART:19700215T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=2;BYDAY=3SU\r\nEND:STANDARD\r\nEND:VTIMEZONE",
+ "ics": "BEGIN:VTIMEZONE\r\nTZID:America/Cuiaba\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19701101T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nTZNAME:-04\r\nDTSTART:19700215T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=2;BYDAY=3SU\r\nEND:STANDARD\r\nEND:VTIMEZONE",
"latitude": "-0153500",
"longitude": "-0560500"
},
@@ -1286,7 +1286,7 @@
"longitude": "-0545200"
},
"America/Santiago": {
- "ics": "BEGIN:VTIMEZONE\r\nTZID:America/Santiago\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nTZNAME:-04\r\nDTSTART:19700510T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=5;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700809T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=8;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=SU\r\nEND:DAYLIGHT\r\nEND:VTIMEZONE",
+ "ics": "BEGIN:VTIMEZONE\r\nTZID:America/Santiago\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nTZNAME:-04\r\nDTSTART:19700405T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=2,3,4,5,6,7,8;BYDAY=SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700906T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYMONTHDAY=2,3,4,5,6,7,8;BYDAY=SU\r\nEND:DAYLIGHT\r\nEND:VTIMEZONE",
"latitude": "-0332700",
"longitude": "-0704000"
},
@@ -1296,7 +1296,7 @@
"longitude": "-0695400"
},
"America/Sao_Paulo": {
- "ics": "BEGIN:VTIMEZONE\r\nTZID:America/Sao_Paulo\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0200\r\nTZNAME:-02\r\nDTSTART:19701101T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700215T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=2;BYDAY=3SU\r\nEND:STANDARD\r\nEND:VTIMEZONE",
+ "ics": "BEGIN:VTIMEZONE\r\nTZID:America/Sao_Paulo\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0200\r\nTZNAME:-02\r\nDTSTART:19701101T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:-0200\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700215T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=2;BYDAY=3SU\r\nEND:STANDARD\r\nEND:VTIMEZONE",
"latitude": "-0233200",
"longitude": "-0463700"
},
@@ -1687,8 +1687,8 @@
},
"Asia/Macau": {
"ics": "BEGIN:VTIMEZONE\r\nTZID:Asia/Macau\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD\r\nEND:VTIMEZONE",
- "latitude": "+0221400",
- "longitude": "+1133500"
+ "latitude": "+0221150",
+ "longitude": "+1133230"
},
"Asia/Magadan": {
"ics": "BEGIN:VTIMEZONE\r\nTZID:Asia/Magadan\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nTZNAME:+11\r\nDTSTART:19700101T000000\r\nEND:STANDARD\r\nEND:VTIMEZONE",
@@ -1701,7 +1701,7 @@
"longitude": "+1192400"
},
"Asia/Manila": {
- "ics": "BEGIN:VTIMEZONE\r\nTZID:Asia/Manila\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:+08\r\nDTSTART:19700101T000000\r\nEND:STANDARD\r\nEND:VTIMEZONE",
+ "ics": "BEGIN:VTIMEZONE\r\nTZID:Asia/Manila\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:PST\r\nDTSTART:19700101T000000\r\nEND:STANDARD\r\nEND:VTIMEZONE",
"latitude": "+0143500",
"longitude": "+1210000"
},
@@ -1755,8 +1755,13 @@
"latitude": "+0251700",
"longitude": "+0513200"
},
+ "Asia/Qostanay": {
+ "ics": "BEGIN:VTIMEZONE\r\nTZID:Asia/Qostanay\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nTZNAME:+06\r\nDTSTART:19700101T000000\r\nEND:STANDARD\r\nEND:VTIMEZONE",
+ "latitude": "+0531200",
+ "longitude": "+0633700"
+ },
"Asia/Qyzylorda": {
- "ics": "BEGIN:VTIMEZONE\r\nTZID:Asia/Qyzylorda\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nTZNAME:+06\r\nDTSTART:19700101T000000\r\nEND:STANDARD\r\nEND:VTIMEZONE",
+ "ics": "BEGIN:VTIMEZONE\r\nTZID:Asia/Qyzylorda\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nTZNAME:+05\r\nDTSTART:19700101T000000\r\nEND:STANDARD\r\nEND:VTIMEZONE",
"latitude": "+0444800",
"longitude": "+0652800"
},
@@ -1811,7 +1816,7 @@
"longitude": "+0444900"
},
"Asia/Tehran": {
- "ics": "BEGIN:VTIMEZONE\r\nTZID:Asia/Tehran\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0330\r\nTZOFFSETTO:+0430\r\nTZNAME:+0430\r\nDTSTART:19700321T000000\r\nRRULE:FREQ=YEARLY\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0430\r\nTZOFFSETTO:+0330\r\nTZNAME:+0330\r\nDTSTART:19700921T000000\r\nRRULE:FREQ=YEARLY\r\nEND:STANDARD\r\nEND:VTIMEZONE",
+ "ics": "BEGIN:VTIMEZONE\r\nTZID:Asia/Tehran\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0330\r\nTZOFFSETTO:+0330\r\nTZNAME:+0330\r\nDTSTART:19700101T000000\r\nEND:STANDARD\r\nEND:VTIMEZONE",
"latitude": "+0354000",
"longitude": "+0512600"
},
@@ -2266,7 +2271,7 @@
"longitude": "+0251900"
},
"Europe/Volgograd": {
- "ics": "BEGIN:VTIMEZONE\r\nTZID:Europe/Volgograd\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:+03\r\nDTSTART:19700101T000000\r\nEND:STANDARD\r\nEND:VTIMEZONE",
+ "ics": "BEGIN:VTIMEZONE\r\nTZID:Europe/Volgograd\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nTZNAME:+04\r\nDTSTART:19700101T000000\r\nEND:STANDARD\r\nEND:VTIMEZONE",
"latitude": "+0484400",
"longitude": "+0442500"
},
@@ -2371,7 +2376,7 @@
"longitude": "+1514700"
},
"Pacific/Easter": {
- "ics": "BEGIN:VTIMEZONE\r\nTZID:Pacific/Easter\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:-06\r\nDTSTART:19700509T220000\r\nRRULE:FREQ=YEARLY;BYMONTH=5;BYDAY=2SA\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:-05\r\nDTSTART:19700808T220000\r\nRRULE:FREQ=YEARLY;BYMONTH=8;BYDAY=2SA\r\nEND:DAYLIGHT\r\nEND:VTIMEZONE",
+ "ics": "BEGIN:VTIMEZONE\r\nTZID:Pacific/Easter\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:-06\r\nDTSTART:19700404T220000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SA\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:-05\r\nDTSTART:19700905T220000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SA\r\nEND:DAYLIGHT\r\nEND:VTIMEZONE",
"latitude": "-0270900",
"longitude": "-1092600"
},
@@ -2391,7 +2396,7 @@
"longitude": "-1711400"
},
"Pacific/Fiji": {
- "ics": "BEGIN:VTIMEZONE\r\nTZID:Pacific/Fiji\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1300\r\nTZNAME:+13\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1200\r\nTZNAME:+12\r\nDTSTART:19700118T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=1;BYMONTHDAY=14,15,16,17,18,19,20;BYDAY=SU\r\nEND:STANDARD\r\nEND:VTIMEZONE",
+ "ics": "BEGIN:VTIMEZONE\r\nTZID:Pacific/Fiji\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1300\r\nTZNAME:+13\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1200\r\nTZNAME:+12\r\nDTSTART:19700118T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=1;BYMONTHDAY=13,14,15,16,17,18,19;BYDAY=SU\r\nEND:STANDARD\r\nEND:VTIMEZONE",
"latitude": "-0180800",
"longitude": "+1782500"
},
diff --git a/comm/mail/base/content/msgHdrViewOverlay.js b/comm/mail/base/content/msgHdrViewOverlay.js
index 2347e0b..7aaf09b 100644
--- a/comm/mail/base/content/msgHdrViewOverlay.js
+++ b/comm/mail/base/content/msgHdrViewOverlay.js
@@ -1230,18 +1230,13 @@ function OutputEmailAddresses(headerEntry, emailAddresses)
if (!emailAddresses)
return;
- var addresses = {};
- var fullNames = {};
- var names = {};
- var numAddresses = 0;
-
- numAddresses = MailServices.headerParser
- .parseHeadersWithArray(emailAddresses, addresses,
- names, fullNames);
- var index = 0;
+ // The email addresses are still RFC2047 encoded but libmime has already converted from
+ // "raw UTF-8" to "wide" (UTF-16) characters.
+ var addresses = MailServices.headerParser.parseEncodedHeaderW(emailAddresses);
+
if (headerEntry.useToggle)
headerEntry.enclosingBox.resetAddressView(); // make sure we start clean
- if (numAddresses == 0 && emailAddresses.includes(":")) {
+ if (addresses.length == 0 && emailAddresses.includes(":")) {
// No addresses and a colon, so an empty group like "undisclosed-recipients: ;".
// Add group name so at least something displays.
let address = { displayName: emailAddresses };
@@ -1250,21 +1245,19 @@ function OutputEmailAddresses(headerEntry, emailAddresses)
else
updateEmailAddressNode(headerEntry.enclosingBox.emailAddressNode, address);
}
- while (index < numAddresses) {
+ for (let addr of addresses) {
// If we want to include short/long toggle views and we have a long view,
// always add it. If we aren't including a short/long view OR if we are and
// we haven't parsed enough addresses to reach the cutoff valve yet then add
// it to the default (short) div.
let address = {};
- address.emailAddress = addresses.value[index];
- address.fullAddress = fullNames.value[index];
- address.displayName = names.value[index];
+ address.emailAddress = addr.email;
+ address.fullAddress = addr.toString();
+ address.displayName = addr.name;
if (headerEntry.useToggle)
headerEntry.enclosingBox.addAddressView(address);
else
updateEmailAddressNode(headerEntry.enclosingBox.emailAddressNode, address);
-
- index++;
}
if (headerEntry.useToggle)
diff --git a/comm/mail/components/about-support/content/aboutSupport.js b/comm/mail/components/about-support/content/aboutSupport.js
index eb2b4f2..faaba11 100644
--- a/comm/mail/components/about-support/content/aboutSupport.js
+++ b/comm/mail/components/about-support/content/aboutSupport.js
@@ -142,8 +142,11 @@ var snapshotFormatters = {
$("policies-status-row").hidden = true;
}
- let keyGoogleFound = data.keyGoogleFound ? "found" : "missing";
- $("key-google-box").textContent = strings.GetStringFromName(keyGoogleFound);
+ let keyLocationServiceGoogleFound = data.keyLocationServiceGoogleFound ? "found" : "missing";
+ $("key-location-service-google-box").textContent = strings.GetStringFromName(keyLocationServiceGoogleFound);
+
+ let keySafebrowsingGoogleFound = data.keySafebrowsingGoogleFound ? "found" : "missing";
+ $("key-safebrowsing-google-box").textContent = strings.GetStringFromName(keySafebrowsingGoogleFound);
let keyMozillaFound = data.keyMozillaFound ? "found" : "missing";
$("key-mozilla-box").textContent = strings.GetStringFromName(keyMozillaFound);
diff --git a/comm/mail/components/about-support/content/aboutSupport.xhtml b/comm/mail/components/about-support/content/aboutSupport.xhtml
index 9f8585d..7989fc7 100644
--- a/comm/mail/components/about-support/content/aboutSupport.xhtml
+++ b/comm/mail/components/about-support/content/aboutSupport.xhtml
@@ -284,10 +284,19 @@
<tr>
<th class="column">
- &aboutSupport.appBasicsKeyGoogle;
+ Google Location Service Key
</th>
- <td id="key-google-box">
+ <td id="key-location-service-google-box">
+ </td>
+ </tr>
+
+ <tr>
+ <th class="column">
+ Google SafeBrowsing Key
+ </th>
+
+ <td id="key-safebrowsing-google-box">
</td>
</tr>
diff --git a/comm/mail/components/accountcreation/content/util.js b/comm/mail/components/accountcreation/content/util.js
index 415d292..a465c9a 100644
--- a/comm/mail/components/accountcreation/content/util.js
+++ b/comm/mail/components/accountcreation/content/util.js
@@ -404,7 +404,6 @@ function PriorityOrderAbortable(successCallback, errorCallback) {
ParallelAbortable.call(this); // call super constructor
this.addOneFinishedObserver(finishedCall => {
- let haveHigherPending = false;
let haveHigherSuccess = false;
for (let call of this._calls) {
if (!call.finished) {
@@ -415,9 +414,8 @@ function PriorityOrderAbortable(successCallback, errorCallback) {
}
continue;
}
- // it's pending. ignore it for now and wait.
- haveHigherPending = true;
- continue;
+ // It's pending. do nothing and wait for it.
+ return;
}
if (!call.succeeded) {
// it failed. ignore it.
@@ -427,21 +425,18 @@ function PriorityOrderAbortable(successCallback, errorCallback) {
// another successful call was higher. ignore it.
continue;
}
- haveHigherSuccess = true;
- if (!haveHigherPending) {
- // this is the winner
- try {
- successCallback(call.result, call);
- } catch (e) {
- console.error(e);
- // if the handler failed with this data, treat this call as failed
- call.e = e;
- call.succeeded = false;
- haveHigherSuccess = false;
- }
+ // This is the winner.
+ try {
+ successCallback(call.result, call);
+ haveHigherSuccess = true;
+ } catch (e) {
+ console.error(e);
+ // If the handler failed with this data, treat this call as failed.
+ call.e = e;
+ call.succeeded = false;
}
}
- if (!haveHigherPending && !haveHigherSuccess) {
+ if (!haveHigherSuccess) {
// all failed
errorCallback(this._calls[0].e, this._calls.map(call => call.e)); // see docs above
}
diff --git a/comm/mail/components/addrbook/content/abCard.inc b/comm/mail/components/addrbook/content/abCard.inc
index 80bc9e4..d859366 100644
--- a/comm/mail/components/addrbook/content/abCard.inc
+++ b/comm/mail/components/addrbook/content/abCard.inc
@@ -40,7 +40,7 @@
<!-- LOCALIZATION NOTE:
Fields for phonetic are disabled as default and can be
- enabled by^editing "mail.addr_book.show_phonetic_fields"
+ enabled by editing "mail.addr_book.show_phonetic_fields"
-->
<spacer id="PhoneticSpacer1" flex="1" hidden="true"/>
diff --git a/comm/mail/components/addrbook/content/abCard.js b/comm/mail/components/addrbook/content/abCard.js
index bffe95d..fbbd235 100644
--- a/comm/mail/components/addrbook/content/abCard.js
+++ b/comm/mail/components/addrbook/content/abCard.js
@@ -399,6 +399,23 @@ function InitPhoneticFields()
function InitEditCard()
{
+ // Fix broken element IDs caused by translation mistakes. NameField1's ID should be either
+ // "FirstName" or "LastName", and if it isn't, make it so.
+ let nameField1Container = document.getElementById("NameField1Container");
+ let nameField1 = nameField1Container.querySelector("textbox");
+ if (nameField1.id != "FirstName" && nameField1.id != "LastName") {
+ nameField1Container.querySelector("label").setAttribute("control", "FirstName");
+ nameField1.id = "FirstName";
+ nameField1Container.querySelector("textbox ~ label").setAttribute("control", "PhoneticFirstName");
+ nameField1Container.querySelector("textbox ~ textbox").id = "PhoneticFirstName";
+
+ let nameField2Container = document.getElementById("NameField2Container");
+ nameField2Container.querySelector("label").setAttribute("control", "LastName");
+ nameField2Container.querySelector("textbox").id = "LastName";
+ nameField2Container.querySelector("textbox ~ label").setAttribute("control", "PhoneticLastName");
+ nameField2Container.querySelector("textbox ~ textbox").id = "PhoneticLastName";
+ }
+
InitPhoneticFields();
InitCommonJS();
diff --git a/comm/mail/components/addrbook/content/abEditListDialog.xul b/comm/mail/components/addrbook/content/abEditListDialog.xul
index 0cfc991..783b92a 100644
--- a/comm/mail/components/addrbook/content/abEditListDialog.xul
+++ b/comm/mail/components/addrbook/content/abEditListDialog.xul
@@ -63,7 +63,7 @@
completedefaultindex="true" forcecomplete="true"
completeselectedindex="true"
minresultsforpopup="3"
- ontextentered="awRecipientTextCommand(param, this); if (this.value != '') event.preventDefault();"
+ ontextentered="awRecipientTextCommand(param, this); if (this.value != '') param.preventDefault();"
onkeydown="awRecipientKeyDown(event, this);"
onclick="awNotAnEmptyArea(event);">
<image onclick="this.parentNode.select();" class="person-icon"/>
diff --git a/comm/mail/components/addrbook/content/abMailListDialog.xul b/comm/mail/components/addrbook/content/abMailListDialog.xul
index d2ef7aa..d3a0b07 100644
--- a/comm/mail/components/addrbook/content/abMailListDialog.xul
+++ b/comm/mail/components/addrbook/content/abMailListDialog.xul
@@ -74,7 +74,7 @@
completedefaultindex="true" forcecomplete="true"
completeselectedindex="true"
minresultsforpopup="3"
- ontextentered="awRecipientTextCommand(param, this); if (this.value != '') event.preventDefault();"
+ ontextentered="awRecipientTextCommand(param, this); if (this.value != '') param.preventDefault();"
onkeydown="awRecipientKeyDown(event, this);"
onclick="awNotAnEmptyArea(event);">
<image onclick="this.parentNode.select();" class="person-icon"/>
diff --git a/comm/mail/components/addrbook/content/addressbook.xul b/comm/mail/components/addrbook/content/addressbook.xul
index c45c184..30f045f 100644
--- a/comm/mail/components/addrbook/content/addressbook.xul
+++ b/comm/mail/components/addrbook/content/addressbook.xul
@@ -777,7 +777,7 @@
<treechildren ondragstart="nsDragAndDrop.startDrag(event, abResultsPaneObserver);"/>
</tree>
- <splitter id="results-splitter" collapse="after" persist="state"/>
+ <splitter id="results-splitter" collapse="after" persist="state" orient="vertical"/>
<!-- card view -->
<hbox id="CardViewOuterBox" flex="1" minheight="100" height="200" persist="height">
diff --git a/comm/mail/components/cloudfile/wetransfer/moz.build b/comm/mail/components/cloudfile/wetransfer/moz.build
index bcb0717..f07d0bc 100644
--- a/comm/mail/components/cloudfile/wetransfer/moz.build
+++ b/comm/mail/components/cloudfile/wetransfer/moz.build
@@ -37,6 +37,9 @@ FINAL_TARGET_FILES.webextension._locales.cs += [
FINAL_TARGET_FILES.webextension._locales.cy += [
'webextension/_locales/cy/messages.json',
]
+FINAL_TARGET_FILES.webextension._locales.de += [
+ 'webextension/_locales/de/messages.json',
+]
FINAL_TARGET_FILES.webextension._locales.dsb += [
'webextension/_locales/dsb/messages.json',
]
@@ -79,6 +82,9 @@ FINAL_TARGET_FILES.webextension._locales.hsb += [
FINAL_TARGET_FILES.webextension._locales.hu += [
'webextension/_locales/hu/messages.json',
]
+FINAL_TARGET_FILES.webextension._locales.ia += [
+ 'webextension/_locales/ia/messages.json',
+]
FINAL_TARGET_FILES.webextension._locales.id += [
'webextension/_locales/id/messages.json',
]
@@ -100,6 +106,9 @@ FINAL_TARGET_FILES.webextension._locales.kk += [
FINAL_TARGET_FILES.webextension._locales.ko += [
'webextension/_locales/ko/messages.json',
]
+FINAL_TARGET_FILES.webextension._locales.nb_NO += [
+ 'webextension/_locales/nb_NO/messages.json',
+]
FINAL_TARGET_FILES.webextension._locales.nl += [
'webextension/_locales/nl/messages.json',
]
@@ -124,6 +133,9 @@ FINAL_TARGET_FILES.webextension._locales.ro += [
FINAL_TARGET_FILES.webextension._locales.ru += [
'webextension/_locales/ru/messages.json',
]
+FINAL_TARGET_FILES.webextension._locales.si += [
+ 'webextension/_locales/si/messages.json',
+]
FINAL_TARGET_FILES.webextension._locales.sk += [
'webextension/_locales/sk/messages.json',
]
@@ -142,6 +154,12 @@ FINAL_TARGET_FILES.webextension._locales.th += [
FINAL_TARGET_FILES.webextension._locales.tr += [
'webextension/_locales/tr/messages.json',
]
+FINAL_TARGET_FILES.webextension._locales.uk += [
+ 'webextension/_locales/uk/messages.json',
+]
+FINAL_TARGET_FILES.webextension._locales.vi += [
+ 'webextension/_locales/vi/messages.json',
+]
FINAL_TARGET_FILES.webextension._locales.zh_CN += [
'webextension/_locales/zh_CN/messages.json',
]
diff --git a/comm/mail/components/cloudfile/wetransfer/webextension/_locales/de/messages.json b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/de/messages.json
new file mode 100644
index 0000000..8f2efa5
--- /dev/null
+++ b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/de/messages.json
@@ -0,0 +1,17 @@
+{
+ "extensionDescription": {
+ "message": "Teile deine Anhänge über WeTransfer"
+ },
+ "extensionName": {
+ "message": "FileLink für WeTransfer"
+ },
+ "serviceName": {
+ "message": "WeTransfer"
+ },
+ "moments_privacyPolicy": {
+ "message": "Datenschutzrichtlinie"
+ },
+ "moments_tagline": {
+ "message": "WeTransfer ist der einfachste Weg, deine Dateien um die ganze Welt zu senden."
+ }
+}
diff --git a/comm/mail/components/cloudfile/wetransfer/webextension/_locales/ia/messages.json b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/ia/messages.json
new file mode 100644
index 0000000..99949aa
--- /dev/null
+++ b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/ia/messages.json
@@ -0,0 +1,17 @@
+{
+ "extensionDescription": {
+ "message": "Comparti tu annexos per WeTransfer"
+ },
+ "extensionName": {
+ "message": "FileLink pro WeTransfer"
+ },
+ "serviceName": {
+ "message": "WeTransfer"
+ },
+ "moments_privacyPolicy": {
+ "message": "Politica de confidentialitate"
+ },
+ "moments_tagline": {
+ "message": "WeTransfer es le maniera plus simple de inviar tu files circum tote le mundo."
+ }
+}
diff --git a/comm/mail/components/cloudfile/wetransfer/webextension/_locales/nb_NO/messages.json b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/nb_NO/messages.json
new file mode 100644
index 0000000..3252305
--- /dev/null
+++ b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/nb_NO/messages.json
@@ -0,0 +1,17 @@
+{
+ "extensionDescription": {
+ "message": "Del vedleggene dine via WeTransfer"
+ },
+ "extensionName": {
+ "message": "FileLink for WeTransfer"
+ },
+ "serviceName": {
+ "message": "WeTransfer"
+ },
+ "moments_privacyPolicy": {
+ "message": "Personvernbestemmelser"
+ },
+ "moments_tagline": {
+ "message": "WeTransfer er den enkleste måten å sende filene dine over hele verden."
+ }
+}
diff --git a/comm/mail/components/cloudfile/wetransfer/webextension/_locales/nl/messages.json b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/nl/messages.json
index 7378d05..bdff858 100644
--- a/comm/mail/components/cloudfile/wetransfer/webextension/_locales/nl/messages.json
+++ b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/nl/messages.json
@@ -1,6 +1,6 @@
{
"extensionDescription": {
- "message": "Je bijlagen delen via WeTransfer"
+ "message": "Uw bijlagen delen via WeTransfer"
},
"extensionName": {
"message": "FileLink voor WeTransfer"
@@ -12,6 +12,6 @@
"message": "Privacybeleid"
},
"moments_tagline": {
- "message": "WeTransfer is de meest eenvoudige manier om je bestanden wereldwijd te versturen."
+ "message": "WeTransfer is de meest eenvoudige manier om uw bestanden wereldwijd te versturen."
}
}
diff --git a/comm/mail/components/cloudfile/wetransfer/webextension/_locales/si/messages.json b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/si/messages.json
new file mode 100644
index 0000000..903a623
--- /dev/null
+++ b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/si/messages.json
@@ -0,0 +1,17 @@
+{
+ "extensionDescription": {
+ "message": "WeTransfer හරහා ඔබේ ඇමිණුම් බෙදාගන්න"
+ },
+ "extensionName": {
+ "message": "WeTransfer සඳහා FileLink"
+ },
+ "serviceName": {
+ "message": "WeTransfer"
+ },
+ "moments_privacyPolicy": {
+ "message": "පෞද්ගලිකත්ව ප්‍රතිපත්තිය"
+ },
+ "moments_tagline": {
+ "message": "ඔබේ ගොනු ලොව පුරා යැවීමට සරලම ක්‍රමය WeTransfer"
+ }
+}
diff --git a/comm/mail/components/cloudfile/wetransfer/webextension/_locales/uk/messages.json b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/uk/messages.json
new file mode 100644
index 0000000..efc0646
--- /dev/null
+++ b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/uk/messages.json
@@ -0,0 +1,17 @@
+{
+ "extensionDescription": {
+ "message": "Поділіться своїми вкладеннями через WeTransfer"
+ },
+ "extensionName": {
+ "message": "FileLink для WeTransfer"
+ },
+ "serviceName": {
+ "message": "WeTransfer"
+ },
+ "moments_privacyPolicy": {
+ "message": "Політика приватності"
+ },
+ "moments_tagline": {
+ "message": "WeTransfer - це найпростіший спосіб надсилання ваших файлів по всьому світу."
+ }
+}
diff --git a/comm/mail/components/cloudfile/wetransfer/webextension/_locales/vi/messages.json b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/vi/messages.json
new file mode 100644
index 0000000..88d417d
--- /dev/null
+++ b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/vi/messages.json
@@ -0,0 +1,17 @@
+{
+ "extensionDescription": {
+ "message": "Chia sẻ tập tin đính kèm của bạn thông qua WeTransfer"
+ },
+ "extensionName": {
+ "message": "FileLink cho WeTransfer"
+ },
+ "serviceName": {
+ "message": "WeTransfer"
+ },
+ "moments_privacyPolicy": {
+ "message": "Chính sách riêng tư"
+ },
+ "moments_tagline": {
+ "message": "WeTransfer là cách đơn giản nhất để gửi các tập tin của bạn trên toàn thế giới."
+ }
+}
diff --git a/comm/mail/components/compose/content/messengercompose.xul b/comm/mail/components/compose/content/messengercompose.xul
index e776967..de29077 100644
--- a/comm/mail/components/compose/content/messengercompose.xul
+++ b/comm/mail/components/compose/content/messengercompose.xul
@@ -1338,7 +1338,7 @@
</toolbox>
</toolbox>
- <splitter id="compose-toolbar-sizer" onmousedown="awSizerListen()"/>
+ <splitter id="compose-toolbar-sizer" onmousedown="awSizerListen()" orient="vertical"/>
<!-- The mail message body frame -->
<vbox id="appcontent" flex="1">
diff --git a/comm/mail/config/version.txt b/comm/mail/config/version.txt
index b96fd2d..a3fc1cf 100644
--- a/comm/mail/config/version.txt
+++ b/comm/mail/config/version.txt
@@ -1 +1 @@
-60.5.1
+60.6.1
diff --git a/comm/mail/config/version_display.txt b/comm/mail/config/version_display.txt
index b96fd2d..a3fc1cf 100644
--- a/comm/mail/config/version_display.txt
+++ b/comm/mail/config/version_display.txt
@@ -1 +1 @@
-60.5.1
+60.6.1
diff --git a/comm/mail/installer/windows/nsis/shared.nsh b/comm/mail/installer/windows/nsis/shared.nsh
index cb502a6..a1a9645 100755
--- a/comm/mail/installer/windows/nsis/shared.nsh
+++ b/comm/mail/installer/windows/nsis/shared.nsh
@@ -19,6 +19,9 @@
; Win7 taskbar and start menu link maintenance
Call FixShortcutAppModelIDs
+ ; Upgrade the copies of the MAPI DLL's
+ ${UpgradeMapiDLLs}
+
ClearErrors
WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" "Write Test"
${If} ${Errors}
@@ -358,6 +361,7 @@
WriteRegStr ${RegKey} "$0" "" "${ClientsRegName}"
WriteRegStr ${RegKey} "$0\DefaultIcon" "" "$8,0"
WriteRegStr ${RegKey} "$0" "DLLPath" "$6"
+ WriteRegDWORD ${RegKey} "$0" "SupportUTF8" 0
; The MapiProxy dll can exist in multiple installs of the application.
; Registration occurs as follows with the last action to occur being the one
diff --git a/comm/mail/themes/osx/mail/accountCreation.css b/comm/mail/themes/osx/mail/accountCreation.css
index 3ca7e07..daf02c0 100644
--- a/comm/mail/themes/osx/mail/accountCreation.css
+++ b/comm/mail/themes/osx/mail/accountCreation.css
@@ -211,7 +211,7 @@ menulist {
@media (min-resolution: 2dppx) {
#status_area[status=loading] #status_img_after {
- background: url("chrome://global/skin/icons/loading@2x.png") no-repeat;
+ background-image: url("chrome://global/skin/icons/loading@2x.png");
}
}
diff --git a/comm/mail/themes/shared/mail/messenger.css b/comm/mail/themes/shared/mail/messenger.css
index 332ac25..0b2a87b 100644
--- a/comm/mail/themes/shared/mail/messenger.css
+++ b/comm/mail/themes/shared/mail/messenger.css
@@ -175,6 +175,11 @@ notification[value="draftMsgContent"] .messageImage {
color: GrayText;
}
+toolbarpaletteitem toolbarspacer,
+toolbarpaletteitem toolbarspring {
+ -moz-window-dragging: no-drag;
+}
+
/* :::: autocomplete labels :::: */
html|span.ac-emphasize-text {
diff --git a/comm/mail/themes/windows/mail/messenger.css b/comm/mail/themes/windows/mail/messenger.css
index f61be21..106c2ca 100644
--- a/comm/mail/themes/windows/mail/messenger.css
+++ b/comm/mail/themes/windows/mail/messenger.css
@@ -271,7 +271,7 @@ button[type="menu-button"] > button {
}
}
-.notification-button {
+button.notification-button {
margin-bottom: 1px;
}
diff --git a/comm/mailnews/addrbook/src/nsAbDirProperty.cpp b/comm/mailnews/addrbook/src/nsAbDirProperty.cpp
index b6307aa..dddb9d9 100644
--- a/comm/mailnews/addrbook/src/nsAbDirProperty.cpp
+++ b/comm/mailnews/addrbook/src/nsAbDirProperty.cpp
@@ -282,6 +282,10 @@ NS_IMETHODIMP nsAbDirProperty::CopyMailList(nsIAbDirectory* srcList)
srcList->GetDescription(str);
SetDescription(str);
+ nsAutoCString uid;
+ srcList->GetUID(uid);
+ SetUID(uid);
+
nsCOMPtr<nsIMutableArray> pAddressLists;
srcList->GetAddressLists(getter_AddRefs(pAddressLists));
SetAddressLists(pAddressLists);
diff --git a/comm/mailnews/addrbook/src/nsAbMDBDirectory.cpp b/comm/mailnews/addrbook/src/nsAbMDBDirectory.cpp
index 43a350c..d6fdf82 100644
--- a/comm/mailnews/addrbook/src/nsAbMDBDirectory.cpp
+++ b/comm/mailnews/addrbook/src/nsAbMDBDirectory.cpp
@@ -696,6 +696,31 @@ NS_IMETHODIMP nsAbMDBDirectory::ModifyCard(nsIAbCard *aModifiedCard)
rv = mDatabase->EditCard(aModifiedCard, true, this);
NS_ENSURE_SUCCESS(rv, rv);
+ // If it's a mailing list's card, ensure the related nsIAbDirectory has the same UID.
+ bool isMailList;
+ rv = aModifiedCard->GetIsMailList(&isMailList);
+ NS_ENSURE_SUCCESS(rv, rv);
+ if (isMailList)
+ {
+ nsCOMPtr<nsIAbManager> abManager = do_GetService(NS_ABMANAGER_CONTRACTID, &rv);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsAutoCString uri;
+ rv = aModifiedCard->GetMailListURI(getter_Copies(uri));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsCOMPtr<nsIAbDirectory> directory;
+ rv = abManager->GetDirectory(uri, getter_AddRefs(directory));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsAutoCString uid;
+ rv = aModifiedCard->GetUID(uid);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ rv = directory->SetUID(uid);
+ NS_ENSURE_SUCCESS(rv, rv);
+ }
+
nsCOMPtr<nsIObserverService> observerService = mozilla::services::GetObserverService();
if (observerService) {
nsAutoCString thisUID;
diff --git a/comm/mailnews/addrbook/src/nsAbManager.cpp b/comm/mailnews/addrbook/src/nsAbManager.cpp
index 51e7856..1a611c6 100644
--- a/comm/mailnews/addrbook/src/nsAbManager.cpp
+++ b/comm/mailnews/addrbook/src/nsAbManager.cpp
@@ -137,6 +137,9 @@ nsresult nsAbManager::Init()
nsresult rv = observerService->AddObserver(this, "profile-do-change", false);
NS_ENSURE_SUCCESS(rv, rv);
+ rv = observerService->AddObserver(this, "addrbook-reload", false);
+ NS_ENSURE_SUCCESS(rv, rv);
+
rv = observerService->AddObserver(this, NS_XPCOM_SHUTDOWN_OBSERVER_ID,
false);
NS_ENSURE_SUCCESS(rv, rv);
@@ -159,6 +162,14 @@ NS_IMETHODIMP nsAbManager::Observe(nsISupports *aSubject, const char *aTopic,
return NS_OK;
}
+ if (!strcmp(aTopic, "addrbook-reload"))
+ {
+ DIR_ShutDown();
+ mCacheTopLevelAb = nullptr;
+ mAbStore.Clear();
+ return NS_OK;
+ }
+
if (!strcmp(aTopic, NS_XPCOM_SHUTDOWN_OBSERVER_ID))
{
DIR_ShutDown();
@@ -170,6 +181,9 @@ NS_IMETHODIMP nsAbManager::Observe(nsISupports *aSubject, const char *aTopic,
nsresult rv = observerService->RemoveObserver(this, "profile-do-change");
NS_ENSURE_SUCCESS(rv, rv);
+ rv = observerService->RemoveObserver(this, "addrbook-reload");
+ NS_ENSURE_SUCCESS(rv, rv);
+
rv = observerService->RemoveObserver(this, NS_XPCOM_SHUTDOWN_OBSERVER_ID);
NS_ENSURE_SUCCESS(rv, rv);
}
diff --git a/comm/mailnews/addrbook/src/nsAddrDatabase.cpp b/comm/mailnews/addrbook/src/nsAddrDatabase.cpp
index 0e157c3..c52c409 100644
--- a/comm/mailnews/addrbook/src/nsAddrDatabase.cpp
+++ b/comm/mailnews/addrbook/src/nsAddrDatabase.cpp
@@ -1195,6 +1195,9 @@ NS_IMETHODIMP nsAddrDatabase::CreateNewListCardAndAddToDB(nsIAbDirectory *aList,
rv = newCard->GetPrimaryEmail(newEmail);
NS_ENSURE_SUCCESS(rv,rv);
+ if (newEmail.IsEmpty())
+ return NS_OK;
+
uint32_t i;
for (i = 0; i < count; i++) {
nsCOMPtr<nsIAbCard> currentCard = do_QueryElementAt(addressList, i, &rv);
@@ -2551,9 +2554,8 @@ nsListAddressEnumerator::HasMoreElements(bool *aResult)
nsCOMPtr<nsIMdbRow> currentRow;
nsresult rv = mDb->GetAddressRowByPos(mListRow, mAddressPos + 1,
getter_AddRefs(currentRow));
- NS_ENSURE_SUCCESS(rv, rv);
- if (currentRow)
+ if (NS_SUCCEEDED(rv) && currentRow)
{
*aResult = true;
break;
@@ -2577,19 +2579,19 @@ nsListAddressEnumerator::GetNext(nsISupports **aResult)
return NS_ERROR_NULL_POINTER;
}
- if (++mAddressPos <= mAddressTotal)
+ while (++mAddressPos <= mAddressTotal)
{
nsCOMPtr<nsIMdbRow> currentRow;
nsresult rv = mDb->GetAddressRowByPos(mListRow, mAddressPos,
getter_AddRefs(currentRow));
- NS_ENSURE_SUCCESS(rv, rv);
-
- nsCOMPtr<nsIAbCard> resultCard;
- rv = mDb->CreateABCard(currentRow, mListRowID,
- getter_AddRefs(resultCard));
- NS_ENSURE_SUCCESS(rv, rv);
+ if (NS_SUCCEEDED(rv)) {
+ nsCOMPtr<nsIAbCard> resultCard;
+ rv = mDb->CreateABCard(currentRow, mListRowID,
+ getter_AddRefs(resultCard));
+ NS_ENSURE_SUCCESS(rv, rv);
- return CallQueryInterface(resultCard, aResult);
+ return CallQueryInterface(resultCard, aResult);
+ }
}
return NS_ERROR_FAILURE;
diff --git a/comm/mailnews/addrbook/test/unit/test_bug1522453.js b/comm/mailnews/addrbook/test/unit/test_bug1522453.js
new file mode 100644
index 0000000..405590e
--- /dev/null
+++ b/comm/mailnews/addrbook/test/unit/test_bug1522453.js
@@ -0,0 +1,86 @@
+function run_test() {
+ do_get_profile();
+ MailServices.ab.directories;
+ let book = MailServices.ab.getDirectory(kPABData.URI);
+
+ let list = Cc["@mozilla.org/addressbook/directoryproperty;1"].createInstance(Ci.nsIAbDirectory);
+ list.isMailList = true;
+ list.dirName = "list";
+ list = book.addMailList(list);
+
+ let contact1 = Cc["@mozilla.org/addressbook/cardproperty;1"].createInstance(Ci.nsIAbCard);
+ contact1.firstName = "contact";
+ contact1.lastName = "1";
+ contact1.primaryEmail = "contact1@invalid";
+ contact1 = book.addCard(contact1);
+ list.addCard(contact1);
+
+ let contact2 = Cc["@mozilla.org/addressbook/cardproperty;1"].createInstance(Ci.nsIAbCard);
+ contact2.firstName = "contact";
+ contact2.lastName = "2";
+ // No email address!
+ contact2 = book.addCard(contact2);
+ list.addCard(contact2);
+
+ let contact3 = Cc["@mozilla.org/addressbook/cardproperty;1"].createInstance(Ci.nsIAbCard);
+ contact3.firstName = "contact";
+ contact3.lastName = "3";
+ contact3.primaryEmail = "contact3@invalid";
+ contact3 = book.addCard(contact3);
+ list.addCard(contact3);
+
+ // book.childCards should contain the list and all three contacts.
+ let bookCards = book.childCards;
+ ok(bookCards.hasMoreElements());
+ equal(list.UID, bookCards.getNext().QueryInterface(Ci.nsIAbCard).UID);
+ ok(bookCards.hasMoreElements());
+ equal(contact1.UID, bookCards.getNext().QueryInterface(Ci.nsIAbCard).UID);
+ ok(bookCards.hasMoreElements());
+ equal(contact2.UID, bookCards.getNext().QueryInterface(Ci.nsIAbCard).UID);
+ ok(bookCards.hasMoreElements());
+ equal(contact3.UID, bookCards.getNext().QueryInterface(Ci.nsIAbCard).UID);
+ ok(!bookCards.hasMoreElements());
+
+ // list.childCards should contain contacts 1 and 3, and crucially, not die at 2.
+ let listCards = list.childCards;
+ ok(listCards.hasMoreElements());
+ equal(contact1.UID, listCards.getNext().QueryInterface(Ci.nsIAbCard).UID);
+ ok(listCards.hasMoreElements());
+ equal(contact3.UID, listCards.getNext().QueryInterface(Ci.nsIAbCard).UID);
+ ok(!listCards.hasMoreElements());
+
+ // list.addressLists should contain contacts 1 and 3.
+ let listEnum = list.addressLists.enumerate();
+ ok(listEnum.hasMoreElements());
+ equal(contact1.UID, listEnum.getNext().QueryInterface(Ci.nsIAbCard).UID);
+ ok(listEnum.hasMoreElements());
+ equal(contact3.UID, listEnum.getNext().QueryInterface(Ci.nsIAbCard).UID);
+ ok(!listEnum.hasMoreElements());
+
+ // Reload the address book manager.
+ Services.obs.notifyObservers(null, "addrbook-reload");
+
+ MailServices.ab.directories;
+ book = MailServices.ab.getDirectory(kPABData.URI);
+
+ // For some unknown reason this is necessary for book.addressLists to be populated.
+ book.QueryInterface(Ci.nsIAbMDBDirectory).database.getMailingListsFromDB(book);
+ equal(1, book.addressLists.Count());
+ list = book.addressLists.GetElementAt(0).QueryInterface(Ci.nsIAbDirectory);
+
+ // list.childCards should contain contacts 1 and 3.
+ listCards = list.childCards;
+ ok(listCards.hasMoreElements());
+ equal(contact1.UID, listCards.getNext().QueryInterface(Ci.nsIAbCard).UID);
+ ok(listCards.hasMoreElements());
+ equal(contact3.UID, listCards.getNext().QueryInterface(Ci.nsIAbCard).UID);
+ ok(!listCards.hasMoreElements());
+
+ // list.addressLists should contain contacts 1 and 3.
+ listEnum = list.addressLists.enumerate();
+ ok(listEnum.hasMoreElements());
+ equal(contact1.UID, listEnum.getNext().QueryInterface(Ci.nsIAbCard).UID);
+ ok(listEnum.hasMoreElements());
+ equal(contact3.UID, listEnum.getNext().QueryInterface(Ci.nsIAbCard).UID);
+ ok(!listEnum.hasMoreElements());
+}
diff --git a/comm/mailnews/addrbook/test/unit/test_uid.js b/comm/mailnews/addrbook/test/unit/test_uid.js
index ddbf86d..516635d 100644
--- a/comm/mailnews/addrbook/test/unit/test_uid.js
+++ b/comm/mailnews/addrbook/test/unit/test_uid.js
@@ -6,16 +6,10 @@ Cu.importGlobalProperties(["fetch"]);
var profD = do_get_profile();
-// Installs an address book with some existing objects.
-function run_test() {
- let testAB = do_get_file("data/existing.mab");
- testAB.copyTo(profD, kPABData.fileName);
-
- run_next_test();
-}
-
// Tests that directories have UIDs.
add_test(function directoryUID() {
+ newAddressBookFile();
+
let books = MailServices.ab.directories;
while (books.hasMoreElements()) {
let book = books.getNext().QueryInterface(Ci.nsIAbDirectory);
@@ -32,68 +26,106 @@ add_test(function directoryUID() {
// Tests that an existing contact has a UID generated, and that that UID is
// saved to the database so that the same UID is used next time.
add_task(async function existingContactUID() {
- let book = MailServices.ab.getDirectory(kPABData.URI);
- let bookCards = [];
- let childCards = book.childCards;
- while (childCards.hasMoreElements())
- bookCards.push(childCards.getNext().QueryInterface(Ci.nsIAbCard));
- equal(2, bookCards.length, "Loaded test address book");
+ let book = newAddressBookFile();
- let card = bookCards[0];
- if (card.isMailList) {
- card = bookCards[1];
- }
+ let card = getChildCards(book).find(c => !c.isMailList);
equal(36, card.UID.length, "Existing contact has a UID");
let existingUID = card.UID;
- bookCards = [];
- childCards = book.childCards;
- while (childCards.hasMoreElements())
- bookCards.push(childCards.getNext().QueryInterface(Ci.nsIAbCard));
- card = bookCards[0];
- if (card.isMailList) {
- card = bookCards[1];
- }
+ card = getChildCards(book).find(c => !c.isMailList);
equal(existingUID, card.UID, "New reference to contact has the same UID");
- let abFile = profD.clone();
- abFile.append(kPABData.fileName);
- let response = await fetch(Services.io.newFileURI(abFile).spec);
- let text = await response.text();
-
- ok(text.includes(card.UID), "UID has been saved to file");
+ await checkFileForUID(card.UID, book.fileName);
});
// Tests that new contacts have UIDs. Do this test last so we don't muck up
// the others by adding new things to the address book.
-add_test(function newContactUID() {
- let book = MailServices.ab.getDirectory(kPABData.URI);
+add_task(async function newContactUID() {
+ let book = newAddressBookFile();
+
let contact = Cc["@mozilla.org/addressbook/cardproperty;1"].createInstance(Ci.nsIAbCard);
let newContact = book.addCard(contact);
equal(36, newContact.UID.length, "New contact has a UID");
- run_next_test();
+ await checkFileForUID(newContact.UID, book.fileName);
});
-// Tests that new lists have UIDs.
-add_test(function listUID() {
- let book = MailServices.ab.getDirectory(kPABData.URI);
- let lists = book.addressLists;
- equal(1, lists.length);
+// Tests that existing lists have UIDs. Reference the nsIAbCard first.
+add_task(async function existingListUID1() {
+ let book = newAddressBookFile();
- let directory = lists.GetElementAt(0);
- directory.QueryInterface(Ci.nsIAbDirectory);
+ let card = getChildCards(book).find(c => c.isMailList);
+ equal(36, card.UID.length, "Existing list's card has a UID");
+
+ let directory = MailServices.ab.getDirectory(card.mailListURI);
equal(36, directory.UID.length, "Existing list's directory has a UID");
- let list = Cc["@mozilla.org/addressbook/directoryproperty;1"].createInstance();
- list.QueryInterface(Ci.nsIAbDirectory);
- list.isMailList = true;
- book.addMailList(list);
- equal(2, lists.length);
+ equal(card.UID, directory.UID, "Existing list's card and directory UIDs match");
+
+ await checkFileForUID(card.UID, book.fileName);
+});
- let newDirectory = lists.GetElementAt(1);
- newDirectory.QueryInterface(Ci.nsIAbDirectory);
- equal(36, newDirectory.UID.length, "New list's directory has a UID");
+// Tests that existing lists have UIDs. Reference the nsIAbDirectory first.
+add_task(async function existingListUID2() {
+ let book = newAddressBookFile();
- run_next_test();
+ let directory = MailServices.ab.getDirectory(`${book.URI}/MailList1`);
+ equal(36, directory.UID.length, "Existing list's directory has a UID");
+
+ let card = getChildCards(book).find(c => c.isMailList);
+ equal(36, card.UID.length, "Existing list's card has a UID");
+
+ equal(card.UID, directory.UID, "Existing list's card and directory UIDs match");
+
+ await checkFileForUID(card.UID, book.fileName);
+});
+
+// Tests that new lists have UIDs.
+add_task(async function newListUID() {
+ let book = newAddressBookFile();
+
+ let list = Cc["@mozilla.org/addressbook/directoryproperty;1"].createInstance(Ci.nsIAbDirectory);
+ list = book.addMailList(list);
+
+ equal(36, list.UID.length, "New list's directory has a UID");
+ equal(list.UID, MailServices.ab.getDirectory(list.URI).UID, "New reference to list's directory has the same UID");
+
+ let bookCards = getChildCards(book);
+ ok(!!bookCards.find(c => c.UID == list.UID, "New reference to list has the same UID"));
+
+ await checkFileForUID(list.UID, book.fileName);
});
+
+// 3 seems to be the lowest number that works here. I don't know why.
+var count = 3;
+function newAddressBookFile() {
+ let foo = MailServices.ab.newAddressBook(`book${count}`, `moz-abmdbdirectory://abook-${count}.mab`, 2);
+
+ let testAB = do_get_file("data/existing.mab");
+ testAB.copyTo(profD, `abook-${count}.mab`);
+
+ Services.prefs.setCharPref(`ldap_2.servers.book${count}.filename`, `abook-${count}.mab`);
+
+ let book = MailServices.ab.getDirectory(`moz-abmdbdirectory://abook-${count}.mab`);
+ equal(2, getChildCards(book).length);
+
+ count++;
+ return book;
+}
+
+async function checkFileForUID(needle, bookFileName) {
+ let abFile = profD.clone();
+ abFile.append(bookFileName);
+ let response = await fetch(Services.io.newFileURI(abFile).spec);
+ let text = await response.text();
+
+ ok(text.includes(needle), "UID has been saved to file");
+}
+
+function getChildCards(book) {
+ let bookCards = [];
+ childCards = book.childCards;
+ while (childCards.hasMoreElements())
+ bookCards.push(childCards.getNext().QueryInterface(Ci.nsIAbCard));
+ return bookCards;
+}
diff --git a/comm/mailnews/addrbook/test/unit/xpcshell.ini b/comm/mailnews/addrbook/test/unit/xpcshell.ini
index 9f2a6ab..53e0511 100644
--- a/comm/mailnews/addrbook/test/unit/xpcshell.ini
+++ b/comm/mailnews/addrbook/test/unit/xpcshell.ini
@@ -8,6 +8,7 @@ support-files = data/*
[test_bug387403.js]
[test_bug534822.js]
[test_bug_448165.js]
+[test_bug1522453.js]
[test_cardForEmail.js]
[test_collection.js]
[test_collection_2.js]
diff --git a/comm/mailnews/base/test/unit/test_nsMsgDBView_headerValues.js b/comm/mailnews/base/test/unit/test_nsMsgDBView_headerValues.js
index 827a545..b13c53f 100644
--- a/comm/mailnews/base/test/unit/test_nsMsgDBView_headerValues.js
+++ b/comm/mailnews/base/test/unit/test_nsMsgDBView_headerValues.js
@@ -25,6 +25,12 @@ var tests = [
{sender: "David Håsäther"}],
[{from: "=?UTF-8?Q?H=C3=A5s=C3=A4ther=2C_David?= <db@null.invalid>"},
{sender: "Håsäther, David"}],
+ [{from: "\"Håsäther, David\" <db@null.invalid>"},
+ {sender: "Håsäther, David"}],
+ [{from: "David Håsäther <db@null.invalid>"},
+ {sender: "David Håsäther"}],
+ [{from: "\xC2\xAB\xCE\xA0\xCE\x9F\xCE\x9B\xCE\x99\xCE\xA4\xCE\x97\xCE\xA3\xC2\xBB"},
+ {sender: "«ΠΟΛΙΤΗΣ»"}],
[{from: "John Doe \xF5 <db@null.invalid>",
clobberHeaders: { "Content-type" : "text/plain; charset=ISO-8859-1" }},
{sender: "John Doe õ"}],
diff --git a/comm/mailnews/compose/src/nsMsgCompFields.cpp b/comm/mailnews/compose/src/nsMsgCompFields.cpp
index 02efb79..c66f378 100644
--- a/comm/mailnews/compose/src/nsMsgCompFields.cpp
+++ b/comm/mailnews/compose/src/nsMsgCompFields.cpp
@@ -612,7 +612,7 @@ nsMsgCompFields::SplitRecipients(const nsAString &aRecipients,
*aLength = 0;
*aResult = nullptr;
- nsCOMArray<msgIAddressObject> header(EncodedHeader(NS_ConvertUTF16toUTF8(aRecipients)));
+ nsCOMArray<msgIAddressObject> header(EncodedHeaderW(aRecipients));
nsTArray<nsString> results;
if (aEmailAddressOnly)
ExtractEmails(header, results);
@@ -635,8 +635,7 @@ nsresult nsMsgCompFields::SplitRecipientsEx(const nsAString &recipients,
nsTArray<nsMsgRecipient> &aResult)
{
nsTArray<nsString> names, addresses;
- ExtractAllAddresses(EncodedHeader(NS_ConvertUTF16toUTF8(recipients)), names,
- addresses);
+ ExtractAllAddresses(EncodedHeaderW(recipients), names, addresses);
uint32_t numAddresses = names.Length();
for (uint32_t i = 0; i < numAddresses; ++i)
diff --git a/comm/mailnews/compose/src/nsMsgCompose.cpp b/comm/mailnews/compose/src/nsMsgCompose.cpp
index aa0c6c2..5df5861 100644
--- a/comm/mailnews/compose/src/nsMsgCompose.cpp
+++ b/comm/mailnews/compose/src/nsMsgCompose.cpp
@@ -2620,15 +2620,13 @@ NS_IMETHODIMP QuotingOutputStreamListener::OnStopRequest(nsIRequest *request, ns
}
nsCString fromEmailAddress;
- ExtractEmail(EncodedHeader(NS_ConvertUTF16toUTF8(from)), fromEmailAddress);
+ ExtractEmail(EncodedHeaderW(from), fromEmailAddress);
nsTArray<nsCString> toEmailAddresses;
- ExtractEmails(EncodedHeader(NS_ConvertUTF16toUTF8(to)),
- UTF16ArrayAdapter<>(toEmailAddresses));
+ ExtractEmails(EncodedHeaderW(to), UTF16ArrayAdapter<>(toEmailAddresses));
nsTArray<nsCString> ccEmailAddresses;
- ExtractEmails(EncodedHeader(NS_ConvertUTF16toUTF8(cc)),
- UTF16ArrayAdapter<>(ccEmailAddresses));
+ ExtractEmails(EncodedHeaderW(cc), UTF16ArrayAdapter<>(ccEmailAddresses));
nsCOMPtr<nsIPrefBranch> prefs (do_GetService(NS_PREFSERVICE_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
diff --git a/comm/mailnews/extensions/newsblog/content/feed-subscriptions.js b/comm/mailnews/extensions/newsblog/content/feed-subscriptions.js
index 7098772..8b64d9a 100644
--- a/comm/mailnews/extensions/newsblog/content/feed-subscriptions.js
+++ b/comm/mailnews/extensions/newsblog/content/feed-subscriptions.js
@@ -2704,11 +2704,7 @@ var FeedSubscriptions = {
// A folder outline. If a folder exists in the account structure at
// the same level as in the opml structure, feeds are placed into the
// existing folder.
- let defaultName = FeedUtils.strings.GetStringFromName("ImportFeedsNew");
- let folderName = FeedUtils.getSanitizedFolderName(aParentFolder,
- outlineName,
- defaultName,
- false);
+ let folderName = outlineName;
try {
feedFolder = aParentFolder.getChildNamed(folderName);
}
diff --git a/comm/mailnews/mapi/mapiDll/MapiDll.cpp b/comm/mailnews/mapi/mapiDll/MapiDll.cpp
index 6360b08..1051941 100644
--- a/comm/mailnews/mapi/mapiDll/MapiDll.cpp
+++ b/comm/mailnews/mapi/mapiDll/MapiDll.cpp
@@ -5,7 +5,6 @@
#pragma warning (disable : 4996) // MAPILogoff is deprecated
#include <windows.h>
-#include <tchar.h>
#include <mapidefs.h>
#include <mapi.h>
#include "msgMapi.h"
@@ -109,9 +108,9 @@ BOOL InitMozillaReference(nsIMapi **aRetValue)
// store and address book providers ////
////////////////////////////////////////////////////////////////////////////////////////
-ULONG FAR PASCAL MAPILogon(ULONG aUIParam, LPTSTR aProfileName,
- LPTSTR aPassword, FLAGS aFlags,
- ULONG aReserved, LPLHANDLE aSession)
+ULONG FAR PASCAL MAPILogon(ULONG aUIParam, LPSTR aProfileName,
+ LPSTR aPassword, FLAGS aFlags,
+ ULONG aReserved, LPLHANDLE aSession)
{
HRESULT hr = 0;
ULONG nSessionId = 0;
@@ -120,36 +119,7 @@ ULONG FAR PASCAL MAPILogon(ULONG aUIParam, LPTSTR aProfileName,
if (!InitMozillaReference(&pNsMapi))
return MAPI_E_FAILURE;
- if (!(aFlags & MAPI_UNICODE))
- {
- // Need to convert the parameters to Unicode.
-
- char *pUserName = (char *) aProfileName;
- char *pPassWord = (char *) aPassword;
-
- TCHAR ProfileName[MAX_NAME_LEN] = {0};
- TCHAR PassWord[MAX_PW_LEN] = {0};
-
- if (pUserName != NULL)
- {
- if (!MultiByteToWideChar(CP_ACP, 0, pUserName, -1, ProfileName,
- MAX_NAME_LEN))
- return MAPI_E_FAILURE;
- }
-
- if (pPassWord != NULL)
- {
- if (!MultiByteToWideChar(CP_ACP, 0, pPassWord, -1, PassWord,
- MAX_NAME_LEN))
- return MAPI_E_FAILURE;
- }
-
- hr = pNsMapi->Login(aUIParam, ProfileName, PassWord, aFlags,
- &nSessionId);
- }
- else
- hr = pNsMapi->Login(aUIParam, aProfileName, aPassword,
- aFlags, &nSessionId);
+ hr = pNsMapi->Login(aUIParam, aProfileName, aPassword, aFlags, &nSessionId);
if (hr == S_OK)
(*aSession) = (LHANDLE) nSessionId;
else
@@ -203,46 +173,13 @@ ULONG FAR PASCAL MAPISendMail (LHANDLE lhSession, ULONG ulUIParam, nsMapiMessage
else if (flFlags & MAPI_LOGON_UI)
LoginFlag = MAPI_LOGON_UI ;
- hr = MAPILogon (ulUIParam, (LPTSTR) NULL, (LPTSTR) NULL, LoginFlag, 0, &lhSession) ;
+ hr = MAPILogon(ulUIParam, nullptr, nullptr, LoginFlag, 0, &lhSession);
if (hr != SUCCESS_SUCCESS)
return MAPI_E_LOGIN_FAILURE ;
bTempSession = TRUE ;
}
- // we need to deal with null data passed in by MAPI clients, specially when MAPI_DIALOG is set.
- // The MS COM type lib code generated by MIDL for the MS COM interfaces checks for these parameters
- // to be non null, although null is a valid value for them here.
- nsMapiRecipDesc * lpRecips ;
- nsMapiFileDesc * lpFiles ;
-
- nsMapiMessage Message ;
- memset (&Message, 0, sizeof (nsMapiMessage) ) ;
- nsMapiRecipDesc Recipient ;
- memset (&Recipient, 0, sizeof (nsMapiRecipDesc) );
- nsMapiFileDesc Files ;
- memset (&Files, 0, sizeof (nsMapiFileDesc) ) ;
-
- if(!lpMessage)
- {
- lpMessage = &Message ;
- }
- if(!lpMessage->lpRecips)
- {
- lpRecips = &Recipient ;
- }
- else
- lpRecips = lpMessage->lpRecips ;
- if(!lpMessage->lpFiles)
- {
- lpFiles = &Files ;
- }
- else
- lpFiles = lpMessage->lpFiles ;
-
- hr = pNsMapi->SendMail (lhSession, lpMessage,
- (short) lpMessage->nRecipCount, lpRecips,
- (short) lpMessage->nFileCount, lpFiles,
- flFlags, ulReserved);
+ hr = pNsMapi->SendMail(lhSession, lpMessage, flFlags, ulReserved);
// we are seeing a problem when using Word, although we return success from the MAPI support
// MS COM interface in mozilla, we are getting this error here. This is a temporary hack !!
@@ -256,8 +193,8 @@ ULONG FAR PASCAL MAPISendMail (LHANDLE lhSession, ULONG ulUIParam, nsMapiMessage
}
-ULONG FAR PASCAL MAPISendDocuments(ULONG ulUIParam, LPTSTR lpszDelimChar, LPTSTR lpszFilePaths,
- LPTSTR lpszFileNames, ULONG ulReserved)
+ULONG FAR PASCAL MAPISendDocuments(ULONG ulUIParam, LPSTR lpszDelimChar, LPSTR lpszFilePaths,
+ LPSTR lpszFileNames, ULONG ulReserved)
{
LHANDLE lhSession ;
nsIMapi *pNsMapi = NULL;
@@ -265,22 +202,21 @@ ULONG FAR PASCAL MAPISendDocuments(ULONG ulUIParam, LPTSTR lpszDelimChar, LPTSTR
if (!InitMozillaReference(&pNsMapi))
return MAPI_E_FAILURE;
- unsigned long result = MAPILogon (ulUIParam, (LPTSTR) NULL, (LPTSTR) NULL, MAPI_LOGON_UI, 0, &lhSession) ;
+ unsigned long result = MAPILogon(ulUIParam, nullptr, nullptr, MAPI_LOGON_UI, 0, &lhSession);
if (result != SUCCESS_SUCCESS)
return MAPI_E_LOGIN_FAILURE ;
HRESULT hr;
- hr = pNsMapi->SendDocuments(lhSession, (LPTSTR) lpszDelimChar, (LPTSTR) lpszFilePaths,
- (LPTSTR) lpszFileNames, ulReserved) ;
+ hr = pNsMapi->SendDocuments(lhSession, lpszDelimChar, lpszFilePaths, lpszFileNames, ulReserved);
MAPILogoff (lhSession, ulUIParam, 0,0) ;
return hr ;
}
-ULONG FAR PASCAL MAPIFindNext(LHANDLE lhSession, ULONG ulUIParam, const LPTSTR lpszMessageType,
- const LPTSTR lpszSeedMessageID, FLAGS flFlags, ULONG ulReserved,
+ULONG FAR PASCAL MAPIFindNext(LHANDLE lhSession, ULONG ulUIParam, const LPSTR lpszMessageType,
+ const LPSTR lpszSeedMessageID, FLAGS flFlags, ULONG ulReserved,
unsigned char lpszMessageID[64])
{
nsIMapi *pNsMapi = NULL;
@@ -291,14 +227,12 @@ ULONG FAR PASCAL MAPIFindNext(LHANDLE lhSession, ULONG ulUIParam, const LPTSTR l
if (lhSession == 0)
return MAPI_E_INVALID_SESSION;
- const LPTSTR type = lpszMessageType ? lpszMessageType : (const LPTSTR)(L"");
- const LPTSTR id = lpszSeedMessageID ? lpszSeedMessageID : (const LPTSTR)(L"");
- return pNsMapi->FindNext(lhSession, ulUIParam, type, id,
+ return pNsMapi->FindNext(lhSession, ulUIParam, lpszMessageType, lpszSeedMessageID,
flFlags, ulReserved, lpszMessageID);
}
-ULONG FAR PASCAL MAPIReadMail(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszMessageID,
+ULONG FAR PASCAL MAPIReadMail(LHANDLE lhSession, ULONG ulUIParam, LPSTR lpszMessageID,
FLAGS flFlags, ULONG ulReserved, nsMapiMessage **lppMessage)
{
nsIMapi *pNsMapi = NULL;
@@ -316,7 +250,7 @@ ULONG FAR PASCAL MAPIReadMail(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszMes
}
ULONG FAR PASCAL MAPISaveMail(LHANDLE lhSession, ULONG ulUIParam, lpnsMapiMessage lpMessage,
- FLAGS flFlags, ULONG ulReserved, LPTSTR lpszMessageID)
+ FLAGS flFlags, ULONG ulReserved, LPSTR lpszMessageID)
{
nsIMapi *pNsMapi = NULL;
@@ -329,7 +263,7 @@ ULONG FAR PASCAL MAPISaveMail(LHANDLE lhSession, ULONG ulUIParam, lpnsMapiMessag
return MAPI_E_FAILURE;
}
-ULONG FAR PASCAL MAPIDeleteMail(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszMessageID,
+ULONG FAR PASCAL MAPIDeleteMail(LHANDLE lhSession, ULONG ulUIParam, LPSTR lpszMessageID,
FLAGS flFlags, ULONG ulReserved)
{
nsIMapi *pNsMapi = NULL;
@@ -344,8 +278,8 @@ ULONG FAR PASCAL MAPIDeleteMail(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszM
lpszMessageID, flFlags, ulReserved) ;
}
-ULONG FAR PASCAL MAPIAddress(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszCaption,
- ULONG nEditFields, LPTSTR lpszLabels, ULONG nRecips,
+ULONG FAR PASCAL MAPIAddress(LHANDLE lhSession, ULONG ulUIParam, LPSTR lpszCaption,
+ ULONG nEditFields, LPSTR lpszLabels, ULONG nRecips,
lpMapiRecipDesc lpRecips, FLAGS flFlags,
ULONG ulReserved, LPULONG lpnNewRecips,
lpMapiRecipDesc FAR *lppNewRecips)
@@ -359,7 +293,7 @@ ULONG FAR PASCAL MAPIDetails(LHANDLE lhSession, ULONG ulUIParam, lpMapiRecipDesc
return MAPI_E_NOT_SUPPORTED;
}
-ULONG FAR PASCAL MAPIResolveName(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszName,
+ULONG FAR PASCAL MAPIResolveName(LHANDLE lhSession, ULONG ulUIParam, LPSTR lpszName,
FLAGS flFlags, ULONG ulReserved, lpMapiRecipDesc FAR *lppRecip)
{
char* lpszRecipName = new char[(strlen((const char*)lpszName) + 1)];
diff --git a/comm/mailnews/mapi/mapihook/build/msgMapi.idl b/comm/mailnews/mapi/mapihook/build/msgMapi.idl
index 10dc480..2a4f11e 100644
--- a/comm/mailnews/mapi/mapihook/build/msgMapi.idl
+++ b/comm/mailnews/mapi/mapihook/build/msgMapi.idl
@@ -7,15 +7,13 @@
import "unknwn.idl";
-typedef wchar_t LOGIN_PW_TYPE[256];
-
typedef struct
{
unsigned long ulReserved;
unsigned long flFlags; /* Flags */
unsigned long nPosition_NotUsed; /* character in text to be replaced by attachment */
- LPTSTR lpszPathName; /* Full path name including file name */
- LPTSTR lpszFileName; /* Real (original) file name */
+ LPSTR lpszPathName; /* Full path name including file name */
+ LPSTR lpszFileName; /* Real (original) file name */
unsigned char * lpFileType_NotUsed ;
} nsMapiFileDesc, * lpnsMapiFileDesc;
@@ -55,8 +53,8 @@ typedef struct
interface nsIMapi : IUnknown
{
- HRESULT Login([in] unsigned long aUIArg, [in, unique] LOGIN_PW_TYPE aLogin,
- [in, unique] LOGIN_PW_TYPE aPassWord, [in] unsigned long aFlags,
+ HRESULT Login([in] unsigned long aUIArg, [in, unique, max_is(256)] LPSTR aLogin,
+ [in, unique, max_is(256)] LPSTR aPassWord, [in] unsigned long aFlags,
[out] unsigned long *aSessionId);
HRESULT Initialize();
@@ -64,26 +62,24 @@ interface nsIMapi : IUnknown
HRESULT IsValidSession([in] unsigned long aSession);
HRESULT SendMail([in] unsigned long aSession, [in, unique] lpnsMapiMessage aMessage,
- [in] short aRecipCount, [in, size_is(aRecipCount)] lpnsMapiRecipDesc aRecips,
- [in] short aFileCount, [in, size_is(aFileCount)] lpnsMapiFileDesc aFiles,
[in] unsigned long aFlags, [in] unsigned long aReserved) ;
HRESULT SendDocuments([in] unsigned long aSession,
- [in, unique] LPTSTR aDelimChar, [in, unique] LPTSTR aFilePaths,
- [in, unique] LPTSTR aFileNames, [in] ULONG aFlags ) ;
+ [in, unique] LPSTR aDelimChar, [in, unique] LPSTR aFilePaths,
+ [in, unique] LPSTR aFileNames, [in] ULONG aFlags);
- HRESULT FindNext([in] unsigned long aSession, [in] ULONG ulUIParam, [in, unique] const LPTSTR lpszMessageType,
- [in, unique] const LPTSTR lpszSeedMessageID, [in] ULONG flFlags, [in] ULONG ulReserved,
+ HRESULT FindNext([in] unsigned long aSession, [in] ULONG ulUIParam, [in, unique] const LPSTR lpszMessageType,
+ [in, unique] const LPSTR lpszSeedMessageID, [in] ULONG flFlags, [in] ULONG ulReserved,
[in] [out] char lpszMessageID[64] ) ;
- HRESULT ReadMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] LPTSTR lpszMessageID,
+ HRESULT ReadMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] LPSTR lpszMessageID,
[in] ULONG flFlags, [in] ULONG ulReserved, [out] lpnsMapiMessage *lppMessage);
- HRESULT DeleteMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] LPTSTR lpszMessageID,
+ HRESULT DeleteMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] LPSTR lpszMessageID,
[in] ULONG flFlags, [in] ULONG ulReserved);
HRESULT SaveMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] lpnsMapiMessage lppMessage,
- [in] ULONG flFlags, [in] ULONG ulReserved, [in, unique] LPTSTR lpszMessageID);
+ [in] ULONG flFlags, [in] ULONG ulReserved, [in, unique] LPSTR lpszMessageID);
HRESULT Logoff(unsigned long aSession);
HRESULT CleanUp();
diff --git a/comm/mailnews/mapi/mapihook/src/msgMapiHook.cpp b/comm/mailnews/mapi/mapihook/src/msgMapiHook.cpp
index 581861b..b2437a0 100644
--- a/comm/mailnews/mapi/mapihook/src/msgMapiHook.cpp
+++ b/comm/mailnews/mapi/mapihook/src/msgMapiHook.cpp
@@ -6,7 +6,6 @@
#include <mapidefs.h>
#include <mapi.h>
-#include <tchar.h>
#include <direct.h>
#include "nsCOMPtr.h"
#include "nsIComponentManager.h"
@@ -179,7 +178,7 @@ bool nsMapiHook::DisplayLoginDialog(bool aLogin, char16_t **aUsername,
return btnResult;
}
-bool nsMapiHook::VerifyUserName(const nsString& aUsername, nsCString& aIdKey)
+bool nsMapiHook::VerifyUserName(const nsCString& aUsername, nsCString& aIdKey)
{
nsresult rv;
@@ -209,7 +208,7 @@ bool nsMapiHook::VerifyUserName(const nsString& aUsername, nsCString& aIdKey)
if (index != -1)
email.SetLength(index);
- if (aUsername.Equals(NS_ConvertASCIItoUTF16(email)))
+ if (aUsername.Equals(email))
return NS_SUCCEEDED(thisIdentity->GetKey(aIdKey));
}
}
@@ -349,91 +348,13 @@ nsresult nsMapiHook::BlindSendMail (unsigned long aSession, nsIMsgCompFields * a
return rv ;
}
-// this is used to populate comp fields with Unicode data
-nsresult nsMapiHook::PopulateCompFields(lpnsMapiMessage aMessage,
- nsIMsgCompFields * aCompFields)
-{
- nsresult rv = NS_OK ;
-
- if (aMessage->lpOriginator)
- aCompFields->SetFrom (NS_ConvertASCIItoUTF16((char *) aMessage->lpOriginator->lpszAddress));
-
- nsAutoString To ;
- nsAutoString Cc ;
- nsAutoString Bcc ;
-
- NS_NAMED_LITERAL_STRING(Comma, ",");
-
- if (aMessage->lpRecips)
- {
- for (int i=0 ; i < (int) aMessage->nRecipCount ; i++)
- {
- if (aMessage->lpRecips[i].lpszAddress || aMessage->lpRecips[i].lpszName)
- {
- const char *addressWithoutType = (aMessage->lpRecips[i].lpszAddress)
- ? aMessage->lpRecips[i].lpszAddress : aMessage->lpRecips[i].lpszName;
- if (!PL_strncasecmp(addressWithoutType, "SMTP:", 5))
- addressWithoutType += 5;
- switch (aMessage->lpRecips[i].ulRecipClass)
- {
- case MAPI_TO :
- if (!To.IsEmpty())
- To += Comma;
- To.Append(NS_ConvertASCIItoUTF16(addressWithoutType));
- break;
-
- case MAPI_CC :
- if (!Cc.IsEmpty())
- Cc += Comma;
- Cc.Append(NS_ConvertASCIItoUTF16(addressWithoutType));
- break;
-
- case MAPI_BCC :
- if (!Bcc.IsEmpty())
- Bcc += Comma;
- Bcc.Append(NS_ConvertASCIItoUTF16(addressWithoutType));
- break;
- }
- }
- }
- }
-
- MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("to: %s cc: %s bcc: %s \n", NS_ConvertUTF16toUTF8(To).get(), NS_ConvertUTF16toUTF8(Cc).get(), NS_ConvertUTF16toUTF8(Bcc).get()));
- // set To, Cc, Bcc
- aCompFields->SetTo (To) ;
- aCompFields->SetCc (Cc) ;
- aCompFields->SetBcc (Bcc) ;
-
- // set subject
- if (aMessage->lpszSubject)
- aCompFields->SetSubject(NS_ConvertASCIItoUTF16(aMessage->lpszSubject));
-
- // handle attachments as File URL
- rv = HandleAttachments (aCompFields, aMessage->nFileCount, aMessage->lpFiles, true) ;
- if (NS_FAILED(rv)) return rv ;
-
- // set body
- if (aMessage->lpszNoteText)
- {
- nsString Body;
- CopyASCIItoUTF16(aMessage->lpszNoteText, Body);
- if (Body.IsEmpty() || Body.Last() != '\n')
- Body.AppendLiteral(CRLF);
-
- // This is needed when Simple MAPI is used without a compose window.
- // See bug 1366196.
- if (Body.Find("<html>") == kNotFound)
- aCompFields->SetForcePlainText(true);
-
- rv = aCompFields->SetBody(Body) ;
- }
- return rv ;
-}
-
nsresult nsMapiHook::HandleAttachments (nsIMsgCompFields * aCompFields, int32_t aFileCount,
- lpnsMapiFileDesc aFiles, BOOL aIsUnicode)
+ lpnsMapiFileDesc aFiles, bool aIsUTF8)
{
nsresult rv = NS_OK ;
+ // Do nothing if there are no files to process.
+ if (!aFiles || aFileCount <= 0)
+ return NS_OK;
nsAutoCString Attachments ;
nsAutoCString TempFiles ;
@@ -448,14 +369,17 @@ nsresult nsMapiHook::HandleAttachments (nsIMsgCompFields * aCompFields, int32_t
if (aFiles[i].lpszPathName)
{
// check if attachment exists
- if (aIsUnicode)
- pFile->InitWithPath (nsDependentString(aFiles[i].lpszPathName));
+ if (!aIsUTF8)
+ pFile->InitWithNativePath(nsDependentCString(aFiles[i].lpszPathName));
else
- pFile->InitWithNativePath (nsDependentCString((const char*)aFiles[i].lpszPathName));
+ pFile->InitWithPath(NS_ConvertUTF8toUTF16(aFiles[i].lpszPathName));
bool bExist ;
rv = pFile->Exists(&bExist) ;
- MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("nsMapiHook::HandleAttachments: filename: %s path: %s exists = %s \n", (const char*)aFiles[i].lpszFileName, (const char*)aFiles[i].lpszPathName, bExist ? "true" : "false"));
+ MOZ_LOG(MAPI, mozilla::LogLevel::Debug,
+ ("nsMapiHook::HandleAttachments: filename: %s path: %s exists = %s\n",
+ (const char*)aFiles[i].lpszFileName,
+ (const char*)aFiles[i].lpszPathName, bExist ? "true" : "false"));
if (NS_FAILED(rv) || (!bExist) ) return NS_ERROR_FILE_TARGET_DOES_NOT_EXIST ;
//Temp Directory
@@ -479,12 +403,12 @@ nsresult nsMapiHook::HandleAttachments (nsIMsgCompFields * aCompFields, int32_t
// a value for lpszFileName, use it. Otherwise stick with leafName
if (aFiles[i].lpszFileName)
{
- nsAutoString wholeFileName;
- if (aIsUnicode)
- wholeFileName.Assign(aFiles[i].lpszFileName);
- else
- NS_CopyNativeToUnicode(nsDependentCString((char *) aFiles[i].lpszFileName),
+ nsAutoString wholeFileName;
+ if (!aIsUTF8)
+ NS_CopyNativeToUnicode(nsDependentCString(aFiles[i].lpszFileName),
wholeFileName);
+ else
+ wholeFileName.Append(NS_ConvertUTF8toUTF16(aFiles[i].lpszFileName));
// need to find the last '\' and find the leafname from that.
int32_t lastSlash = wholeFileName.RFindChar(char16_t('\\'));
if (lastSlash != kNotFound)
@@ -547,11 +471,15 @@ nsresult nsMapiHook::PopulateCompFieldsWithConversion(lpnsMapiMessage aMessage,
nsIMsgCompFields * aCompFields)
{
nsresult rv = NS_OK;
+ bool isUTF8 = aMessage->ulReserved == CP_UTF8;
if (aMessage->lpOriginator)
{
nsAutoString From;
- From.Append(NS_ConvertASCIItoUTF16((char *) aMessage->lpOriginator->lpszAddress));
+ if (!isUTF8)
+ From.Append(NS_ConvertASCIItoUTF16(aMessage->lpOriginator->lpszAddress));
+ else
+ From.Append(NS_ConvertUTF8toUTF16(aMessage->lpOriginator->lpszAddress));
aCompFields->SetFrom (From);
}
@@ -575,19 +503,28 @@ nsresult nsMapiHook::PopulateCompFieldsWithConversion(lpnsMapiMessage aMessage,
case MAPI_TO :
if (!To.IsEmpty())
To += Comma ;
- To.Append(NS_ConvertASCIItoUTF16(addressWithoutType));
+ if (!isUTF8)
+ To.Append(NS_ConvertASCIItoUTF16(addressWithoutType));
+ else
+ To.Append(NS_ConvertUTF8toUTF16(addressWithoutType));
break ;
case MAPI_CC :
if (!Cc.IsEmpty())
Cc += Comma ;
- Cc.Append(NS_ConvertASCIItoUTF16(addressWithoutType));
+ if (!isUTF8)
+ Cc.Append(NS_ConvertASCIItoUTF16(addressWithoutType));
+ else
+ Cc.Append(NS_ConvertUTF8toUTF16(addressWithoutType));
break ;
case MAPI_BCC :
if (!Bcc.IsEmpty())
Bcc += Comma ;
- Bcc.Append(NS_ConvertASCIItoUTF16(addressWithoutType));
+ if (!isUTF8)
+ Bcc.Append(NS_ConvertASCIItoUTF16(addressWithoutType));
+ else
+ Bcc.Append(NS_ConvertUTF8toUTF16(addressWithoutType));
break ;
}
}
@@ -605,22 +542,28 @@ nsresult nsMapiHook::PopulateCompFieldsWithConversion(lpnsMapiMessage aMessage,
if (aMessage->lpszSubject)
{
nsAutoString Subject ;
- rv = NS_CopyNativeToUnicode(nsDependentCString((char *) aMessage->lpszSubject),
- Subject);
+ if (!isUTF8)
+ rv = NS_CopyNativeToUnicode(nsDependentCString(aMessage->lpszSubject),
+ Subject);
+ else
+ Subject.Append(NS_ConvertUTF8toUTF16(aMessage->lpszSubject));
if (NS_FAILED(rv)) return rv;
aCompFields->SetSubject(Subject);
}
// handle attachments as File URL
- rv = HandleAttachments (aCompFields, aMessage->nFileCount, aMessage->lpFiles, false) ;
+ rv = HandleAttachments(aCompFields, aMessage->nFileCount, aMessage->lpFiles, isUTF8);
if (NS_FAILED(rv)) return rv ;
// set body
if (aMessage->lpszNoteText)
{
nsAutoString Body ;
- rv = NS_CopyNativeToUnicode(nsDependentCString((char *) aMessage->lpszNoteText),
- Body);
+ if (!isUTF8)
+ rv = NS_CopyNativeToUnicode(nsDependentCString(aMessage->lpszNoteText),
+ Body);
+ else
+ Body.Append(NS_ConvertUTF8toUTF16(aMessage->lpszNoteText));
if (NS_FAILED(rv)) return rv ;
if (Body.IsEmpty() || Body.Last() != '\n')
Body.AppendLiteral(CRLF);
@@ -645,10 +588,10 @@ nsresult nsMapiHook::PopulateCompFieldsWithConversion(lpnsMapiMessage aMessage,
// this is used to populate the docs as attachments in the Comp fields for Send Documents
nsresult nsMapiHook::PopulateCompFieldsForSendDocs(nsIMsgCompFields * aCompFields, ULONG aFlags,
- LPTSTR aDelimChar, LPTSTR aFilePaths)
+ LPSTR aDelimChar, LPSTR aFilePaths)
{
- nsAutoString strDelimChars ;
- nsString strFilePaths;
+ nsAutoCString strDelimChars;
+ nsAutoCString strFilePaths;
nsresult rv = NS_OK ;
bool bExist ;
@@ -680,7 +623,7 @@ nsresult nsMapiHook::PopulateCompFieldsForSendDocs(nsIMsgCompFields * aCompField
nsCOMPtr <nsIFile> pFile = do_CreateInstance (NS_LOCAL_FILE_CONTRACTID, &rv) ;
if (NS_FAILED(rv) || (!pFile) ) return rv ;
- char16_t * newFilePaths = (char16_t *) strFilePaths.get() ;
+ char *newFilePaths = (char *)strFilePaths.get();
while (offset != kNotFound)
{
//Temp Directory
@@ -697,7 +640,7 @@ nsresult nsMapiHook::PopulateCompFieldsForSendDocs(nsIMsgCompFields * aCompField
if (NS_FAILED(rv)) return rv ;
}
- nsString RemainingPaths ;
+ nsAutoCString RemainingPaths;
RemainingPaths.Assign(newFilePaths) ;
offset = RemainingPaths.Find (strDelimChars) ;
if (offset != kNotFound)
@@ -715,14 +658,14 @@ nsresult nsMapiHook::PopulateCompFieldsForSendDocs(nsIMsgCompFields * aCompField
char cwd[MAX_PATH];
if (_getdcwd(_getdrive(), cwd, MAX_PATH))
{
- nsAutoString cwdStr;
- CopyASCIItoUTF16(cwd, cwdStr);
+ nsAutoCString cwdStr;
+ cwdStr.Assign(cwd);
cwdStr.Append('\\');
RemainingPaths.Insert(cwdStr, 0);
}
}
- pFile->InitWithPath (RemainingPaths) ;
+ pFile->InitWithNativePath(RemainingPaths);
rv = pFile->Exists(&bExist) ;
if (NS_FAILED(rv) || (!bExist) ) return NS_ERROR_FILE_TARGET_DOES_NOT_EXIST ;
diff --git a/comm/mailnews/mapi/mapihook/src/msgMapiHook.h b/comm/mailnews/mapi/mapihook/src/msgMapiHook.h
index 70e19b9..0295bbe 100644
--- a/comm/mailnews/mapi/mapihook/src/msgMapiHook.h
+++ b/comm/mailnews/mapi/mapihook/src/msgMapiHook.h
@@ -13,18 +13,17 @@ class nsMapiHook
static bool DisplayLoginDialog(bool aLogin, char16_t **aUsername,
char16_t **aPassword);
- static bool VerifyUserName(const nsString& aUsername, nsCString& aIdKey);
+ static bool VerifyUserName(const nsCString& aUsername, nsCString& aIdKey);
static bool IsBlindSendAllowed () ;
static nsresult BlindSendMail (unsigned long aSession, nsIMsgCompFields * aCompFields) ;
static nsresult ShowComposerWindow (unsigned long aSession, nsIMsgCompFields * aCompFields) ;
- static nsresult PopulateCompFields(lpnsMapiMessage aMessage, nsIMsgCompFields * aCompFields) ;
static nsresult PopulateCompFieldsWithConversion(lpnsMapiMessage aMessage,
nsIMsgCompFields * aCompFields) ;
static nsresult PopulateCompFieldsForSendDocs(nsIMsgCompFields * aCompFields,
- ULONG aFlags, LPTSTR aDelimChar, LPTSTR aFilePaths) ;
- static nsresult HandleAttachments (nsIMsgCompFields * aCompFields, int32_t aFileCount,
- lpnsMapiFileDesc aFiles, BOOL aIsUnicode) ;
+ ULONG aFlags, LPSTR aDelimChar, LPSTR aFilePaths);
+ static nsresult HandleAttachments(nsIMsgCompFields *aCompFields, int32_t aFileCount,
+ lpnsMapiFileDesc aFiles, bool aIsUTF8);
static void CleanUp();
static bool isMapiService;
diff --git a/comm/mailnews/mapi/mapihook/src/msgMapiImp.cpp b/comm/mailnews/mapi/mapihook/src/msgMapiImp.cpp
index 5a9cb4c..1ff47d9 100644
--- a/comm/mailnews/mapi/mapihook/src/msgMapiImp.cpp
+++ b/comm/mailnews/mapi/mapihook/src/msgMapiImp.cpp
@@ -121,8 +121,8 @@ STDMETHODIMP CMapiImp::Initialize()
return hr;
}
-STDMETHODIMP CMapiImp::Login(unsigned long aUIArg, LOGIN_PW_TYPE aLogin, LOGIN_PW_TYPE aPassWord,
- unsigned long aFlags, unsigned long *aSessionId)
+STDMETHODIMP CMapiImp::Login(unsigned long aUIArg, LPSTR aLogin, LPSTR aPassWord,
+ unsigned long aFlags, unsigned long *aSessionId)
{
HRESULT hr = E_FAIL;
bool bNewSession = false;
@@ -135,7 +135,7 @@ STDMETHODIMP CMapiImp::Login(unsigned long aUIArg, LOGIN_PW_TYPE aLogin, LOGIN_P
// Check For Profile Name
if (aLogin != nullptr && aLogin[0] != '\0')
{
- if (!nsMapiHook::VerifyUserName(nsString(aLogin), id_key))
+ if (!nsMapiHook::VerifyUserName(nsDependentCString(aLogin), id_key))
{
*aSessionId = MAPI_E_LOGIN_FAILURE;
MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("CMapiImp::Login failed for username %s\n", aLogin));
@@ -167,9 +167,11 @@ STDMETHODIMP CMapiImp::Login(unsigned long aUIArg, LOGIN_PW_TYPE aLogin, LOGIN_P
nsMAPIConfiguration *pConfig = nsMAPIConfiguration::GetMAPIConfiguration();
if (pConfig != nullptr)
- nResult = pConfig->RegisterSession(aUIArg, char16ptr_t(aLogin), char16ptr_t(aPassWord),
- (aFlags & MAPI_FORCE_DOWNLOAD), bNewSession,
- &nSession_Id, id_key.get());
+ nResult = pConfig->RegisterSession(aUIArg,
+ aLogin ? nsDependentCString(aLogin) : EmptyCString(),
+ aPassWord ? nsDependentCString(aPassWord) : EmptyCString(),
+ (aFlags & MAPI_FORCE_DOWNLOAD), bNewSession,
+ &nSession_Id, id_key.get());
switch (nResult)
{
case -1 :
@@ -194,16 +196,20 @@ STDMETHODIMP CMapiImp::Login(unsigned long aUIArg, LOGIN_PW_TYPE aLogin, LOGIN_P
}
STDMETHODIMP CMapiImp::SendMail( unsigned long aSession, lpnsMapiMessage aMessage,
- short aRecipCount, lpnsMapiRecipDesc aRecips , short aFileCount, lpnsMapiFileDesc aFiles ,
unsigned long aFlags, unsigned long aReserved)
{
nsresult rv = NS_OK ;
MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("CMapiImp::SendMail using flags %d\n", aFlags));
- // Assign the pointers in the aMessage struct to the array of Recips and Files
- // received here from MS COM. These are used in BlindSendMail and ShowCompWin fns
- aMessage->lpRecips = aRecips ;
- aMessage->lpFiles = aFiles ;
+
+ // Handle possible nullptr argument.
+ nsMapiMessage Message;
+ memset(&Message, 0, sizeof(nsMapiMessage));
+
+ if (!aMessage)
+ {
+ aMessage = &Message;
+ }
MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("CMapiImp::SendMail flags=%x subject: %s sender: %s\n",
aFlags, (char *) aMessage->lpszSubject, (aMessage->lpOriginator) ? aMessage->lpOriginator->lpszAddress : ""));
@@ -212,10 +218,7 @@ STDMETHODIMP CMapiImp::SendMail( unsigned long aSession, lpnsMapiMessage aMessag
nsCOMPtr<nsIMsgCompFields> pCompFields = do_CreateInstance(NS_MSGCOMPFIELDS_CONTRACTID, &rv) ;
if (NS_FAILED(rv) || (!pCompFields) ) return MAPI_E_INSUFFICIENT_MEMORY ;
- if (aFlags & MAPI_UNICODE)
- rv = nsMapiHook::PopulateCompFields(aMessage, pCompFields) ;
- else
- rv = nsMapiHook::PopulateCompFieldsWithConversion(aMessage, pCompFields) ;
+ rv = nsMapiHook::PopulateCompFieldsWithConversion(aMessage, pCompFields);
if (NS_SUCCEEDED (rv))
{
@@ -234,8 +237,8 @@ STDMETHODIMP CMapiImp::SendMail( unsigned long aSession, lpnsMapiMessage aMessag
}
-STDMETHODIMP CMapiImp::SendDocuments( unsigned long aSession, LPTSTR aDelimChar,
- LPTSTR aFilePaths, LPTSTR aFileNames, ULONG aFlags)
+STDMETHODIMP CMapiImp::SendDocuments(unsigned long aSession, LPSTR aDelimChar,
+ LPSTR aFilePaths, LPSTR aFileNames, ULONG aFlags)
{
nsresult rv = NS_OK ;
@@ -364,9 +367,9 @@ LONG CMapiImp::InitContext(unsigned long session, MsgMapiListContext **listConte
return SUCCESS_SUCCESS;
}
-STDMETHODIMP CMapiImp::FindNext(unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageType,
- LPTSTR lpszSeedMessageID, unsigned long flFlags, unsigned long ulReserved,
- unsigned char lpszMessageID[64])
+STDMETHODIMP CMapiImp::FindNext(unsigned long aSession, unsigned long ulUIParam, LPSTR lpszMessageType,
+ LPSTR lpszSeedMessageID, unsigned long flFlags, unsigned long ulReserved,
+ unsigned char lpszMessageID[64])
{
//
@@ -409,8 +412,8 @@ STDMETHODIMP CMapiImp::FindNext(unsigned long aSession, unsigned long ulUIParam,
return(SUCCESS_SUCCESS);
}
-STDMETHODIMP CMapiImp::ReadMail(unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageID,
- unsigned long flFlags, unsigned long ulReserved, lpnsMapiMessage *lppMessage)
+STDMETHODIMP CMapiImp::ReadMail(unsigned long aSession, unsigned long ulUIParam, LPSTR lpszMessageID,
+ unsigned long flFlags, unsigned long ulReserved, lpnsMapiMessage *lppMessage)
{
nsresult irv;
nsAutoCString keyString((char *) lpszMessageID);
@@ -435,8 +438,8 @@ STDMETHODIMP CMapiImp::ReadMail(unsigned long aSession, unsigned long ulUIParam,
}
-STDMETHODIMP CMapiImp::DeleteMail(unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageID,
- unsigned long flFlags, unsigned long ulReserved)
+STDMETHODIMP CMapiImp::DeleteMail(unsigned long aSession, unsigned long ulUIParam, LPSTR lpszMessageID,
+ unsigned long flFlags, unsigned long ulReserved)
{
nsresult irv;
nsAutoCString keyString((char *) lpszMessageID);
@@ -451,8 +454,8 @@ STDMETHODIMP CMapiImp::DeleteMail(unsigned long aSession, unsigned long ulUIPara
return (listContext->DeleteMessage(msgKey)) ? SUCCESS_SUCCESS : MAPI_E_INVALID_MESSAGE;
}
-STDMETHODIMP CMapiImp::SaveMail(unsigned long aSession, unsigned long ulUIParam, lpnsMapiMessage lppMessage,
- unsigned long flFlags, unsigned long ulReserved, LPTSTR lpszMessageID)
+STDMETHODIMP CMapiImp::SaveMail(unsigned long aSession, unsigned long ulUIParam, lpnsMapiMessage lppMessage,
+ unsigned long flFlags, unsigned long ulReserved, LPSTR lpszMessageID)
{
MsgMapiListContext *listContext;
LONG ret = InitContext(aSession, &listContext);
diff --git a/comm/mailnews/mapi/mapihook/src/msgMapiImp.h b/comm/mailnews/mapi/mapihook/src/msgMapiImp.h
index b5894af..a78d718 100644
--- a/comm/mailnews/mapi/mapihook/src/msgMapiImp.h
+++ b/comm/mailnews/mapi/mapihook/src/msgMapiImp.h
@@ -33,28 +33,26 @@ public :
// Interface INsMapi
- STDMETHODIMP Login(unsigned long aUIArg, LOGIN_PW_TYPE aLogin,
- LOGIN_PW_TYPE aPassWord, unsigned long aFlags,
+ STDMETHODIMP Login(unsigned long aUIArg, LPSTR aLogin,
+ LPSTR aPassWord, unsigned long aFlags,
unsigned long *aSessionId);
- STDMETHODIMP SendMail( unsigned long aSession, lpnsMapiMessage aMessage,
- short aRecipCount, lpnsMapiRecipDesc aRecips ,
- short aFileCount, lpnsMapiFileDesc aFiles ,
- unsigned long aFlags, unsigned long aReserved) ;
+ STDMETHODIMP SendMail(unsigned long aSession, lpnsMapiMessage aMessage,
+ unsigned long aFlags, unsigned long aReserved);
- STDMETHODIMP SendDocuments( unsigned long aSession, LPTSTR aDelimChar,
- LPTSTR aFilePaths, LPTSTR aFileNames, ULONG aFlags);
+ STDMETHODIMP SendDocuments(unsigned long aSession, LPSTR aDelimChar,
+ LPSTR aFilePaths, LPSTR aFileNames, ULONG aFlags);
- STDMETHODIMP FindNext( unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageType,
- LPTSTR lpszSeedMessageID, unsigned long flFlags, unsigned long ulReserved,
- unsigned char lpszMessageID[64] );
+ STDMETHODIMP FindNext(unsigned long aSession, unsigned long ulUIParam, LPSTR lpszMessageType,
+ LPSTR lpszSeedMessageID, unsigned long flFlags, unsigned long ulReserved,
+ unsigned char lpszMessageID[64]);
- STDMETHODIMP ReadMail(unsigned long lhSession, unsigned long ulUIParam, LPTSTR lpszMessageID,
- unsigned long flFlags, unsigned long ulReserved, lpnsMapiMessage *lppMessage);
- STDMETHODIMP DeleteMail(unsigned long lhSession, unsigned long ulUIParam, LPTSTR lpszMessageID,
- unsigned long flFlags, unsigned long ulReserved);
+ STDMETHODIMP ReadMail(unsigned long lhSession, unsigned long ulUIParam, LPSTR lpszMessageID,
+ unsigned long flFlags, unsigned long ulReserved, lpnsMapiMessage *lppMessage);
+ STDMETHODIMP DeleteMail(unsigned long lhSession, unsigned long ulUIParam, LPSTR lpszMessageID,
+ unsigned long flFlags, unsigned long ulReserved);
STDMETHODIMP SaveMail(unsigned long lhSession, unsigned long ulUIParam, lpnsMapiMessage lppMessage,
- unsigned long flFlags, unsigned long ulReserved, LPTSTR lpszMessageID);
+ unsigned long flFlags, unsigned long ulReserved, LPSTR lpszMessageID);
STDMETHODIMP Initialize();
STDMETHODIMP IsValid();
diff --git a/comm/mailnews/mapi/mapihook/src/msgMapiMain.cpp b/comm/mailnews/mapi/mapihook/src/msgMapiMain.cpp
index d4be9c0..32068ab 100644
--- a/comm/mailnews/mapi/mapihook/src/msgMapiMain.cpp
+++ b/comm/mailnews/mapi/mapihook/src/msgMapiMain.cpp
@@ -46,7 +46,7 @@ void nsMAPIConfiguration::OpenConfiguration()
}
int16_t nsMAPIConfiguration::RegisterSession(uint32_t aHwnd,
- const char16_t *aUserName, const char16_t *aPassword,
+ const nsCString& aUserName, const nsCString& aPassword,
bool aForceDownLoad, bool aNewSession,
uint32_t *aSession, const char *aIdKey)
{
@@ -63,8 +63,8 @@ int16_t nsMAPIConfiguration::RegisterSession(uint32_t aHwnd,
return -1;
}
- if (aUserName != nullptr && aUserName[0] != '\0')
- m_ProfileMap.Get(nsDependentString(aUserName), &n_SessionId);
+ if (!aUserName.IsEmpty())
+ m_ProfileMap.Get(aUserName, &n_SessionId);
// try to share a session; if not create a session
if (n_SessionId > 0)
@@ -82,8 +82,7 @@ int16_t nsMAPIConfiguration::RegisterSession(uint32_t aHwnd,
{
// create a new session; if new session is specified OR there is no session
nsMAPISession *pTemp = nullptr;
- pTemp = new nsMAPISession(aHwnd, aUserName,
- aPassword, aForceDownLoad, aIdKey);
+ pTemp = new nsMAPISession(aHwnd, aUserName, aPassword, aForceDownLoad, aIdKey);
if (pTemp != nullptr)
{
@@ -95,8 +94,8 @@ int16_t nsMAPIConfiguration::RegisterSession(uint32_t aHwnd,
if (session_generator == 0)
session_generator++;
m_SessionMap.Put(session_generator, pTemp);
- if (aUserName != nullptr && aUserName[0] != '\0')
- m_ProfileMap.Put(nsDependentString(aUserName), session_generator);
+ if (!aUserName.IsEmpty())
+ m_ProfileMap.Put(aUserName, session_generator);
*aSession = session_generator;
sessionCount++;
nResult = 1;
@@ -266,15 +265,14 @@ HRESULT nsMAPIConfiguration::GetMAPIErrorFromNSError (nsresult res)
}
-nsMAPISession::nsMAPISession(uint32_t aHwnd, const char16_t *aUserName,
- const char16_t *aPassword,
+nsMAPISession::nsMAPISession(uint32_t aHwnd, const nsCString& aUserName, const nsCString& aPassword,
bool aForceDownLoad, const char *aKey)
: m_nShared(1),
m_pIdKey(aKey)
{
m_listContext = NULL;
- m_pProfileName.Assign(aUserName);
- m_pPassword.Assign(aPassword);
+ m_pProfileName = aUserName;
+ m_pPassword = aPassword;
}
nsMAPISession::~nsMAPISession()
diff --git a/comm/mailnews/mapi/mapihook/src/msgMapiMain.h b/comm/mailnews/mapi/mapihook/src/msgMapiMain.h
index 9d247bc..7cabf5d 100644
--- a/comm/mailnews/mapi/mapihook/src/msgMapiMain.h
+++ b/comm/mailnews/mapi/mapihook/src/msgMapiMain.h
@@ -31,7 +31,7 @@ private :
PRLock *m_Lock;
uint32_t m_nMaxSessions;
- nsDataHashtable<nsStringHashKey, uint32_t> m_ProfileMap;
+ nsDataHashtable<nsCStringHashKey, uint32_t> m_ProfileMap;
nsClassHashtable<nsUint32HashKey, nsMAPISession> m_SessionMap;
nsMAPIConfiguration();
~nsMAPIConfiguration();
@@ -39,8 +39,8 @@ private :
public :
static nsMAPIConfiguration *GetMAPIConfiguration();
void OpenConfiguration();
- int16_t RegisterSession(uint32_t aHwnd, const char16_t *aUserName, \
- const char16_t *aPassword, bool aForceDownLoad, \
+ int16_t RegisterSession(uint32_t aHwnd, const nsCString& aUserName,
+ const nsCString& aPassword, bool aForceDownLoad,
bool aNewSession, uint32_t *aSession, const char *aIdKey);
bool IsSessionValid(uint32_t aSessionID);
bool UnRegisterSession(uint32_t aSessionID);
@@ -60,13 +60,12 @@ class nsMAPISession
private :
uint32_t m_nShared;
nsCString m_pIdKey;
- nsString m_pProfileName;
- nsString m_pPassword;
+ nsCString m_pProfileName;
+ nsCString m_pPassword;
void *m_listContext; // used by findNext
public :
- nsMAPISession(uint32_t aHwnd, const char16_t *aUserName, \
- const char16_t *aPassword, \
+ nsMAPISession(uint32_t aHwnd, const nsCString& aUserName, const nsCString& aPassword,
bool aForceDownLoad, const char *aKey);
uint32_t IncrementSession();
uint32_t DecrementSession();
diff --git a/comm/mailnews/mime/public/MimeHeaderParser.h b/comm/mailnews/mime/public/MimeHeaderParser.h
index fa4eaa0..df65207 100644
--- a/comm/mailnews/mime/public/MimeHeaderParser.h
+++ b/comm/mailnews/mime/public/MimeHeaderParser.h
@@ -30,6 +30,10 @@ nsCOMArray<msgIAddressObject> DecodedHeader(const nsAString &aHeader);
*/
nsCOMArray<msgIAddressObject> EncodedHeader(const nsACString &aHeader,
const char *aCharset = nullptr);
+/**
+ * Same deal, but we're starting with an nsAString.
+ */
+nsCOMArray<msgIAddressObject> EncodedHeaderW(const nsAString &aHeader);
namespace detail {
void DoConversion(const nsTArray<nsString> &aUTF16, nsTArray<nsCString> &aUTF8);
diff --git a/comm/mailnews/mime/public/nsIMsgHeaderParser.idl b/comm/mailnews/mime/public/nsIMsgHeaderParser.idl
index 06512ec..96eada0 100644
--- a/comm/mailnews/mime/public/nsIMsgHeaderParser.idl
+++ b/comm/mailnews/mime/public/nsIMsgHeaderParser.idl
@@ -97,6 +97,18 @@ interface nsIMsgHeaderParser : nsISupports {
out msgIAddressObject addresses);
/**
+ * Parse an address-based header that has not yet been 2047-decoded and does not
+ * contain raw octets but instead wide (UTF-16) characters.
+ *
+ * @param aEncodedHeader The RFC 2047-encoded header to parse.
+ * @return An array corresponding to the header description.
+ */
+ void parseEncodedHeaderW(in AString aEncodedHeader,
+ [optional] out unsigned long length,
+ [retval, array, size_is(length)]
+ out msgIAddressObject addresses);
+
+/**
* Parse an address-based header that has been 2047-decoded.
*
* The result of this method is an array of objects described in the above
@@ -178,9 +190,6 @@ interface nsIMsgHeaderParser : nsISupports {
* "Bond, James <agent007@mi5.invalid>" would produce one address object,
* while the string "webmaster@nowhere.invalid, child@nowhere.invalid" would
* produce two address objects.
- *
- * Note that the input string is RFC 2231 and RFC 2047 decoded but no UTF-8
- * decoding takes place.
*/
void makeFromDisplayAddress(in AString aDisplayAddresses,
[optional] out unsigned long count,
diff --git a/comm/mailnews/mime/src/MimeHeaderParser.cpp b/comm/mailnews/mime/src/MimeHeaderParser.cpp
index 48c7940..3b7fbf3 100644
--- a/comm/mailnews/mime/src/MimeHeaderParser.cpp
+++ b/comm/mailnews/mime/src/MimeHeaderParser.cpp
@@ -108,6 +108,24 @@ nsCOMArray<msgIAddressObject> EncodedHeader(const nsACString &aHeader,
return retval;
}
+nsCOMArray<msgIAddressObject> EncodedHeaderW(const nsAString &aHeader)
+{
+ nsCOMArray<msgIAddressObject> retval;
+ if (aHeader.IsEmpty()) {
+ return retval;
+ }
+ nsCOMPtr<nsIMsgHeaderParser> headerParser(services::GetHeaderParser());
+ NS_ENSURE_TRUE(headerParser, retval);
+ msgIAddressObject **addresses = nullptr;
+ uint32_t length;
+ nsresult rv = headerParser->ParseEncodedHeaderW(aHeader, &length, &addresses);
+ MOZ_ASSERT(NS_SUCCEEDED(rv), "This should never fail!");
+ if (NS_SUCCEEDED(rv) && length > 0 && addresses) {
+ retval.Adopt(addresses, length);
+ }
+ return retval;
+}
+
void ExtractAllAddresses(const nsCOMArray<msgIAddressObject> &aHeader,
nsTArray<nsString> &names, nsTArray<nsString> &emails)
{
diff --git a/comm/mailnews/mime/src/mimeJSComponents.js b/comm/mailnews/mime/src/mimeJSComponents.js
index 11ae286..252bbdf 100644
--- a/comm/mailnews/mime/src/mimeJSComponents.js
+++ b/comm/mailnews/mime/src/mimeJSComponents.js
@@ -269,6 +269,15 @@ MimeAddressParser.prototype = {
MimeParser.HEADER_ADDRESS | MimeParser.HEADER_OPTION_ALL_I18N, aCharset);
return fixArray(value, aPreserveGroups, count);
},
+ parseEncodedHeaderW: function (aHeader, count) {
+ aHeader = aHeader || "";
+ let value = MimeParser.parseHeaderField(aHeader,
+ MimeParser.HEADER_ADDRESS |
+ MimeParser.HEADER_OPTION_DECODE_2231 |
+ MimeParser.HEADER_OPTION_DECODE_2047,
+ undefined);
+ return fixArray(value, false, count);
+ },
parseDecodedHeader: function (aHeader, aPreserveGroups, count) {
aHeader = aHeader || "";
let value = MimeParser.parseHeaderField(aHeader, MimeParser.HEADER_ADDRESS);
@@ -390,13 +399,7 @@ MimeAddressParser.prototype = {
parseHeadersWithArray: function (aHeader, aAddrs, aNames, aFullNames) {
let addrs = [], names = [], fullNames = [];
- // Parse header, but without HEADER_OPTION_ALLOW_RAW.
- let value = MimeParser.parseHeaderField(aHeader || "",
- MimeParser.HEADER_ADDRESS |
- MimeParser.HEADER_OPTION_DECODE_2231 |
- MimeParser.HEADER_OPTION_DECODE_2047,
- undefined);
- let allAddresses = fixArray(value, false);
+ let allAddresses = this.parseEncodedHeader(aHeader, undefined, false);
// Don't index the dummy empty address.
if (aHeader.trim() == "")
diff --git a/comm/mailnews/mime/src/mimeleaf.cpp b/comm/mailnews/mime/src/mimeleaf.cpp
index 1da4fd89..69e0ef4 100644
--- a/comm/mailnews/mime/src/mimeleaf.cpp
+++ b/comm/mailnews/mime/src/mimeleaf.cpp
@@ -93,18 +93,15 @@ MimeLeaf_parse_begin (MimeObject *obj)
*/
if (!obj->encoding ||
// If we need the object as "raw" for saving or forwarding,
- // don't decode text parts of message types. Other output formats,
- // like "display" (nsMimeMessageBodyDisplay), need decoding.
+ // don't decode attachment parts if headers are also written
+ // via the parent, so that the header matches the encoding.
(obj->options->format_out == nsMimeOutput::nsMimeMessageRaw &&
- obj->parent &&
- (!PL_strcasecmp(obj->parent->content_type, MESSAGE_NEWS) ||
- !PL_strcasecmp(obj->parent->content_type, MESSAGE_RFC822)) &&
- !PL_strncasecmp(obj->content_type, "text/", 5)))
+ obj->parent && obj->parent->output_p))
/* no-op */ ;
else if (!PL_strcasecmp(obj->encoding, ENCODING_BASE64))
- fn = &MimeB64DecoderInit;
+ fn = &MimeB64DecoderInit;
else if (!PL_strcasecmp(obj->encoding, ENCODING_QUOTED_PRINTABLE))
- leaf->decoder_data =
+ leaf->decoder_data =
MimeQPDecoderInit(((MimeConverterOutputCallback)
((MimeLeafClass *)obj->clazz)->parse_decoded_buffer),
obj, obj);
@@ -112,7 +109,7 @@ MimeLeaf_parse_begin (MimeObject *obj)
!PL_strcasecmp(obj->encoding, ENCODING_UUENCODE2) ||
!PL_strcasecmp(obj->encoding, ENCODING_UUENCODE3) ||
!PL_strcasecmp(obj->encoding, ENCODING_UUENCODE4))
- fn = &MimeUUDecoderInit;
+ fn = &MimeUUDecoderInit;
else if (!PL_strcasecmp(obj->encoding, ENCODING_YENCODE))
fn = &MimeYDecoderInit;
diff --git a/comm/mailnews/mime/src/nsCMS.cpp b/comm/mailnews/mime/src/nsCMS.cpp
index 5ed3bcc..0e34b70 100644
--- a/comm/mailnews/mime/src/nsCMS.cpp
+++ b/comm/mailnews/mime/src/nsCMS.cpp
@@ -25,6 +25,7 @@
#include "pkix/Result.h"
#include "pkix/pkixtypes.h"
#include "smime.h"
+#include "mozilla/StaticMutex.h"
using namespace mozilla;
using namespace mozilla::psm;
@@ -228,18 +229,6 @@ nsCMSMessage::CommonVerifySignature(unsigned char* aDigestData,
goto loser;
}
- if (NSS_CMSSignedData_HasDigests(sigd)) {
- SECAlgorithmID **existingAlgs = NSS_CMSSignedData_GetDigestAlgs(sigd);
- if (existingAlgs) {
- while (*existingAlgs) {
- SECAlgorithmID *alg = *existingAlgs;
- SECOidTag algOIDTag = SECOID_FindOIDTag(&alg->algorithm);
- NSS_CMSSignedData_SetDigestValue(sigd, algOIDTag, NULL);
- ++existingAlgs;
- }
- }
- }
-
if (aDigestData && aDigestDataLen)
{
SECOidTag oidTag;
@@ -247,6 +236,18 @@ nsCMSMessage::CommonVerifySignature(unsigned char* aDigestData,
digest.data = aDigestData;
digest.len = aDigestDataLen;
+ if (NSS_CMSSignedData_HasDigests(sigd)) {
+ SECAlgorithmID **existingAlgs = NSS_CMSSignedData_GetDigestAlgs(sigd);
+ if (existingAlgs) {
+ while (*existingAlgs) {
+ SECAlgorithmID *alg = *existingAlgs;
+ SECOidTag algOIDTag = SECOID_FindOIDTag(&alg->algorithm);
+ NSS_CMSSignedData_SetDigestValue(sigd, algOIDTag, NULL);
+ ++existingAlgs;
+ }
+ }
+ }
+
if (!GetIntHashToOidHash(aDigestType, oidTag)) {
rv = NS_ERROR_CMS_VERIFY_BAD_DIGEST;
goto loser;
@@ -390,6 +391,7 @@ private:
{
MOZ_ASSERT(!NS_IsMainThread());
+ mozilla::StaticMutexAutoLock lock(sMutex);
nsresult rv;
if (!mDigestData.IsEmpty()) {
rv = mMessage->VerifyDetachedSignature(
@@ -413,8 +415,12 @@ private:
nsCOMPtr<nsISMimeVerificationListener> mListener;
nsCString mDigestData;
int16_t mDigestType;
+
+ static mozilla::StaticMutex sMutex;
};
+mozilla::StaticMutex SMimeVerificationTask::sMutex;
+
nsresult nsCMSMessage::CommonAsyncVerifySignature(nsISMimeVerificationListener *aListener,
unsigned char* aDigestData, uint32_t aDigestDataLen,
int16_t aDigestType)
diff --git a/comm/mozharness/single_locale/comm-beta.py b/comm/mozharness/single_locale/comm-beta.py
deleted file mode 100644
index d8f1380..0000000
--- a/comm/mozharness/single_locale/comm-beta.py
+++ /dev/null
@@ -1,13 +0,0 @@
-import os
-config = {
- "app_name": "comm/mail",
- "nightly_build": True,
- "branch": "comm-beta",
- 'is_automation': True,
-
- "mar_tools_url": os.environ["MAR_TOOLS_URL"],
- "en_us_binary_url": os.environ["EN_US_BINARY_URL"],
- "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
-
- "update_channel": "beta",
-}
diff --git a/comm/mozharness/single_locale/comm-central.py b/comm/mozharness/single_locale/comm-central.py
deleted file mode 100644
index cba62cf..0000000
--- a/comm/mozharness/single_locale/comm-central.py
+++ /dev/null
@@ -1,13 +0,0 @@
-import os
-config = {
- "app_name": "comm/mail",
- "nightly_build": False,
- "branch": "comm-central",
- 'is_automation': True,
-
- "mar_tools_url": os.environ["MAR_TOOLS_URL"],
- "en_us_binary_url": os.environ["EN_US_BINARY_URL"],
- "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
-
- "update_channel": "nightly",
-}
diff --git a/comm/mozharness/single_locale/comm-esr60.py b/comm/mozharness/single_locale/comm-esr60.py
deleted file mode 100644
index fbae42a..0000000
--- a/comm/mozharness/single_locale/comm-esr60.py
+++ /dev/null
@@ -1,12 +0,0 @@
-import os
-config = {
- "app_name": "comm/mail",
- "nightly_build": True,
- "branch": "comm-esr60",
- 'is_automation': True,
-
- "mar_tools_url": os.environ["MAR_TOOLS_URL"],
- "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
-
- "update_channel": "release",
-}
diff --git a/comm/mozharness/single_locale/thunderbird.py b/comm/mozharness/single_locale/thunderbird.py
index 29e024e..396be65 100644
--- a/comm/mozharness/single_locale/thunderbird.py
+++ b/comm/mozharness/single_locale/thunderbird.py
@@ -1,6 +1,11 @@
config = {
# Source path
'app_name': 'comm/mail',
+ 'mozconfig_variant': 'l10n-mozconfig',
+
+ # FIXME: See bug 1522715. -rjl
+ "objdir": "obj-firefox",
+ "l10n_dir": "l10n",
"locales_file": "src/comm/mail/locales/all-locales",
"locales_dir": "comm/mail/locales",
}
diff --git a/comm/mozharness/single_locale/try-comm-central.py b/comm/mozharness/single_locale/try-comm-central.py
deleted file mode 100644
index dfb4592..0000000
--- a/comm/mozharness/single_locale/try-comm-central.py
+++ /dev/null
@@ -1,14 +0,0 @@
-import os
-config = {
- "app_name": "comm/mail",
- "nightly_build": False,
- "branch": "try-comm-central",
- 'is_automation': True,
-
- "mar_tools_url": os.environ["MAR_TOOLS_URL"],
- "en_us_binary_url": os.environ["EN_US_BINARY_URL"],
- "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
-
- #FIXME
- "update_channel": "nightly",
-}
diff --git a/comm/suite/app/Makefile.in b/comm/suite/app/Makefile.in
index 49c864e..72e1fc0 100644
--- a/comm/suite/app/Makefile.in
+++ b/comm/suite/app/Makefile.in
@@ -77,7 +77,6 @@ GARBAGE += $(MOZ_APP_NAME).1
GARBAGE += $(addprefix $(DIST)/bin/defaults/pref/, browser-prefs.js)
endif
-ifeq ($(MOZ_PACKAGER_FORMAT),omni)
# Make extensions end up as XPIs instead of flat chrome when doing omni.jar.
# Extensions that appear in dist/bin/extensions will get bundled with the
# application, ones that appear in dist/bin/distribution/extensions will be
@@ -110,11 +109,8 @@ tools::
@$(MAKE) pack-ext STAGEDIST="$(DIST)/bin/extensions"
@$(MAKE) pack-ext STAGEDIST="$(DIST)/bin/distribution/extensions"
-endif
-
+# Additional macOS build steps.
ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
-# Anything below the above ifdef won't be included in mac builds. So be very
-# careful what you add here.
MAC_APP_NAME = $(MOZ_APP_DISPLAYNAME)
diff --git a/comm/suite/components/shell/moz.build b/comm/suite/components/shell/moz.build
index 33385e0..e4e8977 100644
--- a/comm/suite/components/shell/moz.build
+++ b/comm/suite/components/shell/moz.build
@@ -26,12 +26,6 @@ if CONFIG['OS_ARCH'] == 'WINNT':
LOCAL_INCLUDES += [
'/other-licenses/nsis/Contrib/CityHash/cityhash',
]
- OS_LIBS += [
- 'ole32',
- 'version',
- 'uuid',
- 'shell32',
- ]
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
SOURCES += ['nsMacShellService.cpp']
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk3':
diff --git a/comm/suite/installer/Makefile.in b/comm/suite/installer/Makefile.in
index 4eb87fd..1c2bf1b 100644
--- a/comm/suite/installer/Makefile.in
+++ b/comm/suite/installer/Makefile.in
@@ -198,10 +198,6 @@ ifdef MOZ_CLANG_RT_ASAN_LIB_PATH
DEFINES += -DMOZ_CLANG_RT_ASAN_LIB=$(notdir $(MOZ_CLANG_RT_ASAN_LIB_PATH))
endif
-ifeq ($(MOZ_PACKAGER_FORMAT),omni)
-DEFINES += -DMOZ_OMNIJAR=1
-endif
-
libs::
$(MAKE) -C $(topobjdir)/comm/suite/locales langpack
diff --git a/comm/suite/installer/package-manifest.in b/comm/suite/installer/package-manifest.in
index 9d0732a..a8fb40f 100644
--- a/comm/suite/installer/package-manifest.in
+++ b/comm/suite/installer/package-manifest.in
@@ -536,25 +536,10 @@
; classic theme
@RESPATH@/chrome/classic@JAREXT@
@RESPATH@/chrome/classic.manifest
-#ifdef MOZ_OMNIJAR
@RESPATH@/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi
-#else
-@RESPATH@/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/chrome.manifest
-@RESPATH@/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png
-@RESPATH@/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf
-@RESPATH@/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/preview.png
-#endif
; modern theme
-#ifdef MOZ_OMNIJAR
@RESPATH@/extensions/modern@themes.mozilla.org.xpi
-#else
-@RESPATH@/extensions/modern@themes.mozilla.org/chrome/modern@JAREXT@
-@RESPATH@/extensions/modern@themes.mozilla.org/chrome.manifest
-@RESPATH@/extensions/modern@themes.mozilla.org/icon.png
-@RESPATH@/extensions/modern@themes.mozilla.org/install.rdf
-@RESPATH@/extensions/modern@themes.mozilla.org/preview.png
-#endif
; shell icons
#ifdef MOZ_GTK
@@ -878,62 +863,20 @@ man/*
[chatzilla]
#ifdef MOZ_IRC
-#ifdef MOZ_OMNIJAR
@RESPATH@/distribution/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}.xpi
-#else
-@RESPATH@/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/chatzilla@JAREXT@
-#ifdef MOZ_GTK
-@RESPATH@/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window.xpm
-@RESPATH@/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window16.xpm
-#elifdef XP_WIN32
-@RESPATH@/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window.ico
-#endif
-@RESPATH@/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome.manifest
-@RESPATH@/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/components/chatzilla-service.js
-@RESPATH@/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/components/components.list
-@RESPATH@/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/install.rdf
-#endif
#ifdef LOCALE_BUILD
-#ifdef MOZ_OMNIJAR
@RESPATH@/distribution/extensions/langpack-@AB_CD@@chatzilla.mozilla.org.xpi
-#else
-@RESPATH@/extensions/langpack-@AB_CD@@chatzilla.mozilla.org/chrome/chatzilla@JAREXT@
-@RESPATH@/extensions/langpack-@AB_CD@@chatzilla.mozilla.org/chrome.manifest
-@RESPATH@/extensions/langpack-@AB_CD@@chatzilla.mozilla.org/install.js
-@RESPATH@/extensions/langpack-@AB_CD@@chatzilla.mozilla.org/install.rdf
-#endif
#endif
#endif
[inspector]
#ifdef MOZ_DOMINSPECTOR
-#ifdef MOZ_OMNIJAR
@RESPATH@/distribution/extensions/inspector@mozilla.org.xpi
-#else
-@RESPATH@/extensions/inspector@mozilla.org/install.rdf
-@RESPATH@/extensions/inspector@mozilla.org/chrome.manifest
-@RESPATH@/extensions/inspector@mozilla.org/chrome/inspector@JAREXT@
-#ifdef MOZ_GTK
-@RESPATH@/extensions/inspector@mozilla.org/platform/Linux/chrome/icons/default/winInspectorMain16.xpm
-@RESPATH@/extensions/inspector@mozilla.org/platform/Linux/chrome/icons/default/winInspectorMain.xpm
-#elifdef XP_WIN32
-@RESPATH@/extensions/inspector@mozilla.org/platform/WINNT/chrome/icons/default/winInspectorMain.ico
-#endif
-@RESPATH@/extensions/inspector@mozilla.org/components/components.list
-@RESPATH@/extensions/inspector@mozilla.org/components/inspector-cmdline.js
-@RESPATH@/extensions/inspector@mozilla.org/defaults/preferences/inspector.js
-#endif
#endif
[debugqa]
#ifdef MOZ_PACKAGE_DEBUGQA
-#ifdef MOZ_OMNIJAR
@RESPATH@/distribution/extensions/debugQA@mozilla.org.xpi
-#else
-@RESPATH@/extensions/debugQA@mozilla.org/install.rdf
-@RESPATH@/extensions/debugQA@mozilla.org/chrome.manifest
-@RESPATH@/extensions/debugQA@mozilla.org/chrome/debugqa@JAREXT@
-#endif
#endif
#ifdef MOZ_CALENDAR
diff --git a/comm/suite/installer/removed-files.in b/comm/suite/installer/removed-files.in
index 356447e..5b9c2eb 100644
--- a/comm/suite/installer/removed-files.in
+++ b/comm/suite/installer/removed-files.in
@@ -102,12 +102,10 @@
@DIR_MACOS@chrome/icons/default/venkman-window.xpm
@DIR_MACOS@chrome/icons/default/venkman-window16.xpm
@DIR_MACOS@chrome/installed-chrome.txt
-#ifdef MOZ_OMNIJAR
@DIR_MACOS@distribution/extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}.xpi
#ifdef LOCALE_BUILD
@DIR_MACOS@distribution/extensions/langpack-@AB_CD@@venkman.mozilla.org.xpi
#endif
-#endif
#ifdef MOZ_GTK
@DIR_MACOS@chrome/icons/default/venkman-window.png
@DIR_MACOS@chrome/icons/default/venkman-window16.png
@@ -546,7 +544,6 @@ Throbber-small.gif
#endif
#ifndef MOZ_UPDATER
@DIR_MACOS@update-settings.ini
- @DIR_MACOS@update.locale
#ifdef XP_MACOSX
@DIR_MACOS@updater.app/
#else
@@ -554,522 +551,508 @@ Throbber-small.gif
#endif
@DIR_MACOS@updater.ini
#endif
+@DIR_MACOS@update.locale
@DIR_MACOS@@DLL_PREFIX@xpcom@DLL_SUFFIX@
@DIR_MACOS@@DLL_PREFIX@xpcom_core@DLL_SUFFIX@
@DIR_MACOS@xpicleanup@BIN_SUFFIX@
@DIR_MACOS@@DLL_PREFIX@xpistub@DLL_SUFFIX@
-#ifdef MOZ_OMNIJAR
- @DIR_MACOS@chrome/be.jar
- @DIR_MACOS@chrome/ca.jar
- @DIR_MACOS@chrome/cs.jar
- @DIR_MACOS@chrome/de.jar
- @DIR_MACOS@chrome/en-GB.jar
- @DIR_MACOS@chrome/en-US.jar
- @DIR_MACOS@chrome/es-AR.jar
- @DIR_MACOS@chrome/es-ES.jar
- @DIR_MACOS@chrome/fi.jar
- @DIR_MACOS@chrome/fr.jar
- @DIR_MACOS@chrome/gl.jar
- @DIR_MACOS@chrome/hu.jar
- @DIR_MACOS@chrome/it.jar
- @DIR_MACOS@chrome/ja.jar
- @DIR_MACOS@chrome/ja-JP-mac.jar
- @DIR_MACOS@chrome/ka.jar
- @DIR_MACOS@chrome/lt.jar
- @DIR_MACOS@chrome/nb-NO.jar
- @DIR_MACOS@chrome/nl.jar
- @DIR_MACOS@chrome/pl.jar
- @DIR_MACOS@chrome/pt-BR.jar
- @DIR_MACOS@chrome/pt-PT.jar
- @DIR_MACOS@chrome/ro.jar
- @DIR_MACOS@chrome/ru.jar
- @DIR_MACOS@chrome/si.jar
- @DIR_MACOS@chrome/sk.jar
- @DIR_MACOS@chrome/sv-SE.jar
- @DIR_MACOS@chrome/tr.jar
- @DIR_MACOS@chrome/zh-CN.jar
- @DIR_MACOS@chrome/comm.jar
- @DIR_MACOS@chrome/toolkit.jar
- @DIR_MACOS@chrome/classic.jar
- @DIR_MACOS@chrome/pippki.jar
- @DIR_MACOS@chrome/messenger.jar
- @DIR_MACOS@chrome/newsblog.jar
- @DIR_MACOS@chrome/gloda.jar
- @DIR_MACOS@chrome/nonlocalized.manifest
- @DIR_MACOS@chrome/localized.manifest
- @DIR_MACOS@components/addonManager.js
- @DIR_MACOS@components/Aitc.js
- @DIR_MACOS@components/AlarmsManager.js
- @DIR_MACOS@components/amContentHandler.js
- @DIR_MACOS@components/amWebInstallListener.js
- @DIR_MACOS@components/BrowserElementParent.js
- @DIR_MACOS@components/ColorAnalyzer.js
- @DIR_MACOS@components/ConsoleAPI.js
- @DIR_MACOS@components/ContactManager.js
- @DIR_MACOS@components/contentAreaDropListener.js
- @DIR_MACOS@components/contentSecurityPolicy.js
- @DIR_MACOS@components/crypto-SDR.js
- @DIR_MACOS@components/FeedConverter.js
- @DIR_MACOS@components/FeedProcessor.js
- @DIR_MACOS@components/FeedWriter.js
- @DIR_MACOS@components/glautocomp.js
- @DIR_MACOS@components/GPSDGeolocationProvider.js
- @DIR_MACOS@components/jsconsole-clhandler.js
- @DIR_MACOS@components/jsmimeemitter.js
- @DIR_MACOS@components/mdn-service.js
- @DIR_MACOS@components/msgAsyncPrompter.js
- @DIR_MACOS@components/NetworkGeolocationProvider.js
- @DIR_MACOS@components/NotificationsComponents.manifest
- @DIR_MACOS@components/newsblog.js
- @DIR_MACOS@components/nsAbAutoCompleteMyDomain.js
- @DIR_MACOS@components/nsAbAutoCompleteSearch.js
- @DIR_MACOS@components/nsAbLDAPAttributeMap.js
- @DIR_MACOS@components/nsAbout.js
- @DIR_MACOS@components/nsAboutCertError.js
- @DIR_MACOS@components/nsAboutData.js
- @DIR_MACOS@components/nsAboutFeeds.js
- @DIR_MACOS@components/nsAboutLife.js
- @DIR_MACOS@components/nsAboutRights.js
- @DIR_MACOS@components/nsAboutSessionRestore.js
- @DIR_MACOS@components/nsBadCertHandler.js
- @DIR_MACOS@components/nsBlocklistService.js
- @DIR_MACOS@components/nsBrowserContentHandler.js
- @DIR_MACOS@components/nsComposerCmdLineHandler.js
- @DIR_MACOS@components/nsContentDispatchChooser.js
- @DIR_MACOS@components/nsDefaultCLH.js
- @DIR_MACOS@components/nsDOMIdentity.js
- #ifdef UNIX_BUT_NOT_MAC
- components/nsFilePicker.js
- #endif
- @DIR_MACOS@components/nsFormAutoComplete.js
- @DIR_MACOS@components/nsFormHistory.js
- @DIR_MACOS@components/nsHandlerService.js
- @DIR_MACOS@components/nsHelperAppDlg.js
- @DIR_MACOS@components/nsIDService.js
- @DIR_MACOS@components/nsINIProcessor.js
- @DIR_MACOS@components/nsInputListAutoComplete.js
- @DIR_MACOS@components/nsLDAPProtocolHandler.js
- @DIR_MACOS@components/nsLivemarkService.js
- @DIR_MACOS@components/nsLoginInfo.js
- @DIR_MACOS@components/nsLoginManager.js
- @DIR_MACOS@components/nsLoginManagerPrompter.js
- @DIR_MACOS@components/nsMailNewsCommandLineHandler.js
- @DIR_MACOS@components/nsMsgTraitService.js
- @DIR_MACOS@components/nsPlacesAutoComplete.js
- @DIR_MACOS@components/nsPlacesDBFlush.js
- @DIR_MACOS@components/nsPlacesExpiration.js
- @DIR_MACOS@components/nsPrompter.js
- @DIR_MACOS@components/nsSearchService.js
- @DIR_MACOS@components/nsSearchSuggestions.js
- @DIR_MACOS@components/nsSessionStartup.js
- @DIR_MACOS@components/nsSessionStore.js
- @DIR_MACOS@components/nsSetDefault.js
- @DIR_MACOS@components/nsSidebar.js
- @DIR_MACOS@components/nsSMTPProtocolHandler.js
- @DIR_MACOS@components/nsSuiteGlue.js
- @DIR_MACOS@components/nsTaggingService.js
- @DIR_MACOS@components/nsTryToClose.js
- @DIR_MACOS@components/nsTypeAheadFind.js
- @DIR_MACOS@components/nsUpdateService.js
- @DIR_MACOS@components/nsUpdateServiceStub.js
- @DIR_MACOS@components/nsUpdateTimerManager.js
- @DIR_MACOS@components/nsURLFormatter.js
- @DIR_MACOS@components/nsWebHandlerApp.js
- @DIR_MACOS@components/offlineStartup.js
- @DIR_MACOS@components/PlacesCategoriesStarter.js
- @DIR_MACOS@components/SettingsManager.js
- @DIR_MACOS@components/SiteSpecificUserAgent.js
- @DIR_MACOS@components/smime-service.js
- @DIR_MACOS@components/storage-Legacy.js
- @DIR_MACOS@components/storage-mozStorage.js
- @DIR_MACOS@components/TCPSocket.js
- @DIR_MACOS@components/txEXSLTRegExFunctions.js
- @DIR_MACOS@components/WebContentConverter.js
- @DIR_MACOS@components/browser.xpt
- @DIR_MACOS@components/binary.manifest
- @DIR_MACOS@components/interfaces.manifest
- @DIR_MACOS@components/mail.xpt
- @DIR_MACOS@defaults/profile/bookmarks.html
- @DIR_MACOS@defaults/pref/browser-prefs.js
- @DIR_MACOS@defaults/pref/composer.js
- @DIR_MACOS@defaults/pref/mailnews.js
- @DIR_MACOS@defaults/pref/mdn.js
- @DIR_MACOS@defaults/pref/services-aitc.js
- @DIR_MACOS@defaults/pref/services-notifications.js
- @DIR_MACOS@defaults/pref/smime.js
- @DIR_MACOS@defaults/autoconfig/
- @DIR_MACOS@defaults/autoconfig/platform.js
- @DIR_MACOS@defaults/autoconfig/prefcalls.js
- @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/
- @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/
- @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/chatzilla.jar
- @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/
- @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/
- @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window.xpm
- @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window16.xpm
- @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window.ico
- @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome.manifest
- @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/components/
- @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/components/chatzilla-service.js
- @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/install.rdf
- @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}.xpi
-#ifndef MOZ_OMNIJAR
- @DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi
-#else
- @DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/
- @DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/chrome.manifest
- @DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png
- @DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf
- @DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/preview.png
+@DIR_MACOS@chrome/be.jar
+@DIR_MACOS@chrome/ca.jar
+@DIR_MACOS@chrome/cs.jar
+@DIR_MACOS@chrome/de.jar
+@DIR_MACOS@chrome/en-GB.jar
+@DIR_MACOS@chrome/en-US.jar
+@DIR_MACOS@chrome/es-AR.jar
+@DIR_MACOS@chrome/es-ES.jar
+@DIR_MACOS@chrome/fi.jar
+@DIR_MACOS@chrome/fr.jar
+@DIR_MACOS@chrome/gl.jar
+@DIR_MACOS@chrome/hu.jar
+@DIR_MACOS@chrome/it.jar
+@DIR_MACOS@chrome/ja.jar
+@DIR_MACOS@chrome/ja-JP-mac.jar
+@DIR_MACOS@chrome/ka.jar
+@DIR_MACOS@chrome/lt.jar
+@DIR_MACOS@chrome/nb-NO.jar
+@DIR_MACOS@chrome/nl.jar
+@DIR_MACOS@chrome/pl.jar
+@DIR_MACOS@chrome/pt-BR.jar
+@DIR_MACOS@chrome/pt-PT.jar
+@DIR_MACOS@chrome/ro.jar
+@DIR_MACOS@chrome/ru.jar
+@DIR_MACOS@chrome/si.jar
+@DIR_MACOS@chrome/sk.jar
+@DIR_MACOS@chrome/sv-SE.jar
+@DIR_MACOS@chrome/tr.jar
+@DIR_MACOS@chrome/zh-CN.jar
+@DIR_MACOS@chrome/comm.jar
+@DIR_MACOS@chrome/toolkit.jar
+@DIR_MACOS@chrome/classic.jar
+@DIR_MACOS@chrome/pippki.jar
+@DIR_MACOS@chrome/messenger.jar
+@DIR_MACOS@chrome/newsblog.jar
+@DIR_MACOS@chrome/gloda.jar
+@DIR_MACOS@chrome/nonlocalized.manifest
+@DIR_MACOS@chrome/localized.manifest
+@DIR_MACOS@components/addonManager.js
+@DIR_MACOS@components/Aitc.js
+@DIR_MACOS@components/AlarmsManager.js
+@DIR_MACOS@components/amContentHandler.js
+@DIR_MACOS@components/amWebInstallListener.js
+@DIR_MACOS@components/BrowserElementParent.js
+@DIR_MACOS@components/ColorAnalyzer.js
+@DIR_MACOS@components/ConsoleAPI.js
+@DIR_MACOS@components/ContactManager.js
+@DIR_MACOS@components/contentAreaDropListener.js
+@DIR_MACOS@components/contentSecurityPolicy.js
+@DIR_MACOS@components/crypto-SDR.js
+@DIR_MACOS@components/FeedConverter.js
+@DIR_MACOS@components/FeedProcessor.js
+@DIR_MACOS@components/FeedWriter.js
+@DIR_MACOS@components/glautocomp.js
+@DIR_MACOS@components/GPSDGeolocationProvider.js
+@DIR_MACOS@components/jsconsole-clhandler.js
+@DIR_MACOS@components/jsmimeemitter.js
+@DIR_MACOS@components/mdn-service.js
+@DIR_MACOS@components/msgAsyncPrompter.js
+@DIR_MACOS@components/NetworkGeolocationProvider.js
+@DIR_MACOS@components/NotificationsComponents.manifest
+@DIR_MACOS@components/newsblog.js
+@DIR_MACOS@components/nsAbAutoCompleteMyDomain.js
+@DIR_MACOS@components/nsAbAutoCompleteSearch.js
+@DIR_MACOS@components/nsAbLDAPAttributeMap.js
+@DIR_MACOS@components/nsAbout.js
+@DIR_MACOS@components/nsAboutCertError.js
+@DIR_MACOS@components/nsAboutData.js
+@DIR_MACOS@components/nsAboutFeeds.js
+@DIR_MACOS@components/nsAboutLife.js
+@DIR_MACOS@components/nsAboutRights.js
+@DIR_MACOS@components/nsAboutSessionRestore.js
+@DIR_MACOS@components/nsBadCertHandler.js
+@DIR_MACOS@components/nsBlocklistService.js
+@DIR_MACOS@components/nsBrowserContentHandler.js
+@DIR_MACOS@components/nsComposerCmdLineHandler.js
+@DIR_MACOS@components/nsContentDispatchChooser.js
+@DIR_MACOS@components/nsDefaultCLH.js
+@DIR_MACOS@components/nsDOMIdentity.js
+#ifdef UNIX_BUT_NOT_MAC
+ components/nsFilePicker.js
#endif
- @DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/
- @DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/chrome/
- @DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/chrome/venkman.jar
- @DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/chrome.manifest
- @DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/components/
- @DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/components/venkman-service.js
- @DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/install.rdf
- @DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}.xpi
- @DIR_MACOS@extensions/debugQA@mozilla.org/
- @DIR_MACOS@extensions/debugQA@mozilla.org/install.rdf
- @DIR_MACOS@extensions/debugQA@mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/debugQA@mozilla.org/chrome/
- @DIR_MACOS@extensions/debugQA@mozilla.org/chrome/debugqa.jar
- @DIR_MACOS@extensions/debugQA@mozilla.org.xpi
- @DIR_MACOS@extensions/inspector@mozilla.org/
- @DIR_MACOS@extensions/inspector@mozilla.org/install.rdf
- @DIR_MACOS@extensions/inspector@mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/inspector@mozilla.org/chrome/
- @DIR_MACOS@extensions/inspector@mozilla.org/chrome/inspector.jar
- @DIR_MACOS@extensions/inspector@mozilla.org/platform/
- @DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/
- @DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/
- @DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/icons/
- @DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/icons/default/
- @DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/icons/default/winInspectorMain16.xpm
- @DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/icons/default/winInspectorMain.xpm
- @DIR_MACOS@extensions/inspector@mozilla.org/platform/WINNT/chrome/icons/default/winInspectorMain.ico
- @DIR_MACOS@extensions/inspector@mozilla.org/components/
- @DIR_MACOS@extensions/inspector@mozilla.org/components/inspector-cmdline.js
- @DIR_MACOS@extensions/inspector@mozilla.org/defaults/
- @DIR_MACOS@extensions/inspector@mozilla.org/defaults/preferences/
- @DIR_MACOS@extensions/inspector@mozilla.org/defaults/preferences/inspector.js
- @DIR_MACOS@extensions/inspector@mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/chrome/chatzilla.jar
- @DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/chrome/chatzilla.manifest
- @DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/chrome/chatzilla.jar
- @DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/chrome/chatzilla.manifest
- @DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/chrome/chatzilla.jar
- @DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/chrome/chatzilla.manifest
- @DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/chrome/chatzilla.jar
- @DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/chrome/chatzilla.manifest
- @DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/chrome/chatzilla.jar
- @DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/chrome/chatzilla.manifest
- @DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/chrome/chatzilla.jar
- @DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/chrome/chatzilla.manifest
- @DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/chrome/chatzilla.jar
- @DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/chrome/chatzilla.manifest
- @DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/chrome/chatzilla.jar
- @DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/chrome/chatzilla.manifest
- @DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/chrome/chatzilla.jar
- @DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/chrome/chatzilla.manifest
- @DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/chrome/chatzilla.jar
- @DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/chrome/chatzilla.manifest
- @DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/chrome/chatzilla.jar
- @DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/chrome/chatzilla.manifest
- @DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/chrome/chatzilla.jar
- @DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/chrome/chatzilla.manifest
- @DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/chrome/chatzilla.jar
- @DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/chrome/chatzilla.manifest
- @DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/chrome/chatzilla.jar
- @DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/chrome/chatzilla.manifest
- @DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/chrome/chatzilla.jar
- @DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/chrome/chatzilla.manifest
- @DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/chrome/chatzilla.jar
- @DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/chrome/chatzilla.manifest
- @DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/chrome/chatzilla.jar
- @DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/chrome/chatzilla.manifest
- @DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org/chrome/venkman.jar
- @DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org/chrome/venkman.manifest
- @DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-de@venkman.mozilla.org/chrome/venkman.jar
- @DIR_MACOS@extensions/langpack-de@venkman.mozilla.org/chrome/venkman.manifest
- @DIR_MACOS@extensions/langpack-de@venkman.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-de@venkman.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-de@venkman.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-de@venkman.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org/chrome/venkman.jar
- @DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org/chrome/venkman.manifest
- @DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org/chrome/venkman.jar
- @DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org/chrome/venkman.manifest
- @DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-it@venkman.mozilla.org/chrome/venkman.jar
- @DIR_MACOS@extensions/langpack-it@venkman.mozilla.org/chrome/venkman.manifest
- @DIR_MACOS@extensions/langpack-it@venkman.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-it@venkman.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-it@venkman.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-it@venkman.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org/chrome/venkman.jar
- @DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org/chrome/venkman.manifest
- @DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org/chrome/venkman.jar
- @DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org/chrome/venkman.manifest
- @DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org/chrome/venkman.jar
- @DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org/chrome/venkman.manifest
- @DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org/chrome/venkman.jar
- @DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org/chrome/venkman.manifest
- @DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-ru@venkman.mozilla.org/chrome/venkman.jar
- @DIR_MACOS@extensions/langpack-ru@venkman.mozilla.org/chrome/venkman.manifest
- @DIR_MACOS@extensions/langpack-ru@venkman.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-ri@venkman.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-ru@venkman.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-ru@venkman.mozilla.org.xpi
- @DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org/chrome/venkman.jar
- @DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org/chrome/venkman.manifest
- @DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org/install.js
- @DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org/install.rdf
- @DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org.xpi
- @DIR_MACOS@extensions/modern@themes.mozilla.org/
- @DIR_MACOS@extensions/modern@themes.mozilla.org/chrome/
- @DIR_MACOS@extensions/modern@themes.mozilla.org/chrome/modern.jar
- @DIR_MACOS@extensions/modern@themes.mozilla.org/chrome.manifest
- @DIR_MACOS@extensions/modern@themes.mozilla.org/icon.png
- @DIR_MACOS@extensions/modern@themes.mozilla.org/install.rdf
- @DIR_MACOS@extensions/modern@themes.mozilla.org/preview.png
- @DIR_MACOS@jssubloader/
- @DIR_MACOS@modules/
- @DIR_MACOS@modules/AddonLogging.jsm
- @DIR_MACOS@modules/AddonManager.jsm
- @DIR_MACOS@modules/AddonRepository.jsm
- @DIR_MACOS@modules/AddonUpdateChecker.jsm
- @DIR_MACOS@modules/BrowserElementPromptService.jsm
- @DIR_MACOS@modules/CertUtils.jsm
- @DIR_MACOS@modules/CommonDialog.jsm
- @DIR_MACOS@modules/CrashSubmit.jsm
- @DIR_MACOS@modules/CSPUtils.jsm
- @DIR_MACOS@modules/ctypes.jsm
- @DIR_MACOS@modules/debug.js
- @DIR_MACOS@modules/dictUtils.js
- @DIR_MACOS@modules/errUtils.js
- @DIR_MACOS@modules/FileUtils.jsm
- @DIR_MACOS@modules/folderUtils.jsm
- @DIR_MACOS@modules/Geometry.jsm
- @DIR_MACOS@modules/gloda/
- @DIR_MACOS@modules/gloda/mimeTypeCategories.js
- @DIR_MACOS@modules/gloda/log4moz.js
- @DIR_MACOS@modules/gloda/gloda.js
- @DIR_MACOS@modules/gloda/datamodel.js
- @DIR_MACOS@modules/gloda/databind.js
- @DIR_MACOS@modules/gloda/index_ab.js
- @DIR_MACOS@modules/gloda/msg_search.js
- @DIR_MACOS@modules/gloda/public.js
- @DIR_MACOS@modules/gloda/noun_freetag.js
- @DIR_MACOS@modules/gloda/utils.js
- @DIR_MACOS@modules/gloda/suffixtree.js
- @DIR_MACOS@modules/gloda/indexer.js
- @DIR_MACOS@modules/gloda/fundattr.js
- @DIR_MACOS@modules/gloda/dbview.js
- @DIR_MACOS@modules/gloda/datastore.js
- @DIR_MACOS@modules/gloda/everybody.js
- @DIR_MACOS@modules/gloda/collection.js
- @DIR_MACOS@modules/gloda/query.js
- @DIR_MACOS@modules/gloda/noun_tag.js
- @DIR_MACOS@modules/gloda/connotent.js
- @DIR_MACOS@modules/gloda/noun_mimetype.js
- @DIR_MACOS@modules/gloda/index_msg.js
- @DIR_MACOS@modules/gloda/mimemsg.js
- @DIR_MACOS@modules/gloda/explattr.js
- @DIR_MACOS@modules/gloda/facet.js
- @DIR_MACOS@modules/InlineSpellChecker.jsm
- @DIR_MACOS@modules/IOUtils.js
- @DIR_MACOS@modules/ISO8601DateUtils.jsm
- @DIR_MACOS@modules/iteratorUtils.jsm
- @DIR_MACOS@modules/jsTreeSelection.js
- @DIR_MACOS@modules/LightweightThemeConsumer.jsm
- @DIR_MACOS@modules/LightweightThemeManager.jsm
- @DIR_MACOS@modules/mailnewsMigrator.js
- @DIR_MACOS@modules/MailUtils.js
- @DIR_MACOS@modules/Microformats.js
- @DIR_MACOS@modules/NetUtil.jsm
- @DIR_MACOS@modules/nsFormAutoCompleteResult.jsm
- @DIR_MACOS@modules/PerfMeasurement.jsm
- @DIR_MACOS@modules/PlacesDBUtils.jsm
- @DIR_MACOS@modules/PlacesUIUtils.jsm
- @DIR_MACOS@modules/PlacesUtils.jsm
- @DIR_MACOS@modules/PluginProvider.jsm
- @DIR_MACOS@modules/PluralForm.jsm
- @DIR_MACOS@modules/PopupNotifications.jsm
- @DIR_MACOS@modules/Sanitizer.jsm
- @DIR_MACOS@modules/Services.jsm
- @DIR_MACOS@modules/StringBundle.js
- @DIR_MACOS@modules/services-common/async.js
- @DIR_MACOS@modules/services-common/log4moz.js
- @DIR_MACOS@modules/services-common/observers.js
- @DIR_MACOS@modules/services-common/preferences.js
- @DIR_MACOS@modules/services-common/rest.js
- @DIR_MACOS@modules/services-common/stringbundle.js
- @DIR_MACOS@modules/services-common/tokenserverclient.js
- @DIR_MACOS@modules/services-common/utils.js
- @DIR_MACOS@modules/services-crypto/utils.js
- @DIR_MACOS@modules/services-crypto/WeaveCrypto.js
- @DIR_MACOS@modules/services-notifications/service.js
- @DIR_MACOS@modules/templateUtils.js
- @DIR_MACOS@modules/traceHelper.js
- @DIR_MACOS@modules/UserAgentOverrides.jsm
- @DIR_MACOS@modules/utils.js
- @DIR_MACOS@modules/virtualFolderWrapper.js
- @DIR_MACOS@modules/WindowDraggingUtils.jsm
- @DIR_MACOS@modules/WorkerTest.jsm
- @DIR_MACOS@modules/WorkerTest_subworker.js
- @DIR_MACOS@modules/WorkerTest_worker.js
- @DIR_MACOS@modules/XPCOMUtils.jsm
- @DIR_MACOS@modules/XPIProvider.jsm
- @DIR_MACOS@greprefs.js
- @DIR_MACOS@res/contenteditable.css
- @DIR_MACOS@res/designmode.css
- @DIR_MACOS@res/EditorOverride.css
- @DIR_MACOS@res/grabber.gif
- @DIR_MACOS@res/langGroups.properties
- @DIR_MACOS@res/language.properties
- @DIR_MACOS@res/svg.css
- @DIR_MACOS@res/table-add-column-after-active.gif
- @DIR_MACOS@res/table-add-column-after-hover.gif
- @DIR_MACOS@res/table-add-column-after.gif
- @DIR_MACOS@res/table-add-column-before-active.gif
- @DIR_MACOS@res/table-add-column-before-hover.gif
- @DIR_MACOS@res/table-add-column-before.gif
- @DIR_MACOS@res/table-add-row-after-active.gif
- @DIR_MACOS@res/table-add-row-after-hover.gif
- @DIR_MACOS@res/table-add-row-after.gif
- @DIR_MACOS@res/table-add-row-before-active.gif
- @DIR_MACOS@res/table-add-row-before-hover.gif
- @DIR_MACOS@res/table-add-row-before.gif
- @DIR_MACOS@res/table-remove-column-active.gif
- @DIR_MACOS@res/table-remove-column-hover.gif
- @DIR_MACOS@res/table-remove-column.gif
- @DIR_MACOS@res/table-remove-row-active.gif
- @DIR_MACOS@res/table-remove-row-hover.gif
- @DIR_MACOS@res/table-remove-row.gif
- @DIR_MACOS@res/fonts/
- @DIR_MACOS@res/fonts/mathfont.properties
- @DIR_MACOS@res/fonts/mathfontStandardSymbolsL.properties
- @DIR_MACOS@res/fonts/mathfontSTIXNonUnicode.properties
- @DIR_MACOS@res/fonts/mathfontSTIXSize1.properties
- @DIR_MACOS@res/fonts/mathfontSTIXSizeOneSym.properties
- #ifdef XP_WIN
- res/fonts/mathfontSymbol.properties
- #endif
- @DIR_MACOS@res/fonts/mathfontUnicode.properties
- @DIR_MACOS@res/dtd/
- @DIR_MACOS@res/dtd/mathml.dtd
- @DIR_MACOS@res/dtd/xhtml11.dtd
- @DIR_MACOS@res/html/
- @DIR_MACOS@res/html/folder.png
- #ifdef MOZ_UPDATER
- @DIR_MACOS@update.locale
- #endif
-#else
- @DIR_MACOS@components/Aitc.js
- @DIR_MACOS@components/binary.manifest
- @DIR_MACOS@defaults/pref/services-aitc.js
- @DIR_MACOS@defaults/pref/services-notifications.js
- @DIR_MACOS@omni.ja
+@DIR_MACOS@components/nsFormAutoComplete.js
+@DIR_MACOS@components/nsFormHistory.js
+@DIR_MACOS@components/nsHandlerService.js
+@DIR_MACOS@components/nsHelperAppDlg.js
+@DIR_MACOS@components/nsIDService.js
+@DIR_MACOS@components/nsINIProcessor.js
+@DIR_MACOS@components/nsInputListAutoComplete.js
+@DIR_MACOS@components/nsLDAPProtocolHandler.js
+@DIR_MACOS@components/nsLivemarkService.js
+@DIR_MACOS@components/nsLoginInfo.js
+@DIR_MACOS@components/nsLoginManager.js
+@DIR_MACOS@components/nsLoginManagerPrompter.js
+@DIR_MACOS@components/nsMailNewsCommandLineHandler.js
+@DIR_MACOS@components/nsMsgTraitService.js
+@DIR_MACOS@components/nsPlacesAutoComplete.js
+@DIR_MACOS@components/nsPlacesDBFlush.js
+@DIR_MACOS@components/nsPlacesExpiration.js
+@DIR_MACOS@components/nsPrompter.js
+@DIR_MACOS@components/nsSearchService.js
+@DIR_MACOS@components/nsSearchSuggestions.js
+@DIR_MACOS@components/nsSessionStartup.js
+@DIR_MACOS@components/nsSessionStore.js
+@DIR_MACOS@components/nsSetDefault.js
+@DIR_MACOS@components/nsSidebar.js
+@DIR_MACOS@components/nsSMTPProtocolHandler.js
+@DIR_MACOS@components/nsSuiteGlue.js
+@DIR_MACOS@components/nsTaggingService.js
+@DIR_MACOS@components/nsTryToClose.js
+@DIR_MACOS@components/nsTypeAheadFind.js
+@DIR_MACOS@components/nsUpdateService.js
+@DIR_MACOS@components/nsUpdateServiceStub.js
+@DIR_MACOS@components/nsUpdateTimerManager.js
+@DIR_MACOS@components/nsURLFormatter.js
+@DIR_MACOS@components/nsWebHandlerApp.js
+@DIR_MACOS@components/offlineStartup.js
+@DIR_MACOS@components/PlacesCategoriesStarter.js
+@DIR_MACOS@components/SettingsManager.js
+@DIR_MACOS@components/SiteSpecificUserAgent.js
+@DIR_MACOS@components/smime-service.js
+@DIR_MACOS@components/storage-Legacy.js
+@DIR_MACOS@components/storage-mozStorage.js
+@DIR_MACOS@components/TCPSocket.js
+@DIR_MACOS@components/txEXSLTRegExFunctions.js
+@DIR_MACOS@components/WebContentConverter.js
+@DIR_MACOS@components/browser.xpt
+@DIR_MACOS@components/binary.manifest
+@DIR_MACOS@components/interfaces.manifest
+@DIR_MACOS@components/mail.xpt
+@DIR_MACOS@defaults/profile/bookmarks.html
+@DIR_MACOS@defaults/pref/browser-prefs.js
+@DIR_MACOS@defaults/pref/composer.js
+@DIR_MACOS@defaults/pref/mailnews.js
+@DIR_MACOS@defaults/pref/mdn.js
+@DIR_MACOS@defaults/pref/services-aitc.js
+@DIR_MACOS@defaults/pref/services-notifications.js
+@DIR_MACOS@defaults/pref/smime.js
+@DIR_MACOS@defaults/autoconfig/
+@DIR_MACOS@defaults/autoconfig/platform.js
+@DIR_MACOS@defaults/autoconfig/prefcalls.js
+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/
+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/
+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/chatzilla.jar
+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/
+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/
+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window.xpm
+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window16.xpm
+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window.ico
+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome.manifest
+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/components/
+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/components/chatzilla-service.js
+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/install.rdf
+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}.xpi
+@DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/
+@DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/chrome.manifest
+@DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png
+@DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf
+@DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/preview.png
+@DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/
+@DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/chrome/
+@DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/chrome/venkman.jar
+@DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/chrome.manifest
+@DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/components/
+@DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/components/venkman-service.js
+@DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/install.rdf
+@DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}.xpi
+@DIR_MACOS@extensions/debugQA@mozilla.org/
+@DIR_MACOS@extensions/debugQA@mozilla.org/install.rdf
+@DIR_MACOS@extensions/debugQA@mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/debugQA@mozilla.org/chrome/
+@DIR_MACOS@extensions/debugQA@mozilla.org/chrome/debugqa.jar
+@DIR_MACOS@extensions/debugQA@mozilla.org.xpi
+@DIR_MACOS@extensions/inspector@mozilla.org/
+@DIR_MACOS@extensions/inspector@mozilla.org/install.rdf
+@DIR_MACOS@extensions/inspector@mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/inspector@mozilla.org/chrome/
+@DIR_MACOS@extensions/inspector@mozilla.org/chrome/inspector.jar
+@DIR_MACOS@extensions/inspector@mozilla.org/platform/
+@DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/
+@DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/
+@DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/icons/
+@DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/icons/default/
+@DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/icons/default/winInspectorMain16.xpm
+@DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/icons/default/winInspectorMain.xpm
+@DIR_MACOS@extensions/inspector@mozilla.org/platform/WINNT/chrome/icons/default/winInspectorMain.ico
+@DIR_MACOS@extensions/inspector@mozilla.org/components/
+@DIR_MACOS@extensions/inspector@mozilla.org/components/inspector-cmdline.js
+@DIR_MACOS@extensions/inspector@mozilla.org/defaults/
+@DIR_MACOS@extensions/inspector@mozilla.org/defaults/preferences/
+@DIR_MACOS@extensions/inspector@mozilla.org/defaults/preferences/inspector.js
+@DIR_MACOS@extensions/inspector@mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/chrome/chatzilla.jar
+@DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/chrome/chatzilla.manifest
+@DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/chrome/chatzilla.jar
+@DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/chrome/chatzilla.manifest
+@DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/chrome/chatzilla.jar
+@DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/chrome/chatzilla.manifest
+@DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/chrome/chatzilla.jar
+@DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/chrome/chatzilla.manifest
+@DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/chrome/chatzilla.jar
+@DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/chrome/chatzilla.manifest
+@DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/chrome/chatzilla.jar
+@DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/chrome/chatzilla.manifest
+@DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/chrome/chatzilla.jar
+@DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/chrome/chatzilla.manifest
+@DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/chrome/chatzilla.jar
+@DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/chrome/chatzilla.manifest
+@DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/chrome/chatzilla.jar
+@DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/chrome/chatzilla.manifest
+@DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/chrome/chatzilla.jar
+@DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/chrome/chatzilla.manifest
+@DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/chrome/chatzilla.jar
+@DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/chrome/chatzilla.manifest
+@DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/chrome/chatzilla.jar
+@DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/chrome/chatzilla.manifest
+@DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/chrome/chatzilla.jar
+@DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/chrome/chatzilla.manifest
+@DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/chrome/chatzilla.jar
+@DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/chrome/chatzilla.manifest
+@DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/chrome/chatzilla.jar
+@DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/chrome/chatzilla.manifest
+@DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/chrome/chatzilla.jar
+@DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/chrome/chatzilla.manifest
+@DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/chrome/chatzilla.jar
+@DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/chrome/chatzilla.manifest
+@DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org/chrome/venkman.jar
+@DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org/chrome/venkman.manifest
+@DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-de@venkman.mozilla.org/chrome/venkman.jar
+@DIR_MACOS@extensions/langpack-de@venkman.mozilla.org/chrome/venkman.manifest
+@DIR_MACOS@extensions/langpack-de@venkman.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-de@venkman.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-de@venkman.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-de@venkman.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org/chrome/venkman.jar
+@DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org/chrome/venkman.manifest
+@DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org/chrome/venkman.jar
+@DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org/chrome/venkman.manifest
+@DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-it@venkman.mozilla.org/chrome/venkman.jar
+@DIR_MACOS@extensions/langpack-it@venkman.mozilla.org/chrome/venkman.manifest
+@DIR_MACOS@extensions/langpack-it@venkman.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-it@venkman.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-it@venkman.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-it@venkman.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org/chrome/venkman.jar
+@DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org/chrome/venkman.manifest
+@DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org/chrome/venkman.jar
+@DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org/chrome/venkman.manifest
+@DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org/chrome/venkman.jar
+@DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org/chrome/venkman.manifest
+@DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org/chrome/venkman.jar
+@DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org/chrome/venkman.manifest
+@DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-ru@venkman.mozilla.org/chrome/venkman.jar
+@DIR_MACOS@extensions/langpack-ru@venkman.mozilla.org/chrome/venkman.manifest
+@DIR_MACOS@extensions/langpack-ru@venkman.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-ri@venkman.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-ru@venkman.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-ru@venkman.mozilla.org.xpi
+@DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org/chrome/venkman.jar
+@DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org/chrome/venkman.manifest
+@DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org/install.js
+@DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org/install.rdf
+@DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org.xpi
+@DIR_MACOS@extensions/modern@themes.mozilla.org/
+@DIR_MACOS@extensions/modern@themes.mozilla.org/chrome/
+@DIR_MACOS@extensions/modern@themes.mozilla.org/chrome/modern.jar
+@DIR_MACOS@extensions/modern@themes.mozilla.org/chrome.manifest
+@DIR_MACOS@extensions/modern@themes.mozilla.org/icon.png
+@DIR_MACOS@extensions/modern@themes.mozilla.org/install.rdf
+@DIR_MACOS@extensions/modern@themes.mozilla.org/preview.png
+@DIR_MACOS@jssubloader/
+@DIR_MACOS@modules/
+@DIR_MACOS@modules/AddonLogging.jsm
+@DIR_MACOS@modules/AddonManager.jsm
+@DIR_MACOS@modules/AddonRepository.jsm
+@DIR_MACOS@modules/AddonUpdateChecker.jsm
+@DIR_MACOS@modules/BrowserElementPromptService.jsm
+@DIR_MACOS@modules/CertUtils.jsm
+@DIR_MACOS@modules/CommonDialog.jsm
+@DIR_MACOS@modules/CrashSubmit.jsm
+@DIR_MACOS@modules/CSPUtils.jsm
+@DIR_MACOS@modules/ctypes.jsm
+@DIR_MACOS@modules/debug.js
+@DIR_MACOS@modules/dictUtils.js
+@DIR_MACOS@modules/errUtils.js
+@DIR_MACOS@modules/FileUtils.jsm
+@DIR_MACOS@modules/folderUtils.jsm
+@DIR_MACOS@modules/Geometry.jsm
+@DIR_MACOS@modules/gloda/
+@DIR_MACOS@modules/gloda/mimeTypeCategories.js
+@DIR_MACOS@modules/gloda/log4moz.js
+@DIR_MACOS@modules/gloda/gloda.js
+@DIR_MACOS@modules/gloda/datamodel.js
+@DIR_MACOS@modules/gloda/databind.js
+@DIR_MACOS@modules/gloda/index_ab.js
+@DIR_MACOS@modules/gloda/msg_search.js
+@DIR_MACOS@modules/gloda/public.js
+@DIR_MACOS@modules/gloda/noun_freetag.js
+@DIR_MACOS@modules/gloda/utils.js
+@DIR_MACOS@modules/gloda/suffixtree.js
+@DIR_MACOS@modules/gloda/indexer.js
+@DIR_MACOS@modules/gloda/fundattr.js
+@DIR_MACOS@modules/gloda/dbview.js
+@DIR_MACOS@modules/gloda/datastore.js
+@DIR_MACOS@modules/gloda/everybody.js
+@DIR_MACOS@modules/gloda/collection.js
+@DIR_MACOS@modules/gloda/query.js
+@DIR_MACOS@modules/gloda/noun_tag.js
+@DIR_MACOS@modules/gloda/connotent.js
+@DIR_MACOS@modules/gloda/noun_mimetype.js
+@DIR_MACOS@modules/gloda/index_msg.js
+@DIR_MACOS@modules/gloda/mimemsg.js
+@DIR_MACOS@modules/gloda/explattr.js
+@DIR_MACOS@modules/gloda/facet.js
+@DIR_MACOS@modules/InlineSpellChecker.jsm
+@DIR_MACOS@modules/IOUtils.js
+@DIR_MACOS@modules/ISO8601DateUtils.jsm
+@DIR_MACOS@modules/iteratorUtils.jsm
+@DIR_MACOS@modules/jsTreeSelection.js
+@DIR_MACOS@modules/LightweightThemeConsumer.jsm
+@DIR_MACOS@modules/LightweightThemeManager.jsm
+@DIR_MACOS@modules/mailnewsMigrator.js
+@DIR_MACOS@modules/MailUtils.js
+@DIR_MACOS@modules/Microformats.js
+@DIR_MACOS@modules/NetUtil.jsm
+@DIR_MACOS@modules/nsFormAutoCompleteResult.jsm
+@DIR_MACOS@modules/PerfMeasurement.jsm
+@DIR_MACOS@modules/PlacesDBUtils.jsm
+@DIR_MACOS@modules/PlacesUIUtils.jsm
+@DIR_MACOS@modules/PlacesUtils.jsm
+@DIR_MACOS@modules/PluginProvider.jsm
+@DIR_MACOS@modules/PluralForm.jsm
+@DIR_MACOS@modules/PopupNotifications.jsm
+@DIR_MACOS@modules/Sanitizer.jsm
+@DIR_MACOS@modules/Services.jsm
+@DIR_MACOS@modules/StringBundle.js
+@DIR_MACOS@modules/services-common/async.js
+@DIR_MACOS@modules/services-common/log4moz.js
+@DIR_MACOS@modules/services-common/observers.js
+@DIR_MACOS@modules/services-common/preferences.js
+@DIR_MACOS@modules/services-common/rest.js
+@DIR_MACOS@modules/services-common/stringbundle.js
+@DIR_MACOS@modules/services-common/tokenserverclient.js
+@DIR_MACOS@modules/services-common/utils.js
+@DIR_MACOS@modules/services-crypto/utils.js
+@DIR_MACOS@modules/services-crypto/WeaveCrypto.js
+@DIR_MACOS@modules/services-notifications/service.js
+@DIR_MACOS@modules/templateUtils.js
+@DIR_MACOS@modules/traceHelper.js
+@DIR_MACOS@modules/UserAgentOverrides.jsm
+@DIR_MACOS@modules/utils.js
+@DIR_MACOS@modules/virtualFolderWrapper.js
+@DIR_MACOS@modules/WindowDraggingUtils.jsm
+@DIR_MACOS@modules/WorkerTest.jsm
+@DIR_MACOS@modules/WorkerTest_subworker.js
+@DIR_MACOS@modules/WorkerTest_worker.js
+@DIR_MACOS@modules/XPCOMUtils.jsm
+@DIR_MACOS@modules/XPIProvider.jsm
+@DIR_MACOS@greprefs.js
+@DIR_MACOS@res/contenteditable.css
+@DIR_MACOS@res/designmode.css
+@DIR_MACOS@res/EditorOverride.css
+@DIR_MACOS@res/grabber.gif
+@DIR_MACOS@res/langGroups.properties
+@DIR_MACOS@res/language.properties
+@DIR_MACOS@res/svg.css
+@DIR_MACOS@res/table-add-column-after-active.gif
+@DIR_MACOS@res/table-add-column-after-hover.gif
+@DIR_MACOS@res/table-add-column-after.gif
+@DIR_MACOS@res/table-add-column-before-active.gif
+@DIR_MACOS@res/table-add-column-before-hover.gif
+@DIR_MACOS@res/table-add-column-before.gif
+@DIR_MACOS@res/table-add-row-after-active.gif
+@DIR_MACOS@res/table-add-row-after-hover.gif
+@DIR_MACOS@res/table-add-row-after.gif
+@DIR_MACOS@res/table-add-row-before-active.gif
+@DIR_MACOS@res/table-add-row-before-hover.gif
+@DIR_MACOS@res/table-add-row-before.gif
+@DIR_MACOS@res/table-remove-column-active.gif
+@DIR_MACOS@res/table-remove-column-hover.gif
+@DIR_MACOS@res/table-remove-column.gif
+@DIR_MACOS@res/table-remove-row-active.gif
+@DIR_MACOS@res/table-remove-row-hover.gif
+@DIR_MACOS@res/table-remove-row.gif
+@DIR_MACOS@res/fonts/
+@DIR_MACOS@res/fonts/mathfont.properties
+@DIR_MACOS@res/fonts/mathfontStandardSymbolsL.properties
+@DIR_MACOS@res/fonts/mathfontSTIXNonUnicode.properties
+@DIR_MACOS@res/fonts/mathfontSTIXSize1.properties
+@DIR_MACOS@res/fonts/mathfontSTIXSizeOneSym.properties
+#ifdef XP_WIN
+ res/fonts/mathfontSymbol.properties
#endif
+@DIR_MACOS@res/fonts/mathfontUnicode.properties
+@DIR_MACOS@res/dtd/
+@DIR_MACOS@res/dtd/mathml.dtd
+@DIR_MACOS@res/dtd/xhtml11.dtd
+@DIR_MACOS@res/html/
+@DIR_MACOS@res/html/folder.png
; pre-libxul static mail library
@DIR_MACOS@components/@DLL_PREFIX@mail@DLL_SUFFIX@
diff --git a/comm/suite/installer/windows/nsis/shared.nsh b/comm/suite/installer/windows/nsis/shared.nsh
index 0f29c64..d10cee6 100644
--- a/comm/suite/installer/windows/nsis/shared.nsh
+++ b/comm/suite/installer/windows/nsis/shared.nsh
@@ -467,6 +467,7 @@
WriteRegStr HKLM "$0" "" "${BrandFullNameInternal}"
WriteRegStr HKLM "$0\DefaultIcon" "" "$8,0"
WriteRegStr HKLM "$0" "DLLPath" "$6"
+ WriteRegDWORD HKLM "$0" "SupportUTF8" 0
; The MapiProxy dll can be used by multiple applications but
; is only registered for the last application installed. When the last
diff --git a/comm/suite/locales/Makefile.in b/comm/suite/locales/Makefile.in
index 03bef48..c04f1e8 100644
--- a/comm/suite/locales/Makefile.in
+++ b/comm/suite/locales/Makefile.in
@@ -157,11 +157,9 @@ repackage-extensions: $(STAGEDIST)
ifdef MOZ_IRC
$(MAKE) -C $(DEPTH)/extensions/irc/locales repackage-zip-$(AB_CD) STAGEDIST=$(STAGEDIST)
endif
-ifeq ($(MOZ_PACKAGER_FORMAT),omni)
$(NSINSTALL) -D $(STAGEDIST)/distribution/extensions
$(MAKE) -C ../app pack-ext AB_CD=$(AB_CD) STAGEDIST=$(STAGEDIST)/extensions;
$(MAKE) -C ../app pack-ext AB_CD=$(AB_CD) STAGEDIST=$(STAGEDIST)/distribution/extensions;
-endif
langpack: langpack-$(AB_CD)
diff --git a/comm/suite/locales/l10n-beta.ini b/comm/suite/locales/l10n-beta.ini
index 29855fe..57442c8 100644
--- a/comm/suite/locales/l10n-beta.ini
+++ b/comm/suite/locales/l10n-beta.ini
@@ -8,6 +8,7 @@ all = suite/locales/all-locales
[compare]
dirs = suite
+ suite/branding/seamonkey
editor/ui
[includes]
diff --git a/comm/suite/locales/l10n-central.ini b/comm/suite/locales/l10n-central.ini
index bea5ac8..916cff3 100644
--- a/comm/suite/locales/l10n-central.ini
+++ b/comm/suite/locales/l10n-central.ini
@@ -8,6 +8,7 @@ all = suite/locales/all-locales
[compare]
dirs = suite
+ suite/branding/seamonkey
editor/ui
[includes]
diff --git a/comm/suite/locales/l10n.ini b/comm/suite/locales/l10n.ini
index 3afd9dc..70f1cfc 100644
--- a/comm/suite/locales/l10n.ini
+++ b/comm/suite/locales/l10n.ini
@@ -8,6 +8,7 @@ all = suite/locales/all-locales
[compare]
dirs = suite
+ suite/branding/seamonkey
editor/ui
[includes]
diff --git a/comm/suite/locales/l10n.toml b/comm/suite/locales/l10n.toml
index 7d4ae7d..97eb16e 100644
--- a/comm/suite/locales/l10n.toml
+++ b/comm/suite/locales/l10n.toml
@@ -48,6 +48,10 @@ locales = [
l10n = "{l}editor/ui/**"
[[paths]]
+ reference = "suite/branding/seamonkey/locales/en-US/**"
+ l10n = "{l}suite/branding/seamonkey/**"
+
+[[paths]]
reference = "{mozilla}/services/sync/locales/en-US/**"
l10n = "{l}services/sync/**"
diff --git a/comm/suite/mailnews/components/addrbook/content/abListOverlay.xul b/comm/suite/mailnews/components/addrbook/content/abListOverlay.xul
index 987cc93..581d0da 100644
--- a/comm/suite/mailnews/components/addrbook/content/abListOverlay.xul
+++ b/comm/suite/mailnews/components/addrbook/content/abListOverlay.xul
@@ -71,7 +71,7 @@
autocompletesearchparam="{}" timeout="300" maxrows="4"
completedefaultindex="true" forcecomplete="true"
minresultsforpopup="3"
- ontextentered="awRecipientTextCommand(param, this); if (this.value != '') event.preventDefault();"
+ ontextentered="awRecipientTextCommand(eventParam, this)"
onkeydown="awRecipientKeyDown(event, this);"
onclick="awNotAnEmptyArea(event);">
<image onclick="awNotAnEmptyArea(event)" class="person-icon"/>
diff --git a/comm/taskcluster/ci/build/windows.yml b/comm/taskcluster/ci/build/windows.yml
index e31d313..7bbdf8e 100644
--- a/comm/taskcluster/ci/build/windows.yml
+++ b/comm/taskcluster/ci/build/windows.yml
@@ -1,3 +1,10 @@
+job-defaults:
+ run:
+ using: mozharness
+ comm-checkout: true
+ config-paths:
+ - comm/mozharness
+
win32/opt:
description: "Win32 Opt"
index:
@@ -13,13 +20,9 @@ win32/opt:
env:
TOOLTOOL_MANIFEST: "comm/mail/config/tooltool-manifests/win32/releng.manifest"
run:
- using: mozharness
- comm-checkout: true
actions: [build, check-test]
options: [append-env-variables-from-configs]
script: mozharness/scripts/fx_desktop_build.py
- config-paths:
- - comm/mozharness
config:
- builds/taskcluster_base_thunderbird.py
- builds/taskcluster_base_windows.py
@@ -52,13 +55,9 @@ win32-nightly/opt:
env:
TOOLTOOL_MANIFEST: "comm/mail/config/tooltool-manifests/win32/releng.manifest"
run:
- using: mozharness
- comm-checkout: true
actions: [build, check-test]
options: [append-env-variables-from-configs]
script: mozharness/scripts/fx_desktop_build.py
- config-paths:
- - comm/mozharness
config:
- builds/taskcluster_base_thunderbird.py
- builds/taskcluster_base_windows.py
@@ -85,13 +84,9 @@ win32/debug:
env:
TOOLTOOL_MANIFEST: "comm/mail/config/tooltool-manifests/win32/releng.manifest"
run:
- using: mozharness
- comm-checkout: true
actions: [build, check-test]
options: [append-env-variables-from-configs]
script: mozharness/scripts/fx_desktop_build.py
- config-paths:
- - comm/mozharness
config:
- builds/taskcluster_base_thunderbird.py
- builds/taskcluster_base_windows.py
@@ -118,12 +113,9 @@ win64/opt:
env:
TOOLTOOL_MANIFEST: "comm/mail/config/tooltool-manifests/win64/releng.manifest"
run:
- using: mozharness
- comm-checkout: true
+ actions: [build, check-test]
options: [append-env-variables-from-configs]
script: mozharness/scripts/fx_desktop_build.py
- config-paths:
- - comm/mozharness
config:
- builds/taskcluster_base_thunderbird.py
- builds/taskcluster_base_windows.py
@@ -156,13 +148,9 @@ win64-nightly/opt:
env:
TOOLTOOL_MANIFEST: "comm/mail/config/tooltool-manifests/win64/releng.manifest"
run:
- using: mozharness
- comm-checkout: true
actions: [build, check-test]
options: [append-env-variables-from-configs]
script: mozharness/scripts/fx_desktop_build.py
- config-paths:
- - comm/mozharness
config:
- builds/taskcluster_base_thunderbird.py
- builds/taskcluster_base_windows.py
@@ -189,12 +177,9 @@ win64/debug:
env:
TOOLTOOL_MANIFEST: "comm/mail/config/tooltool-manifests/win64/releng.manifest"
run:
- using: mozharness
- comm-checkout: true
+ actions: [build, check-test]
options: [append-env-variables-from-configs]
script: mozharness/scripts/fx_desktop_build.py
- config-paths:
- - comm/mozharness
config:
- builds/taskcluster_base_thunderbird.py
- builds/taskcluster_base_windows.py
diff --git a/comm/taskcluster/ci/config.yml b/comm/taskcluster/ci/config.yml
index ee54658..2cbc301 100644
--- a/comm/taskcluster/ci/config.yml
+++ b/comm/taskcluster/ci/config.yml
@@ -18,7 +18,8 @@ treeherder:
'L10n-Rpk': 'Localized Repackaged Repacks'
'ms': 'Complete MAR signing'
'rs': 'Repackage signing'
- 'BMR-L10n': 'Beetmover repackages for locales'
+ 'BM': 'Beetmover'
+ 'BMR': 'Beetmover repackages'
'c-Up': 'Balrog submission of complete updates'
'cs': 'Checksum signing'
'BMcs': 'Beetmover checksums,'
diff --git a/comm/taskcluster/ci/nightly-l10n/kind.yml b/comm/taskcluster/ci/nightly-l10n/kind.yml
index 9d6df44..55789d9 100644
--- a/comm/taskcluster/ci/nightly-l10n/kind.yml
+++ b/comm/taskcluster/ci/nightly-l10n/kind.yml
@@ -74,23 +74,17 @@ job-template:
linux.*: # linux64 and 32 get same treatment here
EN_US_PACKAGE_NAME: target.tar.bz2
EN_US_BINARY_URL:
- task-reference: https://queue.taskcluster.net/v1/task/<build-signing>/artifacts/public/build
- MAR_TOOLS_URL:
- task-reference: https://queue.taskcluster.net/v1/task/<build>/artifacts/public/build/host/bin
+ artifact-reference: <build-signing/{artifact_prefix}>
macosx64-nightly:
EN_US_PACKAGE_NAME: target.dmg
EN_US_BINARY_URL:
- task-reference: https://queue.taskcluster.net/v1/task/<repackage>/artifacts/public/build
- MAR_TOOLS_URL:
- task-reference: https://queue.taskcluster.net/v1/task/<build>/artifacts/public/build/host/bin
+ artifact-reference: <repackage/{artifact_prefix}>
win.*:
EN_US_PACKAGE_NAME: target.zip
EN_US_BINARY_URL:
- task-reference: https://queue.taskcluster.net/v1/task/<build-signing>/artifacts/public/build
+ artifact-reference: <build-signing/{artifact_prefix}>
EN_US_INSTALLER_BINARY_URL:
- task-reference: https://queue.taskcluster.net/v1/task/<repackage-signing>/artifacts/public/build
- MAR_TOOLS_URL:
- task-reference: https://queue.taskcluster.net/v1/task/<build>/artifacts/public/build/host/bin
+ artifact-reference: <repackage-signing/{artifact_prefix}>
mozharness:
comm-checkout: true
config-paths:
@@ -100,38 +94,34 @@ job-template:
by-build-platform:
linux-nightly:
- single_locale/linux32.py
- - single_locale/{project}.py
- single_locale/tc_common.py
- - single_locale/tc_linux32.py
+ - single_locale/tc_linux_common.py
- single_locale/thunderbird.py
- taskcluster_nightly.py
linux64-nightly:
- single_locale/linux64.py
- - single_locale/{project}.py
- single_locale/tc_common.py
- - single_locale/tc_linux64.py
+ - single_locale/tc_linux_common.py
- single_locale/thunderbird.py
- taskcluster_nightly.py
macosx64-nightly:
- single_locale/macosx64.py
- - single_locale/{project}.py
- single_locale/tc_common.py
- single_locale/tc_macosx64.py
- single_locale/thunderbird.py
- taskcluster_nightly.py
win32-nightly:
- single_locale/win32.py
- - single_locale/{project}.py
- single_locale/tc_common.py
- single_locale/tc_win32.py
- single_locale/thunderbird.py
- taskcluster_nightly.py
win64-nightly:
- single_locale/win64.py
- - single_locale/{project}.py
- single_locale/tc_common.py
- single_locale/tc_win64.py
- single_locale/thunderbird.py
- taskcluster_nightly.py
- actions: [clone-locales, list-locales, setup, repack, summary]
+ actions: ['clone-locales', 'list-locales', 'setup', 'repack',
+ 'summary']
script: mozharness/scripts/desktop_l10n.py
diff --git a/comm/taskcluster/ci/packages/kind.yml b/comm/taskcluster/ci/packages/kind.yml
index 6b87cf7..f9d10dc 100644
--- a/comm/taskcluster/ci/packages/kind.yml
+++ b/comm/taskcluster/ci/packages/kind.yml
@@ -20,6 +20,7 @@ jobs:
- deb7-python3.5
- deb7-python3-defaults
- deb7-python-zstandard
+ - deb7-sqlite3
- deb7-valgrind
- deb7-xz-utils
- deb9-mercurial
diff --git a/comm/taskcluster/ci/release-balrog-scheduling/kind.yml b/comm/taskcluster/ci/release-balrog-scheduling/kind.yml
index 5441a8c..6bf161f 100644
--- a/comm/taskcluster/ci/release-balrog-scheduling/kind.yml
+++ b/comm/taskcluster/ci/release-balrog-scheduling/kind.yml
@@ -48,7 +48,7 @@ jobs:
description: Schedule Thunderbird publishing in balrog (bz2)
name: release-thunderbird_schedule_publishing_in_balrog-bz2
shipping-product: thunderbird
- run-on-releases: [esr60]
+ run-on-releases: [release]
worker:
product: thunderbird
publish-rules: [516]
diff --git a/comm/taskcluster/ci/release-balrog-submit-toplevel/kind.yml b/comm/taskcluster/ci/release-balrog-submit-toplevel/kind.yml
index 40a5df0..32fc9cc 100644
--- a/comm/taskcluster/ci/release-balrog-submit-toplevel/kind.yml
+++ b/comm/taskcluster/ci/release-balrog-submit-toplevel/kind.yml
@@ -67,7 +67,7 @@ jobs:
name: submit-toplevel-thunderbird-release-to-balrog-bz2
description: Submit toplevel Thunderbird release to balrog (bz2)
shipping-product: thunderbird
- run-on-releases: [esr60]
+ run-on-releases: [release]
worker:
product: thunderbird
channel-names: ["release", "release-localtest", "release-cdntest"]
diff --git a/comm/taskcluster/ci/release-mark-as-started/kind.yml b/comm/taskcluster/ci/release-mark-as-started/kind.yml
new file mode 100644
index 0000000..9030130
--- /dev/null
+++ b/comm/taskcluster/ci/release-mark-as-started/kind.yml
@@ -0,0 +1,43 @@
+# 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/.
+
+loader: taskgraph.loader.transform:loader
+
+transforms:
+ - taskgraph.transforms.release_mark_as_started:transforms
+ - taskgraph.transforms.task:transforms
+
+job-defaults:
+ description: mark release as started in Ship-It v1
+ worker-type:
+ by-project:
+ comm-beta: scriptworker-prov-v1/tb-shipit-v1
+ comm-esr60: scriptworker-prov-v1/tb-shipit-v1
+ default: scriptworker-prov-v1/tb-shipit-dev
+ worker:
+ implementation: shipit-started
+ scopes:
+ by-project:
+ comm-beta:
+ - project:comm:thunderbird:releng:ship-it:server:production
+ - project:comm:thunderbird:releng:ship-it:action:mark-as-started
+ comm-esr60:
+ - project:comm:thunderbird:releng:ship-it:server:production
+ - project:comm:thunderbird:releng:ship-it:action:mark-as-started
+ default:
+ - project:comm:thunderbird:releng:ship-it:server:staging
+ - project:comm:thunderbird:releng:ship-it:action:mark-as-started
+ run-on-projects: []
+ shipping-phase: promote
+ locales-file: comm/mail/locales/l10n-changesets.json
+
+jobs:
+ thunderbird:
+ name: release-thunderbird_mark_as_started
+ shipping-product: thunderbird
+ treeherder:
+ platform: thunderbird-release/opt
+ symbol: Rel(ShipIt-st)
+ tier: 1
+ kind: build
diff --git a/comm/taskcluster/ci/repackage-l10n/kind.yml b/comm/taskcluster/ci/repackage-l10n/kind.yml
index d10f07a..59d51fb 100644
--- a/comm/taskcluster/ci/repackage-l10n/kind.yml
+++ b/comm/taskcluster/ci/repackage-l10n/kind.yml
@@ -47,9 +47,8 @@ job-template:
- repackage/base.py
- repackage/win64_signed.py
package-formats:
- by-project:
- # Build bz2 mar's on try to excerise the code
- (comm-esr60|try-comm-central):
+ by-release-type:
+ esr60:
by-build-platform:
linux-.*: [mar, mar-bz2]
linux64.*: [mar, mar-bz2]
diff --git a/comm/taskcluster/ci/repackage/kind.yml b/comm/taskcluster/ci/repackage/kind.yml
index 8f1408c..09bfba1 100644
--- a/comm/taskcluster/ci/repackage/kind.yml
+++ b/comm/taskcluster/ci/repackage/kind.yml
@@ -46,9 +46,8 @@ job-template:
- repackage/base.py
- repackage/win64_signed.py
package-formats:
- by-project:
- # Build bz2 mar's on try to excerise the code
- (comm-esr60|try-comm-central):
+ by-release-type:
+ esr60:
by-build-platform:
linux-.*: [mar, mar-bz2]
linux64.*: [mar, mar-bz2]
diff --git a/comm/taskcluster/ci/upload-symbols/kind.yml b/comm/taskcluster/ci/upload-symbols/kind.yml
index 398a14f..577dc2a 100644
--- a/comm/taskcluster/ci/upload-symbols/kind.yml
+++ b/comm/taskcluster/ci/upload-symbols/kind.yml
@@ -35,8 +35,5 @@ job-template:
cd /builds/worker/checkouts/gecko &&
./mach python toolkit/crashreporter/tools/upload_symbols.py https://queue.taskcluster.net/v1/task/${ARTIFACT_TASKID}/artifacts/public/build/target.crashreporter-symbols-full.zip
sparse-profile: upload-symbols
- optimization:
- only-if-dependencies-run: null
scopes:
- secrets:get:project/comm/thunderbird/releng/build/level-{level}/gecko-symbol-upload
- run-on-projects: ['all']
diff --git a/config/milestone.txt b/config/milestone.txt
index d8f229b..1d3d528 100644
--- a/config/milestone.txt
+++ b/config/milestone.txt
@@ -10,4 +10,4 @@
# hardcoded milestones in the tree from these two files.
#--------------------------------------------------------
-60.5.1
+60.6.1
diff --git a/configure b/configure
deleted file mode 100755
index 5b023ef..0000000
--- a/configure
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-# 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/.
-#
-# Welcome to the new world of configure. We're working on moving to a
-# python based configure. In the meanwhile, remains of the old autoconf
-# based configure is in old-configure.in.
-# If you need to add something, please come talk to the build system
-# peers for now.
-#
-# Because adding a configure file in the tree is going to conflict with
-# existing configure files in people's (and automation) work trees, and
-# because some automation jobs are still running autoconf and configure
-# "manually", this file is actually an m4 file that is processed by
-# autoconf, but doesn't call any autoconf macros. The `divert` line
-# below ensures the script that follows is output by autoconf.
-: "divert(0)dnl"
-#!/bin/sh
-
-SRCDIR=$(dirname $0)
-TOPSRCDIR="$SRCDIR"
-export OLD_CONFIGURE="$SRCDIR"/old-configure
-
-which python2.7 > /dev/null && exec python2.7 "$TOPSRCDIR/configure.py" "$@" || exec python "$TOPSRCDIR/configure.py" "$@"
diff --git a/dom/base/Navigator.cpp b/dom/base/Navigator.cpp
index e87fa2d..1e1398e 100644
--- a/dom/base/Navigator.cpp
+++ b/dom/base/Navigator.cpp
@@ -1603,6 +1603,19 @@ nsresult Navigator::GetUserAgent(nsPIDOMWindowInner* aWindow,
}
}
+ // When the caller is content and 'privacy.resistFingerprinting' is true,
+ // return a spoofed userAgent which reveals the platform but not the
+ // specific OS version, etc.
+ if (!aIsCallerChrome && nsContentUtils::ShouldResistFingerprinting()) {
+ nsAutoCString spoofedUA;
+ nsresult rv = nsRFPService::GetSpoofedUserAgent(spoofedUA, false);
+ if (NS_WARN_IF(NS_FAILED(rv))) {
+ return rv;
+ }
+ CopyASCIItoUTF16(spoofedUA, aUserAgent);
+ return NS_OK;
+ }
+
nsresult rv;
nsCOMPtr<nsIHttpProtocolHandler> service(
do_GetService(NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "http", &rv));
diff --git a/dom/canvas/WebGLContext.cpp b/dom/canvas/WebGLContext.cpp
index c094b65..7a32822 100644
--- a/dom/canvas/WebGLContext.cpp
+++ b/dom/canvas/WebGLContext.cpp
@@ -1216,6 +1216,11 @@ already_AddRefed<layers::Layer> WebGLContext::GetCanvasLayer(
CanvasRenderer* canvasRenderer = canvasLayer->CreateOrGetCanvasRenderer();
if (!InitializeCanvasRenderer(builder, canvasRenderer)) return nullptr;
+ if (!gl) {
+ NS_WARNING("GLContext is null!");
+ return nullptr;
+ }
+
uint32_t flags = gl->Caps().alpha ? 0 : Layer::CONTENT_OPAQUE;
canvasLayer->SetContentFlags(flags);
@@ -1268,10 +1273,10 @@ bool WebGLContext::InitializeCanvasRenderer(nsDisplayListBuilder* aBuilder,
data.mDidTransCallbackData = this;
}
- data.mGLContext = gl;
data.mSize = DrawingBufferSize("InitializeCanvasRenderer");
data.mHasAlpha = mOptions.alpha;
data.mIsGLAlphaPremult = IsPremultAlpha() || !data.mHasAlpha;
+ data.mGLContext = gl;
aRenderer->Initialize(data);
aRenderer->SetDirty();
diff --git a/dom/fetch/FetchDriver.cpp b/dom/fetch/FetchDriver.cpp
index 1c77cc9..6f06170 100644
--- a/dom/fetch/FetchDriver.cpp
+++ b/dom/fetch/FetchDriver.cpp
@@ -644,7 +644,7 @@ nsresult FetchDriver::HttpFetch(
}
}
- if (mIsTrackingFetch && nsContentUtils::IsTailingEnabled()) {
+ if (mIsTrackingFetch && nsContentUtils::IsTailingEnabled() && cos) {
cos->AddClassFlags(nsIClassOfService::Throttleable |
nsIClassOfService::Tail);
}
diff --git a/dom/html/HTMLTableElement.cpp b/dom/html/HTMLTableElement.cpp
index 5b35c4d..b40af7e 100644
--- a/dom/html/HTMLTableElement.cpp
+++ b/dom/html/HTMLTableElement.cpp
@@ -588,11 +588,10 @@ already_AddRefed<nsGenericHTMLElement> HTMLTableElement::CreateTHead() {
}
void HTMLTableElement::DeleteTHead() {
- HTMLTableSectionElement* tHead = GetTHead();
+ RefPtr<HTMLTableSectionElement> tHead = GetTHead();
if (tHead) {
- mozilla::ErrorResult rv;
+ mozilla::IgnoredErrorResult rv;
nsINode::RemoveChild(*tHead, rv);
- MOZ_ASSERT(!rv.Failed());
}
}
@@ -615,11 +614,10 @@ already_AddRefed<nsGenericHTMLElement> HTMLTableElement::CreateTFoot() {
}
void HTMLTableElement::DeleteTFoot() {
- HTMLTableSectionElement* tFoot = GetTFoot();
+ RefPtr<HTMLTableSectionElement> tFoot = GetTFoot();
if (tFoot) {
- mozilla::ErrorResult rv;
+ mozilla::IgnoredErrorResult rv;
nsINode::RemoveChild(*tFoot, rv);
- MOZ_ASSERT(!rv.Failed());
}
}
@@ -643,11 +641,10 @@ already_AddRefed<nsGenericHTMLElement> HTMLTableElement::CreateCaption() {
}
void HTMLTableElement::DeleteCaption() {
- HTMLTableCaptionElement* caption = GetCaption();
+ RefPtr<HTMLTableCaptionElement> caption = GetCaption();
if (caption) {
- mozilla::ErrorResult rv;
+ mozilla::IgnoredErrorResult rv;
nsINode::RemoveChild(*caption, rv);
- MOZ_ASSERT(!rv.Failed());
}
}
diff --git a/dom/html/HTMLTableSectionElement.cpp b/dom/html/HTMLTableSectionElement.cpp
index 9038ba6..5566ad9 100644
--- a/dom/html/HTMLTableSectionElement.cpp
+++ b/dom/html/HTMLTableSectionElement.cpp
@@ -105,7 +105,7 @@ void HTMLTableSectionElement::DeleteRow(int32_t aValue, ErrorResult& aError) {
refIndex = (uint32_t)aValue;
}
- nsINode* row = rows->Item(refIndex);
+ nsCOMPtr<nsINode> row = rows->Item(refIndex);
if (!row) {
aError.Throw(NS_ERROR_DOM_INDEX_SIZE_ERR);
return;
diff --git a/dom/html/nsHTMLDocument.cpp b/dom/html/nsHTMLDocument.cpp
index 07cd4c4..2fca9b4 100644
--- a/dom/html/nsHTMLDocument.cpp
+++ b/dom/html/nsHTMLDocument.cpp
@@ -1391,6 +1391,9 @@ already_AddRefed<nsIDocument> nsHTMLDocument::Open(JSContext* cx,
// document again otherwise the document could have a non-zero onload block
// count without the onload blocker request being in the loadgroup.
EnsureOnloadBlocker();
+
+ // Throw away loaded modules created for the previous global.
+ ScriptLoader()->ClearModuleMap();
}
// The open occurred after the document finished loading.
diff --git a/dom/ipc/ContentPrefs.cpp b/dom/ipc/ContentPrefs.cpp
index 24f4f1c..640fa6e 100644
--- a/dom/ipc/ContentPrefs.cpp
+++ b/dom/ipc/ContentPrefs.cpp
@@ -139,6 +139,7 @@ const char* mozilla::dom::ContentPrefs::gEarlyPrefs[] = {
"javascript.options.strict.debug",
"javascript.options.throw_on_asmjs_validation_failure",
"javascript.options.throw_on_debuggee_would_run",
+ "javascript.options.unboxed_objects",
"javascript.options.wasm",
"javascript.options.wasm_baselinejit",
"javascript.options.wasm_ionjit",
diff --git a/dom/ipc/TabParent.cpp b/dom/ipc/TabParent.cpp
index f01bd99..9e708a5 100755
--- a/dom/ipc/TabParent.cpp
+++ b/dom/ipc/TabParent.cpp
@@ -1597,6 +1597,13 @@ mozilla::ipc::IPCResult TabParent::RecvSetCustomCursor(
const nsCString& aCursorData, const uint32_t& aWidth,
const uint32_t& aHeight, const uint32_t& aStride, const uint8_t& aFormat,
const uint32_t& aHotspotX, const uint32_t& aHotspotY, const bool& aForce) {
+ if (aFormat >= static_cast<uint8_t>(gfx::SurfaceFormat::UNKNOWN) ||
+ aHeight * aStride != aCursorData.Length() ||
+ aStride <
+ aWidth * gfx::BytesPerPixel(static_cast<gfx::SurfaceFormat>(aFormat))) {
+ return IPC_FAIL(this, "Invalid custom cursor data");
+ }
+
mCursor = eCursorInvalid;
nsCOMPtr<nsIWidget> widget = GetWidget();
diff --git a/dom/media/BufferReader.h b/dom/media/BufferReader.h
index d3cd08d..04a8f53 100644
--- a/dom/media/BufferReader.h
+++ b/dom/media/BufferReader.h
@@ -148,6 +148,7 @@ class MOZ_RAII BufferReader {
const uint8_t* Read(size_t aCount) {
if (aCount > mRemaining) {
+ mPtr += mRemaining;
mRemaining = 0;
return nullptr;
}
diff --git a/dom/media/VideoFrameContainer.cpp b/dom/media/VideoFrameContainer.cpp
index ae9d0d6..e76b1ac 100644
--- a/dom/media/VideoFrameContainer.cpp
+++ b/dom/media/VideoFrameContainer.cpp
@@ -79,7 +79,7 @@ void VideoFrameContainer::UpdatePrincipalHandleForFrameIDLocked(
mFrameIDForPendingPrincipalHandle = aFrameID;
}
-static void SetImageToBlackPixel(PlanarYCbCrImage* aImage) {
+static bool SetImageToBlackPixel(PlanarYCbCrImage* aImage) {
uint8_t blackPixel[] = {0x10, 0x80, 0x80};
PlanarYCbCrData data;
@@ -88,7 +88,7 @@ static void SetImageToBlackPixel(PlanarYCbCrImage* aImage) {
data.mCrChannel = blackPixel + 2;
data.mYStride = data.mCbCrStride = 1;
data.mPicSize = data.mYSize = data.mCbCrSize = gfx::IntSize(1, 1);
- aImage->CopyData(data);
+ return aImage->CopyData(data);
}
class VideoFrameContainerInvalidateRunnable : public Runnable {
@@ -139,11 +139,13 @@ void VideoFrameContainer::SetCurrentFrames(const VideoSegment& aSegment) {
if (frame->GetForceBlack()) {
if (!mBlackImage) {
- mBlackImage = GetImageContainer()->CreatePlanarYCbCrImage();
- if (mBlackImage) {
+ RefPtr<Image> blackImage = GetImageContainer()->CreatePlanarYCbCrImage();
+ if (blackImage) {
// Sets the image to a single black pixel, which will be scaled to
// fill the rendered size.
- SetImageToBlackPixel(mBlackImage->AsPlanarYCbCrImage());
+ if (SetImageToBlackPixel(blackImage->AsPlanarYCbCrImage())) {
+ mBlackImage = blackImage;
+ }
}
}
if (mBlackImage) {
diff --git a/dom/media/mediasource/TrackBuffersManager.cpp b/dom/media/mediasource/TrackBuffersManager.cpp
index a979f90..300167c 100644
--- a/dom/media/mediasource/TrackBuffersManager.cpp
+++ b/dom/media/mediasource/TrackBuffersManager.cpp
@@ -429,6 +429,7 @@ void TrackBuffersManager::CompleteResetParserState() {
}
// 7. Remove all bytes from the input buffer.
+ mPendingInputBuffer = nullptr;
mInputBuffer = nullptr;
if (mCurrentInputBuffer) {
mCurrentInputBuffer->EvictAll();
diff --git a/dom/media/mediasource/test/1516754.webm b/dom/media/mediasource/test/1516754.webm
new file mode 100644
index 0000000..05a008d
--- /dev/null
+++ b/dom/media/mediasource/test/1516754.webm
Binary files differ
diff --git a/dom/media/mediasource/test/1516754.webm^headers^ b/dom/media/mediasource/test/1516754.webm^headers^
new file mode 100644
index 0000000..4030ea1
--- /dev/null
+++ b/dom/media/mediasource/test/1516754.webm^headers^
@@ -0,0 +1 @@
+Cache-Control: no-store
diff --git a/dom/media/mediasource/test/mochitest.ini b/dom/media/mediasource/test/mochitest.ini
index 13bb963..e48ec7e 100644
--- a/dom/media/mediasource/test/mochitest.ini
+++ b/dom/media/mediasource/test/mochitest.ini
@@ -47,7 +47,9 @@ support-files =
avc3/init.mp4 avc3/init.mp4^headers^ avc3/segment1.m4s avc3/segment1.m4s^headers^
tags_before_cluster.webm
tags_before_cluster.webm^header^
+ 1516754.webm 1516754.webm^headers^
+[test_AbortAfterPartialMediaSegment.html]
[test_AppendPartialInitSegment.html]
[test_AVC3_mp4.html]
skip-if = toolkit == 'android' # Not supported on android
diff --git a/dom/media/mediasource/test/test_AbortAfterPartialMediaSegment.html b/dom/media/mediasource/test/test_AbortAfterPartialMediaSegment.html
new file mode 100644
index 0000000..ab918c9
--- /dev/null
+++ b/dom/media/mediasource/test/test_AbortAfterPartialMediaSegment.html
@@ -0,0 +1,55 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>MSE: can properly resume after a partial media segment header followed by abort </title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="mediasource.js"></script>
+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+</head>
+<body>
+<pre id="test">
+<script class="testbody" type="text/javascript">
+
+SimpleTest.waitForExplicitFinish();
+
+const VIDEO_CODEC_STRING = 'video/webm; codecs="vp09.00.51.08.01.01.01.01"';
+
+const logError = (error) => {
+ console.error(error, error.message);
+ ok(false, "should not reach here");
+};
+
+runWithMSE(async (ms, v) => {
+ await once(ms, "sourceopen");
+ const sb = ms.addSourceBuffer(VIDEO_CODEC_STRING);
+
+ const arrayBuffer = await fetchWithXHR("1516754.webm");
+ info("- append init segment, a media segment and a partial media segment header -");
+ sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 87355 + 3000));
+
+ info("- wait for updateend -");
+ await once(sb, "updateend");
+
+ // start seeking.
+ v.currentTime = 11;
+ v.addEventListener("seeked", () => {
+ info("- seek completed -");
+ SimpleTest.finish();
+ });
+
+ sb.abort();
+
+ info("- append init segment -");
+ sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 3150));
+ info("- wait for updateend -");
+ await once(sb, "updateend");
+ info("- append media segment 10-15s -");
+ sb.appendBuffer(new Uint8Array(arrayBuffer, 159968, 72931));
+
+ // We now wait for seek to complete
+});
+
+</script>
+</pre>
+</body>
+</html>
diff --git a/dom/script/ScriptLoader.cpp b/dom/script/ScriptLoader.cpp
index 85a4c69..43d006f 100644
--- a/dom/script/ScriptLoader.cpp
+++ b/dom/script/ScriptLoader.cpp
@@ -401,6 +401,11 @@ ModuleScript* ScriptLoader::GetFetchedModule(nsIURI* aURL) const {
return ms;
}
+void ScriptLoader::ClearModuleMap() {
+ MOZ_ASSERT(mFetchingModules.IsEmpty());
+ mFetchedModules.Clear();
+}
+
nsresult ScriptLoader::ProcessFetchedModuleSource(ModuleLoadRequest* aRequest) {
MOZ_ASSERT(!aRequest->mModuleScript);
diff --git a/dom/script/ScriptLoader.h b/dom/script/ScriptLoader.h
index b1f8629..d3418c0 100644
--- a/dom/script/ScriptLoader.h
+++ b/dom/script/ScriptLoader.h
@@ -303,6 +303,12 @@ class ScriptLoader final : public nsISupports {
*/
void Destroy() { GiveUpBytecodeEncoding(); }
+ /*
+ * Clear the map of loaded modules. Called when a Document object is reused
+ * for a different global.
+ */
+ void ClearModuleMap();
+
private:
virtual ~ScriptLoader();
diff --git a/dom/security/nsContentSecurityManager.cpp b/dom/security/nsContentSecurityManager.cpp
index 5bcda97..1b89a75 100644
--- a/dom/security/nsContentSecurityManager.cpp
+++ b/dom/security/nsContentSecurityManager.cpp
@@ -794,10 +794,13 @@ nsContentSecurityManager::IsOriginPotentiallyTrustworthy(
"Nobody is expected to call us with an nsIExpandedPrincipal");
nsCOMPtr<nsIURI> uri;
- aPrincipal->GetURI(getter_AddRefs(uri));
+ nsresult rv = aPrincipal->GetURI(getter_AddRefs(uri));
+ if (NS_FAILED(rv)) {
+ return NS_OK;
+ }
nsAutoCString scheme;
- nsresult rv = uri->GetScheme(scheme);
+ rv = uri->GetScheme(scheme);
if (NS_FAILED(rv)) {
return NS_OK;
}
diff --git a/dom/smil/nsSMILAnimationController.cpp b/dom/smil/nsSMILAnimationController.cpp
index f202ac2..4617e84 100644
--- a/dom/smil/nsSMILAnimationController.cpp
+++ b/dom/smil/nsSMILAnimationController.cpp
@@ -212,7 +212,7 @@ void nsSMILAnimationController::Unlink() { mLastCompositorTable = nullptr; }
void nsSMILAnimationController::NotifyRefreshDriverCreated(
nsRefreshDriver* aRefreshDriver) {
- if (!mPauseState) {
+ if (!mPauseState && mChildContainerTable.Count()) {
MaybeStartSampling(aRefreshDriver);
}
}
diff --git a/dom/tests/mochitest/dom-level0/test_setting_document.domain_to_shortened_ipaddr.html b/dom/tests/mochitest/dom-level0/test_setting_document.domain_to_shortened_ipaddr.html
index 5af14b8..68768dd 100644
--- a/dom/tests/mochitest/dom-level0/test_setting_document.domain_to_shortened_ipaddr.html
+++ b/dom/tests/mochitest/dom-level0/test_setting_document.domain_to_shortened_ipaddr.html
@@ -11,7 +11,7 @@
</div>
-<iframe name="child" src="http://127.0.0.1:8888/tests/dom/tests/mochitest/dom-level0/child_ip_address.html"></iframe>
+<iframe id="childframe" name="child"></iframe>
<pre id="test">
<script class="testbody" type="application/javascript">
@@ -27,8 +27,16 @@ function receiveMessage(evt)
SimpleTest.finish();
}
-
window.addEventListener("message", receiveMessage, false);
+
+// By default, proxies don't apply to 127.0.0.1.
+// We need them to for this test (at least on android), though:
+SpecialPowers.pushPrefEnv({set: [
+ ["network.proxy.no_proxies_on", ""]
+]}).then(function() {
+ var iframe = document.getElementById("childframe");
+ iframe.src = "http://127.0.0.1:8888/tests/dom/tests/mochitest/dom-level0/child_ip_address.html";
+});
</script>
</pre>
</body>
diff --git a/dom/u2f/tests/browser/browser_appid_localhost.js b/dom/u2f/tests/browser/browser_appid_localhost.js
index 4aceb2b..d3a367f 100644
--- a/dom/u2f/tests/browser/browser_appid_localhost.js
+++ b/dom/u2f/tests/browser/browser_appid_localhost.js
@@ -19,6 +19,8 @@ function promiseU2FRegister(tab, app_id) {
}
add_task(async function () {
+ // By default, proxies don't apply to localhost. We need them to for this test, though:
+ await SpecialPowers.pushPrefEnv({set: [["network.proxy.no_proxies_on", ""]]});
// Enable the soft token.
Services.prefs.setBoolPref("security.webauth.u2f", true);
Services.prefs.setBoolPref("security.webauth.webauthn_enable_softtoken", true);
diff --git a/extensions/cookie/test/test_same_base_domain_6.html b/extensions/cookie/test/test_same_base_domain_6.html
index 9056739..3e996d7 100644
--- a/extensions/cookie/test/test_same_base_domain_6.html
+++ b/extensions/cookie/test/test_same_base_domain_6.html
@@ -5,9 +5,20 @@
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
-<body onload="setupTest('http://127.0.0.1:8888/tests/extensions/cookie/test/file_loopback_inner.html', 5, 2)">
+<body onload="runThisTest()">
<p id="display"></p>
<pre id="test">
+ <script>
+ function runThisTest() {
+ // By default, proxies don't apply to 127.0.0.1.
+ // We need them to for this test (at least on android), though:
+ SpecialPowers.pushPrefEnv({set: [
+ ["network.proxy.no_proxies_on", ""]
+ ]}).then(function() {
+ setupTest('http://127.0.0.1:8888/tests/extensions/cookie/test/file_loopback_inner.html', 5, 2);
+ });
+ }
+ </script>
<script class="testbody" type="text/javascript" src="file_testcommon.js">
</script>
</pre>
diff --git a/gfx/layers/CanvasRenderer.cpp b/gfx/layers/CanvasRenderer.cpp
index c93b87b..b41f736 100644
--- a/gfx/layers/CanvasRenderer.cpp
+++ b/gfx/layers/CanvasRenderer.cpp
@@ -9,6 +9,9 @@
namespace mozilla {
namespace layers {
+CanvasInitializeData::CanvasInitializeData() = default;
+CanvasInitializeData::~CanvasInitializeData() = default;
+
CanvasRenderer::CanvasRenderer()
: mPreTransCallback(nullptr),
mPreTransCallbackData(nullptr),
diff --git a/gfx/layers/CanvasRenderer.h b/gfx/layers/CanvasRenderer.h
index 1ecdf7b..c1a7b06 100644
--- a/gfx/layers/CanvasRenderer.h
+++ b/gfx/layers/CanvasRenderer.h
@@ -29,43 +29,33 @@ class PersistentBufferProvider;
class WebRenderCanvasRendererSync;
class WebRenderCanvasRendererAsync;
-struct CanvasInitializeData {
- CanvasInitializeData()
- : mBufferProvider(nullptr),
- mGLContext(nullptr),
- mRenderer(nullptr),
- mPreTransCallback(nullptr),
- mPreTransCallbackData(nullptr),
- mDidTransCallback(nullptr),
- mDidTransCallbackData(nullptr),
- mFrontbufferGLTex(0),
- mSize(0, 0),
- mHasAlpha(false),
- mIsGLAlphaPremult(true) {}
+struct CanvasInitializeData final {
+ CanvasInitializeData();
+ ~CanvasInitializeData();
// One of these three must be specified for Canvas2D, but never more than one
- PersistentBufferProvider*
+ RefPtr<PersistentBufferProvider>
mBufferProvider; // A BufferProvider for the Canvas contents
- mozilla::gl::GLContext* mGLContext; // or this, for GL.
- AsyncCanvasRenderer* mRenderer; // or this, for OffscreenCanvas
+ RefPtr<mozilla::gl::GLContext> mGLContext; // or this, for GL.
+ RefPtr<AsyncCanvasRenderer> mRenderer; // or this, for OffscreenCanvas
typedef void (*TransactionCallback)(void* closureData);
- TransactionCallback mPreTransCallback;
- void* mPreTransCallbackData;
- TransactionCallback mDidTransCallback;
- void* mDidTransCallbackData;
+ TransactionCallback mPreTransCallback = nullptr;
+ void* mPreTransCallbackData = nullptr;
+ TransactionCallback mDidTransCallback = nullptr;
+ void* mDidTransCallbackData = nullptr;
// Frontbuffer override
- uint32_t mFrontbufferGLTex;
+ uint32_t mFrontbufferGLTex = 0;
// The size of the canvas content
- gfx::IntSize mSize;
+ gfx::IntSize mSize = {0,0};
// Whether the canvas drawingbuffer has an alpha channel.
- bool mHasAlpha;
+ bool mHasAlpha = false;
// Whether mGLContext contains data that is alpha-premultiplied.
- bool mIsGLAlphaPremult;
+ bool mIsGLAlphaPremult = true;
};
// Based class which used for canvas rendering. There are many derived classes
diff --git a/gfx/layers/CopyableCanvasRenderer.cpp b/gfx/layers/CopyableCanvasRenderer.cpp
index 3880ab3..c5256bb 100644
--- a/gfx/layers/CopyableCanvasRenderer.cpp
+++ b/gfx/layers/CopyableCanvasRenderer.cpp
@@ -54,6 +54,9 @@ void CopyableCanvasRenderer::Initialize(const CanvasInitializeData& aData) {
CanvasRenderer::Initialize(aData);
if (aData.mGLContext) {
+ if (aData.mGLContext->IsDestroyed()) {
+ return;
+ }
mGLContext = aData.mGLContext;
mIsAlphaPremultiplied = aData.mIsGLAlphaPremult;
mOriginPos = gl::OriginPos::BottomLeft;
@@ -71,10 +74,6 @@ void CopyableCanvasRenderer::Initialize(const CanvasInitializeData& aData) {
} else if (aData.mRenderer) {
mAsyncRenderer = aData.mRenderer;
mOriginPos = gl::OriginPos::BottomLeft;
- } else {
- MOZ_CRASH(
- "GFX: CanvasRenderer created without BufferProvider, DrawTarget or "
- "GLContext?");
}
mOpaque = !aData.mHasAlpha;
diff --git a/gfx/layers/apz/src/AsyncPanZoomController.cpp b/gfx/layers/apz/src/AsyncPanZoomController.cpp
index fa749cf..90b5fdf 100644
--- a/gfx/layers/apz/src/AsyncPanZoomController.cpp
+++ b/gfx/layers/apz/src/AsyncPanZoomController.cpp
@@ -1236,10 +1236,18 @@ nsEventStatus AsyncPanZoomController::OnTouchMove(
case TOUCHING: {
ScreenCoord panThreshold = GetTouchStartTolerance();
- UpdateWithTouchAtDevicePoint(aEvent);
- if (PanDistance() < panThreshold) {
- return nsEventStatus_eIgnore;
+ // We intentionally skip the UpdateWithTouchAtDevicePoint call when the
+ // panThreshold is zero. This ensures more deterministic behaviour during
+ // testing. If we call that, Axis::mPos gets updated to the point of this
+ // touchmove event, but we "consume" the move to overcome the
+ // panThreshold, so it's hard to pan a specific amount reliably from a
+ // mochitest.
+ if (panThreshold > 0.0f) {
+ UpdateWithTouchAtDevicePoint(aEvent);
+ if (PanDistance() < panThreshold) {
+ return nsEventStatus_eIgnore;
+ }
}
ParentLayerPoint touchPoint = GetFirstTouchPoint(aEvent);
diff --git a/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js b/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js
index 8755d7e..0de6e02 100644
--- a/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js
+++ b/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js
@@ -280,15 +280,9 @@ function* synthesizeNativeTouchSequences(aElement, aPositions, aObserver = null,
return true;
}
-// A handy constant when synthesizing native touch drag events with the pref
-// "apz.touch_start_tolerance" set to 0. In this case, the first touchmove with
-// a nonzero pixel movement is consumed by the APZ to transition from the
-// "touching" state to the "panning" state, so calls to synthesizeNativeTouchDrag
-// should add an extra pixel pixel for this purpose. The TOUCH_SLOP provides
-// a constant that can be used for this purpose. Note that if the touch start
-// tolerance is set to something higher, the touch slop amount used must be
-// correspondingly increased so as to be higher than the tolerance.
-const TOUCH_SLOP = 1;
+// Note that when calling this function you'll want to make sure that the pref
+// "apz.touch_start_tolerance" is set to 0, or some of the touchmove will get
+// consumed to overcome the panning threshold.
function synthesizeNativeTouchDrag(aElement, aX, aY, aDeltaX, aDeltaY, aObserver = null, aTouchId = 0) {
var steps = Math.max(Math.abs(aDeltaX), Math.abs(aDeltaY));
var positions = new Array();
@@ -348,3 +342,41 @@ function moveMouseAndScrollWheelOver(element, dx, dy, testDriver, waitForScroll
}
});
}
+
+// Synthesizes events to drag |element|'s vertical scrollbar by the distance
+// specified, synthesizing a mousemove for each increment as specified.
+// Returns false if the element doesn't have a vertical scrollbar. Otherwise,
+// returns a generator that should be invoked after the mousemoves have been
+// processed by the widget code, to end the scrollbar drag. Mousemoves being
+// processed by the widget code can be detected by listening for the mousemove
+// events in the caller, or for some other event that is triggered by the
+// mousemove, such as the scroll event resulting from the scrollbar drag.
+function* dragVerticalScrollbar(element, testDriver, distance = 20, increment = 5) {
+ var boundingClientRect = element.getBoundingClientRect();
+ var verticalScrollbarWidth = boundingClientRect.width - element.clientWidth;
+ if (verticalScrollbarWidth == 0) {
+ return false;
+ }
+
+ var upArrowHeight = verticalScrollbarWidth; // assume square scrollbar buttons
+ var mouseX = element.clientWidth + (verticalScrollbarWidth / 2);
+ var mouseY = upArrowHeight + 5; // start dragging somewhere in the thumb
+
+ dump("Starting drag at " + mouseX + ", " + mouseY + " from top-left of #" + element.id + "\n");
+
+ // Move the mouse to the scrollbar thumb and drag it down
+ yield synthesizeNativeMouseEvent(element, mouseX, mouseY, nativeMouseMoveEventMsg(), testDriver);
+ // mouse down
+ yield synthesizeNativeMouseEvent(element, mouseX, mouseY, nativeMouseDownEventMsg(), testDriver);
+ // drag vertically by |increment| until we reach the specified distance
+ for (var y = increment; y < distance; y += increment) {
+ yield synthesizeNativeMouseEvent(element, mouseX, mouseY + y, nativeMouseMoveEventMsg(), testDriver);
+ }
+ yield synthesizeNativeMouseEvent(element, mouseX, mouseY + distance, nativeMouseMoveEventMsg(), testDriver);
+
+ // and return a generator to call afterwards to finish up the drag
+ return function*() {
+ dump("Finishing drag of #" + element.id + "\n");
+ yield synthesizeNativeMouseEvent(element, mouseX, mouseY + distance, nativeMouseUpEventMsg(), testDriver);
+ };
+}
diff --git a/gfx/layers/apz/test/mochitest/apz_test_utils.js b/gfx/layers/apz/test/mochitest/apz_test_utils.js
index 62ea857..43f0e94 100644
--- a/gfx/layers/apz/test/mochitest/apz_test_utils.js
+++ b/gfx/layers/apz/test/mochitest/apz_test_utils.js
@@ -226,6 +226,9 @@ function runSubtestsSeriallyInFreshWindows(aSubtests) {
}
test = aSubtests[testIndex];
+
+ SimpleTest.ok(true, "Starting subtest " + test.file);
+
if (typeof test.dp_suppression != 'undefined') {
// Normally during a test, the displayport will get suppressed during page
// load, and unsuppressed at a non-deterministic time during the test. The
diff --git a/gfx/layers/apz/test/mochitest/helper_basic_pan.html b/gfx/layers/apz/test/mochitest/helper_basic_pan.html
index 4bb2a7b..d18b367 100644
--- a/gfx/layers/apz/test/mochitest/helper_basic_pan.html
+++ b/gfx/layers/apz/test/mochitest/helper_basic_pan.html
@@ -17,7 +17,7 @@ function scrollPage() {
};
SpecialPowers.Services.obs.addObserver(transformEnd, "APZ:TransformEnd");
- synthesizeNativeTouchDrag(document.body, 10, 100, 0, -(50 + TOUCH_SLOP));
+ synthesizeNativeTouchDrag(document.body, 10, 100, 0, -50);
dump("Finished native drag, waiting for transform-end observer...\n");
}
diff --git a/gfx/layers/apz/test/mochitest/helper_bug1280013.html b/gfx/layers/apz/test/mochitest/helper_bug1280013.html
index b9223c0..c56d2a1 100644
--- a/gfx/layers/apz/test/mochitest/helper_bug1280013.html
+++ b/gfx/layers/apz/test/mochitest/helper_bug1280013.html
@@ -19,8 +19,8 @@ function* test(testDriver) {
// Scroll down to the iframe. Do it in two drags instead of one in case the
// device screen is short
- yield synthesizeNativeTouchDrag(document.body, 10, 400, 0, -(350 + TOUCH_SLOP));
- yield synthesizeNativeTouchDrag(document.body, 10, 400, 0, -(350 + TOUCH_SLOP));
+ yield synthesizeNativeTouchDrag(document.body, 10, 400, 0, -350);
+ yield synthesizeNativeTouchDrag(document.body, 10, 400, 0, -350);
// Now the top of the visible area should be at y=700 of the top-level page,
// so if the screen is >= 500px tall, the entire iframe should be visible, at
// least vertically.
@@ -36,7 +36,7 @@ function* test(testDriver) {
// is still 0, the subframe's getBoundingClientRect is going to be off by
// 700 pixels, so we compensate for that here.
var subframe = document.getElementById('subframe');
- yield synthesizeNativeTouchDrag(subframe, 10, 200 - 700, 0, -(300 + TOUCH_SLOP));
+ yield synthesizeNativeTouchDrag(subframe, 10, 200 - 700, 0, -300);
// Remove the observer, we don't need it any more.
SpecialPowers.Services.obs.removeObserver(testDriver, "APZ:TransformEnd", false);
diff --git a/gfx/layers/apz/test/mochitest/helper_bug1346632.html b/gfx/layers/apz/test/mochitest/helper_bug1346632.html
index ab36538..ec0b5e6 100644
--- a/gfx/layers/apz/test/mochitest/helper_bug1346632.html
+++ b/gfx/layers/apz/test/mochitest/helper_bug1346632.html
@@ -25,30 +25,13 @@
}
</style>
<script type="text/javascript">
-var root;
-var scrollPos;
-var haveScrolled = false;
-var generatedAll = false;
-
-// Be careful not to call subtestDone() until we've scrolled AND generated
-// all of the events.
-function maybeDone() {
- if (haveScrolled && generatedAll) {
- subtestDone();
- }
-}
-
-function scrolled(e) {
- // Test that we have scrolled
- ok(root.scrollTop > scrollPos, "document scrolled after dragging scrollbar");
- haveScrolled = true;
- maybeDone();
-}
-
function* test(testDriver) {
- root = document.scrollingElement;
- scrollPos = root.scrollTop;
- document.addEventListener('scroll', scrolled);
+ var root = document.scrollingElement;
+ var scrollPos = root.scrollTop;
+ document.addEventListener('scroll', () => {
+ ok(root.scrollTop > scrollPos, "document scrolled after dragging scrollbar");
+ setTimeout(testDriver, 0);
+ }, {once: true});
var scrollbarX = (window.innerWidth + root.clientWidth) / 2;
// Move the mouse to the scrollbar
@@ -57,15 +40,15 @@ function* test(testDriver) {
yield synthesizeNativeMouseEvent(root, scrollbarX, 100, nativeMouseDownEventMsg(), testDriver);
// drag vertically
yield synthesizeNativeMouseEvent(root, scrollbarX, 150, nativeMouseMoveEventMsg(), testDriver);
+ // wait for the scroll listener to fire, which will resume this function
+ yield;
// and release
yield synthesizeNativeMouseEvent(root, scrollbarX, 150, nativeMouseUpEventMsg(), testDriver);
-
- generatedAll = true;
- maybeDone();
}
waitUntilApzStable()
-.then(runContinuation(test));
+.then(runContinuation(test))
+.then(subtestDone);
</script>
</head>
diff --git a/gfx/layers/apz/test/mochitest/helper_div_pan.html b/gfx/layers/apz/test/mochitest/helper_div_pan.html
index aef4bb9..e43fc92 100644
--- a/gfx/layers/apz/test/mochitest/helper_div_pan.html
+++ b/gfx/layers/apz/test/mochitest/helper_div_pan.html
@@ -17,7 +17,7 @@ function scrollOuter() {
};
SpecialPowers.Services.obs.addObserver(transformEnd, "APZ:TransformEnd");
- synthesizeNativeTouchDrag(document.getElementById('outer'), 10, 100, 0, -(50 + TOUCH_SLOP));
+ synthesizeNativeTouchDrag(document.getElementById('outer'), 10, 100, 0, -50);
dump("Finished native drag, waiting for transform-end observer...\n");
}
diff --git a/gfx/layers/apz/test/mochitest/helper_iframe_pan.html b/gfx/layers/apz/test/mochitest/helper_iframe_pan.html
index a67c8f4..21eb349 100644
--- a/gfx/layers/apz/test/mochitest/helper_iframe_pan.html
+++ b/gfx/layers/apz/test/mochitest/helper_iframe_pan.html
@@ -18,7 +18,7 @@ function scrollOuter() {
};
SpecialPowers.Services.obs.addObserver(transformEnd, "APZ:TransformEnd");
- synthesizeNativeTouchDrag(outer.contentDocument.body, 10, 100, 0, -(50 + TOUCH_SLOP));
+ synthesizeNativeTouchDrag(outer.contentDocument.body, 10, 100, 0, -50);
dump("Finished native drag, waiting for transform-end observer...\n");
}
diff --git a/gfx/layers/apz/test/mochitest/helper_touch_action.html b/gfx/layers/apz/test/mochitest/helper_touch_action.html
index 4495dc7..b1abaf4 100644
--- a/gfx/layers/apz/test/mochitest/helper_touch_action.html
+++ b/gfx/layers/apz/test/mochitest/helper_touch_action.html
@@ -20,7 +20,7 @@ function* test(testDriver) {
document.body.addEventListener('touchend', testDriver, { passive: true });
// drag the page up to scroll down by 50px
- yield ok(synthesizeNativeTouchDrag(target, 10, 100, 0, -(50 + TOUCH_SLOP)),
+ yield ok(synthesizeNativeTouchDrag(target, 10, 100, 0, -50),
"Synthesized native vertical drag (1), waiting for touch-end event...");
yield flushApzRepaints(testDriver);
checkScroll(0, 50, "After first vertical drag, with pan-y" );
@@ -33,20 +33,20 @@ function* test(testDriver) {
});
// drag the page up to scroll down by 50px, but it won't happen because pan-x
- yield ok(synthesizeNativeTouchDrag(target, 10, 100, 0, -(50 + TOUCH_SLOP)),
+ yield ok(synthesizeNativeTouchDrag(target, 10, 100, 0, -50),
"Synthesized native vertical drag (2), waiting for touch-end event...");
yield flushApzRepaints(testDriver);
checkScroll(0, 50, "After second vertical drag, with pan-x");
// drag the page left to scroll right by 50px
- yield ok(synthesizeNativeTouchDrag(target, 100, 10, -(50 + TOUCH_SLOP), 0),
+ yield ok(synthesizeNativeTouchDrag(target, 100, 10, -50, 0),
"Synthesized horizontal drag (1), waiting for touch-end event...");
yield flushApzRepaints(testDriver);
checkScroll(50, 50, "After first horizontal drag, with pan-x");
// drag the page diagonally right/down to scroll up/left by 40px each axis;
// only the x-axis will actually scroll because pan-x
- yield ok(synthesizeNativeTouchDrag(target, 10, 10, (40 + TOUCH_SLOP), (40 + TOUCH_SLOP)),
+ yield ok(synthesizeNativeTouchDrag(target, 10, 10, 40, 40),
"Synthesized diagonal drag (1), waiting for touch-end event...");
yield flushApzRepaints(testDriver);
checkScroll(10, 50, "After first diagonal drag, with pan-x");
@@ -60,7 +60,7 @@ function* test(testDriver) {
// drag the page diagonally right/down to scroll up/left by 40px each axis;
// only the y-axis will actually scroll because pan-y
- yield ok(synthesizeNativeTouchDrag(target, 10, 10, (40 + TOUCH_SLOP), (40 + TOUCH_SLOP)),
+ yield ok(synthesizeNativeTouchDrag(target, 10, 10, 40, 40),
"Synthesized diagonal drag (2), waiting for touch-end event...");
yield flushApzRepaints(testDriver);
checkScroll(10, 10, "After second diagonal drag, with pan-y");
@@ -74,7 +74,7 @@ function* test(testDriver) {
// drag the page diagonally up/left to scroll down/right by 40px each axis;
// neither will scroll because of touch-action
- yield ok(synthesizeNativeTouchDrag(target, 100, 100, -(40 + TOUCH_SLOP), -(40 + TOUCH_SLOP)),
+ yield ok(synthesizeNativeTouchDrag(target, 100, 100, -40, -40),
"Synthesized diagonal drag (3), waiting for touch-end event...");
yield flushApzRepaints(testDriver);
checkScroll(10, 10, "After third diagonal drag, with none");
@@ -87,7 +87,7 @@ function* test(testDriver) {
// drag the page diagonally up/left to scroll down/right by 40px each axis;
// both will scroll because of touch-action
- yield ok(synthesizeNativeTouchDrag(target, 100, 100, -(40 + TOUCH_SLOP), -(40 + TOUCH_SLOP)),
+ yield ok(synthesizeNativeTouchDrag(target, 100, 100, -40, -40),
"Synthesized diagonal drag (4), waiting for touch-end event...");
yield flushApzRepaints(testDriver);
checkScroll(50, 50, "After fourth diagonal drag, with manipulation");
diff --git a/gfx/layers/apz/test/mochitest/helper_touch_action_complex.html b/gfx/layers/apz/test/mochitest/helper_touch_action_complex.html
index 11d6e66..3a004a9 100644
--- a/gfx/layers/apz/test/mochitest/helper_touch_action_complex.html
+++ b/gfx/layers/apz/test/mochitest/helper_touch_action_complex.html
@@ -57,13 +57,9 @@ function* test(testDriver) {
function* scrollAndCheck(configuration, x, y, dx, dy, ex, ey, desc) {
// Start with a clean slate
yield resetConfiguration(configuration, testDriver);
- // Figure out the panning deltas
- if (dx != 0) {
- dx = -(dx + TOUCH_SLOP);
- }
- if (dy != 0) {
- dy = -(dy + TOUCH_SLOP);
- }
+ // Reverse the touch delta in order to scroll in the desired direction
+ dx = -dx;
+ dy = -dy;
// Do the pan
yield ok(synthesizeNativeTouchDrag(scrollframe, x, y, dx, dy),
"Synthesized drag of (" + dx + ", " + dy + ") on configuration " + configuration);
diff --git a/gfx/layers/client/CanvasClient.cpp b/gfx/layers/client/CanvasClient.cpp
index ecdcd56..418335b 100644
--- a/gfx/layers/client/CanvasClient.cpp
+++ b/gfx/layers/client/CanvasClient.cpp
@@ -290,8 +290,10 @@ static already_AddRefed<TextureClient> TexClientFromReadback(
MOZ_CRASH("GFX: Bad `read{Format,Type}`.");
}
- MOZ_ASSERT(texClient);
- if (!texClient) return nullptr;
+ if (!texClient) {
+ gfxWarning() << "Couldn't create texClient for readback.";
+ return nullptr;
+ }
// With a texClient, we can lock for writing.
TextureClientAutoLock autoLock(texClient, OpenMode::OPEN_WRITE);
@@ -452,10 +454,9 @@ void CanvasClientSharedSurface::UpdateRenderer(gfx::IntSize aSize,
asyncRenderer->CopyFromTextureClient(mReadbackClient);
}
- MOZ_ASSERT(newFront);
if (!newFront) {
// May happen in a release build in case of memory pressure.
- gfxCriticalError()
+ gfxWarning()
<< "Failed to allocate a TextureClient for SharedSurface Canvas. Size: "
<< aSize;
return;
diff --git a/gfx/layers/ipc/LayerTransactionParent.cpp b/gfx/layers/ipc/LayerTransactionParent.cpp
index 585a537..8eb1093 100644
--- a/gfx/layers/ipc/LayerTransactionParent.cpp
+++ b/gfx/layers/ipc/LayerTransactionParent.cpp
@@ -787,6 +787,15 @@ mozilla::ipc::IPCResult LayerTransactionParent::RecvRequestProperty(
mozilla::ipc::IPCResult LayerTransactionParent::RecvSetConfirmedTargetAPZC(
const uint64_t& aBlockId, nsTArray<ScrollableLayerGuid>&& aTargets) {
+ for (size_t i = 0; i < aTargets.Length(); i++) {
+ if (aTargets[i].mLayersId != GetId()) {
+ // Guard against bad data from hijacked child processes
+ NS_ERROR(
+ "Unexpected layers id in RecvSetConfirmedTargetAPZC; dropping "
+ "message...");
+ return IPC_FAIL(this, "Bad layers id");
+ }
+ }
mCompositorBridge->SetConfirmedTargetAPZC(GetId(), aBlockId, aTargets);
return IPC_OK();
}
diff --git a/gfx/layers/wr/WebRenderBridgeParent.cpp b/gfx/layers/wr/WebRenderBridgeParent.cpp
index b9b4b8e..c5bb7ce 100644
--- a/gfx/layers/wr/WebRenderBridgeParent.cpp
+++ b/gfx/layers/wr/WebRenderBridgeParent.cpp
@@ -967,6 +967,15 @@ mozilla::ipc::IPCResult WebRenderBridgeParent::RecvCapture() {
mozilla::ipc::IPCResult WebRenderBridgeParent::RecvSetConfirmedTargetAPZC(
const uint64_t& aBlockId, nsTArray<ScrollableLayerGuid>&& aTargets) {
+ for (size_t i = 0; i < aTargets.Length(); i++) {
+ if (aTargets[i].mLayersId != GetLayersId()) {
+ // Guard against bad data from hijacked child processes
+ NS_ERROR(
+ "Unexpected layers id in RecvSetConfirmedTargetAPZC; dropping "
+ "message...");
+ return IPC_FAIL(this, "Bad layers id");
+ }
+ }
if (mDestroyed) {
return IPC_OK();
}
diff --git a/js/public/Value.h b/js/public/Value.h
index 6b8649a..c3e602f 100644
--- a/js/public/Value.h
+++ b/js/public/Value.h
@@ -584,8 +584,11 @@ class MOZ_NON_PARAM alignas(8) Value {
bool isMagic() const { return toTag() == JSVAL_TAG_MAGIC; }
bool isMagic(JSWhyMagic why) const {
- MOZ_ASSERT_IF(isMagic(), data.s.payload.why == why);
- return isMagic();
+ if (!isMagic()) {
+ return false;
+ }
+ MOZ_RELEASE_ASSERT(data.s.payload.why == why);
+ return true;
}
JS::TraceKind traceKind() const {
diff --git a/js/src/gc/Nursery.cpp b/js/src/gc/Nursery.cpp
index eb42133..7516222 100644
--- a/js/src/gc/Nursery.cpp
+++ b/js/src/gc/Nursery.cpp
@@ -221,6 +221,7 @@ void js::Nursery::disable() {
currentEnd_ = 0;
currentStringEnd_ = 0;
+ position_ = 0;
runtime()->gc.storeBuffer().disable();
}
diff --git a/js/src/gc/Nursery.h b/js/src/gc/Nursery.h
index a4ece42..5fafeca 100644
--- a/js/src/gc/Nursery.h
+++ b/js/src/gc/Nursery.h
@@ -307,6 +307,7 @@ class Nursery {
// Free space remaining, not counting chunk trailers.
MOZ_ALWAYS_INLINE size_t freeSpace() const {
+ MOZ_ASSERT(isEnabled());
MOZ_ASSERT(currentEnd_ - position_ <= NurseryChunkUsableSize);
return (currentEnd_ - position_) +
(maxChunkCount() - currentChunk_ - 1) * NurseryChunkUsableSize;
diff --git a/js/src/jit/AliasAnalysisShared.cpp b/js/src/jit/AliasAnalysisShared.cpp
index 0beac19..213d047 100644
--- a/js/src/jit/AliasAnalysisShared.cpp
+++ b/js/src/jit/AliasAnalysisShared.cpp
@@ -87,7 +87,6 @@ static inline const MDefinition* GetObject(const MDefinition* ins) {
case MDefinition::Opcode::SetDisjointTypedElements:
case MDefinition::Opcode::ArrayPopShift:
case MDefinition::Opcode::ArrayPush:
- case MDefinition::Opcode::ArraySlice:
case MDefinition::Opcode::LoadTypedArrayElementHole:
case MDefinition::Opcode::StoreTypedArrayElementHole:
case MDefinition::Opcode::LoadFixedSlot:
@@ -112,6 +111,7 @@ static inline const MDefinition* GetObject(const MDefinition* ins) {
object = ins->getOperand(0);
break;
case MDefinition::Opcode::GetPropertyCache:
+ case MDefinition::Opcode::CallGetProperty:
case MDefinition::Opcode::GetDOMProperty:
case MDefinition::Opcode::GetDOMMember:
case MDefinition::Opcode::Call:
@@ -134,6 +134,7 @@ static inline const MDefinition* GetObject(const MDefinition* ins) {
case MDefinition::Opcode::WasmLoadGlobalVar:
case MDefinition::Opcode::WasmStoreGlobalVar:
case MDefinition::Opcode::ArrayJoin:
+ case MDefinition::Opcode::ArraySlice:
return nullptr;
default:
#ifdef DEBUG
diff --git a/js/src/jit/BaselineIC.cpp b/js/src/jit/BaselineIC.cpp
index 674c45c..61275f5 100644
--- a/js/src/jit/BaselineIC.cpp
+++ b/js/src/jit/BaselineIC.cpp
@@ -798,6 +798,7 @@ static bool DoSetElemFallback(JSContext* cx, BaselineFrame* frame,
}
bool isTemporarilyUnoptimizable = false;
+ bool canAddSlot = false;
bool attached = false;
if (stub->state().maybeTransition()) stub->discardStubs(cx);
@@ -805,7 +806,7 @@ static bool DoSetElemFallback(JSContext* cx, BaselineFrame* frame,
if (stub->state().canAttachStub()) {
SetPropIRGenerator gen(cx, script, pc, CacheKind::SetElem,
stub->state().mode(), &isTemporarilyUnoptimizable,
- objv, index, rhs);
+ &canAddSlot, objv, index, rhs);
if (gen.tryAttachStub()) {
ICStub* newStub = AttachBaselineCacheIRStub(
cx, gen.writerRef(), gen.cacheKind(),
@@ -865,8 +866,8 @@ static bool DoSetElemFallback(JSContext* cx, BaselineFrame* frame,
if (stub->state().canAttachStub()) {
SetPropIRGenerator gen(cx, script, pc, CacheKind::SetElem,
stub->state().mode(), &isTemporarilyUnoptimizable,
- objv, index, rhs);
- if (gen.tryAttachAddSlotStub(oldGroup, oldShape)) {
+ &canAddSlot, objv, index, rhs);
+ if (canAddSlot && gen.tryAttachAddSlotStub(oldGroup, oldShape)) {
ICStub* newStub = AttachBaselineCacheIRStub(
cx, gen.writerRef(), gen.cacheKind(),
BaselineCacheIRStubKind::Updated, ICStubEngine::Baseline,
@@ -1410,6 +1411,7 @@ static bool DoSetPropFallback(JSContext* cx, BaselineFrame* frame,
// failed to attach a stub is one of those temporary reasons, since we might
// end up attaching a stub for the exact same access later.
bool isTemporarilyUnoptimizable = false;
+ bool canAddSlot = false;
bool attached = false;
if (stub->state().maybeTransition()) stub->discardStubs(cx);
@@ -1418,7 +1420,7 @@ static bool DoSetPropFallback(JSContext* cx, BaselineFrame* frame,
RootedValue idVal(cx, StringValue(name));
SetPropIRGenerator gen(cx, script, pc, CacheKind::SetProp,
stub->state().mode(), &isTemporarilyUnoptimizable,
- lhs, idVal, rhs);
+ &canAddSlot, lhs, idVal, rhs);
if (gen.tryAttachStub()) {
ICStub* newStub = AttachBaselineCacheIRStub(
cx, gen.writerRef(), gen.cacheKind(),
@@ -1483,8 +1485,8 @@ static bool DoSetPropFallback(JSContext* cx, BaselineFrame* frame,
RootedValue idVal(cx, StringValue(name));
SetPropIRGenerator gen(cx, script, pc, CacheKind::SetProp,
stub->state().mode(), &isTemporarilyUnoptimizable,
- lhs, idVal, rhs);
- if (gen.tryAttachAddSlotStub(oldGroup, oldShape)) {
+ &canAddSlot, lhs, idVal, rhs);
+ if (canAddSlot && gen.tryAttachAddSlotStub(oldGroup, oldShape)) {
ICStub* newStub = AttachBaselineCacheIRStub(
cx, gen.writerRef(), gen.cacheKind(),
BaselineCacheIRStubKind::Updated, ICStubEngine::Baseline,
diff --git a/js/src/jit/CacheIR.cpp b/js/src/jit/CacheIR.cpp
index 10da776..b3198b1 100644
--- a/js/src/jit/CacheIR.cpp
+++ b/js/src/jit/CacheIR.cpp
@@ -2725,14 +2725,15 @@ bool IRGenerator::maybeGuardInt32Index(const Value& index, ValOperandId indexId,
SetPropIRGenerator::SetPropIRGenerator(
JSContext* cx, HandleScript script, jsbytecode* pc, CacheKind cacheKind,
- ICState::Mode mode, bool* isTemporarilyUnoptimizable, HandleValue lhsVal,
- HandleValue idVal, HandleValue rhsVal, bool needsTypeBarrier,
- bool maybeHasExtraIndexedProps)
+ ICState::Mode mode, bool* isTemporarilyUnoptimizable, bool* canAddSlot,
+ HandleValue lhsVal, HandleValue idVal, HandleValue rhsVal,
+ bool needsTypeBarrier, bool maybeHasExtraIndexedProps)
: IRGenerator(cx, script, pc, cacheKind, mode),
lhsVal_(lhsVal),
idVal_(idVal),
rhsVal_(rhsVal),
isTemporarilyUnoptimizable_(isTemporarilyUnoptimizable),
+ canAddSlot_(canAddSlot),
typeCheckInfo_(cx, needsTypeBarrier),
preliminaryObjectAction_(PreliminaryObjectAction::None),
attachedTypedArrayOOBStub_(false),
@@ -2777,6 +2778,9 @@ bool SetPropIRGenerator::tryAttachStub() {
if (tryAttachWindowProxy(obj, objId, id, rhsValId)) return true;
if (tryAttachProxy(obj, objId, id, rhsValId)) return true;
}
+ if (canAttachAddSlotStub(obj, id)) {
+ *canAddSlot_ = true;
+ }
return false;
}
@@ -3596,6 +3600,79 @@ bool SetPropIRGenerator::tryAttachWindowProxy(HandleObject obj,
return true;
}
+bool SetPropIRGenerator::canAttachAddSlotStub(HandleObject obj, HandleId id) {
+ // Special-case JSFunction resolve hook to allow redefining the 'prototype'
+ // property without triggering lazy expansion of property and object
+ // allocation.
+ if (obj->is<JSFunction>() && JSID_IS_ATOM(id, cx_->names().prototype)) {
+ MOZ_ASSERT(ClassMayResolveId(cx_->names(), obj->getClass(), id, obj));
+
+ // We check group->maybeInterpretedFunction() here and guard on the
+ // group. The group is unique for a particular function so this ensures
+ // we don't add the default prototype property to functions that don't
+ // have it.
+ JSFunction* fun = &obj->as<JSFunction>();
+ if (!obj->group()->maybeInterpretedFunction() ||
+ !fun->needsPrototypeProperty()) {
+ return false;
+ }
+
+ // If property exists this isn't an "add"
+ if (fun->lookupPure(id)) {
+ return false;
+ }
+ } else {
+ // Normal Case: If property exists this isn't an "add"
+ PropertyResult prop;
+ if (!LookupOwnPropertyPure(cx_, obj, id, &prop)) {
+ return false;
+ }
+ if (prop) {
+ return false;
+ }
+ }
+
+ // Object must be extensible.
+ if (!obj->nonProxyIsExtensible()) {
+ return false;
+ }
+
+ // Also watch out for addProperty hooks. Ignore the Array addProperty hook,
+ // because it doesn't do anything for non-index properties.
+ DebugOnly<uint32_t> index;
+ MOZ_ASSERT_IF(obj->is<ArrayObject>(), !IdIsIndex(id, &index));
+ if (!obj->is<ArrayObject>() && obj->getClass()->getAddProperty()) {
+ return false;
+ }
+
+ // Walk up the object prototype chain and ensure that all prototypes are
+ // native, and that all prototypes have no setter defined on the property.
+ for (JSObject* proto = obj->staticPrototype(); proto;
+ proto = proto->staticPrototype()) {
+ if (!proto->isNative()) {
+ return false;
+ }
+
+ // If prototype defines this property in a non-plain way, don't optimize.
+ Shape* protoShape = proto->as<NativeObject>().lookup(cx_, id);
+ if (protoShape && !protoShape->isDataDescriptor()) {
+ return false;
+ }
+
+ // Otherwise, if there's no such property, watch out for a resolve hook
+ // that would need to be invoked and thus prevent inlining of property
+ // addition. Allow the JSFunction resolve hook as it only defines plain
+ // data properties and we don't need to invoke it for objects on the
+ // proto chain.
+ if (ClassMayResolveId(cx_->names(), proto->getClass(), id, proto) &&
+ !proto->is<JSFunction>()) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
bool SetPropIRGenerator::tryAttachAddSlotStub(HandleObjectGroup oldGroup,
HandleShape oldShape) {
AutoAssertNoPendingException aanpe(cx_);
@@ -3623,9 +3700,12 @@ bool SetPropIRGenerator::tryAttachAddSlotStub(HandleObjectGroup oldGroup,
RootedObject obj(cx_, &lhsVal_.toObject());
PropertyResult prop;
- JSObject* holder;
- if (!LookupPropertyPure(cx_, obj, id, &holder, &prop)) return false;
- if (obj != holder) return false;
+ if (!LookupOwnPropertyPure(cx_, obj, id, &prop)) {
+ return false;
+ }
+ if (!prop) {
+ return false;
+ }
Shape* propShape = nullptr;
NativeObject* holderOrExpando = nullptr;
@@ -3646,12 +3726,14 @@ bool SetPropIRGenerator::tryAttachAddSlotStub(HandleObjectGroup oldGroup,
MOZ_ASSERT(propShape);
// The property must be the last added property of the object.
- if (holderOrExpando->lastProperty() != propShape) return false;
+ MOZ_RELEASE_ASSERT(holderOrExpando->lastProperty() == propShape);
- // Object must be extensible, oldShape must be immediate parent of
- // current shape.
- if (!obj->nonProxyIsExtensible() || propShape->previous() != oldShape)
+ // Old shape should be parent of new shape. Object flag updates may make this
+ // false even for simple data properties. It may be possible to support these
+ // transitions in the future, but ignore now for simplicity.
+ if (propShape->previous() != oldShape) {
return false;
+ }
// Basic shape checks.
if (propShape->inDictionary() || !propShape->isDataProperty() ||
@@ -3659,61 +3741,15 @@ bool SetPropIRGenerator::tryAttachAddSlotStub(HandleObjectGroup oldGroup,
return false;
}
- // Watch out for resolve hooks.
- if (ClassMayResolveId(cx_->names(), obj->getClass(), id, obj)) {
- // The JSFunction resolve hook defines a (non-configurable and
- // non-enumerable) |prototype| property on certain functions. Scripts
- // often assign a custom |prototype| object and we want to optimize
- // this |prototype| set and eliminate the default object allocation.
- //
- // We check group->maybeInterpretedFunction() here and guard on the
- // group. The group is unique for a particular function so this ensures
- // we don't add the default prototype property to functions that don't
- // have it.
- if (!obj->is<JSFunction>() || !JSID_IS_ATOM(id, cx_->names().prototype) ||
- !oldGroup->maybeInterpretedFunction() ||
- !obj->as<JSFunction>().needsPrototypeProperty()) {
- return false;
- }
- MOZ_ASSERT(!propShape->configurable());
- MOZ_ASSERT(!propShape->enumerable());
- }
-
- // Also watch out for addProperty hooks. Ignore the Array addProperty hook,
- // because it doesn't do anything for non-index properties.
- DebugOnly<uint32_t> index;
- MOZ_ASSERT_IF(obj->is<ArrayObject>(), !IdIsIndex(id, &index));
- if (!obj->is<ArrayObject>() && obj->getClass()->getAddProperty())
- return false;
-
- // Walk up the object prototype chain and ensure that all prototypes are
- // native, and that all prototypes have no setter defined on the property.
- for (JSObject* proto = obj->staticPrototype(); proto;
- proto = proto->staticPrototype()) {
- if (!proto->isNative()) return false;
-
- // If prototype defines this property in a non-plain way, don't optimize.
- Shape* protoShape = proto->as<NativeObject>().lookup(cx_, id);
- if (protoShape && !protoShape->hasDefaultSetter()) return false;
-
- // Otherwise, if there's no such property, watch out for a resolve hook
- // that would need to be invoked and thus prevent inlining of property
- // addition. Allow the JSFunction resolve hook as it only defines plain
- // data properties and we don't need to invoke it for objects on the
- // proto chain.
- if (ClassMayResolveId(cx_->names(), proto->getClass(), id, proto) &&
- !proto->is<JSFunction>()) {
- return false;
- }
- }
-
ObjOperandId objId = writer.guardIsObject(objValId);
maybeEmitIdGuard(id);
// In addition to guarding for type barrier, we need this group guard (or
- // shape guard below) to ensure class is unchanged.
+ // shape guard below) to ensure class is unchanged. This group guard may also
+ // implay maybeInterpretedFunction() for the special-case of function
+ // prototype property set.
MOZ_ASSERT(!oldGroup->hasUncacheableClass() || obj->is<ShapedObject>());
- writer.guardGroupForTypeBarrier(objId, oldGroup);
+ writer.guardGroup(objId, oldGroup);
// If we are adding a property to an object for which the new script
// properties analysis hasn't been performed yet, make sure the stub fails
diff --git a/js/src/jit/CacheIR.h b/js/src/jit/CacheIR.h
index a064681..be4a8e6 100644
--- a/js/src/jit/CacheIR.h
+++ b/js/src/jit/CacheIR.h
@@ -568,15 +568,13 @@ class MOZ_RAII CacheIRWriter : public JS::CustomAutoRooter {
addStubField(slot, StubField::Type::RawWord);
}
- private:
+ public:
// Use (or create) a specialization below to clarify what constaint the
// group guard is implying.
void guardGroup(ObjOperandId obj, ObjectGroup* group) {
writeOpWithOperandId(CacheOp::GuardGroup, obj);
addStubField(uintptr_t(group), StubField::Type::ObjectGroup);
}
-
- public:
void guardGroupForProto(ObjOperandId obj, ObjectGroup* group) {
MOZ_ASSERT(!group->hasUncacheableProto());
guardGroup(obj, group);
@@ -1466,6 +1464,7 @@ class MOZ_RAII SetPropIRGenerator : public IRGenerator {
HandleValue idVal_;
HandleValue rhsVal_;
bool* isTemporarilyUnoptimizable_;
+ bool* canAddSlot_;
PropertyTypeCheckInfo typeCheckInfo_;
enum class PreliminaryObjectAction { None, Unlink, NotePreliminary };
@@ -1529,11 +1528,13 @@ class MOZ_RAII SetPropIRGenerator : public IRGenerator {
bool tryAttachMegamorphicSetElement(HandleObject obj, ObjOperandId objId,
ValOperandId rhsId);
+ bool canAttachAddSlotStub(HandleObject obj, HandleId id);
+
public:
SetPropIRGenerator(JSContext* cx, HandleScript script, jsbytecode* pc,
CacheKind cacheKind, ICState::Mode mode,
- bool* isTemporarilyUnoptimizable, HandleValue lhsVal,
- HandleValue idVal, HandleValue rhsVal,
+ bool* isTemporarilyUnoptimizable, bool* canAddSlot,
+ HandleValue lhsVal, HandleValue idVal, HandleValue rhsVal,
bool needsTypeBarrier = true,
bool maybeHasExtraIndexedProps = true);
diff --git a/js/src/jit/IonAnalysis.cpp b/js/src/jit/IonAnalysis.cpp
index 42c699a..777f474 100644
--- a/js/src/jit/IonAnalysis.cpp
+++ b/js/src/jit/IonAnalysis.cpp
@@ -2915,6 +2915,14 @@ static MathSpace ExtractMathSpace(MDefinition* ins) {
MOZ_MAKE_COMPILER_ASSUME_IS_UNREACHABLE("Unknown TruncateKind");
}
+static bool MonotoneAdd(int32_t lhs, int32_t rhs) {
+ return (lhs >= 0 && rhs >= 0) || (lhs <= 0 && rhs <= 0);
+}
+
+static bool MonotoneSub(int32_t lhs, int32_t rhs) {
+ return (lhs >= 0 && rhs <= 0) || (lhs <= 0 && rhs >= 0);
+}
+
// Extract a linear sum from ins, if possible (otherwise giving the
// sum 'ins + 0').
SimpleLinearSum jit::ExtractLinearSum(MDefinition* ins, MathSpace space) {
@@ -2951,10 +2959,12 @@ SimpleLinearSum jit::ExtractLinearSum(MDefinition* ins, MathSpace space) {
// Check if this is of the form <SUM> + n or n + <SUM>.
if (ins->isAdd()) {
int32_t constant;
- if (space == MathSpace::Modulo)
+ if (space == MathSpace::Modulo) {
constant = uint32_t(lsum.constant) + uint32_t(rsum.constant);
- else if (!SafeAdd(lsum.constant, rsum.constant, &constant))
+ } else if (!SafeAdd(lsum.constant, rsum.constant, &constant) ||
+ !MonotoneAdd(lsum.constant, rsum.constant)) {
return SimpleLinearSum(ins, 0);
+ }
return SimpleLinearSum(lsum.term ? lsum.term : rsum.term, constant);
}
@@ -2962,10 +2972,12 @@ SimpleLinearSum jit::ExtractLinearSum(MDefinition* ins, MathSpace space) {
// Check if this is of the form <SUM> - n.
if (lsum.term) {
int32_t constant;
- if (space == MathSpace::Modulo)
+ if (space == MathSpace::Modulo) {
constant = uint32_t(lsum.constant) - uint32_t(rsum.constant);
- else if (!SafeSub(lsum.constant, rsum.constant, &constant))
+ } else if (!SafeSub(lsum.constant, rsum.constant, &constant) ||
+ !MonotoneSub(lsum.constant, rsum.constant)) {
return SimpleLinearSum(ins, 0);
+ }
return SimpleLinearSum(lsum.term, constant);
}
diff --git a/js/src/jit/IonBuilder.cpp b/js/src/jit/IonBuilder.cpp
index 7c5931f..b877c35 100644
--- a/js/src/jit/IonBuilder.cpp
+++ b/js/src/jit/IonBuilder.cpp
@@ -3965,6 +3965,16 @@ AbortReasonOr<Ok> IonBuilder::selectInliningTargets(
inlineable = false;
}
+ // Only use a group guard and inline the target if we will recompile when
+ // the target function gets a new group.
+ if (inlineable && targets[i].group) {
+ ObjectGroup* group = targets[i].group;
+ TypeSet::ObjectKey* key = TypeSet::ObjectKey::get(group);
+ if (!key->hasStableClassAndProto(constraints())) {
+ inlineable = false;
+ }
+ }
+
choiceSet.infallibleAppend(inlineable);
if (inlineable) *numInlineable += 1;
}
diff --git a/js/src/jit/IonIC.cpp b/js/src/jit/IonIC.cpp
index 8d2dcf2..86d2f59 100644
--- a/js/src/jit/IonIC.cpp
+++ b/js/src/jit/IonIC.cpp
@@ -221,6 +221,7 @@ void IonIC::trace(JSTracer* trc) {
bool attached = false;
bool isTemporarilyUnoptimizable = false;
+ bool canAddSlot = false;
if (ic->state().maybeTransition()) ic->discardStubs(cx->zone());
@@ -239,8 +240,9 @@ void IonIC::trace(JSTracer* trc) {
RootedScript script(cx, ic->script());
jsbytecode* pc = ic->pc();
SetPropIRGenerator gen(cx, script, pc, ic->kind(), ic->state().mode(),
- &isTemporarilyUnoptimizable, objv, idVal, rhs,
- ic->needsTypeBarrier(), ic->guardHoles());
+ &isTemporarilyUnoptimizable, &canAddSlot, objv,
+ idVal, rhs, ic->needsTypeBarrier(),
+ ic->guardHoles());
if (gen.tryAttachStub()) {
ic->attachCacheIRStub(cx, gen.writerRef(), gen.cacheKind(), ionScript,
&attached, gen.typeCheckInfo());
@@ -290,9 +292,10 @@ void IonIC::trace(JSTracer* trc) {
RootedScript script(cx, ic->script());
jsbytecode* pc = ic->pc();
SetPropIRGenerator gen(cx, script, pc, ic->kind(), ic->state().mode(),
- &isTemporarilyUnoptimizable, objv, idVal, rhs,
- ic->needsTypeBarrier(), ic->guardHoles());
- if (gen.tryAttachAddSlotStub(oldGroup, oldShape)) {
+ &isTemporarilyUnoptimizable, &canAddSlot, objv,
+ idVal, rhs, ic->needsTypeBarrier(),
+ ic->guardHoles());
+ if (canAddSlot && gen.tryAttachAddSlotStub(oldGroup, oldShape)) {
ic->attachCacheIRStub(cx, gen.writerRef(), gen.cacheKind(), ionScript,
&attached, gen.typeCheckInfo());
} else {
diff --git a/js/src/jit/MIR.cpp b/js/src/jit/MIR.cpp
index 7001652..4d37c26 100644
--- a/js/src/jit/MIR.cpp
+++ b/js/src/jit/MIR.cpp
@@ -5877,7 +5877,13 @@ bool jit::PropertyWriteNeedsTypeBarrier(TempAllocator& alloc,
bool success = true;
for (size_t i = 0; i < types->getObjectCount(); i++) {
TypeSet::ObjectKey* key = types->getObject(i);
- if (!key || key->unknownProperties()) continue;
+ if (!key) {
+ continue;
+ }
+
+ if (!key->hasStableClassAndProto(constraints)) {
+ return true;
+ }
// TI doesn't track TypedArray indexes and should never insert a type
// barrier for them.
@@ -5923,7 +5929,14 @@ bool jit::PropertyWriteNeedsTypeBarrier(TempAllocator& alloc,
TypeSet::ObjectKey* excluded = nullptr;
for (size_t i = 0; i < types->getObjectCount(); i++) {
TypeSet::ObjectKey* key = types->getObject(i);
- if (!key || key->unknownProperties()) continue;
+ if (!key) {
+ continue;
+ }
+
+ if (!key->hasStableClassAndProto(constraints)) {
+ return true;
+ }
+
if (!name && IsTypedArrayClass(key->clasp())) continue;
jsid id = name ? NameToId(name) : JSID_VOID;
diff --git a/js/src/jit/MIR.h b/js/src/jit/MIR.h
index 4edb08b..85b8aff 100644
--- a/js/src/jit/MIR.h
+++ b/js/src/jit/MIR.h
@@ -8667,9 +8667,6 @@ class MArraySlice : public MTernaryInstruction,
gc::InitialHeap initialHeap() const { return initialHeap_; }
- AliasSet getAliasSet() const override {
- return AliasSet::Store(AliasSet::Element | AliasSet::ObjectFields);
- }
bool possiblyCalls() const override { return true; }
bool appendRoots(MRootList& roots) const override {
return roots.append(templateObj_);
@@ -10196,7 +10193,8 @@ class MCallGetProperty : public MUnaryInstruction,
void setIdempotent() { idempotent_ = true; }
AliasSet getAliasSet() const override {
if (!idempotent_) return AliasSet::Store(AliasSet::Any);
- return AliasSet::None();
+ return AliasSet::Load(AliasSet::ObjectFields | AliasSet::FixedSlot |
+ AliasSet::DynamicSlot);
}
bool possiblyCalls() const override { return true; }
bool appendRoots(MRootList& roots) const override {
diff --git a/js/src/jit/VMFunctions.h b/js/src/jit/VMFunctions.h
index 6c44e37..c769a1c 100644
--- a/js/src/jit/VMFunctions.h
+++ b/js/src/jit/VMFunctions.h
@@ -143,7 +143,7 @@ struct VMFunction {
// Whether this function returns anything more than a boolean flag for
// failures.
bool returnsData() const {
- return returnType == Type_Pointer || outParam != Type_Void;
+ return returnType == Type_Object || outParam != Type_Void;
}
ArgProperties argProperties(uint32_t explicitArg) const {
diff --git a/js/src/jsapi.cpp b/js/src/jsapi.cpp
index 17b83fa..d7b3d90 100644
--- a/js/src/jsapi.cpp
+++ b/js/src/jsapi.cpp
@@ -4320,7 +4320,7 @@ JS_PUBLIC_API bool JS::ModuleInstantiate(JSContext* cx,
JS::HandleObject moduleArg) {
AssertHeapIsIdle();
CHECK_REQUEST(cx);
- assertSameCompartment(cx, moduleArg);
+ releaseAssertSameCompartment(cx, moduleArg);
return ModuleObject::Instantiate(cx, moduleArg.as<ModuleObject>());
}
@@ -4328,7 +4328,7 @@ JS_PUBLIC_API bool JS::ModuleEvaluate(JSContext* cx,
JS::HandleObject moduleArg) {
AssertHeapIsIdle();
CHECK_REQUEST(cx);
- assertSameCompartment(cx, moduleArg);
+ releaseAssertSameCompartment(cx, moduleArg);
return ModuleObject::Evaluate(cx, moduleArg.as<ModuleObject>());
}
@@ -5981,7 +5981,7 @@ JS_PUBLIC_API bool JS_GetPendingException(JSContext* cx,
JS_PUBLIC_API void JS_SetPendingException(JSContext* cx, HandleValue value) {
AssertHeapIsIdle();
CHECK_REQUEST(cx);
- assertSameCompartment(cx, value);
+ releaseAssertSameCompartment(cx, value);
cx->setPendingException(value);
}
@@ -6321,6 +6321,9 @@ JS_PUBLIC_API void JS_SetGlobalJitCompilerOption(JSContext* cx,
}
jit::JitOptions.jumpThreshold = value;
break;
+ case JSJITCOMPILER_UNBOXED_OBJECTS:
+ jit::JitOptions.disableUnboxedObjects = !value;
+ break;
case JSJITCOMPILER_SIMULATOR_ALWAYS_INTERRUPT:
jit::JitOptions.simulatorAlwaysInterrupt = !!value;
break;
diff --git a/js/src/jsapi.h b/js/src/jsapi.h
index d333a86..0f11787 100644
--- a/js/src/jsapi.h
+++ b/js/src/jsapi.h
@@ -5831,41 +5831,31 @@ extern JS_PUBLIC_API void JS_SetParallelParsingEnabled(JSContext* cx,
extern JS_PUBLIC_API void JS_SetOffthreadIonCompilationEnabled(JSContext* cx,
bool enabled);
-#define JIT_COMPILER_OPTIONS(Register) \
- Register(BASELINE_WARMUP_TRIGGER, "baseline.warmup.trigger") Register( \
- ION_WARMUP_TRIGGER, "ion.warmup.trigger") Register(ION_GVN_ENABLE, \
- "ion.gvn.enable") \
- Register(ION_FORCE_IC, "ion.forceinlineCaches") Register( \
- ION_ENABLE, "ion.enable") Register(ION_INTERRUPT_WITHOUT_SIGNAL, \
- "ion.interrupt-without-signals") \
- Register(ION_CHECK_RANGE_ANALYSIS, "ion.check-range-analysis") \
- Register(BASELINE_ENABLE, "baseline.enable") Register( \
- OFFTHREAD_COMPILATION_ENABLE, \
- "offthread-compilation.enable") Register(FULL_DEBUG_CHECKS, \
- "jit.full-debug-" \
- "checks") \
- Register(JUMP_THRESHOLD, "jump-threshold") Register( \
- SIMULATOR_ALWAYS_INTERRUPT, \
- "simulator.always-interrupt") \
- Register(SPECTRE_INDEX_MASKING, "spectre.index-masking") \
- Register(SPECTRE_OBJECT_MITIGATIONS_BARRIERS, \
- "spectre.object-mitigations.barriers") \
- Register(SPECTRE_OBJECT_MITIGATIONS_MISC, \
- "spectre.object-mitigations.misc") \
- Register(SPECTRE_STRING_MITIGATIONS, \
- "spectre.string-mitigations") \
- Register(SPECTRE_VALUE_MASKING, \
- "spectre.value-masking") \
- Register(SPECTRE_JIT_TO_CXX_CALLS, \
- "spectre.jit-to-C++-calls") \
- Register(ASMJS_ATOMICS_ENABLE, \
- "asmjs.atomics.enable") \
- Register( \
- WASM_FOLD_OFFSETS, \
- "wasm.fold-offsets") \
- Register( \
- WASM_DELAY_TIER2, \
- "wasm.delay-tier2")
+//clang-format off
+#define JIT_COMPILER_OPTIONS(Register) \
+ Register(BASELINE_WARMUP_TRIGGER, "baseline.warmup.trigger") \
+ Register(ION_WARMUP_TRIGGER, "ion.warmup.trigger") \
+ Register(ION_GVN_ENABLE, "ion.gvn.enable") \
+ Register(ION_FORCE_IC, "ion.forceinlineCaches") \
+ Register(ION_ENABLE, "ion.enable") \
+ Register(ION_INTERRUPT_WITHOUT_SIGNAL, "ion.interrupt-without-signals") \
+ Register(ION_CHECK_RANGE_ANALYSIS, "ion.check-range-analysis") \
+ Register(BASELINE_ENABLE, "baseline.enable") \
+ Register(OFFTHREAD_COMPILATION_ENABLE, "offthread-compilation.enable") \
+ Register(FULL_DEBUG_CHECKS, "jit.full-debug-checks") \
+ Register(JUMP_THRESHOLD, "jump-threshold") \
+ Register(UNBOXED_OBJECTS, "unboxed_objects") \
+ Register(SIMULATOR_ALWAYS_INTERRUPT, "simulator.always-interrupt") \
+ Register(SPECTRE_INDEX_MASKING, "spectre.index-masking") \
+ Register(SPECTRE_OBJECT_MITIGATIONS_BARRIERS, "spectre.object-mitigations.barriers") \
+ Register(SPECTRE_OBJECT_MITIGATIONS_MISC, "spectre.object-mitigations.misc") \
+ Register(SPECTRE_STRING_MITIGATIONS, "spectre.string-mitigations") \
+ Register(SPECTRE_VALUE_MASKING, "spectre.value-masking") \
+ Register(SPECTRE_JIT_TO_CXX_CALLS, "spectre.jit-to-C++-calls") \
+ Register(ASMJS_ATOMICS_ENABLE, "asmjs.atomics.enable") \
+ Register(WASM_FOLD_OFFSETS, "wasm.fold-offsets") \
+ Register(WASM_DELAY_TIER2, "wasm.delay-tier2")
+//clang-format on
typedef enum JSJitCompilerOption {
#define JIT_COMPILER_DECLARE(key, str) JSJITCOMPILER_##key,
diff --git a/js/src/jslibmath.h b/js/src/jslibmath.h
index b46616a..136c02a 100644
--- a/js/src/jslibmath.h
+++ b/js/src/jslibmath.h
@@ -66,7 +66,16 @@ inline double NumberDiv(double a, double b) {
inline double NumberMod(double a, double b) {
AutoUnsafeCallWithABI unsafe;
if (b == 0) return JS::GenericNaN();
- return js_fmod(a, b);
+ double r = fmod(a, b);
+#if defined(XP_WIN)
+ // Some versions of Windows (Win 10 v1803, v1809) miscompute the sign of zero
+ // results from fmod. The sign should match the sign of the LHS. This bug
+ // only affects 64-bit builds. See bug 1527007.
+ if (mozilla::IsPositiveZero(r) && mozilla::IsNegative(a)) {
+ return -0.0;
+ }
+#endif
+ return r;
}
} // namespace js
diff --git a/js/src/vm/NativeObject.cpp b/js/src/vm/NativeObject.cpp
index 7b31e88..dfc793e 100644
--- a/js/src/vm/NativeObject.cpp
+++ b/js/src/vm/NativeObject.cpp
@@ -1216,10 +1216,14 @@ void js::AddPropertyTypesAfterProtoChange(JSContext* cx, NativeObject* obj,
MOZ_ASSERT(obj->group() != oldGroup);
MOZ_ASSERT(!obj->group()->unknownProperties());
+ if (oldGroup->unknownProperties()) {
+ MarkObjectGroupUnknownProperties(cx, obj->group());
+ return;
+ }
+
// First copy the dynamic flags.
MarkObjectGroupFlags(cx, obj,
- oldGroup->flags() & (OBJECT_FLAG_DYNAMIC_MASK &
- ~OBJECT_FLAG_UNKNOWN_PROPERTIES));
+ oldGroup->flags() & OBJECT_FLAG_DYNAMIC_MASK);
// Now update all property types. If the object has many properties, this
// function may be slow so we mark all properties as unknown.
diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp
index bc28491..70f1517 100644
--- a/js/src/wasm/WasmSignalHandlers.cpp
+++ b/js/src/wasm/WasmSignalHandlers.cpp
@@ -126,6 +126,11 @@ struct AutoSignalHandler {
#define EPC_sig(p) ((p)->sc_pc)
#define RFP_sig(p) ((p)->sc_regs[30])
#endif
+#if defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || \
+ defined(__PPC64LE__)
+#define R01_sig(p) ((p)->sc_frame.fixreg[1])
+#define R32_sig(p) ((p)->sc_frame.srr0)
+#endif
#elif defined(__linux__) || defined(__sun)
#if defined(__linux__)
#define XMM_sig(p, i) ((p)->uc_mcontext.fpregs->_xmm[i])
@@ -218,6 +223,11 @@ struct AutoSignalHandler {
#define EPC_sig(p) ((p)->uc_mcontext.__gregs[_REG_EPC])
#define RFP_sig(p) ((p)->uc_mcontext.__gregs[_REG_S8])
#endif
+#if defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || \
+ defined(__PPC64LE__)
+#define R01_sig(p) ((p)->uc_mcontext.__gregs[_REG_R1])
+#define R32_sig(p) ((p)->uc_mcontext.__gregs[_REG_PC])
+#endif
#elif defined(__DragonFly__) || defined(__FreeBSD__) || \
defined(__FreeBSD_kernel__)
#if defined(__DragonFly__)
@@ -264,6 +274,11 @@ struct AutoSignalHandler {
#define EPC_sig(p) ((p)->uc_mcontext.mc_pc)
#define RFP_sig(p) ((p)->uc_mcontext.mc_regs[30])
#endif
+#if defined(__FreeBSD__) && (defined(__ppc64__) || defined(__PPC64__) || \
+ defined(__ppc64le__) || defined(__PPC64LE__))
+#define R01_sig(p) ((p)->uc_mcontext.mc_gpr[1])
+#define R32_sig(p) ((p)->uc_mcontext.mc_srr0)
+#endif
#elif defined(XP_DARWIN)
#define EIP_sig(p) ((p)->uc_mcontext->__ss.__eip)
#define EBP_sig(p) ((p)->uc_mcontext->__ss.__ebp)
diff --git a/js/xpconnect/src/XPCJSContext.cpp b/js/xpconnect/src/XPCJSContext.cpp
index 191f8e8..295cff4 100644
--- a/js/xpconnect/src/XPCJSContext.cpp
+++ b/js/xpconnect/src/XPCJSContext.cpp
@@ -777,6 +777,9 @@ static void ReloadPrefsCallback(const char* pref, void* data) {
bool spectreJitToCxxCalls =
Preferences::GetBool(JS_OPTIONS_DOT_STR "spectre.jit_to_C++_calls");
+ bool unboxedObjects =
+ Preferences::GetBool(JS_OPTIONS_DOT_STR "unboxed_objects");
+
sSharedMemoryEnabled =
Preferences::GetBool(JS_OPTIONS_DOT_STR "shared_memory");
@@ -855,6 +858,9 @@ static void ReloadPrefsCallback(const char* pref, void* data) {
spectreValueMasking);
JS_SetGlobalJitCompilerOption(cx, JSJITCOMPILER_SPECTRE_JIT_TO_CXX_CALLS,
spectreJitToCxxCalls);
+
+ JS_SetGlobalJitCompilerOption(cx, JSJITCOMPILER_UNBOXED_OBJECTS,
+ unboxedObjects);
}
XPCJSContext::~XPCJSContext() {
diff --git a/layout/base/PresShell.cpp b/layout/base/PresShell.cpp
index 010d96c..f42f95c 100644
--- a/layout/base/PresShell.cpp
+++ b/layout/base/PresShell.cpp
@@ -6454,7 +6454,7 @@ nsresult PresShell::HandleEvent(nsIFrame* aFrame, WidgetGUIEvent* aEvent,
return NS_OK;
}
- nsIContent* capturingContent =
+ nsCOMPtr<nsIContent> capturingContent =
((aEvent->mClass == ePointerEventClass ||
aEvent->mClass == eWheelEventClass || aEvent->HasMouseEventMessage())
? GetCapturingContent()
diff --git a/mfbt/RangedPtr.h b/mfbt/RangedPtr.h
index 7f95369..3995449 100644
--- a/mfbt/RangedPtr.h
+++ b/mfbt/RangedPtr.h
@@ -201,7 +201,7 @@ class RangedPtr {
return *this;
}
- T& operator[](int aIndex) const {
+ T& operator[](ptrdiff_t aIndex) const {
MOZ_ASSERT(size_t(aIndex > 0 ? aIndex : -aIndex) <= size_t(-1) / sizeof(T));
return *create(mPtr + aIndex);
}
diff --git a/mobile/android/config/mozconfigs/android-api-16-gradle-dependencies/nightly b/mobile/android/config/mozconfigs/android-api-16-gradle-dependencies/nightly
index c49b010..86c33ab 100644
--- a/mobile/android/config/mozconfigs/android-api-16-gradle-dependencies/nightly
+++ b/mobile/android/config/mozconfigs/android-api-16-gradle-dependencies/nightly
@@ -44,7 +44,8 @@ export MOZ_ANDROID_POCKET=1
# Disable Keyfile Loading (and checks) since dependency fetching doesn't need these keys.
# This overrides the settings in the common android mozconfig
ac_add_options --without-mozilla-api-keyfile
-ac_add_options --without-google-api-keyfile
+ac_add_options --without-google-location-service-api-keyfile
+ac_add_options --without-google-safebrowsing-api-keyfile
# We need dummy Keyfiles in order to enable features we care about.
ac_add_options --with-adjust-sdk-keyfile="$topsrcdir/mobile/android/base/adjust-sdk-sandbox.token"
ac_add_options --with-leanplum-sdk-keyfile="$topsrcdir/mobile/android/base/leanplum-sdk-sandbox.token"
diff --git a/mobile/android/config/mozconfigs/common b/mobile/android/config/mozconfigs/common
index 255593d..073e190eb 100644
--- a/mobile/android/config/mozconfigs/common
+++ b/mobile/android/config/mozconfigs/common
@@ -29,7 +29,8 @@ fi
ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL}
-ac_add_options --with-google-api-keyfile=/builds/gapi.data
+ac_add_options --with-google-safebrowsing-api-keyfile=/builds/sb-gapi.data
+ac_add_options --with-google-location-service-api-keyfile=/builds/gls-gapi.data
ac_add_options --with-mozilla-api-keyfile=/builds/mozilla-fennec-geoloc-api.key
# MOZ_INSTALL_TRACKING does not guarantee MOZ_UPDATE_CHANNEL will be set so we
diff --git a/mobile/android/mach_commands.py b/mobile/android/mach_commands.py
index a50787c..31fab6d 100755
--- a/mobile/android/mach_commands.py
+++ b/mobile/android/mach_commands.py
@@ -41,8 +41,13 @@ def REMOVED(cls):
@CommandProvider
class MachCommands(MachCommandBase):
def _root_url(self, artifactdir=None, objdir=None):
+ """Generate a publicly-accessible URL for the tasks's artifacts, or an objdir path"""
if 'TASK_ID' in os.environ and 'RUN_ID' in os.environ:
- return 'https://queue.taskcluster.net/v1/task/{}/runs/{}/artifacts/{}'.format(os.environ['TASK_ID'], os.environ['RUN_ID'], artifactdir)
+ import taskcluster_urls
+ from taskgraph.util.taskcluster import get_root_url
+ return taskcluster_urls.api(
+ get_root_url(), 'queue', 'v1', 'task/{}/runs/{}/artifacts/{}'.format(
+ os.environ['TASK_ID'], os.environ['RUN_ID'], artifactdir))
else:
return os.path.join(self.topobjdir, objdir)
diff --git a/mobile/locales/search/list.json b/mobile/locales/search/list.json
index 4c49056..bbf2020 100644
--- a/mobile/locales/search/list.json
+++ b/mobile/locales/search/list.json
@@ -247,49 +247,49 @@
"et": {
"default": {
"visibleDefaultEngines": [
- "google", "amazon-co-uk", "twitter", "wikipedia-et"
+ "google-b-m", "amazon-co-uk", "twitter", "wikipedia-et"
]
}
},
"eu": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "elebila", "wikipedia-eu"
+ "google-b-m", "bing", "elebila", "wikipedia-eu"
]
}
},
"fa": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "wikipedia-fa"
+ "google-b-m", "bing", "wikipedia-fa"
]
}
},
"ff": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-fr", "wikipedia-fr"
+ "google-b-m", "bing", "amazon-fr", "wikipedia-fr"
]
}
},
"fi": {
"default": {
"visibleDefaultEngines": [
- "google", "amazondotcom", "twitter", "wikipedia-fi"
+ "google-b-m", "amazondotcom", "twitter", "wikipedia-fi"
]
}
},
"fr": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "ddg", "qwant", "twitter", "wikipedia-fr"
+ "google-b-m", "bing", "ddg", "qwant", "twitter", "wikipedia-fr"
]
}
},
"fy-NL": {
"default": {
"visibleDefaultEngines": [
- "google", "wikipedia-fy-NL", "bolcom-fy-NL"
+ "google-b-m", "wikipedia-fy-NL", "bolcom-fy-NL"
]
},
"experimental-hidden": {
@@ -301,133 +301,133 @@
"ga-IE": {
"default": {
"visibleDefaultEngines": [
- "google", "amazon-co-uk", "tearma", "twitter", "wikipedia-ga-IE"
+ "google-b-m", "amazon-co-uk", "tearma", "twitter", "wikipedia-ga-IE"
]
}
},
"gd": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "ddg", "faclair-beag", "wikipedia-gd"
+ "google-b-m", "bing", "ddg", "faclair-beag", "wikipedia-gd"
]
}
},
"gl": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "twitter", "wikipedia-gl"
+ "google-b-m", "bing", "amazondotcom", "twitter", "wikipedia-gl"
]
}
},
"gn": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "twitter", "wikipedia-gn"
+ "google-b-m", "bing", "amazondotcom", "twitter", "wikipedia-gn"
]
}
},
"gu-IN": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-in", "wikipedia-gu"
+ "google-b-m", "bing", "amazon-in", "wikipedia-gu"
]
}
},
"he": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "twitter", "wikipedia-he"
+ "google-b-m", "bing", "amazondotcom", "twitter", "wikipedia-he"
]
}
},
"hi-IN": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-in", "twitter", "wikipedia-hi"
+ "google-b-m", "bing", "amazon-in", "twitter", "wikipedia-hi"
]
}
},
"hr": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-co-uk", "ddg", "twitter", "wikipedia-hr"
+ "google-b-m", "bing", "amazon-co-uk", "ddg", "twitter", "wikipedia-hr"
]
}
},
"hsb": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-de", "twitter", "wikipedia-hsb"
+ "google-b-m", "bing", "amazon-de", "twitter", "wikipedia-hsb"
]
}
},
"hu": {
"default": {
"visibleDefaultEngines": [
- "google", "sztaki-en-hu", "vatera", "twitter", "wikipedia-hu"
+ "google-b-m", "sztaki-en-hu", "vatera", "twitter", "wikipedia-hu"
]
}
},
"hy-AM": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "list-am", "wikipedia-hy-AM"
+ "google-b-m", "bing", "amazondotcom", "list-am", "wikipedia-hy-AM"
]
}
},
"ia": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-ia"
+ "google-b-m", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-ia"
]
}
},
"id": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "twitter", "wikipedia-id"
+ "google-b-m", "bing", "twitter", "wikipedia-id"
]
}
},
"is": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "leit-is", "wikipedia-is"
+ "google-b-m", "bing", "amazondotcom", "leit-is", "wikipedia-is"
]
}
},
"it": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "ddg", "twitter", "wikipedia-it"
+ "google-b-m", "bing", "ddg", "twitter", "wikipedia-it"
]
}
},
"ja": {
"default": {
"visibleDefaultEngines": [
- "google", "amazon-jp", "bing", "twitter-ja", "wikipedia-ja", "yahoo-jp"
+ "google-b-m", "amazon-jp", "bing", "twitter-ja", "wikipedia-ja", "yahoo-jp"
]
}
},
"ka": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "wikipedia-ka"
+ "google-b-m", "bing", "amazondotcom", "ddg", "wikipedia-ka"
]
}
},
"kab": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "wikipedia-kab"
+ "google-b-m", "bing", "wikipedia-kab"
]
}
},
"kk": {
"default": {
"visibleDefaultEngines": [
- "yandex", "google", "bing", "twitter", "wikipedia-kk"
+ "yandex", "google-b-m", "bing", "twitter", "wikipedia-kk"
]
}
},
@@ -558,42 +558,42 @@
"nn-NO": {
"default": {
"visibleDefaultEngines": [
- "google", "ddg", "gulesider-mobile-NO", "twitter", "wikipedia-NN"
+ "google-b-m", "ddg", "gulesider-mobile-NO", "twitter", "wikipedia-NN"
]
}
},
"oc": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "wikipedia-oc", "wiktionary-oc"
+ "google-b-m", "bing", "wikipedia-oc", "wiktionary-oc"
]
}
},
"or": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-in", "wikipedia-or", "wiktionary-or"
+ "google-b-m", "bing", "amazon-in", "wikipedia-or", "wiktionary-or"
]
}
},
"pa-IN": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "wikipedia-pa"
+ "google-b-m", "bing", "wikipedia-pa"
]
}
},
"pl": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "ddg", "twitter", "wikipedia-pl"
+ "google-b-m", "bing", "ddg", "twitter", "wikipedia-pl"
]
}
},
"pt-BR": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "twitter", "wikipedia-pt"
+ "google-b-m", "bing", "twitter", "wikipedia-pt"
]
},
"experimental-hidden": {
@@ -605,105 +605,105 @@
"pt-PT": {
"default": {
"visibleDefaultEngines": [
- "google", "wikipedia-pt"
+ "google-b-m", "wikipedia-pt"
]
}
},
"rm": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "ddg", "leo_ende_de", "pledarigrond", "wikipedia-rm"
+ "google-b-m", "bing", "ddg", "leo_ende_de", "pledarigrond", "wikipedia-rm"
]
}
},
"ro": {
"default": {
"visibleDefaultEngines": [
- "google", "twitter", "wikipedia-ro"
+ "google-b-m", "twitter", "wikipedia-ro"
]
}
},
"ru": {
"default": {
"visibleDefaultEngines": [
- "google", "yandex-ru", "twitter", "wikipedia-ru"
+ "google-b-m", "yandex-ru", "twitter", "wikipedia-ru"
]
}
},
"sk": {
"default": {
"visibleDefaultEngines": [
- "google", "azet-sk", "slovnik-sk", "twitter", "wikipedia-sk"
+ "google-b-m", "azet-sk", "slovnik-sk", "twitter", "wikipedia-sk"
]
}
},
"sl": {
"default": {
"visibleDefaultEngines": [
- "google", "ceneje", "odpiralni", "twitter", "wikipedia-sl"
+ "google-b-m", "ceneje", "odpiralni", "twitter", "wikipedia-sl"
]
}
},
"son": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-fr", "twitter", "wikipedia-fr"
+ "google-b-m", "bing", "amazon-fr", "twitter", "wikipedia-fr"
]
}
},
"sq": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-co-uk", "twitter", "wikipedia-sq"
+ "google-b-m", "bing", "amazon-co-uk", "twitter", "wikipedia-sq"
]
}
},
"sr": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "ddg", "twitter", "wikipedia-sr"
+ "google-b-m", "bing", "ddg", "twitter", "wikipedia-sr"
]
}
},
"sv-SE": {
"default": {
"visibleDefaultEngines": [
- "google", "prisjakt-sv-SE", "twitter", "wikipedia-sv-SE"
+ "google-b-m", "prisjakt-sv-SE", "twitter", "wikipedia-sv-SE"
]
}
},
"ta": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-in", "ddg", "wikipedia-ta", "wiktionary-ta"
+ "google-b-m", "bing", "amazon-in", "ddg", "wikipedia-ta", "wiktionary-ta"
]
}
},
"te": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazon-in", "wikipedia-te", "wiktionary-te"
+ "google-b-m", "bing", "amazon-in", "wikipedia-te", "wiktionary-te"
]
}
},
"th": {
"default": {
"visibleDefaultEngines": [
- "google", "twitter", "wikipedia-th"
+ "google-b-m", "twitter", "wikipedia-th"
]
}
},
"tl": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "amazondotcom", "ddg", "twitter"
+ "google-b-m", "bing", "amazondotcom", "ddg", "twitter"
]
}
},
"tr": {
"default": {
"visibleDefaultEngines": [
- "yandex-tr", "google", "twitter", "wikipedia-tr"
+ "yandex-tr", "google-b-m", "twitter", "wikipedia-tr"
]
}
},
@@ -774,7 +774,7 @@
"zh-TW": {
"default": {
"visibleDefaultEngines": [
- "google", "bing", "ddg", "wikipedia-zh-TW"
+ "google-b-m", "bing", "ddg", "wikipedia-zh-TW"
]
},
"experimental-hidden": {
diff --git a/mobile/locales/searchplugins/mapy-cz.xml b/mobile/locales/searchplugins/mapy-cz.xml
index 3abace6..b5d46af 100644
--- a/mobile/locales/searchplugins/mapy-cz.xml
+++ b/mobile/locales/searchplugins/mapy-cz.xml
@@ -7,7 +7,7 @@
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAMAAADVRocKAAAAt1BMVEUAAAAorAYorAYoqwYoqwUqqgAprAf///8srQr3/PUzsBP9/vxLuS5AtSLX8NCk3JWe2o99zWhVvjv7/frw+e7p9+Wz4qer356T1YLl9eHB57eO03x1yV9tx1ZdwUNZvz41sRX0+/Le8tnc8dbR7cq55K5oxFBGuCgwrxD4/Pfs+Ori9N3N7MbH6b2v4KOn3ZmZ2IiH0XSEz3B/zms6sxotrgzJ6sF4y2NwyFlkw0tQuzS14qlmxE6e93VUAAAABnRSTlMA8si8ZBgxEvPEAAACyklEQVRo3u2a2VbyMBCAAXXSHcoulR0FRBbZVPT9n+uHHpJpAn+hg7nwnH53bUq/kExmAieZPfe5LGggm7vPHHi4A23cPewFOt6Phv34gFbuMznQSi6TBa1kM6CZVJAKUkEqSAV7RoFnml7QCS80CCyPhVSKAFoE7+yIWQQtgjzjPFpaBAsmKICeIRKM3fOzdJtgxZAanKFjzt1bBE8MsYfnHxgXLLrghUXIwymDMIibvyMw16DydWyq3yw4/xrD403+rwjK6mAv8du5NMEnk1jKrW43OkH0KEImhjRAW4b0aQKfyUjhUpeGjyYIFMEWkB872mLTBAWmgEm1WJYaujRBVRV88xbnlSH0IXpTBaVjOA4rSsOEJsBuyovNeVTvD0gCS3RcdLhi4PhEaZAERf7xqWNGIrVdZifUSAIfy1mAXW1yWZQ6RYAl+QNGfNRtflPGpwgwiHaYNaJEpvqHIjBMPseb/UWfqUytEuPsCAKcYw8TX4TGCHriYk0QYMmfhd+np8TNJjKGY6AIqnIdWErJLTjcaojZIAnE6moftyiR3NYESTCgCIait8dSOWOcngMhz/zGM0WwUqvVl3idpQ5iniDA7s0PVzjN5up0lgKCwBAZ54nfapUOw+1IYUDftrQYB7ck7Vnt0wCkJlIgQVAQMwr/Zc6faREEE0yllzuxSy4oMlwFKqc7l2FyQR4X6RU/UNzEAkMs48U1W8t1YgHGkBMjaPOHOkkFGIBvEINlUwVWF6tlHB5RgOW+PIoV1LEcJBN4V/48HtqYDpMIWpGtYjzT8LFqUsE3FssYMIX7CQUuDw4bYzRumkvrhIKFWqguLIU5JBNsXvELXObdbFgJBR9YCKnECwZ85zYC0CDgiXriGwA6BGEa6lZfwtdrEfS3i9Ym5jN/63/TVJAKUkEqSAXXoP3QgPZjD9oPbug+eqL/8Iz24z//AHok9WmpkU9rAAAAAElFTkSuQmCC</Image>
<Url type="text/html" method="GET" template="http://www.mapy.cz/" resultdomain="mapy.cz">
- <Param name="query" value="{searchTerms}"/>
+ <Param name="q" value="{searchTerms}"/>
<Param name="sourceid" value="Searchmodule_3"/>
</Url>
<SearchForm>http://www.mapy.cz/</SearchForm>
diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
index 4d2332b..776e10f 100644
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -1449,6 +1449,7 @@ pref("javascript.options.strict", false);
#ifdef DEBUG
pref("javascript.options.strict.debug", false);
#endif
+pref("javascript.options.unboxed_objects", false);
pref("javascript.options.baselinejit", true);
pref("javascript.options.ion", true);
pref("javascript.options.asmjs", true);
@@ -5560,7 +5561,7 @@ pref("browser.safebrowsing.id", "Firefox");
pref("browser.safebrowsing.downloads.enabled", true);
pref("browser.safebrowsing.downloads.remote.enabled", true);
pref("browser.safebrowsing.downloads.remote.timeout_ms", 10000);
-pref("browser.safebrowsing.downloads.remote.url", "https://sb-ssl.google.com/safebrowsing/clientreport/download?key=%GOOGLE_API_KEY%");
+pref("browser.safebrowsing.downloads.remote.url", "https://sb-ssl.google.com/safebrowsing/clientreport/download?key=%GOOGLE_SAFEBROWSING_API_KEY%");
pref("browser.safebrowsing.downloads.remote.block_dangerous", true);
pref("browser.safebrowsing.downloads.remote.block_dangerous_host", true);
pref("browser.safebrowsing.downloads.remote.block_potentially_unwanted", true);
@@ -5572,7 +5573,7 @@ pref("browser.safebrowsing.passwords.enabled", false);
// Google Safe Browsing provider (legacy)
pref("browser.safebrowsing.provider.google.pver", "2.2");
pref("browser.safebrowsing.provider.google.lists", "goog-badbinurl-shavar,goog-downloadwhite-digest256,goog-phish-shavar,googpub-phish-shavar,goog-malware-shavar,goog-unwanted-shavar");
-pref("browser.safebrowsing.provider.google.updateURL", "https://safebrowsing.google.com/safebrowsing/downloads?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2&key=%GOOGLE_API_KEY%");
+pref("browser.safebrowsing.provider.google.updateURL", "https://safebrowsing.google.com/safebrowsing/downloads?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2&key=%GOOGLE_SAFEBROWSING_API_KEY%");
pref("browser.safebrowsing.provider.google.gethashURL", "https://safebrowsing.google.com/safebrowsing/gethash?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2");
pref("browser.safebrowsing.provider.google.reportURL", "https://safebrowsing.google.com/safebrowsing/diagnostic?client=%NAME%&hl=%LOCALE%&site=");
pref("browser.safebrowsing.provider.google.reportPhishMistakeURL", "https://%LOCALE%.phish-error.mozilla.com/?hl=%LOCALE%&url=");
@@ -5583,14 +5584,14 @@ pref("browser.safebrowsing.provider.google.advisoryName", "Google Safe Browsing"
// Google Safe Browsing provider
pref("browser.safebrowsing.provider.google4.pver", "4");
pref("browser.safebrowsing.provider.google4.lists", "goog-badbinurl-proto,goog-downloadwhite-proto,goog-phish-proto,googpub-phish-proto,goog-malware-proto,goog-unwanted-proto,goog-harmful-proto,goog-passwordwhite-proto");
-pref("browser.safebrowsing.provider.google4.updateURL", "https://safebrowsing.googleapis.com/v4/threatListUpdates:fetch?$ct=application/x-protobuf&key=%GOOGLE_API_KEY%&$httpMethod=POST");
-pref("browser.safebrowsing.provider.google4.gethashURL", "https://safebrowsing.googleapis.com/v4/fullHashes:find?$ct=application/x-protobuf&key=%GOOGLE_API_KEY%&$httpMethod=POST");
+pref("browser.safebrowsing.provider.google4.updateURL", "https://safebrowsing.googleapis.com/v4/threatListUpdates:fetch?$ct=application/x-protobuf&key=%GOOGLE_SAFEBROWSING_API_KEY%&$httpMethod=POST");
+pref("browser.safebrowsing.provider.google4.gethashURL", "https://safebrowsing.googleapis.com/v4/fullHashes:find?$ct=application/x-protobuf&key=%GOOGLE_SAFEBROWSING_API_KEY%&$httpMethod=POST");
pref("browser.safebrowsing.provider.google4.reportURL", "https://safebrowsing.google.com/safebrowsing/diagnostic?client=%NAME%&hl=%LOCALE%&site=");
pref("browser.safebrowsing.provider.google4.reportPhishMistakeURL", "https://%LOCALE%.phish-error.mozilla.com/?hl=%LOCALE%&url=");
pref("browser.safebrowsing.provider.google4.reportMalwareMistakeURL", "https://%LOCALE%.malware-error.mozilla.com/?hl=%LOCALE%&url=");
pref("browser.safebrowsing.provider.google4.advisoryURL", "https://developers.google.com/safe-browsing/v4/advisory");
pref("browser.safebrowsing.provider.google4.advisoryName", "Google Safe Browsing");
-pref("browser.safebrowsing.provider.google4.dataSharingURL", "https://safebrowsing.googleapis.com/v4/threatHits?$ct=application/x-protobuf&key=%GOOGLE_API_KEY%&$httpMethod=POST");
+pref("browser.safebrowsing.provider.google4.dataSharingURL", "https://safebrowsing.googleapis.com/v4/threatHits?$ct=application/x-protobuf&key=%GOOGLE_SAFEBROWSING_API_KEY%&$httpMethod=POST");
pref("browser.safebrowsing.provider.google4.dataSharing.enabled", false);
pref("browser.safebrowsing.reportPhishURL", "https://%LOCALE%.phish-report.mozilla.com/?hl=%LOCALE%&url=");
diff --git a/netwerk/base/nsProtocolProxyService.cpp b/netwerk/base/nsProtocolProxyService.cpp
index c119dd7..d0a19d0 100644
--- a/netwerk/base/nsProtocolProxyService.cpp
+++ b/netwerk/base/nsProtocolProxyService.cpp
@@ -2032,6 +2032,12 @@ nsresult nsProtocolProxyService::Resolve_Internal(nsIChannel *channel,
// here means that we will not use a proxy for this connection.
if (mPACMan && mPACMan->IsPACURI(uri)) return NS_OK;
+ // if proxies are enabled and this host:port combo is supposed to use a
+ // proxy, check for a proxy.
+ if ((mProxyConfig == PROXYCONFIG_DIRECT) ||
+ !CanUseProxy(uri, info.defaultPort))
+ return NS_OK;
+
bool mainThreadOnly;
if (mSystemProxySettings && mProxyConfig == PROXYCONFIG_SYSTEM &&
NS_SUCCEEDED(mSystemProxySettings->GetMainThreadOnly(&mainThreadOnly)) &&
diff --git a/netwerk/dns/effective_tld_names.dat b/netwerk/dns/effective_tld_names.dat
index fbe8c24..efab0e6 100644
--- a/netwerk/dns/effective_tld_names.dat
+++ b/netwerk/dns/effective_tld_names.dat
@@ -7104,9 +7104,6 @@ accountants
// aco : 2015-01-08 ACO Severin Ahlmann GmbH & Co. KG
aco
-// active : 2014-05-01 Active Network, LLC
-active
-
// actor : 2013-12-12 United TLD Holdco Ltd.
actor
@@ -7407,9 +7404,6 @@ black
// blackfriday : 2014-01-16 Uniregistry, Corp.
blackfriday
-// blanco : 2015-07-16 BLANCO GmbH + Co KG
-blanco
-
// blockbuster : 2015-07-30 Dish DBS Corporation
blockbuster
@@ -8019,9 +8013,6 @@ engineering
// enterprises : 2013-09-20 Binky Moon, LLC
enterprises
-// epost : 2015-07-23 Deutsche Post AG
-epost
-
// epson : 2014-12-04 Seiko Epson Corporation
epson
@@ -9843,9 +9834,6 @@ soy
// space : 2014-04-03 DotSpace Inc.
space
-// spiegel : 2014-02-05 SPIEGEL-Verlag Rudolf Augstein GmbH & Co. KG
-spiegel
-
// sport : 2017-11-16 Global Association of International Sports Federations (GAISF)
sport
@@ -10680,9 +10668,6 @@ zero
// zip : 2014-05-08 Charleston Road Registry Inc.
zip
-// zippo : 2015-07-02 Zadco Company
-zippo
-
// zone : 2013-11-14 Binky Moon, LLC
zone
@@ -11636,6 +11621,7 @@ channelsdvr.net
// Fastly Inc. : http://www.fastly.com/
// Submitted by Fastly Security <security@fastly.com>
+fastly-terrarium.com
fastlylb.net
map.fastlylb.net
freetls.fastly.net
@@ -11670,6 +11656,12 @@ mydobiss.com
// Filegear Inc. : https://www.filegear.com
// Submitted by Jason Zhu <jason@owtware.com>
filegear.me
+filegear-au.me
+filegear-de.me
+filegear-gb.me
+filegear-ie.me
+filegear-jp.me
+filegear-sg.me
// Firebase, Inc.
// Submitted by Chris Raynor <chris@firebase.com>
@@ -11853,6 +11845,19 @@ moonscale.net
// Submitted by Hannu Aronsson <haa@iki.fi>
iki.fi
+// Individual Network Berlin e.V. : https://www.in-berlin.de/
+// Submitted by Christian Seitz <chris@in-berlin.de>
+dyn-berlin.de
+in-berlin.de
+in-brb.de
+in-butter.de
+in-dsl.de
+in-dsl.net
+in-dsl.org
+in-vpn.de
+in-vpn.net
+in-vpn.org
+
// info.at : http://www.info.at/
biz.at
info.at
@@ -11945,6 +11950,16 @@ leadpages.co
lpages.co
lpusercontent.com
+// Lifetime Hosting : https://Lifetime.Hosting/
+// Submitted by Mike Fillator <support@lifetime.hosting>
+co.business
+co.education
+co.events
+co.financial
+co.network
+co.place
+co.technology
+
// Lightmaker Property Manager, Inc. : https://app.lmpm.com/
// Submitted by Greg Holland <greg.holland@lmpm.com>
app.lmpm.com
@@ -12499,6 +12514,10 @@ spacekit.io
// Submitted by Stefan Neufeind <info@speedpartner.de>
customer.speedpartner.de
+// Standard Library : https://stdlib.com
+// Submitted by Jacob Lee <jacob@stdlib.com>
+api.stdlib.com
+
// Storj Labs Inc. : https://storj.io/
// Submitted by Philip Hutchins <hostmaster@storj.io>
storj.farm
@@ -12511,6 +12530,11 @@ utwente.io
// Submitted by Dan Miller <dm@sub6.com>
temp-dns.com
+// Swisscom Application Cloud: https://developer.swisscom.com
+// Submitted by Matthias.Winzeler <matthias.winzeler@swisscom.com>
+applicationcloud.io
+scapp.io
+
// Synology, Inc. : https://www.synology.com/
// Submitted by Rony Weng <ronyweng@synology.com>
diskstation.me
@@ -12704,6 +12728,10 @@ za.org
// Submitted by Olli Vanhoja <olli@zeit.co>
now.sh
+// Zine EOOD : https://zine.bg/
+// Submitted by Martin Angelov <martin@zine.bg>
+bss.design
+
// Zone.id : https://zone.id/
// Submitted by Su Hendro <admin@zone.id>
zone.id
diff --git a/netwerk/protocol/http/nsHttpHandler.cpp b/netwerk/protocol/http/nsHttpHandler.cpp
index 4f020e2..9156982 100644
--- a/netwerk/protocol/http/nsHttpHandler.cpp
+++ b/netwerk/protocol/http/nsHttpHandler.cpp
@@ -485,7 +485,7 @@ nsresult nsHttpHandler::Init() {
}
// Generating the spoofed User Agent for fingerprinting resistance.
- rv = nsRFPService::GetSpoofedUserAgent(mSpoofedUserAgent);
+ rv = nsRFPService::GetSpoofedUserAgent(mSpoofedUserAgent, true);
if (NS_FAILED(rv)) {
// Empty mSpoofedUserAgent to make sure the unsuccessful spoofed UA string
// will not be used anywhere.
diff --git a/netwerk/sctp/datachannel/DataChannel.cpp b/netwerk/sctp/datachannel/DataChannel.cpp
index 5b3ea41..0a0c099 100644
--- a/netwerk/sctp/datachannel/DataChannel.cpp
+++ b/netwerk/sctp/datachannel/DataChannel.cpp
@@ -2306,12 +2306,21 @@ int DataChannelConnection::ReceiveCallback(struct socket *sock, void *data,
if (!data) {
LOG(("ReceiveCallback: SCTP has finished shutting down"));
} else {
- mLock.AssertCurrentThreadOwns();
+ bool locked = false;
+ if (!IsSTSThread()) {
+ mLock.Lock();
+ locked = true;
+ } else {
+ mLock.AssertCurrentThreadOwns();
+ }
if (flags & MSG_NOTIFICATION) {
HandleNotification(static_cast<union sctp_notification *>(data), datalen);
} else {
HandleMessage(data, datalen, ntohl(rcv.rcv_ppid), rcv.rcv_sid, flags);
}
+ if (locked) {
+ mLock.Unlock();
+ }
}
// sctp allocates 'data' with malloc(), and expects the receiver to free
// it (presumably with free).
diff --git a/netwerk/test/unit/test_protocolproxyservice.js b/netwerk/test/unit/test_protocolproxyservice.js
index a0cd990..929ccdc 100644
--- a/netwerk/test/unit/test_protocolproxyservice.js
+++ b/netwerk/test/unit/test_protocolproxyservice.js
@@ -953,10 +953,41 @@ function isresolvable_callback(pi)
Assert.equal(pi.port, 1234);
Assert.equal(pi.host, "127.0.0.1");
+ run_localhost_pac();
+}
+
+function run_localhost_pac()
+{
+ // test localhost in the pac file
+
+ var pac = 'data:text/plain,' +
+ 'function FindProxyForURL(url, host) {' +
+ ' return "PROXY totallycrazy:1234";' +
+ '}';
+
+ // Use default filter list string for "no_proxies_on" ("localhost, 127.0.0.1")
+ prefs.clearUserPref("network.proxy.no_proxies_on");
+ var channel = NetUtil.newChannel({
+ uri: "http://localhost/",
+ loadUsingSystemPrincipal: true
+ });
+ prefs.setIntPref("network.proxy.type", 2);
+ prefs.setCharPref("network.proxy.autoconfig_url", pac);
+
+ var cb = new resolveCallback();
+ cb.nextFunction = localhost_callback;
+ var req = pps.asyncResolve(channel, 0, cb);
+}
+
+function localhost_callback(pi)
+{
+ Assert.equal(pi, null); // no proxy!
+
prefs.setIntPref("network.proxy.type", 0);
do_test_finished();
}
+
function run_test() {
register_test_protocol_handler();
diff --git a/netwerk/test/unit/test_proxy-failover_canceled.js b/netwerk/test/unit/test_proxy-failover_canceled.js
index fa8d440..089cf9d 100644
--- a/netwerk/test/unit/test_proxy-failover_canceled.js
+++ b/netwerk/test/unit/test_proxy-failover_canceled.js
@@ -39,7 +39,8 @@ function run_test()
var prefserv = Cc["@mozilla.org/preferences-service;1"].
getService(Ci.nsIPrefService);
var prefs = prefserv.getBranch("network.proxy.");
- prefs.setIntPref("type", 2);
+ prefs.setIntPref("type", 2);
+ prefs.setCharPref("no_proxies_on", "nothing");
prefs.setCharPref("autoconfig_url", "data:text/plain," +
"function FindProxyForURL(url, host) {return 'PROXY a_non_existent_domain_x7x6c572v:80; PROXY localhost:" +
httpServer.identity.primaryPort + "';}"
diff --git a/old-configure b/old-configure
deleted file mode 100644
index ff03b7d..0000000
--- a/old-configure
+++ /dev/null
@@ -1,16610 +0,0 @@
-#! /bin/sh
-
-if test `uname -s | grep -c MINGW 2>/dev/null` != "0"; then
- msyshost=1
-fi
-
-
-# Read the user's .mozconfig script. We can't do this in
-# configure.in: autoconf puts the argument parsing code above anything
-# expanded from configure.in, and we need to get the configure options
-# from .mozconfig in place before that argument parsing code.
-. ./old-configure.vars
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.13
-# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-ac_help="$ac_help
- --with-ios-sdk=TYPE
- Type of iOS SDK to use (iphonesimulator, iphoneos)
- and optionally version (like iphoneos8.2)"
-ac_help="$ac_help
- --enable-ios-target=VER (default=8.0)
- Set the minimum iOS version needed at runtime"
-ac_help="$ac_help
- --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)"
-ac_help="$ac_help
- --with-macos-private-frameworks=dir Location of private frameworks to use (Mac OS X only)"
-ac_help="$ac_help
- --with-x use the X Window System"
-ac_help="$ac_help
- --with-arch=[[type|toolchain-default]]
- Use specific CPU features (-march=type). Resets
- thumb, fpu, float-abi, etc. defaults when set"
-ac_help="$ac_help
- --with-thumb[[=yes|no|toolchain-default]]
- Use Thumb instruction set (-mthumb)"
-ac_help="$ac_help
- --with-thumb-interwork[[=yes|no|toolchain-default]]
- Use Thumb/ARM instuctions interwork (-mthumb-interwork)"
-ac_help="$ac_help
- --with-fpu=[[type|toolchain-default]]
- Use specific FPU type (-mfpu=type)"
-ac_help="$ac_help
- --with-float-abi=[[type|toolchain-default]]
- Use specific arm float ABI (-mfloat-abi=type)"
-ac_help="$ac_help
- --with-soft-float[[=yes|no|toolchain-default]]
- Use soft float library (-msoft-float)"
-ac_help="$ac_help
- --enable-memory-sanitizer Enable Memory Sanitizer (default=no)"
-ac_help="$ac_help
- --enable-thread-sanitizer Enable Thread Sanitizer (default=no)"
-ac_help="$ac_help
- --enable-signed-overflow-sanitizer Enable UndefinedBehavior Sanitizer (Signed Integer Overflow Parts, default=no)"
-ac_help="$ac_help
- --enable-unsigned-overflow-sanitizer Enable UndefinedBehavior Sanitizer (Unsigned Integer Overflow Parts, default=no)"
-ac_help="$ac_help
- --enable-llvm-hacks Enable workarounds required for several LLVM instrumentations (default=no)"
-ac_help="$ac_help
- --enable-valgrind Enable Valgrind integration hooks (default=no)"
-ac_help="$ac_help
- --with-debug-label=LABELS
- Define DEBUG_<value> for each comma-separated
- value given."
-ac_help="$ac_help
- --with-debug-label=LABELS
- Define DEBUG_<value> for each comma-separated
- value given."
-ac_help="$ac_help
- --enable-cpp-rtti Enable C++ RTTI "
-ac_help="$ac_help
- --disable-icf Disable Identical Code Folding"
-ac_help="$ac_help
- --enable-pie Enable Position Independent Executables"
-ac_help="$ac_help
- --enable-dtrace build with dtrace support if available (default=no)"
-ac_help="$ac_help
- --with-pthreads Force use of system pthread library with NSPR "
-ac_help="$ac_help
- --with-nspr-cflags=FLAGS
- Pass FLAGS to CC when building code that uses NSPR.
- Use this when there's no accurate nspr-config
- script available. This is the case when building
- SpiderMonkey as part of the Mozilla tree: the
- top-level configure script computes NSPR flags
- that accomodate the quirks of that environment."
-ac_help="$ac_help
- --with-nspr-libs=LIBS Pass LIBS to LD when linking code that uses NSPR.
- See --with-nspr-cflags for more details."
-ac_help="$ac_help
- --enable-nspr-build Build NSPR from source tree"
-ac_help="$ac_help
- --with-system-nspr Use an NSPR that is already built and installed.
- Use the 'nspr-config' script in the current path,
- or look for the script in the directories given with
- --with-nspr-exec-prefix or --with-nspr-prefix.
- (Those flags are only checked if you specify
- --with-system-nspr.)"
-ac_help="$ac_help
- --enable-posix-nspr-emulation
- Enable emulation of NSPR for POSIX systems"
-ac_help="$ac_help
- --with-nspr-prefix=PFX Prefix where NSPR is installed"
-ac_help="$ac_help
- --with-nspr-exec-prefix=PFX
- Exec prefix where NSPR is installed"
-ac_help="$ac_help
- --with-system-libevent[=PFX]
- Use system libevent [installed at prefix PFX]"
-ac_help="$ac_help
- --with-system-nss Use system installed NSS"
-ac_help="$ac_help
- --with-nss-prefix=PFX Prefix where NSS is installed"
-ac_help="$ac_help
- --with-nss-exec-prefix=PFX
- Exec prefix where NSS is installed"
-ac_help="$ac_help
- --with-system-jpeg[=PFX]
- Use system libjpeg [installed at prefix PFX]"
-ac_help="$ac_help
- --with-system-zlib[=PFX]
- Use system libz [installed at prefix PFX]"
-ac_help="$ac_help
- --with-system-bz2[=PFX]
- Use system libbz2 [installed at prefix PFX]"
-ac_help="$ac_help
- --with-system-png[=PFX]
- Use system libpng [installed at prefix PFX]"
-ac_help="$ac_help
- --with-android-distribution-directory=dir
- Optional Firefox for Android partner distribution directory."
-ac_help="$ac_help
- --enable-official-branding
- Enable Official mozilla.org Branding
- Do not distribute builds with
- --enable-official-branding unless you have
- permission to use trademarks per
- http://www.mozilla.org/foundation/trademarks/ ."
-ac_help="$ac_help
---with-app-name=APPNAME sets MOZ_APP_NAME to APPNAME"
-ac_help="$ac_help
---with-app-basename=BASENAME sets MOZ_APP_BASENAME to BASENAME"
-ac_help="$ac_help
- --with-android-sdk=DIR
- location where the Android SDK can be found (like ~/.mozbuild/android-sdk-linux)"
-ac_help="$ac_help
- --with-android-min-sdk=[VER] Impose a minimum Firefox for Android SDK version"
-ac_help="$ac_help
- --with-android-max-sdk=[VER] Impose a maximum Firefox for Android SDK version"
-ac_help="$ac_help
- --enable-startup-notification
- Enable startup-notification support (default: disabled) "
-ac_help="$ac_help
- --with-branding=dir Use branding from the specified directory."
-ac_help="$ac_help
- --with-distribution-id=ID
- Set distribution-specific id (default=org.mozilla)"
-ac_help="$ac_help
- --disable-gconf Disable Gconf support "
-ac_help="$ac_help
- --enable-libproxy Enable libproxy support "
-ac_help="$ac_help
- --disable-dbus Disable dbus support "
-ac_help="$ac_help
- --disable-accessibility Disable accessibility support"
-ac_help="$ac_help
- --enable-hardware-aec-ns Enable support for hardware AEC and noise suppression"
-ac_help="$ac_help
- --enable-raw Enable support for RAW media"
-ac_help="$ac_help
- --with-system-libvpx Use system libvpx (located with pkgconfig)"
-ac_help="$ac_help
- --enable-alsa Enable Alsa support"
-ac_help="$ac_help
- --disable-pulseaudio Disable PulseAudio support"
-ac_help="$ac_help
- --disable-negotiateauth Disable GSS-API negotiation "
-ac_help="$ac_help
- --disable-pref-extensions
- Disable pref extensions such as autoconfig"
-ac_help="$ac_help
- --disable-system-extension-dirs
- Disable searching system- and account-global
- directories for extensions of any kind; use
- only profile-specific extension directories"
-ac_help="$ac_help
- --disable-universalchardet
- Disable universal encoding detection"
-ac_help="$ac_help
- --disable-crashreporter Disable breakpad crash reporting"
-ac_help="$ac_help
- --disable-libjpeg-turbo Disable optimized jpeg decoding routines"
-ac_help="$ac_help
- --enable-extensions Enable extensions"
-ac_help="$ac_help
- --enable-maintenance-service Enable building of maintenanceservice"
-ac_help="$ac_help
- --enable-bundled-fonts Enable support for bundled fonts on desktop platforms"
-ac_help="$ac_help
- --enable-verify-mar Enable verifying MAR signatures"
-ac_help="$ac_help
- --enable-signmar Enable building the signmar program"
-ac_help="$ac_help
- --disable-updater Disable building of updater"
-ac_help="$ac_help
- --disable-parental-controls
- Do not build parental controls"
-ac_help="$ac_help
- --disable-sandbox Disable sandboxing support"
-ac_help="$ac_help
- --enable-content-sandbox Enable sandboxing support for content-processes
- --disable-content-sandbox Disable sandboxing support for content-processes"
-ac_help="$ac_help
- --disable-feeds Disable feed handling and processing components"
-ac_help="$ac_help
- --enable-system-sqlite Use system sqlite (located with pkgconfig)"
-ac_help="$ac_help
- --disable-zipwriter Disable zipwriter component"
-ac_help="$ac_help
- --enable-mobile-optimize
- Enable mobile optimizations"
-ac_help="$ac_help
- --enable-logrefcnt Enable logging of refcounts (default=debug) "
-ac_help="$ac_help
- --enable-dump-painting Enable paint debugging."
-ac_help="$ac_help
- --enable-strip Enable stripping of libs & executables "
-ac_help="$ac_help
- --enable-install-strip Enable stripping of libs & executables when packaging "
-ac_help="$ac_help
- --enable-debug-js-modules Enable debug mode for frontend JS libraries"
-ac_help="$ac_help
- --enable-tasktracer Set compile flags necessary for using TaskTracer"
-ac_help="$ac_help
- --enable-reflow-perf Enable reflow performance tracing"
-ac_help="$ac_help
- --disable-startupcache Disable startup cache "
-ac_help="$ac_help
- --jitreport-granularity=N
- Default granularity at which to report JIT code
- to external tools
- 0 - no info
- 1 - code ranges for whole functions only
- 2 - per-line information
- 3 - per-op information"
-ac_help="$ac_help
- --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)"
-ac_help="$ac_help
- --enable-system-cairo Obsolete: do not use this option"
-ac_help="$ac_help
- --enable-system-pixman Use system pixman (located with pkgconfig)"
-ac_help="$ac_help
- --disable-xul Disable XUL"
-ac_help="$ac_help
- --disable-necko-wifi Disable necko wifi scanner"
-ac_help="$ac_help
- --disable-cookies Disable cookie support"
-ac_help="$ac_help
- --with-macbundlename-prefix=prefix
- Prefix for MOZ_MACBUNDLE_NAME"
-ac_help="$ac_help
- --with-system-icu
- Use system ICU (located with pkgconfig)"
-ac_help="$ac_help
- --with-intl-api, --with-intl-api=build, --without-intl-api
- Determine the status of the ECMAScript Internationalization API. The first
- (or lack of any of these) builds and exposes the API. The second builds it
- but doesn't use ICU or expose the API to script. The third doesn't build
- ICU at all."
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-# Maximum number of lines to put in a shell here document.
-ac_max_here_lines=12
-
-ac_prev=
-for ac_option
-do
-
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval "$ac_prev=\$ac_option"
- ac_prev=
- continue
- fi
-
- case "$ac_option" in
- -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) ac_optarg= ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case "$ac_option" in
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir="$ac_optarg" ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build="$ac_optarg" ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file="$ac_optarg" ;;
-
- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
- | --da=*)
- datadir="$ac_optarg" ;;
-
- -disable-* | --disable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; echo "configure: error: $ac_feature: invalid feature name" 1>&5; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- eval "enable_${ac_feature}=no" ;;
-
- -enable-* | --enable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; echo "configure: error: $ac_feature: invalid feature name" 1>&5; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "enable_${ac_feature}='$ac_optarg'" ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix="$ac_optarg" ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he)
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
- --cache-file=FILE cache test results in FILE
- --help print this message
- --no-create do not create output files
- --quiet, --silent do not print \`checking...' messages
- --version print the version of autoconf that created configure
-Directory and file names:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [same as prefix]
- --bindir=DIR user executables in DIR [EPREFIX/bin]
- --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
- --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
- --datadir=DIR read-only architecture-independent data in DIR
- [PREFIX/share]
- --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data in DIR
- [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
- --libdir=DIR object code libraries in DIR [EPREFIX/lib]
- --includedir=DIR C header files in DIR [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
- --infodir=DIR info documentation in DIR [PREFIX/info]
- --mandir=DIR man documentation in DIR [PREFIX/man]
- --srcdir=DIR find the sources in DIR [configure dir or ..]
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM
- run sed PROGRAM on installed program names
-EOF
- cat << EOF
-Host type:
- --build=BUILD configure for building on BUILD [BUILD=HOST]
- --host=HOST configure for HOST [guessed]
- --target=TARGET configure for TARGET [TARGET=HOST]
-Features and packages:
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --x-includes=DIR X include files are in DIR
- --x-libraries=DIR X library files are in DIR
-EOF
- if test -n "$ac_help"; then
- echo "--enable and --with options recognized:$ac_help"
- fi
- exit 0 ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host="$ac_optarg" ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir="$ac_optarg" ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir="$ac_optarg" ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir="$ac_optarg" ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir="$ac_optarg" ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst \
- | --locals | --local | --loca | --loc | --lo)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
- localstatedir="$ac_optarg" ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir="$ac_optarg" ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir="$ac_optarg" ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix="$ac_optarg" ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix="$ac_optarg" ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix="$ac_optarg" ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name="$ac_optarg" ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir="$ac_optarg" ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir="$ac_optarg" ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site="$ac_optarg" ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir="$ac_optarg" ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir="$ac_optarg" ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target="$ac_optarg" ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers)
- echo "configure generated by autoconf version 2.13"
- exit 0 ;;
-
- -with-* | --with-*)
- ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; echo "configure: error: $ac_package: invalid package name" 1>&5; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "with_${ac_package}='$ac_optarg'" ;;
-
- -without-* | --without-*)
- ac_package=`echo $ac_option|sed -e 's/-*without-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; echo "configure: error: $ac_package: invalid package name" 1>&5; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- eval "with_${ac_package}=no" ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes="$ac_optarg" ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries="$ac_optarg" ;;
-
- -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&5; exit 1; }
- ;;
-
- *)
- if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
- echo "configure: warning: $ac_option: invalid host type" 1>&2
- fi
- if test "x$nonopt" != xNONE; then
- { echo "configure: error: can only configure for one host and one target at a time" 1>&2; echo "configure: error: can only configure for one host and one target at a time" 1>&5; exit 1; }
- fi
- nonopt="$ac_option"
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&5; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
- exec 6>/dev/null
-else
- exec 6>&1
-fi
-exec 5>>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
- case "$ac_arg" in
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c) ;;
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
- ac_configure_args="$ac_configure_args '$ac_arg'" ;;
- *) ac_configure_args="$ac_configure_args $ac_arg" ;;
- esac
-done
-
-# NLS nuisances.
-# Only set these to C if already set. These must not be set unconditionally
-# because not all systems understand e.g. LANG=C (notably SCO).
-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
-# Non-C LC_CTYPE values break the ctype check.
-if test "${LANG+set}" = set; then LANG=C; export LANG; fi
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
-if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=config/config.mk
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then its parent.
- ac_prog=$0
- ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
- srcdir=$ac_confdir
- if test ! -r $srcdir/$ac_unique_file; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
- if test "$ac_srcdir_defaulted" = yes; then
- { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; echo "configure: error: can not find sources in $ac_confdir or .." 1>&5; exit 1; }
- else
- { echo "configure: error: can not find sources in $srcdir" 1>&2; echo "configure: error: can not find sources in $srcdir" 1>&5; exit 1; }
- fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
- if test "x$prefix" != xNONE; then
- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
- else
- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
- fi
-fi
-for ac_site_file in $CONFIG_SITE; do
- if test -r "$ac_site_file"; then
- echo "loading site script $ac_site_file"
- . "$ac_site_file"
- fi
-done
-
-if test -r "$cache_file"; then
- echo "loading cache $cache_file"
- . $cache_file
-else
- echo "creating cache $cache_file"
- > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-ac_exeext=
-ac_objext=o
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
- # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
- if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
- ac_n= ac_c='
-' ac_t=' '
- else
- ac_n=-n ac_c= ac_t=
- fi
-else
- ac_n= ac_c='\c' ac_t=
-fi
-
-
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-> subconfigures
-> skip_subconfigures
-
-ac_aux_dir=
-for ac_dir in ${srcdir}/build/autoconf $srcdir/${srcdir}/build/autoconf; do
- if test -f $ac_dir/install-sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f $ac_dir/install.sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- { echo "configure: error: can not find install-sh or install.sh in ${srcdir}/build/autoconf $srcdir/${srcdir}/build/autoconf" 1>&2; echo "configure: error: can not find install-sh or install.sh in ${srcdir}/build/autoconf $srcdir/${srcdir}/build/autoconf" 1>&5; exit 1; }
-fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-
-# Do some error checking and defaulting for the host and target type.
-# The inputs are:
-# configure --host=HOST --target=TARGET --build=BUILD NONOPT
-#
-# The rules are:
-# 1. You are not allowed to specify --host, --target, and nonopt at the
-# same time.
-# 2. Host defaults to nonopt.
-# 3. If nonopt is not specified, then host defaults to the current host,
-# as determined by config.guess.
-# 4. Target and build default to nonopt.
-# 5. If nonopt is not specified, then target and build default to host.
-
-# The aliases save the names the user supplied, while $host etc.
-# will get canonicalized.
-case $host---$target---$nonopt in
-NONE---*---* | *---NONE---* | *---*---NONE) ;;
-*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; echo "configure: error: can only configure for one host and one target at a time" 1>&5; exit 1; } ;;
-esac
-
-
-# Make sure we can run config.sub.
-if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
-else { echo "configure: error: can not run $ac_config_sub" 1>&2; echo "configure: error: can not run $ac_config_sub" 1>&5; exit 1; }
-fi
-
-echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:844: checking host system type" >&5
-
-host_alias=$host
-case "$host_alias" in
-NONE)
- case $nonopt in
- NONE)
- if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
- else { echo "configure: error: can not guess host type; you must specify one" 1>&2; echo "configure: error: can not guess host type; you must specify one" 1>&5; exit 1; }
- fi ;;
- *) host_alias=$nonopt ;;
- esac ;;
-esac
-
-host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
-host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-echo "$ac_t""$host" 1>&6
-
-echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:865: checking target system type" >&5
-
-target_alias=$target
-case "$target_alias" in
-NONE)
- case $nonopt in
- NONE) target_alias=$host_alias ;;
- *) target_alias=$nonopt ;;
- esac ;;
-esac
-
-target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias`
-target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-echo "$ac_t""$target" 1>&6
-
-echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:883: checking build system type" >&5
-
-build_alias=$build
-case "$build_alias" in
-NONE)
- case $nonopt in
- NONE) build_alias=$host_alias ;;
- *) build_alias=$nonopt ;;
- esac ;;
-esac
-
-build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias`
-build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-echo "$ac_t""$build" 1>&6
-
-test "$host_alias" != "$target_alias" &&
- test "$program_prefix$program_suffix$program_transform_name" = \
- NONENONEs,x,x, &&
- program_prefix=${target_alias}-
-
-
-CFLAGS="${CFLAGS=}"
-CPPFLAGS="${CPPFLAGS=}"
-CXXFLAGS="${CXXFLAGS=}"
-LDFLAGS="${LDFLAGS=}"
-HOST_CFLAGS="${HOST_CFLAGS=}"
-HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
-HOST_LDFLAGS="${HOST_LDFLAGS=}"
-
-_SUBDIR_CC="$CC"
-_SUBDIR_CXX="$CXX"
-_SUBDIR_CFLAGS="$CFLAGS"
-_SUBDIR_CPPFLAGS="$CPPFLAGS"
-_SUBDIR_CXXFLAGS="$CXXFLAGS"
-_SUBDIR_LDFLAGS="$LDFLAGS"
-_SUBDIR_HOST_CC="$HOST_CC"
-_SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
-_SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
-_SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
-_SUBDIR_CONFIG_ARGS="$ac_configure_args"
-
-MOZJPEG=62
-MOZPNG=10634
-NSPR_VERSION=4
-NSPR_MINVER=4.19
-NSS_VERSION=3
-
-GLIB_VERSION=2.22
-# 2_26 is the earliest version we can set GLIB_VERSION_MIN_REQUIRED.
-# The macro won't be used when compiling with earlier versions anyway.
-GLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26
-CAIRO_VERSION=1.10
-GTK2_VERSION=2.18.0
-GTK3_VERSION=3.4.0
-GDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_4
-WINDRES_VERSION=2.14.90
-W32API_VERSION=3.14
-GCONF_VERSION=1.2.1
-STARTUP_NOTIFICATION_VERSION=0.8
-DBUS_VERSION=0.60
-SQLITE_VERSION=3.22.0
-
-MISSING_X=
-
-MOZ_USE_PTHREADS=
-_PTHREAD_LDFLAGS=""
-
-
-if test -z "$CROSS_COMPILE"; then
-case "$target" in
-*-mingw*)
- if test -z "$CPP"; then CPP="$CC -E -nologo"; fi
- if test -z "$CXXCPP"; then CXXCPP="$CXX -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
- if test -z "$AS"; then
- case "${target_cpu}" in
- i*86)
- AS=ml;
- ;;
- x86_64)
- AS=ml64;
- ;;
- esac
- fi
- if test -z "$MIDL"; then MIDL=midl; fi
-
- # need override this flag since we don't use $(LDFLAGS) for this.
- if test -z "$HOST_LDFLAGS" ; then
- HOST_LDFLAGS=" "
- fi
- ;;
-esac
-fi
-
-
-if test "$COMPILE_ENVIRONMENT"; then
-
-
-case "$target" in
-*-android*|*-linuxandroid*)
- directory_include_args="-isystem $android_system -isystem $android_sysroot/usr/include"
-
- # clang will do any number of interesting things with host tools unless we tell
- # it to use the NDK tools.
- extra_opts="-gcc-toolchain $(dirname $(dirname $TOOLCHAIN_PREFIX))"
- CPPFLAGS="$extra_opts -D__ANDROID_API__=$android_version $CPPFLAGS"
- ASFLAGS="$extra_opts $ASFLAGS"
- LDFLAGS="$extra_opts $LDFLAGS"
-
- CPPFLAGS="$directory_include_args $CPPFLAGS"
- CFLAGS="-fno-short-enums -fno-exceptions $CFLAGS"
- CXXFLAGS="-fno-short-enums -fno-exceptions $CXXFLAGS $stlport_cppflags"
- ASFLAGS="$directory_include_args -DANDROID $ASFLAGS"
-
- LDFLAGS="-L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform -Wl,--allow-shlib-undefined $LDFLAGS"
- ANDROID_PLATFORM="${android_platform}"
-
- cat >> confdefs.pytmp <<\EOF
- (''' ANDROID ''', ' 1 ')
-EOF
-cat >> confdefs.h <<\EOF
-#define ANDROID 1
-EOF
-
-
-
- ;;
-esac
-
-
-fi # COMPILE_ENVIRONMENT
-
-case "$target" in
-*-android*|*-linuxandroid*)
- cat >> confdefs.pytmp <<\EOF
- (''' ANDROID ''', ' 1 ')
-EOF
-cat >> confdefs.h <<\EOF
-#define ANDROID 1
-EOF
-
- ;;
-*-linux*)
- # Extract the first word of "objcopy", so it can be a program name with args.
-set dummy objcopy; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1030: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_OBJCOPY'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- case "$OBJCOPY" in
- /*)
- ac_cv_path_OBJCOPY="$OBJCOPY" # Let the user override the test with a path.
- ;;
- ?:/*)
- ac_cv_path_OBJCOPY="$OBJCOPY" # Let the user override the test with a dos path.
- ;;
- *)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_path_OBJCOPY="$ac_dir/$ac_word"
- break
- fi
- done
- IFS="$ac_save_ifs"
- ;;
-esac
-fi
-OBJCOPY="$ac_cv_path_OBJCOPY"
-if test -n "$OBJCOPY"; then
- echo "$ac_t""$OBJCOPY" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
- ;;
-esac
-
-case "$target" in
-*-apple-darwin*)
-
-
-# Check whether --with-ios-sdk or --without-ios-sdk was given.
-if test "${with_ios_sdk+set}" = set; then
- withval="$with_ios_sdk"
- ios_sdk=$withval
-fi
-
-
-# Check whether --enable-ios-target or --disable-ios-target was given.
-if test "${enable_ios_target+set}" = set; then
- enableval="$enable_ios_target"
- _IOS_TARGET=$enableval
-fi
-
-_IOS_TARGET_DEFAULT=8.0
-
-case "$target" in
-arm*-apple-darwin*)
- if test -z "$ios_sdk" -o "$ios_sdk" = "yes"; then
- ios_sdk=iphoneos
- fi
- case "$ios_sdk" in
- iphoneos*)
- ios_target_arg="-miphoneos-version-min"
- ;;
- *)
- { echo "configure: error: Only 'iphoneos' SDKs are valid when targeting iOS device, don't know what to do with '$ios_sdk'." 1>&2; echo "configure: error: Only 'iphoneos' SDKs are valid when targeting iOS device, don't know what to do with '$ios_sdk'." 1>&5; exit 1; }
- ;;
- esac
- ;;
-*-apple-darwin*)
- ios_target_arg="-mios-simulator-version-min"
- case "$ios_sdk" in
- # Empty SDK is okay, this might be an OS X desktop build.
- ""|iphonesimulator*)
- ;;
- # Default to iphonesimulator
- yes)
- ios_sdk=iphonesimulator
- ;;
- *)
- { echo "configure: error: Only 'iphonesimulator' SDKs are valid when targeting iOS simulator." 1>&2; echo "configure: error: Only 'iphonesimulator' SDKs are valid when targeting iOS simulator." 1>&5; exit 1; }
- ;;
- esac
- ;;
-esac
-
-
-if test -n "$ios_sdk"; then
- if test -z "$_IOS_TARGET"; then
- _IOS_TARGET=$_IOS_TARGET_DEFAULT
- ios_target_arg="${ios_target_arg}=${_IOS_TARGET}"
- fi
- # Ensure that xcrun knows where this SDK is.
- ios_sdk_path=`xcrun --sdk $ios_sdk --show-sdk-path 2>/dev/null`
- _ret=$?
- if test $_ret -ne 0; then
- { echo "configure: error: iOS SDK '$ios_sdk' could not be found." 1>&2; echo "configure: error: iOS SDK '$ios_sdk' could not be found." 1>&5; exit 1; }
- fi
- MOZ_IOS=1
- export HOST_CC=clang
- export HOST_CXX=clang++
- # Add isysroot, arch, and ios target arguments
- case "$target_cpu" in
- arm*)
- ARGS="-arch armv7"
- ;;
- *)
- # Unfortunately simulator builds need this.
- export CROSS_COMPILE=1
- ;;
- esac
- ARGS=" $ARGS -isysroot $ios_sdk_path $ios_target_arg"
- # Now find our tools
-
-
-_prog_name=clang
-
-echo $ac_n "checking for $_prog_name in iOS SDK""... $ac_c" 1>&6
-echo "configure:1147: checking for $_prog_name in iOS SDK" >&5
-if eval "test \"`echo '$''{'ac_cv_ios_path_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
-
-_path=`xcrun --sdk $ios_sdk --find $_prog_name 2>/dev/null`
-_res=$?
-if test $_res -ne 0; then
- { echo "configure: error: Could not find '$_prog_name' in the iOS SDK" 1>&2; echo "configure: error: Could not find '$_prog_name' in the iOS SDK" 1>&5; exit 1; }
-fi
-ac_cv_ios_path_CC=$_path
-
-fi
-
-echo "$ac_t""$ac_cv_ios_path_CC" 1>&6
-CC="${ac_cv_ios_path_CC}$ARGS"
-
-
-
-_prog_name=clang++
-
-echo $ac_n "checking for $_prog_name in iOS SDK""... $ac_c" 1>&6
-echo "configure:1169: checking for $_prog_name in iOS SDK" >&5
-if eval "test \"`echo '$''{'ac_cv_ios_path_CXX'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
-
-_path=`xcrun --sdk $ios_sdk --find $_prog_name 2>/dev/null`
-_res=$?
-if test $_res -ne 0; then
- { echo "configure: error: Could not find '$_prog_name' in the iOS SDK" 1>&2; echo "configure: error: Could not find '$_prog_name' in the iOS SDK" 1>&5; exit 1; }
-fi
-ac_cv_ios_path_CXX=$_path
-
-fi
-
-echo "$ac_t""$ac_cv_ios_path_CXX" 1>&6
-CXX="${ac_cv_ios_path_CXX}$ARGS"
-
- export CPP="$CC -E"
-
-
-_prog_name=`echo AR | tr "[:upper:]" "[:lower:]"`
-
-echo $ac_n "checking for $_prog_name in iOS SDK""... $ac_c" 1>&6
-echo "configure:1192: checking for $_prog_name in iOS SDK" >&5
-if eval "test \"`echo '$''{'ac_cv_ios_path_AR'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
-
-_path=`xcrun --sdk $ios_sdk --find $_prog_name 2>/dev/null`
-_res=$?
-if test $_res -ne 0; then
- { echo "configure: error: Could not find '$_prog_name' in the iOS SDK" 1>&2; echo "configure: error: Could not find '$_prog_name' in the iOS SDK" 1>&5; exit 1; }
-fi
-ac_cv_ios_path_AR=$_path
-
-fi
-
-echo "$ac_t""$ac_cv_ios_path_AR" 1>&6
-AR="${ac_cv_ios_path_AR}"
-
-
-
-_prog_name=as
-
-echo $ac_n "checking for $_prog_name in iOS SDK""... $ac_c" 1>&6
-echo "configure:1214: checking for $_prog_name in iOS SDK" >&5
-if eval "test \"`echo '$''{'ac_cv_ios_path_AS'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
-
-_path=`xcrun --sdk $ios_sdk --find $_prog_name 2>/dev/null`
-_res=$?
-if test $_res -ne 0; then
- { echo "configure: error: Could not find '$_prog_name' in the iOS SDK" 1>&2; echo "configure: error: Could not find '$_prog_name' in the iOS SDK" 1>&5; exit 1; }
-fi
-ac_cv_ios_path_AS=$_path
-
-fi
-
-echo "$ac_t""$ac_cv_ios_path_AS" 1>&6
-AS="${ac_cv_ios_path_AS}$ARGS"
-
-
-
-_prog_name=`echo OTOOL | tr "[:upper:]" "[:lower:]"`
-
-echo $ac_n "checking for $_prog_name in iOS SDK""... $ac_c" 1>&6
-echo "configure:1236: checking for $_prog_name in iOS SDK" >&5
-if eval "test \"`echo '$''{'ac_cv_ios_path_OTOOL'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
-
-_path=`xcrun --sdk $ios_sdk --find $_prog_name 2>/dev/null`
-_res=$?
-if test $_res -ne 0; then
- { echo "configure: error: Could not find '$_prog_name' in the iOS SDK" 1>&2; echo "configure: error: Could not find '$_prog_name' in the iOS SDK" 1>&5; exit 1; }
-fi
-ac_cv_ios_path_OTOOL=$_path
-
-fi
-
-echo "$ac_t""$ac_cv_ios_path_OTOOL" 1>&6
-OTOOL="${ac_cv_ios_path_OTOOL}"
-
-
-
-_prog_name=`echo STRIP | tr "[:upper:]" "[:lower:]"`
-
-echo $ac_n "checking for $_prog_name in iOS SDK""... $ac_c" 1>&6
-echo "configure:1258: checking for $_prog_name in iOS SDK" >&5
-if eval "test \"`echo '$''{'ac_cv_ios_path_STRIP'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
-
-_path=`xcrun --sdk $ios_sdk --find $_prog_name 2>/dev/null`
-_res=$?
-if test $_res -ne 0; then
- { echo "configure: error: Could not find '$_prog_name' in the iOS SDK" 1>&2; echo "configure: error: Could not find '$_prog_name' in the iOS SDK" 1>&5; exit 1; }
-fi
-ac_cv_ios_path_STRIP=$_path
-
-fi
-
-echo "$ac_t""$ac_cv_ios_path_STRIP" 1>&6
-STRIP="${ac_cv_ios_path_STRIP}"
-
- export PKG_CONFIG_PATH=${ios_sdk_path}/usr/lib/pkgconfig/
-fi
-
-
-
- ;;
-esac
-
-
-
-
-
-
-AR_FLAGS='crs $@'
-
-if test "$COMPILE_ENVIRONMENT"; then
-
-if test "$target" != "$host"; then
-
-echo "cross compiling from $host to $target"
-
-if test -z "$HOST_AR_FLAGS"; then
- HOST_AR_FLAGS="$AR_FLAGS"
-fi
-for ac_prog in $HOST_RANLIB ranlib
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1304: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_HOST_RANLIB'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$HOST_RANLIB"; then
- ac_cv_prog_HOST_RANLIB="$HOST_RANLIB" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy=":"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_HOST_RANLIB="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-HOST_RANLIB="$ac_cv_prog_HOST_RANLIB"
-if test -n "$HOST_RANLIB"; then
- echo "$ac_t""$HOST_RANLIB" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$HOST_RANLIB" && break
-done
-test -n "$HOST_RANLIB" || HOST_RANLIB="ranlib"
-
-for ac_prog in $HOST_AR ar
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1339: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_HOST_AR'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$HOST_AR"; then
- ac_cv_prog_HOST_AR="$HOST_AR" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy=":"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_HOST_AR="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-HOST_AR="$ac_cv_prog_HOST_AR"
-if test -n "$HOST_AR"; then
- echo "$ac_t""$HOST_AR" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$HOST_AR" && break
-done
-test -n "$HOST_AR" || HOST_AR="ar"
-
-
-_SAVE_PATH=$PATH
-case "${TOOLCHAIN_PREFIX}" in
-/*)
- PATH="/:$PATH"
- ;;
-esac
-# Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1379: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_CC="gcc"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1409: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_prog_rejected=no
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
- fi
- ac_cv_prog_CC="cc"
- break
- fi
- done
- IFS="$ac_save_ifs"
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $# -gt 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- set dummy "$ac_dir/$ac_word" "$@"
- shift
- ac_cv_prog_CC="$@"
- fi
-fi
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
- if test -z "$CC"; then
- case "`uname -s`" in
- *win32* | *WIN32*)
- # Extract the first word of "cl", so it can be a program name with args.
-set dummy cl; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1460: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_CC="cl"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
- ;;
- esac
- fi
- test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; echo "configure: error: no acceptable cc found in \$PATH" 1>&5; exit 1; }
-fi
-
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1492: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-cat > conftest.$ac_ext << EOF
-
-#line 1503 "configure"
-#include "confdefs.h"
-
-main(){return(0);}
-EOF
-if { (eval echo configure:1508: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- ac_cv_prog_cc_works=yes
- # If we can't run a trivial program, we are probably using a cross compiler.
- if (./conftest; exit) 2>/dev/null; then
- ac_cv_prog_cc_cross=no
- else
- ac_cv_prog_cc_cross=yes
- fi
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- ac_cv_prog_cc_works=no
-fi
-rm -fr conftest*
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
-if test $ac_cv_prog_cc_works = no; then
- { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&5; exit 1; }
-fi
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1534: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
-echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1539: checking whether we are using GNU C" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.c <<EOF
-#ifdef __GNUC__
- yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1548: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
- ac_cv_prog_gcc=yes
-else
- ac_cv_prog_gcc=no
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gcc" 1>&6
-
-if test $ac_cv_prog_gcc = yes; then
- GCC=yes
-else
- GCC=
-fi
-
-ac_test_CFLAGS="${CFLAGS+set}"
-ac_save_CFLAGS="$CFLAGS"
-CFLAGS=
-echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1567: checking whether ${CC-cc} accepts -g" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- echo 'void f(){}' > conftest.c
-if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
- ac_cv_prog_cc_g=yes
-else
- ac_cv_prog_cc_g=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS="$ac_save_CFLAGS"
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
-
-for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1603: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$CXX"; then
- ac_cv_prog_CXX="$CXX" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_CXX="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-CXX="$ac_cv_prog_CXX"
-if test -n "$CXX"; then
- echo "$ac_t""$CXX" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$CXX" && break
-done
-test -n "$CXX" || CXX="gcc"
-
-
-echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1635: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
-
-ac_ext=C
-# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cxx_cross
-
-cat > conftest.$ac_ext << EOF
-
-#line 1646 "configure"
-#include "confdefs.h"
-
-int main(){return(0);}
-EOF
-if { (eval echo configure:1651: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- ac_cv_prog_cxx_works=yes
- # If we can't run a trivial program, we are probably using a cross compiler.
- if (./conftest; exit) 2>/dev/null; then
- ac_cv_prog_cxx_cross=no
- else
- ac_cv_prog_cxx_cross=yes
- fi
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- ac_cv_prog_cxx_works=no
-fi
-rm -fr conftest*
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo "$ac_t""$ac_cv_prog_cxx_works" 1>&6
-if test $ac_cv_prog_cxx_works = no; then
- { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&5; exit 1; }
-fi
-echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1677: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
-echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
-cross_compiling=$ac_cv_prog_cxx_cross
-
-echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:1682: checking whether we are using GNU C++" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.C <<EOF
-#ifdef __GNUC__
- yes;
-#endif
-EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1691: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
- ac_cv_prog_gxx=yes
-else
- ac_cv_prog_gxx=no
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gxx" 1>&6
-
-if test $ac_cv_prog_gxx = yes; then
- GXX=yes
-else
- GXX=
-fi
-
-ac_test_CXXFLAGS="${CXXFLAGS+set}"
-ac_save_CXXFLAGS="$CXXFLAGS"
-CXXFLAGS=
-echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:1710: checking whether ${CXX-g++} accepts -g" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- echo 'void f(){}' > conftest.cc
-if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then
- ac_cv_prog_cxx_g=yes
-else
- ac_cv_prog_cxx_g=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_prog_cxx_g" 1>&6
-if test "$ac_test_CXXFLAGS" = set; then
- CXXFLAGS="$ac_save_CXXFLAGS"
-elif test $ac_cv_prog_cxx_g = yes; then
- if test "$GXX" = yes; then
- CXXFLAGS="-g -O2"
- else
- CXXFLAGS="-g"
- fi
-else
- if test "$GXX" = yes; then
- CXXFLAGS="-O2"
- else
- CXXFLAGS=
- fi
-fi
-
-
-for ac_prog in "${TOOLCHAIN_PREFIX}ranlib"
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1747: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_RANLIB="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-RANLIB="$ac_cv_prog_RANLIB"
-if test -n "$RANLIB"; then
- echo "$ac_t""$RANLIB" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$RANLIB" && break
-done
-test -n "$RANLIB" || RANLIB=":"
-
-for ac_prog in "${TOOLCHAIN_PREFIX}ar"
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1782: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$AR"; then
- ac_cv_prog_AR="$AR" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_AR="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-AR="$ac_cv_prog_AR"
-if test -n "$AR"; then
- echo "$ac_t""$AR" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$AR" && break
-done
-test -n "$AR" || AR=":"
-
-for ac_prog in "${TOOLCHAIN_PREFIX}as"
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1817: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$AS"; then
- ac_cv_prog_AS="$AS" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_AS="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-AS="$ac_cv_prog_AS"
-if test -n "$AS"; then
- echo "$ac_t""$AS" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$AS" && break
-done
-test -n "$AS" || AS=":"
-
-for ac_prog in "${TOOLCHAIN_PREFIX}lipo"
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1852: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_LIPO'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$LIPO"; then
- ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_LIPO="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-LIPO="$ac_cv_prog_LIPO"
-if test -n "$LIPO"; then
- echo "$ac_t""$LIPO" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$LIPO" && break
-done
-test -n "$LIPO" || LIPO=":"
-
-for ac_prog in "${TOOLCHAIN_PREFIX}strip"
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1887: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$STRIP"; then
- ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_STRIP="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-STRIP="$ac_cv_prog_STRIP"
-if test -n "$STRIP"; then
- echo "$ac_t""$STRIP" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$STRIP" && break
-done
-test -n "$STRIP" || STRIP=":"
-
-for ac_prog in "${TOOLCHAIN_PREFIX}windres"
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1922: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$WINDRES"; then
- ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_WINDRES="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-WINDRES="$ac_cv_prog_WINDRES"
-if test -n "$WINDRES"; then
- echo "$ac_t""$WINDRES" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$WINDRES" && break
-done
-test -n "$WINDRES" || WINDRES=":"
-
-for ac_prog in "${TOOLCHAIN_PREFIX}otool"
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1957: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_OTOOL'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$OTOOL"; then
- ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_OTOOL="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-OTOOL="$ac_cv_prog_OTOOL"
-if test -n "$OTOOL"; then
- echo "$ac_t""$OTOOL" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$OTOOL" && break
-done
-test -n "$OTOOL" || OTOOL=":"
-
-for ac_prog in "${TOOLCHAIN_PREFIX}install_name_tool"
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1992: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_INSTALL_NAME_TOOL'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$INSTALL_NAME_TOOL"; then
- ac_cv_prog_INSTALL_NAME_TOOL="$INSTALL_NAME_TOOL" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_INSTALL_NAME_TOOL="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-INSTALL_NAME_TOOL="$ac_cv_prog_INSTALL_NAME_TOOL"
-if test -n "$INSTALL_NAME_TOOL"; then
- echo "$ac_t""$INSTALL_NAME_TOOL" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$INSTALL_NAME_TOOL" && break
-done
-test -n "$INSTALL_NAME_TOOL" || INSTALL_NAME_TOOL=":"
-
-for ac_prog in "${TOOLCHAIN_PREFIX}objcopy"
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2027: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_OBJCOPY'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$OBJCOPY"; then
- ac_cv_prog_OBJCOPY="$OBJCOPY" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_OBJCOPY="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-OBJCOPY="$ac_cv_prog_OBJCOPY"
-if test -n "$OBJCOPY"; then
- echo "$ac_t""$OBJCOPY" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$OBJCOPY" && break
-done
-test -n "$OBJCOPY" || OBJCOPY=":"
-
-PATH=$_SAVE_PATH
-
-else
- # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2063: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_CC="gcc"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2093: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_prog_rejected=no
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
- fi
- ac_cv_prog_CC="cc"
- break
- fi
- done
- IFS="$ac_save_ifs"
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $# -gt 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- set dummy "$ac_dir/$ac_word" "$@"
- shift
- ac_cv_prog_CC="$@"
- fi
-fi
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
- if test -z "$CC"; then
- case "`uname -s`" in
- *win32* | *WIN32*)
- # Extract the first word of "cl", so it can be a program name with args.
-set dummy cl; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2144: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_CC="cl"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
- ;;
- esac
- fi
- test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; echo "configure: error: no acceptable cc found in \$PATH" 1>&5; exit 1; }
-fi
-
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:2176: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-cat > conftest.$ac_ext << EOF
-
-#line 2187 "configure"
-#include "confdefs.h"
-
-main(){return(0);}
-EOF
-if { (eval echo configure:2192: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- ac_cv_prog_cc_works=yes
- # If we can't run a trivial program, we are probably using a cross compiler.
- if (./conftest; exit) 2>/dev/null; then
- ac_cv_prog_cc_cross=no
- else
- ac_cv_prog_cc_cross=yes
- fi
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- ac_cv_prog_cc_works=no
-fi
-rm -fr conftest*
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
-if test $ac_cv_prog_cc_works = no; then
- { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&5; exit 1; }
-fi
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:2218: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
-echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:2223: checking whether we are using GNU C" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.c <<EOF
-#ifdef __GNUC__
- yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2232: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
- ac_cv_prog_gcc=yes
-else
- ac_cv_prog_gcc=no
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gcc" 1>&6
-
-if test $ac_cv_prog_gcc = yes; then
- GCC=yes
-else
- GCC=
-fi
-
-ac_test_CFLAGS="${CFLAGS+set}"
-ac_save_CFLAGS="$CFLAGS"
-CFLAGS=
-echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:2251: checking whether ${CC-cc} accepts -g" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- echo 'void f(){}' > conftest.c
-if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
- ac_cv_prog_cc_g=yes
-else
- ac_cv_prog_cc_g=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS="$ac_save_CFLAGS"
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
-
- case "$target" in
- *-mingw*)
- # Work around the conftest.exe access problem on Windows
- sleep 2
- esac
- for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2292: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$CXX"; then
- ac_cv_prog_CXX="$CXX" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_CXX="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-CXX="$ac_cv_prog_CXX"
-if test -n "$CXX"; then
- echo "$ac_t""$CXX" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$CXX" && break
-done
-test -n "$CXX" || CXX="gcc"
-
-
-echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:2324: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
-
-ac_ext=C
-# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cxx_cross
-
-cat > conftest.$ac_ext << EOF
-
-#line 2335 "configure"
-#include "confdefs.h"
-
-int main(){return(0);}
-EOF
-if { (eval echo configure:2340: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- ac_cv_prog_cxx_works=yes
- # If we can't run a trivial program, we are probably using a cross compiler.
- if (./conftest; exit) 2>/dev/null; then
- ac_cv_prog_cxx_cross=no
- else
- ac_cv_prog_cxx_cross=yes
- fi
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- ac_cv_prog_cxx_works=no
-fi
-rm -fr conftest*
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo "$ac_t""$ac_cv_prog_cxx_works" 1>&6
-if test $ac_cv_prog_cxx_works = no; then
- { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&5; exit 1; }
-fi
-echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:2366: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
-echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
-cross_compiling=$ac_cv_prog_cxx_cross
-
-echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:2371: checking whether we are using GNU C++" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.C <<EOF
-#ifdef __GNUC__
- yes;
-#endif
-EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:2380: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
- ac_cv_prog_gxx=yes
-else
- ac_cv_prog_gxx=no
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gxx" 1>&6
-
-if test $ac_cv_prog_gxx = yes; then
- GXX=yes
-else
- GXX=
-fi
-
-ac_test_CXXFLAGS="${CXXFLAGS+set}"
-ac_save_CXXFLAGS="$CXXFLAGS"
-CXXFLAGS=
-echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:2399: checking whether ${CXX-g++} accepts -g" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- echo 'void f(){}' > conftest.cc
-if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then
- ac_cv_prog_cxx_g=yes
-else
- ac_cv_prog_cxx_g=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_prog_cxx_g" 1>&6
-if test "$ac_test_CXXFLAGS" = set; then
- CXXFLAGS="$ac_save_CXXFLAGS"
-elif test $ac_cv_prog_cxx_g = yes; then
- if test "$GXX" = yes; then
- CXXFLAGS="-g -O2"
- else
- CXXFLAGS="-g"
- fi
-else
- if test "$GXX" = yes; then
- CXXFLAGS="-O2"
- else
- CXXFLAGS=
- fi
-fi
-
- # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2433: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_RANLIB="ranlib"
- break
- fi
- done
- IFS="$ac_save_ifs"
- test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
-fi
-fi
-RANLIB="$ac_cv_prog_RANLIB"
-if test -n "$RANLIB"; then
- echo "$ac_t""$RANLIB" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
- for ac_prog in $AS as
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2465: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_AS'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- case "$AS" in
- /*)
- ac_cv_path_AS="$AS" # Let the user override the test with a path.
- ;;
- ?:/*)
- ac_cv_path_AS="$AS" # Let the user override the test with a dos path.
- ;;
- *)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_path_AS="$ac_dir/$ac_word"
- break
- fi
- done
- IFS="$ac_save_ifs"
- ;;
-esac
-fi
-AS="$ac_cv_path_AS"
-if test -n "$AS"; then
- echo "$ac_t""$AS" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$AS" && break
-done
-test -n "$AS" || AS="$CC"
-
- if test "$msyshost"; then
- case "$AS" in
- /*)
- tmp_DIRNAME=`dirname "$AS"`
- tmp_BASENAME=`basename "$AS"`
- tmp_PWD=`cd "$tmp_DIRNAME" && pwd -W`
- AS="$tmp_PWD/$tmp_BASENAME"
- if test -e "$AS.exe"; then
- AS="$AS.exe"
- fi
- esac
- fi
-
- for ac_prog in ar
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2519: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$AR"; then
- ac_cv_prog_AR="$AR" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_AR="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-AR="$ac_cv_prog_AR"
-if test -n "$AR"; then
- echo "$ac_t""$AR" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$AR" && break
-done
-test -n "$AR" || AR=":"
-
- for ac_prog in strip
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2554: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$STRIP"; then
- ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_STRIP="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-STRIP="$ac_cv_prog_STRIP"
-if test -n "$STRIP"; then
- echo "$ac_t""$STRIP" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$STRIP" && break
-done
-test -n "$STRIP" || STRIP=":"
-
- for ac_prog in windres
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2589: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$WINDRES"; then
- ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_WINDRES="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-WINDRES="$ac_cv_prog_WINDRES"
-if test -n "$WINDRES"; then
- echo "$ac_t""$WINDRES" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$WINDRES" && break
-done
-test -n "$WINDRES" || WINDRES=":"
-
- for ac_prog in otool
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2624: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_OTOOL'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$OTOOL"; then
- ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_OTOOL="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-OTOOL="$ac_cv_prog_OTOOL"
-if test -n "$OTOOL"; then
- echo "$ac_t""$OTOOL" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$OTOOL" && break
-done
-test -n "$OTOOL" || OTOOL=":"
-
- if test -z "$HOST_RANLIB"; then
- HOST_RANLIB="$RANLIB"
- fi
- if test -z "$HOST_AR"; then
- HOST_AR="$AR"
- fi
- if test -z "$HOST_AR_FLAGS"; then
- HOST_AR_FLAGS="$AR_FLAGS"
- fi
-fi
-
-if test -n "$MOZ_WINCONSOLE"; then
- cat >> confdefs.pytmp <<\EOF
- (''' MOZ_WINCONSOLE ''', ' 1 ')
-EOF
-cat >> confdefs.h <<\EOF
-#define MOZ_WINCONSOLE 1
-EOF
-
-fi
-
-
-GNU_AS=
-
-GNU_CC=
-GNU_CXX=
-if test "$CC_TYPE" = "gcc"; then
- GNU_CC=1
- GNU_CXX=1
-fi
-
-if test "`echo | $AS -o conftest.out -v 2>&1 | grep -c GNU`" != "0"; then
- GNU_AS=1
-fi
-rm -f conftest.out
-
-CLANG_CC=
-CLANG_CXX=
-CLANG_CL=
-if test "$CC_TYPE" = "clang"; then
- GNU_CC=1
- GNU_CXX=1
- CLANG_CC=1
- CLANG_CXX=1
-fi
-if test "$CC_TYPE" = "clang-cl"; then
- CLANG_CL=1
-fi
-
-if test "$GNU_CC"; then
- if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
- GCC_USE_GNU_LD=1
- fi
-fi
-
-
-
-
-
-
-WINVER=601
-
-case "$target" in
-*-mingw*)
- if test "$GCC" != "yes"; then
- # Check to see if we are really running in a msvc environemnt
- _WIN32_MSVC=1
- for ac_prog in midl
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2726: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_MIDL'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$MIDL"; then
- ac_cv_prog_MIDL="$MIDL" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_MIDL="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-MIDL="$ac_cv_prog_MIDL"
-if test -n "$MIDL"; then
- echo "$ac_t""$MIDL" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$MIDL" && break
-done
-
-
- # Make sure compilers are valid
- CFLAGS="$CFLAGS -TC -nologo"
- CXXFLAGS="$CXXFLAGS -TP -nologo"
-
- ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
- cat > conftest.$ac_ext <<EOF
-#line 2768 "configure"
-#include "confdefs.h"
-#include <stdio.h>
-int main() {
- printf("Hello World\n");
-; return 0; }
-EOF
-if { (eval echo configure:2775: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- :
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- { echo "configure: error: \$(CC) test failed. You must have MS VC++ in your path to build." 1>&2; echo "configure: error: \$(CC) test failed. You must have MS VC++ in your path to build." 1>&5; exit 1; }
-fi
-rm -f conftest*
-
- ac_ext=C
-# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cxx_cross
-
- cat > conftest.$ac_ext <<EOF
-#line 2793 "configure"
-#include "confdefs.h"
-#include <new.h>
-int main() {
- unsigned *test = new unsigned(42);
-; return 0; }
-EOF
-if { (eval echo configure:2800: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- :
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- { echo "configure: error: \$(CXX) test failed. You must have MS VC++ in your path to build." 1>&2; echo "configure: error: \$(CXX) test failed. You must have MS VC++ in your path to build." 1>&5; exit 1; }
-fi
-rm -f conftest*
- ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-
-
- _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
-
-
- _MSC_VER=`echo ${CC_VERSION} | cut -c 1-2,4-5`
-
- cat >> confdefs.pytmp <<\EOF
- (''' _CRT_SECURE_NO_WARNINGS ''', ' 1 ')
-EOF
-cat >> confdefs.h <<\EOF
-#define _CRT_SECURE_NO_WARNINGS 1
-EOF
-
- cat >> confdefs.pytmp <<\EOF
- (''' _CRT_NONSTDC_NO_WARNINGS ''', ' 1 ')
-EOF
-cat >> confdefs.h <<\EOF
-#define _CRT_NONSTDC_NO_WARNINGS 1
-EOF
-
- cat >> confdefs.pytmp <<\EOF
- (''' _USE_MATH_DEFINES ''', ' 1 ')
-EOF
-cat >> confdefs.h <<\EOF
-#define _USE_MATH_DEFINES 1
-EOF
- # Otherwise MSVC's math.h doesn't #define M_PI.
-
- _CC_SUITE=14
- MSVC_C_RUNTIME_DLL=vcruntime140.dll
- MSVC_CXX_RUNTIME_DLL=msvcp140.dll
-
- ac_safe=`echo "dia2.h" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for dia2.h""... $ac_c" 1>&6
-echo "configure:2851: checking for dia2.h" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 2856 "configure"
-#include "confdefs.h"
-
-#include <dia2.h>
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:2864: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-
- if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- MSVC_HAS_DIA_SDK=1
- else
- echo "$ac_t""no" 1>&6
-
- fi
-
- if test -n "$MSVC_HAS_DIA_SDK"; then
- cat >> confdefs.pytmp <<\EOF
- (''' MSVC_HAS_DIA_SDK ''', ' 1 ')
-EOF
-cat >> confdefs.h <<\EOF
-#define MSVC_HAS_DIA_SDK 1
-EOF
-
- fi
-
- if test "$_MSC_VER" -ge "1910"; then # VS2017+
- # C5038: Enable initializer list order warnings
- # The -w1#### flag treats warning C#### as if it was a warning level
- # 1 warning, and thus enables it because we enable /W3 warnings. We
- # don't use -we#### because it would enable warning C#### but treat
- # it as an error, even in third-party code.
- # https://docs.microsoft.com/en-us/cpp/build/reference/compiler-option-warning-level
- CXXFLAGS="$CXXFLAGS -w15038"
- fi
-
- # C5026: move constructor was implicitly defined as deleted
- CXXFLAGS="$CXXFLAGS -wd5026"
-
- # C5027: move assignment operator was implicitly defined as deleted
- CXXFLAGS="$CXXFLAGS -wd5027"
-
- # -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146)
- CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-"
-
- # https://connect.microsoft.com/VisualStudio/feedback/details/888527/warnings-on-dbghelp-h
- # for dbghelp.h, imagehlp.h, and shobj.h
- # C4091: 'typedef ': ignored on left of '' when no variable is declared
- CFLAGS="$CFLAGS -wd4091"
- CXXFLAGS="$CXXFLAGS -wd4091"
-
- # This is intended as a temporary hack to support building with VS2015.
- # 'noexcept' used with no exception handling mode specified;
- # termination on exception is not guaranteed. Specify /EHsc
- CXXFLAGS="$CXXFLAGS -wd4577"
-
- if test -n "$WIN_UCRT_REDIST_DIR"; then
- if test ! -d "$WIN_UCRT_REDIST_DIR"; then
- { echo "configure: error: Invalid Windows UCRT Redist directory: ${WIN_UCRT_REDIST_DIR}" 1>&2; echo "configure: error: Invalid Windows UCRT Redist directory: ${WIN_UCRT_REDIST_DIR}" 1>&5; exit 1; }
- fi
- WIN_UCRT_REDIST_DIR=`cd "$WIN_UCRT_REDIST_DIR" && pwd -W`
- fi
-
-
-
-
-
- cat >> confdefs.pytmp <<\EOF
- (''' HAVE_SEH_EXCEPTIONS ''', ' 1 ')
-EOF
-cat >> confdefs.h <<\EOF
-#define HAVE_SEH_EXCEPTIONS 1
-EOF
-
-
- if test -n "$WIN32_REDIST_DIR"; then
- if test ! -d "$WIN32_REDIST_DIR"; then
- { echo "configure: error: Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}" 1>&2; echo "configure: error: Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}" 1>&5; exit 1; }
- fi
- WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd -W`
- fi
-
- # Check linker version, except in lld builds
- case "$LINKER" in
- *lld*)
- ;;
- *)
- _LD_FULL_VERSION=`"${LINKER}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
- _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
- if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
- { echo "configure: error: The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE." 1>&2; echo "configure: error: The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE." 1>&5; exit 1; }
- fi
- ;;
- esac
-
- INCREMENTAL_LINKER=1
-
- # Set midl environment
- case "$target" in
- i*86-*)
- MIDL_FLAGS="${MIDL_FLAGS} -env win32"
- ;;
- x86_64-*)
- MIDL_FLAGS="${MIDL_FLAGS} -env x64"
- ;;
- esac
-
- unset _MSVC_VER_FILTER
-
- WRAP_STL_INCLUDES=1
- STL_FLAGS="-I${DIST}/stl_wrappers"
- CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0"
- CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0"
- else
- # Check w32api version
- _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
- _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
- echo $ac_n "checking for w32api version >= $W32API_VERSION""... $ac_c" 1>&6
-echo "configure:2986: checking for w32api version >= $W32API_VERSION" >&5
- cat > conftest.$ac_ext <<EOF
-#line 2988 "configure"
-#include "confdefs.h"
-#include <w32api.h>
-int main() {
-#if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
- (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
- __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
- #error "test failed."
- #endif
-
-; return 0; }
-EOF
-if { (eval echo configure:3000: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- res=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- res=no
-fi
-rm -f conftest*
- echo "$ac_t""$res" 1>&6
- if test "$res" != "yes"; then
- { echo "configure: error: w32api version $W32API_VERSION or higher required." 1>&2; echo "configure: error: w32api version $W32API_VERSION or higher required." 1>&5; exit 1; }
- fi
- # Check windres version
- echo $ac_n "checking for windres version >= $WINDRES_VERSION""... $ac_c" 1>&6
-echo "configure:3016: checking for windres version >= $WINDRES_VERSION" >&5
- _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
- echo "$ac_t""$_WINDRES_VERSION" 1>&6
- _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
- _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
- _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
- WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
- WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
- WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
- if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
- "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
- "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
- "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
- "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
- "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
- then
- { echo "configure: error: windres version $WINDRES_VERSION or higher is required to build." 1>&2; echo "configure: error: windres version $WINDRES_VERSION or higher is required to build." 1>&5; exit 1; }
- fi
-
- for ac_prog in $target-widl widl
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3040: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_MIDL'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$MIDL"; then
- ac_cv_prog_MIDL="$MIDL" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_MIDL="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-MIDL="$ac_cv_prog_MIDL"
-if test -n "$MIDL"; then
- echo "$ac_t""$MIDL" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$MIDL" && break
-done
-
- if test -n "$MIDL"; then
- case "$target" in
- i*86-*)
- MIDL_FLAGS="$MIDL_FLAGS --win32 -m32"
- ;;
- x86_64-*)
- MIDL_FLAGS="$MIDL_FLAGS --win64 -m64"
- ;;
- esac
- fi
-
- # strsafe.h on mingw uses macros for function deprecation that pollutes namespace
- # causing problems with local implementations with the same name.
- cat >> confdefs.pytmp <<\EOF
- (''' STRSAFE_NO_DEPRECATE ''', ' 1 ')
-EOF
-cat >> confdefs.h <<\EOF
-#define STRSAFE_NO_DEPRECATE 1
-EOF
-
- fi # !GNU_CC
-
- cat >> confdefs.pytmp <<EOF
- (''' WINVER ''', r''' 0x$WINVER ''')