summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--accessible/generic/Accessible.cpp6
-rw-r--r--browser/app/blocklist.xml282
-rw-r--r--browser/base/content/browser-menubar.inc6
-rw-r--r--browser/base/content/utilityOverlay.js12
-rw-r--r--browser/components/enterprisepolicies/EnterprisePolicies.js9
-rw-r--r--browser/components/enterprisepolicies/Policies.jsm70
-rw-r--r--browser/components/enterprisepolicies/schemas/policies-schema.json28
-rw-r--r--browser/components/enterprisepolicies/tests/browser/browser.ini1
-rw-r--r--browser/components/enterprisepolicies/tests/browser/browser_policies_simple_pref_policies.js31
-rw-r--r--browser/components/enterprisepolicies/tests/browser/browser_policy_extensions.js51
-rw-r--r--browser/components/enterprisepolicies/tests/browser/browser_policy_support_menu.js28
-rw-r--r--browser/config/version.txt2
-rw-r--r--browser/config/version_display.txt2
-rw-r--r--browser/locales/searchplugins/baidu.xml4
-rw-r--r--build/upload_generated_sources.py7
-rw-r--r--comm/.gecko_rev.yml26
-rw-r--r--comm/.taskcluster.yml17
-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/cloudfile/wetransfer/moz.build12
-rw-r--r--comm/mail/components/cloudfile/wetransfer/webextension/_locales/ast/messages.json17
-rw-r--r--comm/mail/components/cloudfile/wetransfer/webextension/_locales/bg/messages.json17
-rw-r--r--comm/mail/components/cloudfile/wetransfer/webextension/_locales/bs/messages.json17
-rw-r--r--comm/mail/components/cloudfile/wetransfer/webextension/_locales/cs/messages.json3
-rw-r--r--comm/mail/components/cloudfile/wetransfer/webextension/_locales/fa/messages.json17
-rw-r--r--comm/mail/components/compose/content/MsgComposeCommands.js9
-rw-r--r--comm/mail/components/preferences/general.js3
-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.nsh9
-rw-r--r--comm/mail/test/mozmill/composition/test-focus.js6
-rw-r--r--comm/mail/themes/windows/mail/messenger.css5
-rw-r--r--comm/mail/themes/windows/mail/primaryToolbar.css6
-rw-r--r--comm/mailnews/addrbook/src/nsAbDirProperty.cpp11
-rw-r--r--comm/mailnews/imap/src/nsIMAPBodyShell.cpp9
-rw-r--r--comm/suite/app/Makefile.in60
-rw-r--r--comm/suite/app/macbuild/Contents/Info.plist.in34
-rw-r--r--comm/suite/app/moz.build28
-rw-r--r--comm/suite/app/splash.rc2
-rw-r--r--comm/suite/base/content/unix/platformCommunicatorOverlay.xul40
-rw-r--r--comm/suite/browser/browser-prefs.js8
-rw-r--r--comm/suite/browser/jar.mn2
-rw-r--r--comm/suite/browser/metadata.xul4
-rw-r--r--comm/suite/components/helpviewer/content/helpContextOverlay.xul12
-rw-r--r--comm/suite/components/nsSuiteGlue.js5
-rw-r--r--comm/suite/components/places/content/places.js2
-rw-r--r--comm/suite/components/places/tests/autocomplete/.eslintrc5
-rw-r--r--comm/suite/components/pref/content/pref-applicationManager.js12
-rw-r--r--comm/suite/components/pref/content/pref-applications.js123
-rw-r--r--comm/suite/components/pref/content/pref-cache.js9
-rw-r--r--comm/suite/components/pref/content/pref-cookies.js8
-rw-r--r--comm/suite/components/pref/content/pref-images.xul2
-rw-r--r--comm/suite/components/pref/content/pref-navigator.js17
-rw-r--r--comm/suite/components/pref/content/preferences.js9
-rw-r--r--comm/suite/components/shell/nsGNOMEShellService.cpp415
-rw-r--r--comm/suite/components/shell/nsGNOMEShellService.h7
-rw-r--r--comm/suite/config/mozconfigs/mozconfig.linux.common3
-rw-r--r--comm/suite/config/mozconfigs/mozconfig.macosx.common3
-rw-r--r--comm/suite/config/mozconfigs/mozconfig.win.common3
-rw-r--r--comm/suite/extensions/Makefile.in37
-rw-r--r--comm/suite/extensions/debugQA/Makefile.in8
-rw-r--r--comm/suite/extensions/debugQA/content/EditorInitPage.html22
-rw-r--r--comm/suite/extensions/debugQA/install.rdf.in (renamed from comm/suite/extensions/debugQA/install.rdf)0
-rw-r--r--comm/suite/extensions/debugQA/jar.mn2
-rw-r--r--comm/suite/extensions/debugQA/locales/jar.mn2
-rw-r--r--comm/suite/extensions/debugQA/locales/moz.build4
-rw-r--r--comm/suite/extensions/debugQA/moz.build14
-rw-r--r--comm/suite/installer/package-manifest.in6
-rw-r--r--comm/suite/installer/removed-files.in2
-rw-r--r--comm/suite/installer/windows/nsis/shared.nsh6
-rw-r--r--comm/suite/locales/Makefile.in3
-rw-r--r--comm/suite/locales/en-US/chrome/common/downloads/downloadmanager.dtd1
-rw-r--r--comm/suite/locales/en-US/chrome/common/help/developer_tools.xhtml12
-rw-r--r--comm/suite/locales/en-US/chrome/common/help/help-win.rdf6
-rw-r--r--comm/suite/locales/en-US/chrome/common/help/helpFileLayout.css22
-rw-r--r--comm/suite/locales/en-US/chrome/common/help/suite-toc.rdf12
-rw-r--r--comm/suite/locales/en-US/chrome/common/pref/mac/platformPrefOverlay.dtd4
-rw-r--r--comm/suite/locales/en-US/chrome/common/pref/pref-cookies.dtd1
-rw-r--r--comm/suite/locales/en-US/chrome/common/pref/pref-images.dtd2
-rw-r--r--comm/suite/locales/en-US/chrome/common/pref/pref-popups.dtd1
-rw-r--r--comm/suite/locales/en-US/chrome/common/pref/unix/platformPrefOverlay.dtd4
-rw-r--r--comm/suite/locales/en-US/chrome/common/pref/win/platformPrefOverlay.dtd4
-rw-r--r--comm/suite/locales/en-US/chrome/common/safeBrowsing.dtd1
-rw-r--r--comm/suite/locales/en-US/chrome/common/utilityOverlay.dtd62
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/addressbook/abMainWindow.dtd66
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/addressbook/abSelectAddressesDialog.dtd39
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/compose/addressingWidgetOverlay.dtd13
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/compose/messengercompose.dtd12
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/downloadheaders.dtd6
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/fieldMapImport.dtd2
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/folderpane.dtd8
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/importMsgs.properties6
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/mailOverlay.dtd4
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/mailTasksOverlay.dtd12
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/mailViewList.dtd1
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/mailViewSetup.dtd1
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/messenger.dtd14
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/msgAccountCentral.dtd23
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/msgFolderPickerOverlay.dtd4
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/msgSynchronize.dtd2
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/outlookImportMsgs.properties7
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/pgpmime.properties2
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/pref/am-server-advanced.dtd2
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/pref/am-server-top.dtd4
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/pref/pref-directory-add.dtd6
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/smime.properties4
-rw-r--r--comm/suite/locales/en-US/chrome/mailnews/textImportMsgs.properties5
-rw-r--r--comm/suite/locales/generic/profile/mimeTypes.rdf2
-rw-r--r--comm/suite/mailnews/components/addrbook/content/abCardViewOverlay.js264
-rw-r--r--comm/suite/mailnews/components/addrbook/content/abSelectAddressesDialog.js2
-rw-r--r--comm/suite/mailnews/components/addrbook/content/addressbook-panel.xul10
-rw-r--r--comm/suite/mailnews/components/addrbook/content/addressbook.js63
-rw-r--r--comm/suite/mailnews/components/compose/content/addressingWidgetOverlay.js11
-rw-r--r--comm/suite/mailnews/components/compose/content/addressingWidgetOverlay.xul65
-rw-r--r--comm/suite/mailnews/components/compose/content/mailComposeExtrasOverlay.xul12
-rw-r--r--comm/suite/mailnews/components/compose/content/messengercompose.xul61
-rw-r--r--comm/suite/mailnews/components/compose/content/prefs/pref-composing_messages.xul2
-rw-r--r--comm/suite/mailnews/components/compose/jar.mn2
-rw-r--r--comm/suite/mailnews/content/FilterListDialog.js6
-rw-r--r--comm/suite/mailnews/content/mac/platformMailnewsOverlay.xul4
-rw-r--r--comm/suite/mailnews/content/mail3PaneWindowCommands.js727
-rw-r--r--comm/suite/mailnews/content/messageWindow.js324
-rw-r--r--comm/suite/mailnews/content/messageWindow.xul2
-rw-r--r--comm/suite/mailnews/content/msgMail3PaneWindow.js6
-rw-r--r--comm/suite/mailnews/jar.mn2
-rw-r--r--comm/taskcluster/ci/release-mark-as-started/kind.yml43
-rw-r--r--comm/taskcluster/ci/repackage-l10n/kind.yml2
-rw-r--r--comm/taskcluster/ci/repackage/kind.yml2
-rw-r--r--config/external/icu/data/icudt60l.datbin11588432 -> 11588784 bytes
-rw-r--r--config/external/nspr/pr/moz.build2
-rw-r--r--config/milestone.txt2
-rw-r--r--docshell/base/nsDocShell.cpp9
-rw-r--r--docshell/base/nsDocShell.h5
-rw-r--r--dom/bindings/CallbackObject.h3
-rw-r--r--dom/bindings/Codegen.py45
-rw-r--r--dom/bindings/Record.h15
-rw-r--r--dom/canvas/CanvasRenderingContext2D.cpp44
-rw-r--r--dom/canvas/CanvasRenderingContext2D.h11
-rw-r--r--dom/canvas/CanvasUtils.cpp43
-rw-r--r--dom/canvas/CanvasUtils.h5
-rw-r--r--dom/canvas/ImageBitmap.cpp118
-rw-r--r--dom/canvas/ImageBitmap.h14
-rw-r--r--dom/canvas/ImageBitmapRenderingContext.cpp4
-rw-r--r--dom/canvas/WebGLBuffer.cpp2
-rw-r--r--dom/canvas/WebGLContext.h3
-rw-r--r--dom/canvas/WebGLTextureUpload.cpp18
-rw-r--r--dom/canvas/test/test_imagebitmap.html23
-rw-r--r--dom/events/DataTransfer.cpp12
-rw-r--r--dom/fetch/Fetch.cpp4
-rw-r--r--dom/html/HTMLCanvasElement.cpp43
-rw-r--r--dom/html/HTMLCanvasElement.h17
-rw-r--r--dom/indexedDB/ActorsParent.cpp46
-rw-r--r--dom/ipc/ContentParent.cpp3
-rw-r--r--dom/media/AudioConverter.cpp103
-rw-r--r--dom/media/MediaPrefs.h1
-rw-r--r--dom/media/eme/CDMProxy.h4
-rw-r--r--dom/media/eme/MediaKeys.cpp2
-rw-r--r--dom/media/eme/MediaKeys.h2
-rw-r--r--dom/media/eme/mediadrm/MediaDrmCDMProxy.cpp2
-rw-r--r--dom/media/eme/mediadrm/MediaDrmCDMProxy.h3
-rw-r--r--dom/media/gmp/ChromiumCDMParent.cpp5
-rw-r--r--dom/media/gmp/ChromiumCDMParent.h3
-rw-r--r--dom/media/gmp/ChromiumCDMProxy.cpp72
-rw-r--r--dom/media/gmp/ChromiumCDMProxy.h9
-rw-r--r--dom/media/ipc/VideoDecoderParent.cpp5
-rw-r--r--dom/media/platforms/PDMFactory.cpp3
-rw-r--r--dom/media/platforms/PDMFactory.h3
-rw-r--r--dom/media/platforms/wmf/WMFDecoderModule.cpp79
-rw-r--r--dom/tests/mochitest/general/test_clipboard_disallowed.html15
-rw-r--r--dom/u2f/U2F.cpp2
-rw-r--r--dom/webauthn/WebAuthnManager.cpp2
-rw-r--r--editor/libeditor/HTMLEditUtils.cpp28
-rw-r--r--editor/libeditor/HTMLEditUtils.h9
-rw-r--r--editor/libeditor/HTMLEditor.h1
-rw-r--r--editor/libeditor/HTMLStyleEditor.cpp11
-rw-r--r--gfx/ipc/GPUProcessManager.cpp4
-rw-r--r--gfx/ipc/VsyncBridgeChild.cpp12
-rw-r--r--gfx/ipc/VsyncBridgeChild.h1
-rw-r--r--gfx/ipc/VsyncIOThreadHolder.h8
-rw-r--r--gfx/layers/composite/CanvasLayerComposite.cpp6
-rw-r--r--gfx/layers/composite/ImageLayerComposite.cpp9
-rw-r--r--gfx/layers/composite/PaintedLayerComposite.cpp9
-rw-r--r--gfx/layers/ipc/CompositorManagerParent.cpp8
-rw-r--r--gfx/layers/ipc/CompositorManagerParent.h2
-rw-r--r--gfx/layers/ipc/ImageBridgeParent.cpp7
-rw-r--r--gfx/layers/mlgpu/PaintedLayerMLGPU.cpp6
-rw-r--r--gfx/skia/skia/src/core/SkPath.cpp5
-rw-r--r--gfx/src/DriverCrashGuard.cpp100
-rw-r--r--gfx/src/DriverCrashGuard.h22
-rw-r--r--gfx/thebes/gfxPrefs.h1
-rw-r--r--gfx/vr/ipc/VRManagerParent.cpp3
-rw-r--r--intl/icu/GIT-INFO5
-rw-r--r--intl/icu/source/common/unicode/uvernum.h6
-rw-r--r--intl/icu/source/common/wintz.cpp28
-rw-r--r--intl/icu/source/data/locales/ar.txt1
-rw-r--r--intl/icu/source/data/locales/ast.txt3
-rw-r--r--intl/icu/source/data/locales/bs_Cyrl.txt1
-rw-r--r--intl/icu/source/data/locales/cs.txt3
-rw-r--r--intl/icu/source/data/locales/de.txt1
-rw-r--r--intl/icu/source/data/locales/he.txt1
-rw-r--r--intl/icu/source/data/locales/hi.txt1
-rw-r--r--intl/icu/source/data/locales/hr.txt1
-rw-r--r--intl/icu/source/data/locales/id.txt1
-rw-r--r--intl/icu/source/data/locales/ja.txt2
-rw-r--r--intl/icu/source/data/locales/ko.txt1
-rw-r--r--intl/icu/source/data/locales/lo.txt1
-rw-r--r--intl/icu/source/data/locales/lt.txt1
-rw-r--r--intl/icu/source/data/locales/nb.txt3
-rw-r--r--intl/icu/source/data/locales/nl.txt3
-rw-r--r--intl/icu/source/data/locales/root.txt2
-rw-r--r--intl/icu/source/data/locales/ru.txt1
-rw-r--r--intl/icu/source/data/locales/sr.txt1
-rw-r--r--intl/icu/source/data/locales/sr_Latn.txt1
-rw-r--r--intl/icu/source/data/locales/sv.txt1
-rw-r--r--intl/icu/source/data/locales/th.txt1
-rw-r--r--intl/icu/source/data/locales/yue.txt1
-rw-r--r--intl/icu/source/data/locales/yue_Hans.txt1
-rw-r--r--intl/icu/source/data/locales/zh.txt3
-rw-r--r--intl/icu/source/data/locales/zh_Hant.txt3
-rw-r--r--intl/icu/source/data/misc/icuver.txt4
-rwxr-xr-x[-rw-r--r--]intl/icu/source/data/misc/metaZones.txt64
-rwxr-xr-x[-rw-r--r--]intl/icu/source/data/misc/timezoneTypes.txt1
-rwxr-xr-x[-rw-r--r--]intl/icu/source/data/misc/windowsZones.txt25
-rwxr-xr-x[-rw-r--r--]intl/icu/source/data/misc/zoneinfo64.txt1934
-rw-r--r--intl/icu/source/i18n/japancal.cpp3
-rw-r--r--intl/tzdata/GIT-INFO8
-rw-r--r--intl/tzdata/VERSION2
-rw-r--r--intl/tzdata/source/be/metaZones.resbin41488 -> 41488 bytes
-rw-r--r--intl/tzdata/source/be/zoneinfo64.resbin154256 -> 154224 bytes
-rw-r--r--intl/tzdata/source/ee/metaZones.resbin41488 -> 41488 bytes
-rw-r--r--intl/tzdata/source/ee/zoneinfo64.resbin154256 -> 154224 bytes
-rw-r--r--intl/tzdata/source/le/metaZones.resbin41488 -> 41488 bytes
-rw-r--r--intl/tzdata/source/le/zoneinfo64.resbin154256 -> 154224 bytes
-rw-r--r--intl/tzdata/source/metaZones.txt4
-rw-r--r--intl/tzdata/source/zoneinfo64.txt84
-rwxr-xr-xintl/update-icu.sh41
-rw-r--r--js/src/builtin/intl/DateTimeFormat.js7
-rw-r--r--js/src/builtin/intl/TimeZoneDataGenerated.h2
-rw-r--r--js/src/frontend/BytecodeEmitter.cpp25
-rw-r--r--js/src/frontend/BytecodeEmitter.h3
-rw-r--r--js/src/jit/CodeGenerator.cpp31
-rw-r--r--js/src/jit/arm/Assembler-arm.cpp7
-rw-r--r--js/src/jit/arm/MacroAssembler-arm.cpp5
-rw-r--r--js/src/tests/non262/Intl/DateTimeFormat/timeZone.js15
-rw-r--r--js/src/tests/non262/Intl/DateTimeFormat/timeZone_backward_links.js5
-rw-r--r--js/src/tests/non262/Intl/DateTimeFormat/timeZone_backzone.js2
-rw-r--r--js/src/tests/non262/Intl/DateTimeFormat/timeZone_backzone_links.js2
-rw-r--r--js/src/tests/non262/Intl/DateTimeFormat/timeZone_notbackward_links.js2
-rw-r--r--js/src/tests/non262/Intl/DateTimeFormat/tz-environment-variable.js2
-rw-r--r--js/src/vm/ProxyObject.cpp16
-rw-r--r--layout/base/nsLayoutUtils.cpp9
-rw-r--r--layout/style/ServoKeyframesRule.cpp11
-rw-r--r--media/libpng/png.c3
-rw-r--r--media/webrtc/trunk/webrtc/modules/video_capture/windows/MediaType.cpp8
-rw-r--r--netwerk/base/ProxyAutoConfig.cpp8
-rw-r--r--netwerk/base/moz.build5
-rw-r--r--netwerk/dns/effective_tld_names.dat97
-rw-r--r--python/mozbuild/mozbuild/mach_commands.py14
-rw-r--r--security/apps/AppTrustDomain.cpp19
-rw-r--r--security/apps/AppTrustDomain.h1
-rw-r--r--security/apps/addons-public-intermediate.crtbin0 -> 1841 bytes
-rw-r--r--security/apps/gen_cert_header.py1
-rw-r--r--security/apps/moz.build1
-rw-r--r--security/manager/ssl/StaticHPKPins.h8
-rw-r--r--security/manager/ssl/nsSTSPreloadList.inc6882
-rw-r--r--security/sandbox/chromium/sandbox/win/src/filesystem_policy.cc12
-rw-r--r--security/sandbox/chromium/sandbox/win/src/named_pipe_policy.cc1
-rw-r--r--security/sandbox/chromium/sandbox/win/src/process_thread_policy.cc1
-rw-r--r--security/sandbox/chromium/sandbox/win/src/registry_policy.cc4
-rw-r--r--security/sandbox/linux/SandboxFilter.cpp3
-rw-r--r--security/sandbox/mac/SandboxPolicies.h8
-rw-r--r--servo/components/style/gecko_string_cache/namespace.rs1
-rw-r--r--servo/components/style_traits/values.rs3
-rw-r--r--sourcestamp.txt2
-rw-r--r--taskcluster/ci/hazard/kind.yml2
-rw-r--r--taskcluster/ci/release-mark-as-started/kind.yml51
-rw-r--r--taskcluster/ci/source-test/kind.yml4
-rw-r--r--taskcluster/ci/spidermonkey/kind.yml2
-rw-r--r--taskcluster/ci/test/kind.yml3
-rw-r--r--taskcluster/ci/valgrind/kind.yml4
-rw-r--r--taskcluster/docs/attributes.rst5
-rw-r--r--taskcluster/docs/kinds.rst4
-rw-r--r--taskcluster/taskgraph/actions/add_new_jobs.py1
-rw-r--r--taskcluster/taskgraph/actions/add_talos.py1
-rw-r--r--taskcluster/taskgraph/actions/backfill.py1
-rw-r--r--taskcluster/taskgraph/actions/cancel.py1
-rw-r--r--taskcluster/taskgraph/actions/cancel_all.py1
-rw-r--r--taskcluster/taskgraph/actions/create_interactive.py1
-rw-r--r--taskcluster/taskgraph/actions/purge_caches.py1
-rw-r--r--taskcluster/taskgraph/actions/registry.py3
-rw-r--r--taskcluster/taskgraph/actions/release_promotion.py1
-rw-r--r--taskcluster/taskgraph/actions/rerun.py61
-rw-r--r--taskcluster/taskgraph/actions/retrigger.py176
-rw-r--r--taskcluster/taskgraph/actions/retrigger_mochitest.py1
-rw-r--r--taskcluster/taskgraph/actions/run_missing_tests.py1
-rw-r--r--taskcluster/taskgraph/transforms/release_mark_as_started.py57
-rw-r--r--taskcluster/taskgraph/transforms/task.py26
-rw-r--r--taskcluster/taskgraph/util/scriptworker.py1
-rw-r--r--testing/web-platform/meta/editing/run/removeformat.html.ini27
-rw-r--r--testing/web-platform/meta/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.cross.html.ini4
-rw-r--r--testing/web-platform/meta/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.redirect.html.ini4
-rw-r--r--testing/web-platform/meta/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.cross.html.ini4
-rw-r--r--testing/web-platform/meta/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.redirect.html.ini4
-rw-r--r--testing/web-platform/meta/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.cross.html.ini4
-rw-r--r--testing/web-platform/meta/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.redirect.html.ini4
-rw-r--r--testing/web-platform/meta/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.cross.html.ini4
-rw-r--r--testing/web-platform/meta/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.redirect.html.ini4
-rw-r--r--testing/web-platform/tests/2dcontext/imagebitmap/createImageBitmap-origin.sub.html81
-rw-r--r--testing/web-platform/tests/common/canvas-tests.js91
-rw-r--r--testing/web-platform/tests/editing/data/removeformat.js40
-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/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/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/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/enterprisepolicies/nsIEnterprisePolicies.idl7
-rw-r--r--toolkit/components/extensions/test/mochitest/head_webrequest.js8
-rw-r--r--toolkit/components/extensions/test/mochitest/test_ext_webrequest_basic.html6
-rw-r--r--toolkit/components/find/nsFind.cpp11
-rw-r--r--toolkit/components/find/nsIFind.idl4
-rw-r--r--toolkit/components/find/nsWebBrowserFind.cpp2
-rw-r--r--toolkit/components/places/PlacesUtils.jsm14
-rw-r--r--toolkit/components/places/tests/unit/test_PlacesUtils_unwrapNodes_place.js25
-rw-r--r--toolkit/components/places/tests/unit/xpcshell.ini1
-rw-r--r--toolkit/components/search/nsSearchService.js20
-rw-r--r--toolkit/components/typeaheadfind/nsTypeAheadFind.cpp2
-rw-r--r--toolkit/components/windowcreator/test/test_nsFind.html14
-rw-r--r--toolkit/crashreporter/breakpad-client/windows/crash_generation/crash_generation_server.cc29
-rw-r--r--toolkit/modules/addons/WebRequestUpload.jsm11
-rw-r--r--toolkit/mozapps/extensions/internal/XPIProvider.jsm2
-rw-r--r--toolkit/xre/moz.build1
-rw-r--r--widget/windows/nsClipboard.cpp16
-rw-r--r--xpcom/base/CycleCollectedJSRuntime.cpp10
-rw-r--r--xpcom/base/nsCycleCollector.cpp4
-rw-r--r--xpcom/base/nsMacUtilsImpl.cpp65
-rw-r--r--xpcom/base/nsMacUtilsImpl.h14
-rw-r--r--xpcom/threads/nsTimerImpl.cpp47
-rw-r--r--xpcom/threads/nsTimerImpl.h53
390 files changed, 9804 insertions, 5525 deletions
diff --git a/accessible/generic/Accessible.cpp b/accessible/generic/Accessible.cpp
index 6d1cfc3..e96ceac 100644
--- a/accessible/generic/Accessible.cpp
+++ b/accessible/generic/Accessible.cpp
@@ -2308,6 +2308,12 @@ Accessible* Accessible::CurrentItem() {
nsIDocument* DOMDoc = mContent->OwnerDoc();
dom::Element* activeDescendantElm = DOMDoc->GetElementById(id);
if (activeDescendantElm) {
+ if (nsContentUtils::ContentIsDescendantOf(mContent,
+ activeDescendantElm)) {
+ // Don't want a cyclical descendant relationship. That would be bad.
+ return nullptr;
+ }
+
DocAccessible* document = Document();
if (document) return document->GetAccessible(activeDescendantElm);
}
diff --git a/browser/app/blocklist.xml b/browser/app/blocklist.xml
index 7cf9a7b..93b3e58 100644
--- a/browser/app/blocklist.xml
+++ b/browser/app/blocklist.xml
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
-<blocklist lastupdate="1553080348264" xmlns="http://www.mozilla.org/2006/addons-blocklist">
+<blocklist lastupdate="1557222511299" xmlns="http://www.mozilla.org/2006/addons-blocklist">
<emItems>
<emItem blockID="i334" id="{0F827075-B026-42F3-885D-98981EE7B1AE}">
<prefs/>
@@ -2636,6 +2636,274 @@
<prefs/>
<versionRange minVersion="0" maxVersion="*" severity="3"/>
</emItem>
+ <emItem blockID="6cf1b676-f0b8-4fea-8a5f-64957650dc2e" id="/^((\{1c94bc8a-3ac1-12e1-aae7-0b314772229c\})|(\{8a22255c-4737-11e9-a86b-0bb66337cb31\})|(\{3fab603e-3ee1-1222-a859-5f85a3441216\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="e263fbec-7155-442f-aa82-cdf218f9e3d7" id="/^((\{157cd8f9-48f0-43a1-9bcf-c4316753e087\})|(\{157cd8f9-48f0-43a1-9bcf-c4316753e086\})|(\{157cd8f9-48f0-43a1-9bcf-c4316753e088\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="7abbecfb-5512-47d1-ba9b-96d6a61b85ee" id="{bc919484-f20e-48e2-a7c8-6642e111abce}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="a1f04f09-f4d5-4875-b4b1-a2c772178e8e" id="{7ab5c514-4ebe-22e9-a925-9b7c7317c373}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="0c09f067-6e5f-4ee0-9040-08b4297ebe02" id="{a9c33302-4c97-11e9-9a9d-af400df725e3}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="a4dca16a-9fa1-4b55-899c-0f8d5eda1a57" id="new-tab-search@mozzilla.xpi">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="e00b2639-8a4f-427a-80d8-7c4937c58f31" id="/^((\{36261798-4c2a-4206-89cc-6c28932b2e98\})|(\{b2b9bb64-78d5-43ca-b0cf-a9ee8460521b\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="fa6c7cdb-e477-4478-8dd4-3e1106be6aa3" id="/^((\{54c7e57f-8ef0-48d5-92a0-6e95d193a12c\})|(\{32d262da-e3cd-4300-aa0b-c284eb4e17bf\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="e1355888-e1cd-4d21-9652-c3000662ed88" id="/^((\{058769c7-784e-47a9-a2c4-dfd81bbf6c8c\})|(\{2a58598a-f951-4fb0-af2b-12fb7482bf33\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="50197dbd-71bc-492f-a0f1-6658ec454df4" id="/^((\{10f1b84d-79ca-41d0-97f6-abb53cec0765\})|(\{7891c029-0071-4534-b7f0-7288f14ee0ad\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="d78262b0-ecfc-475e-9759-f7319451cb43" id="/^((\{70c2cef0-6cc6-41b8-ad6b-bbd11182a101\})|(\{a0366612-376e-47e3-b5fa-b805c7176088\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="b32b14f5-0024-48fb-a4b6-1496add1dac0" id="/^((\{7dd03112-82a0-4c82-9957-117dedaac14a\})|(\{59fd3cac-1a4d-4f0f-a129-c241b203eb51\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="64fc6369-b504-4920-abab-f2cf3cc5424a" id="/^((\{00f77164-eca9-4353-916d-8ea493a54c8d\})|(\{0716b2a5-8181-45b8-b675-915e38903761\})|(\{26124967-7e32-4577-b998-7296c68d3eb9\})|(\{273052bc-fc67-4fc1-a6fd-e62acc3ddad1\})|(\{4b5f53ac-36ac-4018-80cb-f1106f60ef96\})|(\{61065f61-51aa-462c-aca0-f1addbfa202b\})|(\{63383006-d617-4a00-9ca7-30a6864782ee\})|(\{7629c987-59ea-4e2f-bcde-b55646ecd268\})|(\{78e8c8fa-32ce-432b-9a40-b615bff7cd96\})|(\{8e9c05df-e0f5-479f-abb9-858650cb471e\})|(\{947f1ac0-09f2-4016-a345-dad0d2ee8f57\})|(\{9b9f8124-47bc-4699-8557-45573995b0af\})|(\{ab159932-d1dd-4d16-9332-8302a01e0ced\})|(\{b7340504-f6ba-43cb-8bd6-5ead88d29898\})|(\{bcb9265f-20fd-4311-a33f-212c2d08043a\})|(\{f8701822-2814-4d5d-af01-cf7fde4fd510\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="7c705f73-9d1d-4ee9-ad11-347d18729adb" id="{2256fabf-19f1-4e12-9951-5d126dd9e928}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="c528f48a-9b2c-48ca-8b4a-eac442cc0bd0" id="{91f77263-866e-4acb-a569-f66ac47889f8}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="93dc42cc-4ff3-460d-a8f2-12f1d947b530" id="{a3f765c3-8dde-4467-ad6e-fd70c3333e50}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="5b4e4e75-cc96-4ca9-aa9f-6a2d2f6cd96a" id="{a9c33302-4c97-11e9-9a9d-af400df725e1}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="1809ea7a-8155-4ae7-8c83-ee7c749d30f5" id="{e555c358-121b-13fa-bf23-bb57da32d184}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="9c75fe89-7011-47ad-b213-57f5a81a4c89" id="{03dfffe0-509f-11e9-aa00-e7e13d49f3de}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="aacb25e1-71c5-4bee-ad16-e39e732210ba" id="/^((@searchlock-staging-automation)|(@searchlock-automation)|(@searchlock-fx)|(@searchlock-staging)|(jid1-vRJA7N8VwBoiXw@jetpack))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="04b2954e-4f83-4557-968e-2139a277bf1c" id="/^((\{6ab41e83-2a91-4c2a-babb-86107a1d1f75\})|(\{d84a9d0d-7a31-459e-b45a-2ad111884d1f\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="9fde5729-9be6-4955-9627-67742c5ed62a" id="sourcegraph-for-firefox@sourcegraph.com">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="19.4.2.1038" severity="1"/>
+ </emItem>
+ <emItem blockID="a1c376fe-20c5-4da3-9126-3fe95b874dce" id="/^((\{00b4b65b-79d9-4e92-bc1e-2b926918b91c\})|(\{0cb66591-e935-47e4-95c2-3063786f6555\})|(\{6cf25884-f86d-4a4e-a924-d95282ce5b71\})|(\{22cce9c6-a1de-457f-8938-c981b976b6f4\})|(\{89d99d4c-e7c4-4601-91a8-216e597a826b\})|(\{998d3ac7-b475-410e-ad3d-2eeb526c1853\})|(\{9423e8df-6200-45c0-877a-479c46e91b30\})|(\{64937e0b-6e00-4d5f-bf19-190d6614aae2\})|(\{91507dc4-c005-4534-80af-d8fbdeac29ed\})|(\{a2247e60-7b89-4857-a2fa-0eaee1cad460\})|(\{c9c28751-5865-449f-8e45-b3363edf9fb7\})|(\{cdfd004f-cddc-4ad7-8e2d-a58457e42b1f\})|(\{d3e7f35d-7d9f-4d38-9a2b-1581f6b3e870\})|(\{df574ffe-cce0-42db-857b-627cb164a4d4\})|(\{e06afe6e-ed52-40f8-82bf-d070a37387fb\})|(\{e7e7fb96-cfab-4a5b-85fe-20f621e1bc2e\})|(\{e12e5afd-bd1e-43c6-9288-321dc485cb1c\})|(\{e92d8545-0396-4808-96de-830c61c0d1b3\})|(\{e883b012-1987-4f37-8053-02e59e20c242\})|(\{ed3386c6-76c6-4786-a37b-9816d5f2a260\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="1344c583-9593-412f-a565-c6cc96a07c28" id="one-search@mozzilla.xpi">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="a158055b-3387-4961-a4a3-a820d9299e15" id="{d574e1f8-537d-4b6c-97bb-9f7a138f4d67}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="0eb3a151-ca6b-4dbb-81b3-c10635660c84" id="{35b9640e-ebbb-44b7-85af-d9ec3af3c6a6}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="3fb0ed8e-6e5d-489e-8c9d-b6f48705a742" id="{16768af9-4120-4566-95cf-c4234effa084}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="8742ec6a-2e51-4e94-bc6a-653dac08521b" id="{ea173fdc-f27a-482a-8a0a-61fd1aa2ee2e}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="e12a97c7-2c83-4e1c-a2c3-66a653bc6048" id="/^((\{743fc0de-1085-4078-8611-848024989608\})|(\{02acc043-f402-4e48-aa15-56ee1364e17c\})|(\{1b7892ab-6dbe-49d1-9c71-bbb70458c830\})|(\{25b3b5bc-b77a-49d1-ab56-c0e760fe02ff\})|(\{2c78aa89-8cdd-4a96-821a-e35628aea2fb\})|(\{2f154b99-05c2-4629-b687-f2aa031d9f65\})|(\{36df6f78-16c4-42c2-a6b8-9210a2953739\})|(\{40ada62f-72a8-46b7-8e50-4153f660ce34\})|(\{49f58462-fc24-472c-b85a-4a3dbbf48741\})|(\{4a8cb3fd-0400-47b3-a799-9f2964229bfa\})|(\{5429f6da-d7fe-4f1b-a85e-6dc721ec0037\})|(\{74480b2f-1198-45b3-86b3-ca0778482216\})|(\{777f1169-a824-459d-8a2d-ca2ffaf59424\})|(\{81e610be-656a-4a71-866d-dd94b5096c60\})|(\{81ee3e70-b6e4-44d0-b5c2-94ded26bb5ac\})|(\{881c71c1-6800-4e8b-89de-0d14ef67d588\})|(\{9b5d7f59-be9c-4f1e-bf0c-31f085c17726\})|(\{9eff0ead-25a4-429c-b4b2-280ba3c6f2d9\})|(\{ad1b7e87-e260-4aee-a602-ef234743443e\})|(\{b54a530a-cacc-4c76-a7c3-feafd4ce0b13\})|(\{bd0d7634-770e-4d9f-8309-d264a5fbbfa9\})|(\{bdf16cc8-3da6-4317-a1eb-2ab8adce6b66\})|(\{bf484a7f-49fd-4681-afa5-8a063d010a14\})|(\{c7cf6d86-207b-4231-a96a-bbfdc9fe59aa\})|(\{d33f83c2-dbc6-41d2-a8b9-28fdaa96985e\})|(\{d71757ee-edc7-44d5-b536-cb0370d7d9f6\})|(\{daf86db4-7dd4-47d4-a1d1-7c31f6b9bbe3\})|(\{e27060a0-5fb5-4844-b446-d2655d7681fa\})|(\{fae0d133-05dd-44e6-88e1-e218ca2b2caf\})|(\{fbf69005-55d8-4360-a562-255a8c285fea\})|(\{fd6d1b53-89f5-4d91-9234-fb3e1b067c1b\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="ddd97fae-7040-4758-811f-1dd53116e6ab" id="/^((\{bf163ed1-e9f9-4c98-ae4b-8391133472d1\})|(\{ec283482-2d66-49b2-9dc5-0d03bcbffe65\})|(\{0a19856e-4168-4765-a8ab-a3a34fa88ec1\})|(\{e2019dd1-4591-42e2-864a-535a99972b1a\})|(\{88a65f0c-f952-41f0-8868-f22fa12597b3\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="204b7b05-d8e1-4de3-86f9-fcf95edb40c0" id="{d85aa6ef-639b-43a1-8560-ddeb59935d10}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="dafcc63d-37e0-42e2-b439-59727cf9de48" id="{81425b21-cc8c-42d0-98e8-69844bcb7404}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="8a7efe6b-8670-4714-b4b2-08ce5f202ee7" id="/^((\{4b6e66db-ee0b-4fc3-abe6-b97cb4798faf\})|(\{8aff5f41-86f8-40f1-896d-954eae7fb670\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="a4f0ac78-ba85-4b5a-9d1f-f3f2c6ae4f7c" id="/^((\{6a99a9ec-f149-4ad3-b644-15e44290d00c\})|(\{cd9d1582-13dc-4ce1-9c83-4aaa31c6bc36\})|(\{3414a827-ee54-4331-85eb-736a824bb7e0\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="7fd0eb9c-9f6c-40ea-ba39-645cafb1d5a0" id="{c75432cb-980d-4e64-98c8-d7947b382a2c}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="ed01b7e5-73d1-42a6-9fc8-af2d83879854" id="/^((\{9946bf2f-0aef-4040-bc57-cdae2bde196a\})|(\{d511784e-d088-4fce-b77c-14c186f08641\})|(\{fe59312a-97bd-4ca7-bce3-b0db95b1e251\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="0d86ba71-7baa-4cb3-b3b8-da4ccdfa36b9" id="/^((\{0913599d-3094-44a7-8cc2-b8467d5afc7c\})|(\{7bee7f1b-d8ad-424d-807d-e69e6634988e\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="fc38e782-d55b-4fb7-8f9c-374aa18af09c" id="/^((\{61f433aa-45fd-42a9-9c90-c1d7820661d5\})|(\{86cd46b6-433a-439c-bff2-722846709f44\})|(\{98e126a4-4e70-4300-b893-3b2cca19bc9b\})|(\{8f42dc3a-1c46-4fc2-8c7f-dd76a63b1cf7\})|(\{a24d3582-2fc2-475c-8440-335736e17c6e\})|(\{cf0b5280-cd08-465d-ad7d-70308538f30a\})|(\{936f3c79-5dc9-4694-bca8-47932de3357a\})|(\{e48d5888-8736-4858-83ba-e816378ffef8\})|(\{5305f89c-ceec-4217-8bae-c9c376c7462b\})|(\{a2ac47e5-d225-4718-9b57-18a932f87610\})|(\{79f60f07-6aee-42cd-9105-c0a52f401316\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="6fd3ab94-8e38-47f3-b129-3ca8396d0a22" id="{be6ab6a9-7004-4c5c-8df9-8d36122d8b14}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="036e2e7d-5403-49be-92cf-b5187ceef7ec" id="/^((\{b37f383f-e60f-4eb1-ac0f-9147e0e8f2f7\})|(\{8ad567d2-3fe2-446b-bce9-a3acbe878dba\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="03554696-58fe-4b90-89d1-72b72f88f82e" id="/^((\{8220ccaf-15a4-4f47-a670-a4119a4296a4\})|(\{9da72c11-44d7-423c-b19c-c75cd6188c3e\})|(\{99d0e4d0-c5ef-4567-b74c-80c5ed21ad99\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="ea00841e-8dc2-4e11-9119-7a599e47d800" id="{608f71eb-5bd6-45d8-bc93-b9e812cf17b7}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="53ef1aad-7bdb-4f4e-8d46-55d6ec2d78ab" id="H.264.Addon.Test@firefox.com">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="371796e4-387a-4dd0-9ddc-47ba1dd85be7" id="{132cb2fd-a6ae-45d2-84cf-b48d591f037d}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="3a921aa8-d44a-4272-be63-0fd102577f59" id="{d8b03707-e39f-4b17-8e56-56354fb14af5}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="94621e2f-28a0-4b18-97c6-5f6203f5912e" id="{8ee8602c-aba6-4e2a-9faa-1724c3f4f9ba}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="881d3476-f18a-4560-b065-cded406783d2" id="{40cd7fd2-a3e4-43f9-9d86-0e0a70376203}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="8aff4cb0-4d5f-4e74-8db7-b04f616c3b60" id="{674fff65-6cd0-488a-9453-fb91fc3d7397}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="cbd7444f-e62a-4639-b172-845548b6d4a7" id="/^((\{880cacfe-5793-4346-89ce-fbbd368d394c\})|(\{f0780038-50b9-11e9-9c72-4ba2d8f2ec9f\})|(\{22ffe411-2b0e-11e9-87f9-c329f1f9c8d2\})|(\{cf4bae43-026f-4e7e-a85a-952a7ca697a1\})|(\{17052516-09be-11e9-a008-03419f6c8bc6\})|(\{333fb3de-18a8-18e8-b6d3-e73213911efb\})|(\{aa4abac2-1ffa-12aa-bbdd-9305cb2c1254\})|(\{72222e70-2fd6-11e9-956b-27f7787b8d2d\})|(\{637212d8-3484-11e9-9812-005056b22b42\})|(\{4a222e60-31de-1eca-8476-37565daf6afb\})|(\{7fc6d222-48d5-11e9-b586-17e94c73a1b1\})|(\{e111c358-121b-13fa-bf23-bb57da32d184\})|(\{9674445c-8dff-4580-96b2-99442a7ae9af\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="74ad8c8b-a65a-470c-aa2f-ca14e1e8774d" id="{3fab603e-3ee1-1222-a859-5f85a3441216}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="ae288e5e-78d5-4b49-8b4d-fa9f25c3baa2" id="{3f5f741d-a980-4b58-8552-b1ae328841f4}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="1b536121-fd82-4639-bc70-30d7060e42d3" id="/^((\{1601769e-0b0d-4c43-97a7-723ce374996b\})|(\{d714118b-5cdd-4829-9299-1066fecc0867\})|(\{e8671db6-24be-4744-808c-a63fb744ccca\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="20c25379-aed8-4ab4-9e7f-f2d3f5d948a7" id="{bbddf452-1a72-4a5d-a833-0416ac7fd76f}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="6a6cc6fb-dce1-49cd-b624-7b44afacf157" id="{0bd4e0af-664d-4273-a670-7cb3d0b5a4a5}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="5968da82-1d7e-407e-bf93-5d2247ce55c1" id="{4bf110f8-5f50-4a35-b7fa-64228bfa2d0b}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="af62a050-b136-4d56-ab3a-af85a2510bc4" id="{c65b18e1-cd3d-4773-a901-15a0753e7d81}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="3659d4a2-3121-45cd-b8b6-5b2c96ebc17f" id="{a1f6fa05-26cd-4399-a97a-7996067d04b0}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="e6371474-8681-4498-8e89-421f25fd2e12" id="{c11adb01-56bc-44d6-ac05-6f364e2afe01}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="71475499-ca6f-4b71-8bef-2b95cf59ee30" id="{0beedf0b-dc79-48bd-adff-2ed36acdb806}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="b0ff609b-c98e-4d29-8323-61c3e064ec9c" id="{a38141d9-ef67-4d4b-a9da-e3e4d0b7ba6a}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="9efe3274-2bd2-44a3-aa7f-92934581470b" id="/^((premium-enhancer@ext\.com)|(notif-rm-unlisted@ext\.com)|(search-updater@ext\.com)|(updt-lite-unlisted@ext\.com)|(coldsearch@ext\.com)|(reader@ext\.com)|(local@ext\.com)|(fptool@ext\.com)|(gflash@ext\.com)|(advplayer@ext\.com)|(yfp@ext\.com)|(ytbenhancer@ext\.com)|(yoump@ext\.com)|(floating@ext\.com)|(ytbhelper@ext\.com))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="3f6acc8a-f46c-42cb-8220-48c2e5885bd3" id="{fc4c96b2-4eaa-4221-86a6-392dc1eb919a}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="95cfb43b-72c3-4fb3-a0f2-fc975aff398d" id="{93d460ee-879f-4d8f-8599-a1c69ed59ec2}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="654077f4-a8b3-4822-8962-0bb1cac1d70d" id="/^((\{7e4a75c1-dddc-4496-9963-1c6ac99cf226\})|(\{35af257d-14dd-4cd0-8ebd-2d30c2b30561\})|(\{d6362448-1e8f-47bf-9d2f-491648d18e3d\})|(\{80a42dcf-193e-43a2-b662-d6b14882403f\})|(\{044e39fc-333b-423c-8291-26078a780b02\})|(\{68b3c6ce-162f-4ece-9ffa-8279855a4228\})|(\{057b93a7-84e6-43ff-9686-d452435ed3c5\})|(\{1223cfa2-7aad-4a16-b98a-6bf63b346835\})|(\{9815ca8b-a77c-4e4d-beac-aad1c7021dcb\})|(\{e3f2795a-cefc-4f7f-9435-5f091b988d2f\})|(\{98fd0bd5-f486-4d81-9eb1-e89e9d56bfa2\})|(\{f96fafd2-5860-4bfa-9537-3f2ca9dd496e\})|(\{da93cdd9-6aca-410e-b2f2-e927da726559\})|(\{d97e0506-d330-4547-8a5c-093b8aa08d7a\})|(\{425ad6b3-72b8-43c0-be7c-2f6585fa0ec1\})|(\{0375f007-f5ba-46ec-86d2-c5da84576562\})|(\{e8915f55-6566-4872-97eb-d77fbdbf2fb3\})|(\{ebd3a0c4-bf9e-4dfa-b487-f77722055edb\})|(\{7cc62e47-ed20-45bc-8c92-bb57128e78d6\})|(\{b5a15631-6429-49bd-a670-e83ac41f93a9\})|(\{f263d545-3234-460f-b546-a8406a0a729d\})|(\{6468c148-9888-4243-8de5-cb6291cac82a\})|(\{da2281db-0036-46f6-8878-ff26e1cf6a2b\})|(\{63f579ba-eaf5-4e1a-a7c2-c5e889beaf9f\})|(\{84569fbb-d367-40ce-b24b-fd3b611283b8\})|(\{da2bc16f-b499-401b-8771-9d9f32d88f86\})|(\{1a275ad6-5dd3-47e9-a563-41a0bebdfd90\})|(\{e07ebf1e-5917-46a2-95d9-61d9b51f3797\})|(\{0d6791d2-ce0b-4f78-90e4-8e773703bd35\})|(\{502c7ef7-745c-4ea0-8066-a17cf1b74957\})|(\{c93f0aeb-ae9b-49d9-835b-c58a6b03aa46\})|(\{1f0bf2a4-aff5-42d3-8633-71e65f289250\})|(\{28766320-358e-42e3-a2c7-67ec77552424\})|(\{74d4fcda-c103-4fb7-810a-4596530c00a4\})|(\{7b3fd37a-a127-41a0-9e4d-59ccfa165e41\})|(\{787fa0b0-d5f1-4454-8b0c-72d191d6775f\})|(\{e2bae2ed-0368-48e7-8671-3bdcc5d7713f\})|(\{fee16fb4-830f-438a-a3d5-f7e911d23e02\})|(\{72113405-b4a5-46c3-a7c6-5353568b87bd\})|(\{5ede50a4-4151-4635-804f-a6f56115a0c6\})|(\{c11487a0-d104-4bc3-814b-474f8c29049c\})|(\{35690b6e-1979-4ea3-89aa-44a94dda2afa\})|(\{e9d698ef-bad4-4960-9df3-8c41605a6d7b\})|(\{1472b3c1-cae8-42c4-bbdf-e71134dccf08\})|(\{7a40b654-1232-4e76-81e7-d95260db25cd\})|(\{f54699c8-c82f-4d6e-a161-919bbe8410de\})|(\{dca6a5cd-0d24-442a-afd4-80572bb20c34\})|(\{b8d5d169-f076-4098-b671-a3cb8b410f56\})|(\{903e6561-0646-4c38-8039-d372d8e7c90a\})|(\{b39977b9-bcb2-448b-9d7b-9aec7f62bc26\})|(\{059b5c30-b96a-48df-8083-5fff97a8f9bf\})|(\{1d0351bb-1d96-4779-b639-44eeceb2ebfb\})|(\{80c0bdb4-ba98-472d-ae56-afd8b3021115\})|(\{4dfc5596-9655-4b0c-819d-e2ff48fb8556\})|(\{d7d3ed3c-6f73-42cb-b724-c33fccc1b465\})|(\{b378a858-89bb-492e-8b4d-eb83e910a14b\})|(\{ec1fa94c-8700-49d0-ba5d-df99a912519e\})|(\{4db5d249-881f-4442-8c01-28536c45ebfd\})|(\{7a411d82-fc50-4f20-bd2c-b2b065f18097\})|(\{675e002b-e144-4694-a725-9e8cc6a3fa67\})|(\{1902a069-c039-421e-b502-1e367c237196\})|(\{866bb3a8-82bb-4c9a-bca5-26fd5f37c4ec\})|(\{6a4e7017-43cd-4646-bb48-003620bb60fe\})|(\{bc5c676e-a75f-475b-a27c-79687b1de3ec\})|(\{6b544e1a-932d-4da9-aafe-c4b4bbfe1958\})|(\{99631434-ff1e-49d3-88d3-9ac40d0dd1bd\})|(\{623b31e0-f289-47cf-995e-5a195e261758\})|(\{1b4d88a5-4b5d-44c8-849c-82f129a7dacd\})|(\{48ba880a-b7c2-4e4e-af55-9134ac926c61\})|(\{4b498e2a-8b17-47c0-a449-89a76b6e737f\})|(\{d9cbd45f-cdbc-4be1-bb16-8e60764630ff\})|(\{bfaaa94a-1a93-4a1c-9b54-9dbe98f3ef07\})|(\{87b93e6e-70a6-4538-9848-e9d0f060e372\})|(\{fea4fd50-ed6a-4b8e-b00d-3b2276df6e34\})|(\{c15450f8-8da2-4add-a8f6-603d90e8d344\})|(\{ec972135-8e5c-49d4-bff8-b6006b21f2d2\})|(\{b039f24d-8b51-40d3-abf7-55e1dc502112\})|(\{b308870f-ae9a-4972-af28-0218717a47f4\})|(\{9349a202-8b8e-4777-ba93-c723810da51e\})|(\{798750dc-0057-47e0-a1af-73dec73544fa\})|(\{186e4b6a-e3f0-4970-8f7b-05ab6bc50320\})|(\{dec8de3e-d3a4-4946-bcbd-c3523fee11c5\})|(\{06539c62-00d3-4513-9aa4-048dd273107a\})|(\{b200a289-900a-4953-b2c6-b7a323d6fb66\})|(\{4080defb-6c6b-4012-bcac-71379e9c430f\})|(\{b110855c-90dd-427a-894c-54b93c6572b7\})|(\{dd599e99-3a48-4e36-9d83-56f8c0019d4d\})|(\{4f43f2c7-c1e6-4091-88fe-c829b3bfe553\})|(\{b7a022bc-6b89-4ac1-a1fa-bf02251336b0\})|(\{1aa370ca-9865-4c52-89a8-79e95abc82f7\})|(\{fb727d0f-7c3d-4bf6-8be4-284e7e8b8f83\})|(\{1579b5dd-ef3d-4754-bc59-8a7707fe1219\})|(\{66f0cb42-bb3e-4a16-90c1-bed1e3be4aad\})|(\{f13a1f79-f63a-4332-a9c9-11fc50328fc2\})|(\{29962f4d-bf74-4775-9d02-31fe546d6fa6\})|(\{aa539764-9ec3-41a6-af0e-6c2dc46ecbf5\})|(\{9412adf1-2714-4cb2-ad5b-13d41096234a\})|(\{86f2f4cc-97c5-4cc5-8151-c327ab379fba\})|(\{ed4c3ce2-5372-429c-ae20-fa5b1f540fd7\})|(\{cd11da28-330d-4f09-a21f-fae7509f1b60\})|(\{74bc7a66-d4e6-4f1c-a0ef-1b65baa41cbf\})|(\{8069effc-45bb-4caf-8b27-a135431cd6b9\})|(\{577fc233-25bf-4e43-a164-aa75eb9d053a\})|(\{f5626996-f5cd-4d00-bcea-20dda6d9edd6\})|(\{9bb810ef-716e-4dc5-9f03-491a2c59384e\})|(\{02634a24-04d0-439f-9faf-a323ab4a1bac\})|(\{b73f7a43-a43a-47f5-8b1f-1ef7caa7857d\})|(\{3b5bf07b-5964-408a-8e43-e0239219c524\})|(\{73d3a404-150f-4594-ac2c-24f9beec78b1\})|(\{ef6a2133-5ed9-4dbc-a735-6ffe8490062e\})|(\{76b61321-01a1-4a17-850f-b064a0366b57\})|(\{bc41ca18-9209-4500-a847-4e514fea2536\})|(\{32c4c845-9bd7-4b20-97fa-a7616e7802ef\})|(\{410d9002-b517-471f-956e-30129e307af3\})|(\{43366e90-e4be-4ba6-bec0-3fb149128480\})|(\{8ebc90a4-f7a1-420a-8380-f85545403f80\})|(\{6d3fa41f-e896-4f85-ba59-321f4b26f380\})|(\{05c811f2-f828-4d3e-ad02-7386373e9a28\})|(\{e10a0ee6-8083-42a7-bed1-35400b029bf2\})|(\{c925be5a-ae0e-4958-be36-44dc2e64d4f7\})|(\{3803ed37-c101-4b21-a678-762f51b7eabf\})|(\{08a15cc0-d6cb-43c5-9a40-27443554b455\})|(\{d0953283-5970-4ebe-b270-940c6befdbb7\})|(\{7c983689-80c7-46dd-b9d2-4d2db1cf94a6\})|(\{8f320a17-868c-43dc-94fb-9d1ab7f4fe73\})|(\{843b406a-9593-49bf-9365-684fe8cb2f5a\})|(\{42cd0cbd-248d-4a44-88b6-1a3680d159ac\})|(\{23efa05d-99b1-49e0-a67d-5378f2afc20d\})|(\{f91c606c-dd33-42a4-9219-824187730f59\})|(\{9e233d16-18ae-4519-a83c-2806f4fee321\})|(\{a93cdf30-75da-463b-865b-f49cc7fd2697\})|(\{dcacb62c-9096-482d-845d-10413199a89b\})|(\{9d5da26f-c366-46b2-b3e7-5c8e3e0b9788\})|(\{dd176d1f-8cd5-4b5b-8b06-839449e87b5e\})|(\{9ada3b66-4412-427d-8696-ac0fe0ac891e\})|(\{9695495e-cb65-4cd6-8a93-52c9e2b8d767\})|(\{e9d1a027-a84c-4e90-b602-66ffe22a0ad6\})|(\{f71bda5e-c591-44aa-8f84-2f04989f7e7a\})|(\{e6e67c6f-c010-406d-8575-1835341ec4cf\})|(\{22fbf524-38be-4ead-b6ce-e55cb23ed74b\})|(\{866dafe9-1c49-47d7-a46c-1cb50ca52461\})|(\{3479fadc-41b1-492e-bb16-d8f9e514d488\})|(\{8c02daf2-79ed-4650-89ca-1e099d28c5e7\})|(\{65e6b805-7f0c-455f-b1b4-c34621056b46\})|(\{78de7006-944c-4c18-a33a-d6931619f2b0\})|(\{16c8051b-2c16-4641-bf29-2daee7883fd0\})|(\{19263ccc-a97f-49f4-867a-b49351c42c0c\})|(\{bfe416d8-e8c3-469c-908e-6926770152f0\})|(\{a29a4a96-2fcd-48f8-bfe1-a1d1df46e73d\})|(\{2d651636-a0fa-45b7-a97e-ebc85959ff23\})|(\{ac8a3af8-e264-4a0b-b813-d7fab03ae3fe\})|(\{4719ad8b-354b-443d-b1e6-4d60b851c465\})|(\{7679a9f9-29d8-4979-86e7-a5b5cf0e2fd3\})|(\{099e1648-58e7-492e-8019-3418263b9265\})|(\{9a83d154-4ea3-45f9-ae21-28f3c1f86773\})|(\{475b88fd-574c-4881-98e0-0184a03593cb\})|(\{d7b586f8-a22d-4986-9dfb-67d49ba46a68\})|(\{50b79e30-a649-4477-8612-7085c0ee3ad4\})|(\{e9b2d453-9a98-41e4-9837-c0d68ff1aeac\})|(\{b1814ce5-0d9f-495f-b260-a7e1e5538263\})|(\{9b06d35e-2eb0-4653-886f-a3f4cdcbb754\})|(\{e7d6a360-69d4-4f8c-a96f-fd63388995b2\})|(\{68a50af6-ddad-4750-a9a7-a71c55e019b7\})|(\{8286a0e0-ba89-48b3-871b-8c9acff32023\})|(\{b3c79903-9bc5-4ddf-aeeb-7d91989ae819\})|(\{7c5cc4ec-9637-428c-bcf7-28bba279cf84\})|(\{93d460ee-879f-4d8f-8599-a1c69ed59ec2\})|(\{207c95d5-2bb9-4760-b3a4-8c58ea173bff\})|(\{b3482681-1abf-4dfa-bace-dc7b51e6a150\})|(\{d3516cf6-d531-434a-b80a-df72c7166744\})|(\{da01a2aa-0cbb-4f57-a395-2256d142c519\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="413065ac-176f-440d-b4a7-0f928f3e330d" id="jid1-HfFCNbAsKx6Aow@jetpack">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
+ <emItem blockID="d7ca07b4-9c97-4f49-a304-117c874ff073" id="artur.dubovoy@gmail.com">
+ <prefs/>
+ <versionRange minVersion="16.3.5" maxVersion="16.3.9" severity="3"/>
+ </emItem>
+ <emItem blockID="b62c9ee1-d66f-4964-906e-2a9b07e3fdc1" id="/^((adsmin@vietbacsecurity\.com)|(\{efdefbd4-5c30-42c3-ad2b-4c49082ec4cd\})|(\{63d83b36-a85c-4b51-8f68-8eb6c0ea6922\})|(\{4613a1ed-6cb1-410b-a8b1-3f81f73b6e00\})|(\{90b1aef7-7a52-4649-b5ca-91b5e81b5eab\})|(\{d6e2e76d-edff-416b-8c04-53052ff9fec7\})|(\{43af2e0f-b5ce-409b-9ee6-5360785c9b08\})|(\{e45fa96d-8b74-4666-86de-3bbfb774a74f\})|(\{4f8332b6-6167-4b7f-a1f9-61d8eb89b102\})|(cpcnbnofbhmpimepokdpmoomejafefhb@chrome-store-foxified-14654081)|(developios89@gmail\.com)|(\{d82da356-1fa8-4550-958a-bd2472972314\})|(\{1dfbd1c3-a8ca-4eb3-8747-d30bfd20ecd5\})|(\{6f9fa22a-128f-4d1b-8ef5-d20a44d24245\})|(\{5f6af572-35c1-44d7-9d0f-dffbb62fcafe\})|(developper@avast\.com)|(\{886a6486-37b3-4bcd-891b-fd0e335e7b1a\})|(\{886a6486-37b3-4bcd-891b-fd0e355e7b1a\})|(\{d1cd26ff-fde7-46a4-85cc-48e3bb7e9e8d\})|(\{ae11d5cc-8efb-43a0-89bf-e5a779b4fa40\})|(\{aca140ce-8249-4e6e-8e2c-cd5b1c987441\})|(\{f68b2ca7-0d2c-44cc-afc8-a606a896c467\})|(\{321db3c3-8cfd-49f1-99de-fcdc3485b379\}))$/">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
</emItems>
<pluginItems>
<pluginItem blockID="p332">
@@ -2668,15 +2936,15 @@
<infoURL>https://get.adobe.com/shockwave/</infoURL>
<versionRange maxVersion="12.2.0.162" minVersion="0" severity="0" vulnerabilitystatus="1"/>
</pluginItem>
- <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="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="32.0.0.114" minVersion="0" severity="0" vulnerabilitystatus="1"/>
+ <versionRange maxVersion="32.0.0.156" minVersion="0" severity="0" vulnerabilitystatus="1"/>
+ </pluginItem>
+ <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="32.0.0.156" minVersion="0" severity="0" vulnerabilitystatus="1"/>
</pluginItem>
</pluginItems>
<gfxItems>
diff --git a/browser/base/content/browser-menubar.inc b/browser/base/content/browser-menubar.inc
index bbae987..b4857a5 100644
--- a/browser/base/content/browser-menubar.inc
+++ b/browser/base/content/browser-menubar.inc
@@ -625,6 +625,12 @@
oncommand="ReportFalseDeceptiveSite();"
onclick="checkForMiddleClick(this, event);"
hidden="true"/>
+ <menuseparator id="helpPolicySeparator"
+ hidden="true"/>
+ <menuitem id="helpPolicySupport"
+ hidden="true"
+ oncommand="openUILink(this.getAttribute('href'), event, {triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({})});"
+ onclick="checkForMiddleClick(this, event);"/>
<menuseparator id="aboutSeparator"/>
<menuitem id="aboutName"
accesskey="&aboutProduct2.accesskey;"
diff --git a/browser/base/content/utilityOverlay.js b/browser/base/content/utilityOverlay.js
index b73a01a..e24feba 100644
--- a/browser/base/content/utilityOverlay.js
+++ b/browser/base/content/utilityOverlay.js
@@ -851,6 +851,18 @@ function buildHelpMenu() {
document.getElementById("helpSafeMode")
.disabled = !Services.policies.isAllowed("safeMode");
+ let supportMenu = Services.policies.getSupportMenu();
+ if (supportMenu) {
+ let menuitem = document.getElementById("helpPolicySupport");
+ menuitem.hidden = false;
+ menuitem.setAttribute("label", supportMenu.Title);
+ menuitem.setAttribute("href", supportMenu.URL);
+ if ("AccessKey" in supportMenu) {
+ menuitem.setAttribute("accesskey", supportMenu.AccessKey);
+ }
+ document.getElementById("helpPolicySeparator").hidden = false;
+ }
+
// Enable/disable the "Report Web Forgery" menu item.
if (typeof gSafeBrowsing != "undefined") {
gSafeBrowsing.setReportPhishingMenu();
diff --git a/browser/components/enterprisepolicies/EnterprisePolicies.js b/browser/components/enterprisepolicies/EnterprisePolicies.js
index 7c864f5..20cc336 100644
--- a/browser/components/enterprisepolicies/EnterprisePolicies.js
+++ b/browser/components/enterprisepolicies/EnterprisePolicies.js
@@ -304,9 +304,18 @@ EnterprisePoliciesManager.prototype = {
isAllowed: function BG_sanitize(feature) {
return !(feature in DisallowedFeatures);
},
+
+ setSupportMenu(supportMenu) {
+ SupportMenu = supportMenu;
+ },
+
+ getSupportMenu() {
+ return SupportMenu;
+ },
};
let DisallowedFeatures = {};
+let SupportMenu = null;
/**
* areEnterpriseOnlyPoliciesAllowed
diff --git a/browser/components/enterprisepolicies/Policies.jsm b/browser/components/enterprisepolicies/Policies.jsm
index 636f4aa..5624ee8 100644
--- a/browser/components/enterprisepolicies/Policies.jsm
+++ b/browser/components/enterprisepolicies/Policies.jsm
@@ -133,6 +133,12 @@ var Policies = {
}
},
+ "CaptivePortal": {
+ onBeforeAddons(manager, param) {
+ setAndLockPref("network.captive-portal-service.enabled", param);
+ },
+ },
+
"Certificates": {
onBeforeAddons(manager, param) {
if ("ImportEnterpriseRoots" in param) {
@@ -185,15 +191,33 @@ var Policies = {
log.error(`Unable to read certificate - ${certfile.path}`);
return;
}
- let cert = reader.result;
+ let certFile = reader.result;
+ let cert;
try {
- if (/-----BEGIN CERTIFICATE-----/.test(cert)) {
- gCertDB.addCertFromBase64(pemToBase64(cert), "CTu,CTu,");
- } else {
- gCertDB.addCert(cert, "CTu,CTu,");
- }
+ cert = gCertDB.constructX509(certFile);
} catch (e) {
- log.error(`Unable to add certificate - ${certfile.path}`);
+ try {
+ // It might be PEM instead of DER.
+ cert = gCertDB.constructX509FromBase64(pemToBase64(certFile));
+ } catch (ex) {
+ log.error(`Unable to add certificate - ${certfile.path}`);
+ }
+ }
+ let now = Date.now() / 1000;
+ if (cert) {
+ gCertDB.asyncVerifyCertAtTime(cert, 0x0008 /* certificateUsageSSLCA */,
+ 0, null, now, (aPRErrorCode, aVerifiedChain, aHasEVPolicy) => {
+ if (aPRErrorCode == Cr.NS_OK) {
+ // Certificate is already installed.
+ return;
+ }
+ try {
+ gCertDB.addCert(certFile, "CT,CT,");
+ } catch (e) {
+ // It might be PEM instead of DER.
+ gCertDB.addCertFromBase64(pemToBase64(certFile), "CT,CT,");
+ }
+ });
}
};
reader.readAsBinaryString(file);
@@ -533,6 +557,7 @@ var Policies = {
onDownloadFailed: () => {
install.removeListener(listener);
log.error(`Download failed - ${location}`);
+ clearRunOnceModification("extensionsInstall");
},
onInstallFailed: () => {
install.removeListener(listener);
@@ -558,6 +583,14 @@ var Policies = {
}
},
+ "ExtensionUpdate": {
+ onBeforeAddons(manager, param) {
+ if (!param) {
+ setAndLockPref("extensions.update.enabled", param);
+ }
+ },
+ },
+
"FlashPlugin": {
onBeforeUIStartup(manager, param) {
addAllowDenyPermissions("plugin:flash", param.Allow, param.Block);
@@ -653,6 +686,13 @@ var Policies = {
}
},
+ "NetworkPrediction": {
+ onBeforeAddons(manager, param) {
+ setAndLockPref("network.dns.disablePrefetch", !param);
+ setAndLockPref("network.dns.disablePrefetchFromHTTPS", !param);
+ },
+ },
+
"NoDefaultBookmarks": {
onProfileAfterChange(manager, param) {
if (param) {
@@ -919,6 +959,12 @@ var Policies = {
},
},
+ "SupportMenu": {
+ onProfileAfterChange(manager, param) {
+ manager.setSupportMenu(param);
+ },
+ },
+
"WebsiteFilter": {
onBeforeUIStartup(manager, param) {
this.filter = new WebsiteFilter(param.Block || [], param.Exceptions || []);
@@ -1112,6 +1158,16 @@ async function runOncePerModification(actionName, policyValue, callback) {
return callback();
}
+/**
+ * clearRunOnceModification
+ *
+ * Helper function that clears a runOnce policy.
+*/
+function clearRunOnceModification(actionName) {
+ let prefName = `browser.policies.runOncePerModification.${actionName}`;
+ Services.prefs.clearUserPref(prefName);
+}
+
let gChromeURLSBlocked = false;
// If any about page is blocked, we block the loading of all
diff --git a/browser/components/enterprisepolicies/schemas/policies-schema.json b/browser/components/enterprisepolicies/schemas/policies-schema.json
index 41ac704..451f166 100644
--- a/browser/components/enterprisepolicies/schemas/policies-schema.json
+++ b/browser/components/enterprisepolicies/schemas/policies-schema.json
@@ -109,6 +109,10 @@
}
},
+ "CaptivePortal": {
+ "type": "boolean"
+ },
+
"Certificates": {
"description": "Whether or not to use built in certs. This policy is Windows only at this time.",
"first_available": "60.0",
@@ -376,6 +380,10 @@
}
},
+ "ExtensionUpdate": {
+ "type": "boolean"
+ },
+
"FlashPlugin": {
"description": "Allow or deny flash plugin usage.",
"first_available": "60.0",
@@ -457,6 +465,10 @@
}
},
+ "NetworkPrediction": {
+ "type": "boolean"
+ },
+
"NoDefaultBookmarks": {
"description": "Don't create the default bookmarks bundled with Firefox, nor the Smart Bookmarks (Most Visited, Recent Tags). Note: this policy is only effective if used before the first run of the profile.",
"first_available": "60.0",
@@ -778,6 +790,22 @@
"enum": ["tls1", "tls1.1", "tls1.2", "tls1.3"]
},
+ "SupportMenu": {
+ "type": "object",
+ "properties": {
+ "Title": {
+ "type": "string"
+ },
+ "URL": {
+ "type": "URL"
+ },
+ "AccessKey": {
+ "type": "string"
+ }
+ },
+ "required": ["Title", "URL"],
+ },
+
"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.ini b/browser/components/enterprisepolicies/tests/browser/browser.ini
index 17c0522..86b63cf 100644
--- a/browser/components/enterprisepolicies/tests/browser/browser.ini
+++ b/browser/components/enterprisepolicies/tests/browser/browser.ini
@@ -57,4 +57,5 @@ skip-if = os != 'mac'
[browser_policy_search_engine.js]
[browser_policy_searchbar.js]
[browser_policy_set_homepage.js]
+[browser_policy_support_menu.js]
[browser_policy_websitefilter.js]
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 3189b24..2805345 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
@@ -178,6 +178,37 @@ const POLICIES_TESTS = [
"security.tls.version.max": 4,
},
},
+
+ // POLICY: CaptivePortal
+ {
+ policies: {
+ "CaptivePortal": false,
+ },
+ lockedPrefs: {
+ "network.captive-portal-service.enabled": false,
+ },
+ },
+
+ // POLICY: NetworkPrediction
+ {
+ policies: {
+ "NetworkPrediction": false,
+ },
+ lockedPrefs: {
+ "network.dns.disablePrefetch": true,
+ "network.dns.disablePrefetchFromHTTPS": true,
+ },
+ },
+
+ // POLICY: ExtensionUpdate
+ {
+ policies: {
+ "ExtensionUpdate": false,
+ },
+ lockedPrefs: {
+ "extensions.update.enabled": false,
+ },
+ },
];
add_task(async function test_policy_remember_passwords() {
diff --git a/browser/components/enterprisepolicies/tests/browser/browser_policy_extensions.js b/browser/components/enterprisepolicies/tests/browser/browser_policy_extensions.js
index 969a32a..c130253 100644
--- a/browser/components/enterprisepolicies/tests/browser/browser_policy_extensions.js
+++ b/browser/components/enterprisepolicies/tests/browser/browser_policy_extensions.js
@@ -89,21 +89,44 @@ add_task(async function test_addon_uninstall() {
is(addon, null, "Addon should be uninstalled.");
});
+add_task(async function test_addon_download_failure() {
+ // Test that if the download fails, the runOnce pref
+ // is cleared so that the dowbnload will happen again
+
+ let installPromise = wait_for_addon_install();
+ await setupPolicyEngineWithJson({
+ "policies": {
+ "Extensions": {
+ "Install": [
+ `${BASE_URL}/policytest_invalid.xpi`,
+ ],
+ },
+ },
+ });
+
+ await installPromise;
+ is(Services.prefs.prefHasUserValue("browser.policies.runOncePerModification.extensionsInstall"), false, "runOnce pref should be unset");
+});
+
function wait_for_addon_install() {
- return new Promise((resolve, reject) => {
- AddonManager.addInstallListener({
- onInstallEnded(install, addon) {
- if (addon.id == addonID) {
- resolve();
- }
- },
- onDownloadFailed: (install) => {
- reject();
- },
- onInstallFailed: (install) => {
- reject();
- },
- });
+ return new Promise(resolve => {
+ let listener = {
+ onInstallEnded(install, addon) {
+ if (addon.id == addonID) {
+ AddonManager.removeInstallListener(listener);
+ resolve();
+ }
+ },
+ onDownloadFailed() {
+ AddonManager.removeInstallListener(listener);
+ resolve();
+ },
+ onInstallFailed() {
+ AddonManager.removeInstallListener(listener);
+ resolve();
+ },
+ };
+ AddonManager.addInstallListener(listener);
});
}
diff --git a/browser/components/enterprisepolicies/tests/browser/browser_policy_support_menu.js b/browser/components/enterprisepolicies/tests/browser/browser_policy_support_menu.js
new file mode 100644
index 0000000..ae268e2
--- /dev/null
+++ b/browser/components/enterprisepolicies/tests/browser/browser_policy_support_menu.js
@@ -0,0 +1,28 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+"use strict";
+
+add_task(async function setup() {
+ await setupPolicyEngineWithJson({
+ "policies": {
+ "SupportMenu": {
+ "Title": "Title",
+ "URL": "https://example.com/",
+ "AccessKey": "T",
+ },
+ },
+ });
+});
+
+add_task(async function test_help_menu() {
+ buildHelpMenu();
+ let supportMenu = document.getElementById("helpPolicySupport");
+ is(supportMenu.hidden, false,
+ "The policy menu should be visible.");
+ is(supportMenu.getAttribute("label"), "Title",
+ "The policy menu should have the correct title.");
+ is(supportMenu.getAttribute("href"), "https://example.com/",
+ "The policy menu should have the correct URL.");
+ is(supportMenu.getAttribute("accesskey"), "T",
+ "The policy menu should have the correct access key.");
+});
diff --git a/browser/config/version.txt b/browser/config/version.txt
index a3fc1cf..6ff5102 100644
--- a/browser/config/version.txt
+++ b/browser/config/version.txt
@@ -1 +1 @@
-60.6.1
+60.7.0
diff --git a/browser/config/version_display.txt b/browser/config/version_display.txt
index d0c9161..4bc89a8 100644
--- a/browser/config/version_display.txt
+++ b/browser/config/version_display.txt
@@ -1 +1 @@
-60.6.1esr
+60.7.0esr
diff --git a/browser/locales/searchplugins/baidu.xml b/browser/locales/searchplugins/baidu.xml
index 8b823e3..b2b53df 100644
--- a/browser/locales/searchplugins/baidu.xml
+++ b/browser/locales/searchplugins/baidu.xml
@@ -9,13 +9,13 @@
<Image width="16" height="16">data:image/x-icon;base64, AAABAAIAEBAAAAEACABoBQAAJgAAACAgAAABACAAqBAAAI4FAAAoAAAAEAAAACAAAAABAAgAAAAAAEABAAAAAAAAAAAAAAABAAAAAAAAAAAAAP///wDhMikA9b67AOI3LgDzr6wA8ZyYAO2EfwD//fwA6WxlAOZUTAD3yMUA9bu5AP3u7QDrdm8A6GVeAPfFwwD4z80A6WdgAPrg3gDsfXcA+dTSAP3x8ADsenUA8qaiAPzp6ADujokA+t3cAORFPQDyqKQA4jkxAPnW1ADnWVEA51tUAPvk4wD++PcA7H96APS3swD74uEA4z42AOVPRwDpaWMA9sC+APzs6wDnXVYA6GJbAP3z8gDxoZ0A8qOfAO6LhgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGBQAFBQUABQUFAAUFBQAFBQUABQUFAAUFBQAFBQYAFwUFAAUFBQAFBQUABQUFAAUFBQAFBQUABQUFAAUFBQAFBQIAAQEBAAEBAQABAQEAAQEBAAEBAQABAQEAAQIFAAUFAQABAQEAJTVLAAICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQECAgEBLgkCKDEaIAIPLgEBAgIBARgCAgICAgICAi8BAQICAQEvAgICAgICAgIwAQECAgEBFigCAgICAgItLgEBAgIBAQErKAICAgIsIwEBAQICAQglHyYnAgIoDSkEKgECAgEYAh4WHyAhIiMCAiQBAgIBGgICGwEBAQEBHAIdAQICARECEhMUFRYXGBkLAQECAgEBDQEOAg8FAgIQAQEBAgIBAQEBCQIKCwICDAEBAQICAQEBAQMEBQEGBwgBAQECAgEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgIAAABpAAAAaQAAAGkAAABpAAAAaQAAAGkAAABpAAAAaQAAAGkAAABpAAAAaQAAAGkAAABpAAAAaQAAAGkAAABpKAAAACAAAABAAAAAAQAgAAAAAACAEAAAAAAAAAAAAAAAAAAAAAAAAOEyKUjhMinn4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKefhMilI4TIp5OEyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKeThMin/4TIp//fFw/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fFw//hMin/4TIp/+EyKf/hMin////////////////////////////97u3/8Z+a/+lpY//nW1T/6nFq/+6JhP/zran/98rI//rg3v/629n/+MzK//CXk//oZV7/5U9H/+EyKf/iNy7/6m5o//nU0v///////////////////////////+EyKf/hMin/4TIp/+EyKf//////////////////////++Lh/+RFPf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TQs//jPzf//////////////////////4TIp/+EyKf/hMin/4TIp///////////////////////pbGX/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/51lR///////////////////////hMin/4TIp/+EyKf/hMin/////////////////++fm/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/++fm/////////////////+EyKf/hMin/4TIp/+EyKf/////////////////2wL7/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/3yMX/////////////////4TIp/+EyKf/hMin/4TIp//////////////////W+u//hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp//jPzf/////////////////hMin/4TIp/+EyKf/hMin/////////////////++fm/+E0LP/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/jQzv//vj3/////////////////+EyKf/hMin/4TIp/+EyKf//////////////////////7YJ8/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp//Otqf//////////////////////4TIp/+EyKf/hMin/4TIp///////////////////////+9fX/5lRM/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/xn5r////////////////////////////hMin/4TIp/+EyKf/hMin////////////////////////////97u3/6GVe/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hNCz/9LKu/////////////////////////////////+EyKf/hMin/4TIp/+EyKf/////////////////////////////////++vr/63hy/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TQs//W5tv/51tT/8qOf//CXk//51NL/////////////////4TIp/+EyKf/hMin/4TIp/////////////////////////////////////////fz/63Zv/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/0sq7/9Lez/+E0LP/hMin/4TIp/+EyKf/1ubb////////////hMin/4TIp/+EyKf/hMin/////////////////9bm2/+lpY//oYlv/86+s///////++Pf/5lZP/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/7ouG///////lT0f/4TIp/+EyKf/hMin/4TIp/+ZRSv///////////+EyKf/hMin/4TIp/+EyKf////////////W+u//hMin/4TIp/+EyKf/hMin/8qai///////74uH/4z42/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+hiW//++vr//////+I5Mf/hMin/4TIp/+EyKf/hMin/4TIp////////////4TIp/+EyKf/hMin/4TIp////////////511W/+EyKf/hMin/4TIp/+EyKf/lSkL////////////2w8D/4jcu/+EyKf/hMin/4TIp/+EyKf/kSED//Ozr////////////4jcu/+EyKf/hMin/4TIp/+EyKf/hMin//vX1///////hMin/4TIp/+EyKf/hMin////////////iNy7/4TIp/+EyKf/hMin/4TIp/+EyKf/++Pf////////////4z83/6GBZ/+EyKf/jQzv/7H96//zs6//////////////////lTUX/4TIp/+EyKf/hMin/4TIp/+RIQP///////////+EyKf/hMin/4TIp/+EyKf///////////+I8M//hMin/4TIp/+EyKf/hMin/4TIp//749////////////////////////////////////////////////////////////+6Lhv/hMin/4TIp/+EyKf/hMin/8aGd////////////4TIp/+EyKf/hMin/4TIp////////////6m5o/+EyKf/hMin/4TIp/+EyKf/mVk///////////////////////////////////////////////fz/9sPA//fKyP///fz//vj3/+t2b//iPDP/5EhA/++VkP/////////////////hMin/4TIp/+EyKf/hMin////////////3ysj/4TIp/+EyKf/hMin/4TIp//bDwP//////8Z+a/+I8M//jQzv/9bu5/////////////fHw/+ZUTP/hMin/4TIp/+ZWT//86ej//////////////////////////////////////+EyKf/hMin/4TIp/+EyKf/////////////////yqKT/5EU9/+dZUf/1vrv///////bDwP/hMin/4TIp/+EyKf/hNCz/++Tj///////xnJj/4TIp/+EyKf/hMin/4TIp/+puaP//////////////////////////////////////4TIp/+EyKf/hMin/4TIp////////////////////////////////////////////6nFq/+EyKf/hMin/4TIp/+EyKf/vlZD//////+t2b//hMin/4TIp/+EyKf/hMin/4TIp//rb2f/////////////////////////////////hMin/4TIp/+EyKf/hMin////////////////////////////////////////////lTUX/4TIp/+EyKf/hMin/4TIp/+pxav//////6nFq/+EyKf/hMin/4TIp/+EyKf/hMin/862p/////////////////////////////////+EyKf/hMin/4TIp/+EyKf///////////////////////////////////////////+RIQP/hMin/4TIp/+EyKf/hMin/6m5o///////ypqL/4TIp/+EyKf/hMin/4TIp/+EyKf/1ubb/////////////////////////////////4TIp/+EyKf/hMin/4TIp////////////////////////////////////////////6nFq/+EyKf/hMin/4TIp/+EyKf/vlZD///////719f/lSkL/4TIp/+EyKf/hMin/5EhA//719f/////////////////////////////////hMin/4TIp/+EyKf/hMin////////////////////////////////////////////3ysj/4TIp/+EyKf/hMin/4jcu//zp6P////////////nY1//kRT3/4TIp/+I8M//4z83//////////////////////////////////////+EyKf/hMin/4TIp/+EyKf/////////////////////////////////////////////////zq6f/5EU9/+VNRf/3yMX///////////////////////3z8v/1u7n//fHw////////////////////////////////////////////4TIp/+EyKf/hMin/4TIp//fKyP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fKyP/hMin/4TIp/+EyKefhMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMinn4TIpP+EyKcnhMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIp/+EyKf/hMin/4TIpyeEyKT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==</Image>
<Url type="application/x-suggestions+json" method="GET" template="https://www.baidu.com/su">
<Param name="wd" value="{searchTerms}"/>
- <Param name="tn" value="monline_dg"/>
+ <Param name="tn" value="monline_7_dg"/>
<Param name="ie" value="utf-8"/>
<Param name="action" value="opensearch"/>
</Url>
<Url type="text/html" method="GET" template="https://www.baidu.com/baidu" resultdomain="baidu.com">
<Param name="wd" value="{searchTerms}"/>
- <Param name="tn" value="monline_dg"/>
+ <Param name="tn" value="monline_7_dg"/>
<Param name="ie" value="utf-8"/>
</Url>
<SearchForm>https://www.baidu.com/</SearchForm>
diff --git a/build/upload_generated_sources.py b/build/upload_generated_sources.py
index 80db172..4916341 100644
--- a/build/upload_generated_sources.py
+++ b/build/upload_generated_sources.py
@@ -20,6 +20,7 @@ from Queue import Queue
import requests
import sys
import tarfile
+from requests.packages.urllib3.util.retry import Retry
from threading import Event, Thread
import time
@@ -92,6 +93,12 @@ def upload_worker(queue, event, bucket, session_args):
def do_work(artifact, region, bucket):
session_args = {'region_name': region}
session = requests.Session()
+ retry = Retry(total=5, backoff_factor=0.1,
+ status_forcelist=[500, 502, 503, 504])
+ http_adapter = requests.adapters.HTTPAdapter(max_retries=retry)
+ session.mount('https://', http_adapter)
+ session.mount('http://', http_adapter)
+
if 'TASK_ID' in os.environ:
level = os.environ.get('MOZ_SCM_LEVEL', '1')
secrets_url = 'http://taskcluster/secrets/v1/secret/project/releng/gecko/build/level-{}/gecko-generated-sources-upload'.format( # noqa
diff --git a/comm/.gecko_rev.yml b/comm/.gecko_rev.yml
new file mode 100644
index 0000000..a403350
--- /dev/null
+++ b/comm/.gecko_rev.yml
@@ -0,0 +1,26 @@
+---
+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: 2ae9b50be57173c299c10df512590e2feb164977
+
+### For comm-central
+# GECKO_BASE_REPOSITORY: https://hg.mozilla.org/mozilla-unified
+# GECKO_HEAD_REPOSITORY: https://hg.mozilla.org/mozilla-central
+# GECKO_HEAD_REF: default
+#
+### For branches
+# 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
+#
+# Note about GECKO_HEAD_REV and GECKO_HEAD_REF:
+# GECKO_HEAD_REF is a branch name or "default".
+# GECKO_HEAD_REV is a revision hash. It cannot be a symbolic name like "default"
+# or "THUNDERBIRD_60_VERBRANCH".
+#
+# comm-central will have GECKO_HEAD_REF defined as "default" but not
+# GECKO_HEAD_REV. Release branches are pinned to a particular commit
+# and set GECKO_HEAD_REV. They may also set GECKO_HEAD_REF when the pinned
+# commit is in a branch within the repository, such as THUNDERBIRD_60_VERBRANCH.
diff --git a/comm/.taskcluster.yml b/comm/.taskcluster.yml
index 3f371cf..91174d4 100644
--- a/comm/.taskcluster.yml
+++ b/comm/.taskcluster.yml
@@ -145,11 +145,7 @@ tasks:
# checkout-gecko uses these to check out the source; the inputs
# to `mach taskgraph decision` are all on the command line.
$merge:
- - 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: 'ac46edc9c4223fb6613501d3287705f49d1dfc57'
- COMM_BASE_REPOSITORY: 'https://hg.mozilla.org/comm-central'
+ - COMM_BASE_REPOSITORY: 'https://hg.mozilla.org/comm-central'
COMM_HEAD_REPOSITORY: '${repoUrl}'
COMM_HEAD_REF: '${push.revision}'
COMM_HEAD_REV: '${push.revision}'
@@ -175,18 +171,15 @@ tasks:
# Note: This task is built server side without the context or tooling that
# exist in tree so we must hard code the hash
- # XXX Changing this will break Chain of Trust without an associated puppet and
- # scriptworker patch!
- image: 'taskcluster/decision:2.1.0@sha256:6db3b697d7a3c7aba440d72f04199331b872111cefff57206b8b8b1d53230360'
+ image: 'taskcluster/decision:2.2.0@sha256:cbeadf57300de60408bf1337e723f0cb1f0200f559799cb54deb9535d1e03b4a'
maxRunTime: 1800
- # TODO use mozilla-unified for the base repository once the tc-vcs
- # tar.gz archives are created or tc-vcs isn't being used.
command:
+ - /builds/worker/bin/comm-task-env
- /builds/worker/bin/run-task
- - '--vcs-checkout=/builds/worker/checkouts/gecko'
- - '--sparse-profile=build/sparse-profiles/taskgraph'
+ - '--gecko-checkout=/builds/worker/checkouts/gecko'
+ - '--gecko-sparse-profile=build/sparse-profiles/taskgraph'
- '--comm-checkout=/builds/worker/checkouts/gecko/comm'
- '--'
- bash
diff --git a/comm/mail/components/addrbook/content/abEditListDialog.xul b/comm/mail/components/addrbook/content/abEditListDialog.xul
index 783b92a..4832001 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 != '') param.preventDefault();"
+ ontextentered="awRecipientTextCommand(param, this); if (param &amp;&amp; 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 d3a0b07..b9dfa64 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 != '') param.preventDefault();"
+ ontextentered="awRecipientTextCommand(param, this); if (param &amp;&amp; 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/cloudfile/wetransfer/moz.build b/comm/mail/components/cloudfile/wetransfer/moz.build
index f07d0bc..68fbfa8 100644
--- a/comm/mail/components/cloudfile/wetransfer/moz.build
+++ b/comm/mail/components/cloudfile/wetransfer/moz.build
@@ -25,9 +25,18 @@ FINAL_TARGET_FILES.webextension.images += [
FINAL_TARGET_FILES.webextension._locales.ar += [
'webextension/_locales/ar/messages.json',
]
+FINAL_TARGET_FILES.webextension._locales.ast += [
+ 'webextension/_locales/ast/messages.json',
+]
+FINAL_TARGET_FILES.webextension._locales.bg += [
+ 'webextension/_locales/bg/messages.json',
+]
FINAL_TARGET_FILES.webextension._locales.br += [
'webextension/_locales/br/messages.json',
]
+FINAL_TARGET_FILES.webextension._locales.bs += [
+ 'webextension/_locales/bs/messages.json',
+]
FINAL_TARGET_FILES.webextension._locales.ca += [
'webextension/_locales/ca/messages.json',
]
@@ -64,6 +73,9 @@ FINAL_TARGET_FILES.webextension._locales.et += [
FINAL_TARGET_FILES.webextension._locales.eu += [
'webextension/_locales/eu/messages.json',
]
+FINAL_TARGET_FILES.webextension._locales.fa += [
+ 'webextension/_locales/fa/messages.json',
+]
FINAL_TARGET_FILES.webextension._locales.fi += [
'webextension/_locales/fi/messages.json',
]
diff --git a/comm/mail/components/cloudfile/wetransfer/webextension/_locales/ast/messages.json b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/ast/messages.json
new file mode 100644
index 0000000..23d3287
--- /dev/null
+++ b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/ast/messages.json
@@ -0,0 +1,17 @@
+{
+ "extensionDescription": {
+ "message": "Comparte axuntos per WeTransfer"
+ },
+ "extensionName": {
+ "message": "FileLink pa WeTransfer"
+ },
+ "serviceName": {
+ "message": "WeTransfer"
+ },
+ "moments_privacyPolicy": {
+ "message": "Política de privacidá"
+ },
+ "moments_tagline": {
+ "message": "WeTransfer ye'l mou más cenciellu d'unviar ficheros pel mundu."
+ }
+}
diff --git a/comm/mail/components/cloudfile/wetransfer/webextension/_locales/bg/messages.json b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/bg/messages.json
new file mode 100644
index 0000000..53b7060
--- /dev/null
+++ b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/bg/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/bs/messages.json b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/bs/messages.json
new file mode 100644
index 0000000..03219cb
--- /dev/null
+++ b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/bs/messages.json
@@ -0,0 +1,17 @@
+{
+ "extensionDescription": {
+ "message": "Dijelite svoje datoteke putem WeTransfer-a"
+ },
+ "extensionName": {
+ "message": "FileLink za WeTransfer"
+ },
+ "serviceName": {
+ "message": "WeTransfer"
+ },
+ "moments_privacyPolicy": {
+ "message": "Polica privatnosti"
+ },
+ "moments_tagline": {
+ "message": "WeTransfer je najjednostavniji način slanja datoteka širom svijeta."
+ }
+}
diff --git a/comm/mail/components/cloudfile/wetransfer/webextension/_locales/cs/messages.json b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/cs/messages.json
index 4e11240..7519648 100644
--- a/comm/mail/components/cloudfile/wetransfer/webextension/_locales/cs/messages.json
+++ b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/cs/messages.json
@@ -10,5 +10,8 @@
},
"moments_privacyPolicy": {
"message": "Zásady ochrany osobních údajů"
+ },
+ "moments_tagline": {
+ "message": "WeTransfer je nejjednodušší způsob pro odeslání souboru na druhou stranu světa."
}
}
diff --git a/comm/mail/components/cloudfile/wetransfer/webextension/_locales/fa/messages.json b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/fa/messages.json
new file mode 100644
index 0000000..4ed61c9
--- /dev/null
+++ b/comm/mail/components/cloudfile/wetransfer/webextension/_locales/fa/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/compose/content/MsgComposeCommands.js b/comm/mail/components/compose/content/MsgComposeCommands.js
index 745c6a3..3c4a45d 100644
--- a/comm/mail/components/compose/content/MsgComposeCommands.js
+++ b/comm/mail/components/compose/content/MsgComposeCommands.js
@@ -3018,6 +3018,11 @@ function ComposeStartup(aParams)
if (document.getElementById("sidebar").getAttribute("src") == "")
setTimeout(toggleAddressPicker, 0); // do this on a delay so we don't hurt perf. on bringing up a new compose window
}
+
+ // Update the priority button.
+ if (gMsgCompose.compFields.priority)
+ updatePriorityToolbarButton(gMsgCompose.compFields.priority);
+
gAutoSaveInterval = getPref("mail.compose.autosave") ?
getPref("mail.compose.autosaveinterval") * 60000 : 0;
@@ -5257,7 +5262,7 @@ function toggleAttachmentPane(aAction = "toggle") {
attachmentsBox.collapsed = false;
attachmentBucketSizer.collapsed = false;
attachmentBucketSizer.setAttribute("state", "");
- if (!bucketHasFocus)
+ if (!bucketHasFocus && eventSource == "key")
bucket.focus();
break;
@@ -6190,6 +6195,8 @@ var envelopeDragObserver = {
// Add attachments if any.
if (attachments.length > 0)
AddAttachments(attachments);
+
+ bucket.focus();
},
onDragOver: function (aEvent, aFlavour, aDragSession)
diff --git a/comm/mail/components/preferences/general.js b/comm/mail/components/preferences/general.js
index 4b248bc..9630c31 100644
--- a/comm/mail/components/preferences/general.js
+++ b/comm/mail/components/preferences/general.js
@@ -287,9 +287,10 @@ var gGeneralPane = {
for (let i = 0; i < engineList.itemCount; i++) {
let item = engineList.getItemAtIndex(i);
if (item.engine == Services.search.currentEngine) {
+ Services.search.removeEngine(item.engine);
item.remove();
engineList.selectedIndex = 0;
- Services.search.removeEngine(item.engine);
+ Services.search.currentEngine = engineList.selectedItem.engine;
this.updateRemoveButton();
break;
}
diff --git a/comm/mail/config/version.txt b/comm/mail/config/version.txt
index a3fc1cf..6ff5102 100644
--- a/comm/mail/config/version.txt
+++ b/comm/mail/config/version.txt
@@ -1 +1 @@
-60.6.1
+60.7.0
diff --git a/comm/mail/config/version_display.txt b/comm/mail/config/version_display.txt
index a3fc1cf..6ff5102 100644
--- a/comm/mail/config/version_display.txt
+++ b/comm/mail/config/version_display.txt
@@ -1 +1 @@
-60.6.1
+60.7.0
diff --git a/comm/mail/installer/windows/nsis/shared.nsh b/comm/mail/installer/windows/nsis/shared.nsh
index a1a9645..7c39d62 100755
--- a/comm/mail/installer/windows/nsis/shared.nsh
+++ b/comm/mail/installer/windows/nsis/shared.nsh
@@ -361,7 +361,6 @@
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
@@ -597,8 +596,9 @@
${WriteRegStr2} $TmpVal "$0" "GeckoVer" "${GREVersion}" 0
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}"
- ${WriteRegStr2} $TmpVal "$0" "" "${GREVersion}" 0
+ ${WriteRegStr2} $TmpVal "$0" "" "${AppVersion}" 0
${WriteRegStr2} $TmpVal "$0" "CurrentVersion" "${AppVersion} (${AB_CD})" 0
+ ${WriteRegStr2} $TmpVal "$0" "GeckoVersion" "${GREVersion}" 0
!macroend
!define SetAppKeys "!insertmacro SetAppKeys"
@@ -824,6 +824,11 @@
DeleteRegValue HKLM "$0" "$INSTDIR\${FileMainEXE}"
DeleteRegValue HKCU "$0" "$INSTDIR\${FileMainEXE}"
+ ; Remove the SupportUTF8 registry value as it causes MAPI issues on some locales
+ ; with non-ASCII characters in file names.
+ StrCpy $0 "Software\Clients\Mail\${ClientsRegName}"
+ DeleteRegValue HKLM $0 "SupportUTF8"
+
!macroend
!define RemoveDeprecatedKeys "!insertmacro RemoveDeprecatedKeys"
diff --git a/comm/mail/test/mozmill/composition/test-focus.js b/comm/mail/test/mozmill/composition/test-focus.js
index d04161d..8bcf943 100644
--- a/comm/mail/test/mozmill/composition/test-focus.js
+++ b/comm/mail/test/mozmill/composition/test-focus.js
@@ -36,12 +36,6 @@ function check_element_cycling(controller, attachmentsExpanded, ctrlTab) {
let key = ctrlTab ? "VK_TAB" : "VK_F6";
// We start on the addressing widget and go from there.
- // If we added an attachment, the attachment bucket got focused so
- // we need to fix this first.
- if (attachmentsExpanded) {
- assert_equals(attachmentElement, controller.window.WhichElementHasFocus());
- controller.window.SetMsgAddressingWidgetTreeElementFocus();
- }
controller.keypress(null, key, {ctrlKey: ctrlTab});
assert_equals(subjectElement, controller.window.WhichElementHasFocus());
diff --git a/comm/mail/themes/windows/mail/messenger.css b/comm/mail/themes/windows/mail/messenger.css
index 106c2ca..5887825 100644
--- a/comm/mail/themes/windows/mail/messenger.css
+++ b/comm/mail/themes/windows/mail/messenger.css
@@ -537,6 +537,11 @@ statusbarpanel label {
}
}
+.progressmeter-statusbar {
+ margin-top: 1px;
+ margin-bottom: 1px;
+}
+
/* Status panel */
.statusbarpanel-iconic {
diff --git a/comm/mail/themes/windows/mail/primaryToolbar.css b/comm/mail/themes/windows/mail/primaryToolbar.css
index d816562..20c8f08 100644
--- a/comm/mail/themes/windows/mail/primaryToolbar.css
+++ b/comm/mail/themes/windows/mail/primaryToolbar.css
@@ -84,7 +84,6 @@
* we have to reorder this element to come last, hence the
* ordinal group value (see bug 853415). */
-moz-box-ordinal-group: 1001;
- box-shadow: 0 0 50px 8px ActiveCaption;
content: "";
display: -moz-box;
height: 0;
@@ -96,11 +95,6 @@
}
#messengerWindow[tabsintitlebar]:not([sizemode=fullscreen])
- #tabs-toolbar:not(:-moz-lwtheme):-moz-window-inactive::after {
- box-shadow: 0 0 50px 8px InactiveCaption;
- }
-
- #messengerWindow[tabsintitlebar]:not([sizemode=fullscreen])
#tabmail-container:not(:-moz-lwtheme) {
position: relative;
z-index: 2;
diff --git a/comm/mailnews/addrbook/src/nsAbDirProperty.cpp b/comm/mailnews/addrbook/src/nsAbDirProperty.cpp
index dddb9d9..b653912 100644
--- a/comm/mailnews/addrbook/src/nsAbDirProperty.cpp
+++ b/comm/mailnews/addrbook/src/nsAbDirProperty.cpp
@@ -472,7 +472,16 @@ NS_IMETHODIMP nsAbDirProperty::UseForAutocomplete(const nsACString &aIdentityKey
&rv));
NS_ENSURE_SUCCESS(rv, rv);
- return prefBranch->GetBoolPref("mail.enable_autocomplete", aResult);
+ rv = prefBranch->GetBoolPref("mail.enable_autocomplete", aResult);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ // If autocomplete is generally enabled, check if it has been disabled explicitly for this directory.
+ if (*aResult)
+ {
+ (void) GetBoolValue("enable_autocomplete", true, aResult);
+ }
+
+ return rv;
}
NS_IMETHODIMP nsAbDirProperty::GetDirPrefId(nsACString &aDirPrefId)
diff --git a/comm/mailnews/imap/src/nsIMAPBodyShell.cpp b/comm/mailnews/imap/src/nsIMAPBodyShell.cpp
index b9280cb..ba29561 100644
--- a/comm/mailnews/imap/src/nsIMAPBodyShell.cpp
+++ b/comm/mailnews/imap/src/nsIMAPBodyShell.cpp
@@ -719,10 +719,11 @@ bool nsIMAPBodypartLeaf::ShouldFetchInline(nsIMAPBodyShell *aShell)
}
#endif // XP_MACOSX
- // Leave out parts with type application/*
- if (!PL_strcasecmp(m_bodyType, "APPLICATION") && // If it is of type "application"
- PL_strncasecmp(m_bodySubType, "x-pkcs7", 7) // and it's not a signature (signatures are inline)
- )
+ // Fetch type APPLICAION now if the subtype is a signature or if it's an
+ // octet-stream. Otherwise, fetch on demand.
+ if (!PL_strcasecmp(m_bodyType, "APPLICATION") &&
+ PL_strncasecmp(m_bodySubType, "x-pkcs7", 7) &&
+ PL_strcasecmp(m_bodySubType, "octet-stream"))
return false; // we can leave it on the server
if (!PL_strcasecmp(m_bodyType, "AUDIO"))
return false;
diff --git a/comm/suite/app/Makefile.in b/comm/suite/app/Makefile.in
index 72e1fc0..58b60cb 100644
--- a/comm/suite/app/Makefile.in
+++ b/comm/suite/app/Makefile.in
@@ -2,13 +2,11 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+dist_dest = $(DIST)/$(MOZ_MACBUNDLE_NAME)
+
AB_CD = $(MOZ_UI_LOCALE)
-# For splash.rc
-DEFINES += \
- -DSEAMONKEY_ICO='"$(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/icons/windows/main-window.ico"' \
- -DHTML_FILE_ICO='"$(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/icons/windows/html-file.ico"' \
- $(NULL)
+LICENSE_TXT_FILE = $(topsrcdir)/comm/suite/installer/license.txt
# Build a binary bootstrapping with XRE_main
@@ -29,9 +27,7 @@ include $(topsrcdir)/config/config.mk
# If we are trying to show an error dialog about the lack of SSE2 support,
# make sure that code itself doesn't use SSE2.
ifdef MOZ_LINUX_32_SSE2_STARTUP_ERROR
-CXXFLAGS := $(filter-out -march=% -msse -msse2 -mfpmath=sse,$(CXXFLAGS))
CXX := $(filter-out -march=% -msse -msse2 -mfpmath=sse,$(CXX))
-CXXFLAGS += -mno-sse -mno-sse2 -mfpmath=387
CXX += -march=pentiumpro
endif
@@ -45,23 +41,22 @@ endif
include $(topsrcdir)/config/rules.mk
-libs::
+libs:: $(LICENSE_TXT_FILE)
ifeq ($(OS_ARCH),WINNT)
$(EXIT_ON_ERROR) \
- $(PERL) -pe 's/(?<!\r)\n/\r\n/g;' < $(topsrcdir)/comm/suite/installer/license.txt > $(DIST)/bin/license.txt
+ $(PERL) -pe 's/(?<!\r)\n/\r\n/g;' < $^ > $(DIST)/bin/license.txt
else
- $(INSTALL) $(IFLAGS1) $(topsrcdir)/comm/suite/installer/license.txt $(DIST)/bin/
+ $(INSTALL) $(IFLAGS1) $^ $(DIST)/bin/
endif
ifneq ($(OS_ARCH),WINNT)
+ifdef COMPILE_ENVIRONMENT
libs::
cp -p $(MOZ_APP_NAME)$(BIN_SUFFIX) $(DIST)/bin/$(MOZ_APP_NAME)-bin$(BIN_SUFFIX)
-
endif
-libs:: blocklist.xml
- $(INSTALL) $(IFLAGS1) $^ $(DIST)/bin
+endif
ifneq (,$(filter-out WINNT Darwin,$(OS_ARCH)))
$(MOZ_APP_NAME).1: seamonkey.man.in $(GLOBAL_DEPS) $(DEPTH)/config/autoconf.mk
@@ -74,7 +69,7 @@ libs:: $(MOZ_APP_NAME).1
$(INSTALL) $< $(DIST)/man/man1
GARBAGE += $(MOZ_APP_NAME).1
-GARBAGE += $(addprefix $(DIST)/bin/defaults/pref/, browser-prefs.js)
+GARBAGE += $(addprefix $(FINAL_TARGET)/defaults/pref/, browser-prefs.js)
endif
# Make extensions end up as XPIs instead of flat chrome when doing omni.jar.
@@ -87,7 +82,7 @@ endif
ABS_STAGE = $(abspath $(STAGEDIST))
define _PACKAGE_EXTENSIONS
-@echo "Packaging $(dir).xpi..."
+@echo "Packaging $(dir)..."
if test -d "$(ABS_STAGE)/$(dir)"; then \
cd $(ABS_STAGE)/$(dir)/; \
$(ZIP) -r9mX ../$(dir).xpi * -x \*/.mkdir.done; \
@@ -118,8 +113,6 @@ ifdef MOZ_DEBUG
MAC_APP_NAME := $(MAC_APP_NAME)Debug
endif
-LOWER_MAC_APP_NAME = $(shell echo $(MAC_APP_NAME) | tr '[A-Z]' '[a-z]')
-
ifeq (zh-TW,$(AB_CD))
LPROJ_ROOT := $(subst -,_,$(AB_CD))
else
@@ -128,20 +121,21 @@ endif
LPROJ := Contents/Resources/$(LPROJ_ROOT).lproj
clean clobber repackage::
- $(RM) -r '$(DIST)/$(MOZ_MACBUNDLE_NAME)'
-
-tools:: $(PROGRAM)
- mkdir -p '$(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/MacOS'
- rsync -a --exclude "*.in" $(srcdir)/macbuild/Contents '$(DIST)/$(MOZ_MACBUNDLE_NAME)' --exclude English.lproj
- mkdir -p '$(DIST)/$(MOZ_MACBUNDLE_NAME)/$(LPROJ)'
- rsync -a --exclude "*.in" $(srcdir)/macbuild/Contents/Resources/English.lproj/ '$(DIST)/$(MOZ_MACBUNDLE_NAME)/$(LPROJ)'
- sed -e "s/\@MOZ_APP_NAME\@/$(MOZ_APP_NAME)/" -e "s/\@MAC_APP_NAME\@/$(MAC_APP_NAME)/" -e "s/\@MOZ_APP_DISPLAYNAME\@/$(MOZ_APP_DISPLAYNAME)/" -e "s/\@MOZ_APP_VERSION\@/$(MOZ_APP_VERSION)/" $(srcdir)/macbuild/Contents/Info.plist.in > '$(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/Info.plist'
- sed -e "s/\@MOZ_APP_NAME\@/$(MOZ_APP_NAME)/" -e "s/\@MAC_APP_NAME\@/$(MAC_APP_NAME)/" -e "s/\@MOZ_APP_DISPLAYNAME\@/$(MOZ_APP_DISPLAYNAME)/" -e "s/\@MOZ_APP_VERSION\@/$(MOZ_APP_VERSION)/" $(srcdir)/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in | iconv -f UTF-8 -t UTF-16 > '$(DIST)/$(MOZ_MACBUNDLE_NAME)/$(LPROJ)/InfoPlist.strings'
- rsync -a --exclude-from='$(srcdir)/macbuild/Contents/MacOS-files.in' $(DIST)/bin/ '$(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/Resources'
- rsync -a --include-from='$(srcdir)/macbuild/Contents/MacOS-files.in' --exclude '*' $(DIST)/bin/ '$(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/MacOS'
- rm -f '$(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/MacOS/$(PROGRAM)'
- rsync -aL $(PROGRAM) '$(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/MacOS'
- cp -RL $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/seamonkey.icns '$(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/Resources/seamonkey.icns'
- cp -RL $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/document.icns '$(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/Resources/document.icns'
- printf APPLMOZZ > '$(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/PkgInfo'
+ $(RM) -r '$(dist_dest)'
+
+tools:: $(DIST)/bin/$(MOZ_APP_NAME)
+ rm -rf $(dist_dest)
+ mkdir -p '$(dist_dest)/Contents/MacOS'
+ rsync -a --exclude "*.in" $(srcdir)/macbuild/Contents '$(dist_dest)' --exclude English.lproj
+ mkdir -p '$(dist_dest)/$(LPROJ)'
+ rsync -a --exclude "*.in" $(srcdir)/macbuild/Contents/Resources/English.lproj/ '$(dist_dest)/$(LPROJ)'
+ sed -e 's/\@MOZ_APP_NAME\@/$(MOZ_APP_NAME)/' -e 's/\@MAC_APP_NAME\@/$(MAC_APP_NAME)/' -e 's/\@MOZ_APP_DISPLAYNAME\@/$(MOZ_APP_DISPLAYNAME)/' -e 's/\@MOZ_APP_VERSION\@/$(MOZ_APP_VERSION)/' -e 's/\@MOZ_MACBUNDLE_ID\@/$(MOZ_MACBUNDLE_ID)/' -e 's|\@MOZ_DEVELOPER_REPO_PATH\@|$(topsrcdir)|' -e 's|\@MOZ_DEVELOPER_OBJ_PATH\@|$(topobjdir)|' $(srcdir)/macbuild/Contents/Info.plist.in > '$(dist_dest)/Contents/Info.plist'
+ sed -e "s/\@MAC_APP_NAME\@/$(MAC_APP_NAME)/" $(srcdir)/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in | iconv -f UTF-8 -t UTF-16 > '$(dist_dest)/$(LPROJ)/InfoPlist.strings'
+ rsync -a --exclude-from='$(srcdir)/macbuild/Contents/MacOS-files.in' $(DIST)/bin/ '$(dist_dest)/Contents/Resources'
+ rsync -a --include-from='$(srcdir)/macbuild/Contents/MacOS-files.in' --exclude '*' $(DIST)/bin/ '$(dist_dest)/Contents/MacOS'
+ rm -f '$(dist_dest)/Contents/MacOS/$(MOZ_APP_NAME)'
+ rsync -aL $(DIST)/bin/$(MOZ_APP_NAME) '$(dist_dest)/Contents/MacOS'
+ cp -RL $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/seamonkey.icns '$(dist_dest)/Contents/Resources/seamonkey.icns'
+ cp -RL $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/document.icns '$(dist_dest)/Contents/Resources/document.icns'
+ printf APPLMOZZ > '$(dist_dest)/Contents/PkgInfo'
endif
diff --git a/comm/suite/app/macbuild/Contents/Info.plist.in b/comm/suite/app/macbuild/Contents/Info.plist.in
index 5b7f43b..b63daf7 100644
--- a/comm/suite/app/macbuild/Contents/Info.plist.in
+++ b/comm/suite/app/macbuild/Contents/Info.plist.in
@@ -7,7 +7,7 @@
<key>CFBundleExecutable</key>
<string>@MOZ_APP_NAME@</string>
<key>CFBundleIdentifier</key>
- <string>org.mozilla.@MAC_APP_NAME@</string>
+ <string>@MOZ_MACBUNDLE_ID@</string>
<key>CFBundleVersion</key>
<string>@MOZ_APP_VERSION@</string>
<key>CFBundleDevelopmentRegion</key>
@@ -28,6 +28,11 @@
<true/>
<key>LSApplicationCategoryType</key>
<string>public.app-category.productivity</string>
+ <key>LSEnvironment</key>
+ <dict>
+ <key>MallocNanoZone</key>
+ <string>0</string>
+ </dict>
<key>LSMinimumSystemVersion</key>
<string>10.9.0</string>
<key>CFBundleDocumentTypes</key>
@@ -70,11 +75,32 @@
<string>htm</string>
<string>shtml</string>
<string>xml</string>
+ <string>xht</string>
<string>xhtml</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>document.icns</string>
</dict>
+ <dict>
+ <key>CFBundleTypeName</key>
+ <string>JSON File</string>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ <key>CFBundleTypeOSTypes</key>
+ <array>
+ <string>TEXT</string>
+ </array>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>json</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>document.icns</string>
+ <key>CFBundleTypeMIMETypes</key>
+ <array>
+ <string>application/json</string>
+ </array>
+ </dict>
<dict>
<key>CFBundleTypeName</key>
<string>@MOZ_APP_DISPLAYNAME@ E-mail</string>
@@ -233,9 +259,11 @@
</array>
<key>NSSupportsAutomaticGraphicsSwitching</key>
<true/>
- <key>NSDisablePersistence</key>
- <true/>
<key>NSPrincipalClass</key>
<string>GeckoNSApplication</string>
+ <key>MozillaDeveloperRepoPath</key>
+ <string>@MOZ_DEVELOPER_REPO_PATH@</string>
+ <key>MozillaDeveloperObjPath</key>
+ <string>@MOZ_DEVELOPER_OBJ_PATH@</string>
</dict>
</plist>
diff --git a/comm/suite/app/moz.build b/comm/suite/app/moz.build
index 64933fa..b8fd0e0 100644
--- a/comm/suite/app/moz.build
+++ b/comm/suite/app/moz.build
@@ -8,8 +8,9 @@ DIRS += [
]
GeckoProgram(CONFIG['MOZ_APP_NAME'])
-USE_LIBS += ['mozglue']
+
SOURCES += ['nsSuiteApp.cpp']
+
LOCAL_INCLUDES += [
'!/build',
'/ipc/contentproc/',
@@ -49,6 +50,11 @@ if CONFIG['MOZ_SANDBOX'] and CONFIG['OS_ARCH'] == 'WINNT':
'user32.dll',
]
+ if CONFIG['CC_TYPE'] == "msvc":
+ CFLAGS += ['-guard:cf']
+ CXXFLAGS += ['-guard:cf']
+ LDFLAGS += ['-guard:cf']
+
# Control the default heap size.
# This is the heap returned by GetProcessHeap().
# As we use the CRT heap, the default size is too large and wastes VM.
@@ -60,15 +66,31 @@ if CONFIG['MOZ_SANDBOX'] and CONFIG['OS_ARCH'] == 'WINNT':
if CONFIG['OS_ARCH'] == 'WINNT' and CONFIG['CC_TYPE'] not in ('clang', 'gcc'):
LDFLAGS += ['/HEAP:0x40000']
+DisableStlWrapping()
+
if CONFIG['MOZ_LINKER']:
OS_LIBS += CONFIG['MOZ_ZLIB_LIBS']
+if CONFIG['HAVE_CLOCK_MONOTONIC']:
+ OS_LIBS += CONFIG['REALTIME_LIBS']
+
if CONFIG['MOZ_LINUX_32_SSE2_STARTUP_ERROR']:
DEFINES['MOZ_LINUX_32_SSE2_STARTUP_ERROR'] = True
+ COMPILE_FLAGS['OS_CXXFLAGS'] = [
+ f for f in COMPILE_FLAGS.get('OS_CXXFLAGS', [])
+ if not f.startswith('-march=') and f not in ('-msse', '-msse2', '-mfpmath=sse')
+ ] + [
+ '-mno-sse', '-mno-sse2', '-mfpmath=387',
+ ]
-DEFINES['APP_VERSION'] = CONFIG['MOZ_APP_VERSION']
+# For splash.rc
+DEFINES['SEAMONKEY_ICO'] = '"%s/%s/icons/windows/main-window.ico"' % (
+ TOPSRCDIR, CONFIG['MOZ_BRANDING_DIRECTORY'])
+DEFINES['HTML_FILE_ICO'] = '"%s/%s/icons/windows/html-file.ico"' % (
+ TOPSRCDIR, CONFIG['MOZ_BRANDING_DIRECTORY'])
-DisableStlWrapping()
+DEFINES['APP_VERSION'] = CONFIG['MOZ_APP_VERSION']
+FINAL_TARGET_FILES += ['blocklist.xml']
FINAL_TARGET_FILES.defaults += ['permissions']
diff --git a/comm/suite/app/splash.rc b/comm/suite/app/splash.rc
index 3b2c710..966ccaf 100644
--- a/comm/suite/app/splash.rc
+++ b/comm/suite/app/splash.rc
@@ -9,7 +9,7 @@
STRINGTABLE DISCARDABLE
BEGIN
- IDS_STARTMENU_APPNAME, "@MOZ_APP_DISPLAYNAME@"
+ IDS_STARTMENU_APPNAME, "@MOZ_APP_DISPLAYNAME@"
END
// Program icon.
diff --git a/comm/suite/base/content/unix/platformCommunicatorOverlay.xul b/comm/suite/base/content/unix/platformCommunicatorOverlay.xul
index 316c1c6..b8e5c80 100644
--- a/comm/suite/base/content/unix/platformCommunicatorOverlay.xul
+++ b/comm/suite/base/content/unix/platformCommunicatorOverlay.xul
@@ -17,26 +17,26 @@
<overlay id="platformCommunicatorOverlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
- <!-- close -->
- <menuitem id="menu_close" label="&closeCmd.label;" key="key_close" accesskey="&closeCmd.accesskey;" command="cmd_close"/>
- <key id="key_close" key="&closeCmd.key;" command="cmd_close" modifiers="accel"/>
- <key id="key_closeWindow" key="&closeCmd.key;" command="cmd_closeWindow" modifiers="accel,shift"/>
-
- <!-- quit -->
- <menupopup id="menu_FilePopup">
- <menuseparator id="menu_FileQuitSeparator"/>
- <menuitem label="&quitApplicationCmd.label;" id="menu_FileQuitItem"
- key="key_quit" accesskey="&quitApplicationCmd.accesskey;" command="cmd_quit"/>
- </menupopup>
- <key id="key_quit" key="&quitApplicationCmd.key;" command="cmd_quit" modifiers="accel"/>
-
- <!-- Edit Menu -->
- <key id="key_redo" key="&redoCmd.key;" command="cmd_redo" modifiers="accel"/>
-
- <!-- Select All Key -->
- <key id="key_selectAll" key="&selectAllCmd.key;" modifiers="alt"/>
-
- <!-- Delete Key -->
+ <!-- close -->
+ <menuitem id="menu_close" label="&closeCmd.label;" key="key_close" accesskey="&closeCmd.accesskey;" command="cmd_close"/>
+ <key id="key_close" key="&closeCmd.key;" command="cmd_close" modifiers="accel"/>
+ <key id="key_closeWindow" key="&closeCmd.key;" command="cmd_closeWindow" modifiers="accel,shift"/>
+
+ <!-- quit -->
+ <menupopup id="menu_FilePopup">
+ <menuseparator id="menu_FileQuitSeparator"/>
+ <menuitem label="&quitApplicationCmd.label;" id="menu_FileQuitItem"
+ key="key_quit" accesskey="&quitApplicationCmd.accesskey;" command="cmd_quit"/>
+ </menupopup>
+ <key id="key_quit" key="&quitApplicationCmd.key;" command="cmd_quit" modifiers="accel"/>
+
+ <!-- Edit Menu -->
+ <key id="key_redo" key="&redoCmd.key;" command="cmd_redo" modifiers="accel"/>
+
+ <!-- Select All Key -->
+ <key id="key_selectAll" key="&selectAllCmd.key;" modifiers="alt"/>
+
+ <!-- Delete Key -->
<key id="key_delete" keycode="VK_DELETE" command="cmd_delete"/>
<keyset id="findKeys">
diff --git a/comm/suite/browser/browser-prefs.js b/comm/suite/browser/browser-prefs.js
index ba695c1..d280fe1 100644
--- a/comm/suite/browser/browser-prefs.js
+++ b/comm/suite/browser/browser-prefs.js
@@ -42,8 +42,8 @@ pref("general.autoScroll", true);
pref("general.useragent.compatMode.firefox", true);
// 0 = blank, 1 = home (browser.startup.homepage), 2 = last visited page, 3 = resume previous browser session
-pref("browser.startup.page", 1);
-pref("browser.startup.homepage", "chrome://navigator-region/locale/region.properties");
+pref("browser.startup.page", 1);
+pref("browser.startup.homepage", "chrome://navigator-region/locale/region.properties");
pref("browser.startup.homepage.count", 1);
pref("browser.warnOnQuit", true);
@@ -427,7 +427,7 @@ pref("browser.safebrowsing.downloads.remote.block_potentially_unwanted", false);
pref("browser.safebrowsing.downloads.remote.block_uncommon", false);
// Overriding defaults defined in all.js (use full version 2.x, bypassing bug 1077874)
-pref("browser.safebrowsing.provider.google.updateURL", "https://safebrowsing.google.com/safebrowsing/downloads?client=SAFEBROWSING_ID&appver=%VERSION%&pver=2.2&key=%GOOGLE_API_KEY%");
+pref("browser.safebrowsing.provider.google.updateURL", "https://safebrowsing.google.com/safebrowsing/downloads?client=SAFEBROWSING_ID&appver=%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=%VERSION%&pver=2.2");
pref("browser.safebrowsing.provider.mozilla.updateURL", "https://shavar.services.mozilla.com/downloads?client=SAFEBROWSING_ID&appver=%VERSION%&pver=2.2");
pref("browser.safebrowsing.provider.mozilla.gethashURL", "https://shavar.services.mozilla.com/gethash?client=SAFEBROWSING_ID&appver=%VERSION%&pver=2.2");
@@ -823,7 +823,7 @@ pref("security.mixed_content.block_active_content", true);
// Turn on the CSP 1.0 parser for Content Security Policy headers
pref("security.csp.speccompliant", true);
-pref("geo.wifi.uri", "https://www.googleapis.com/geolocation/v1/geolocate?key=%GOOGLE_API_KEY%");
+pref("geo.wifi.uri", "https://www.googleapis.com/geolocation/v1/geolocate?key=%GOOGLE_LOCATION_SERVICE_API_KEY%");
// Some of these prefs are specified even though they may be redundant; they are given
// here for clarity and end-user experiments with platform-provided geolocation.
diff --git a/comm/suite/browser/jar.mn b/comm/suite/browser/jar.mn
index a24d5df..d6266fc 100644
--- a/comm/suite/browser/jar.mn
+++ b/comm/suite/browser/jar.mn
@@ -35,7 +35,7 @@ comm.jar:
content/navigator/platformNavigationBindings.xul (mac/platformNavigationBindings.xul)
content/navigator/platformMailOverlay.xul (mac/platformMailOverlay.xul)
#else
-#ifdef XP_WIN32
+#ifdef XP_WIN
content/navigator/platformNavigationBindings.xul (win/platformNavigationBindings.xul)
content/navigator/platformMailOverlay.xul (win/platformMailOverlay.xul)
#else
diff --git a/comm/suite/browser/metadata.xul b/comm/suite/browser/metadata.xul
index 4a88cca..540d245 100644
--- a/comm/suite/browser/metadata.xul
+++ b/comm/suite/browser/metadata.xul
@@ -98,11 +98,11 @@
<label value="&image-height.label; " control="image-height-text"/>
<textbox readonly="true" id="image-height-text" class="meta-properties"/>
</row>
- <row id="image-filesize">
+ <row id="image-filesize">
<separator orient="vertical"/>
<label value="&image-filesize.label; " control="image-filesize-text"/>
<textbox readonly="true" id="image-filesize-text" value="&image-filesize.value;" class="meta-properties"/>
- </row>
+ </row>
<row id="image-alt">
<separator orient="vertical"/>
<label value="&image-alt.label; " control="image-alt-text"/>
diff --git a/comm/suite/components/helpviewer/content/helpContextOverlay.xul b/comm/suite/components/helpviewer/content/helpContextOverlay.xul
index a84c9b9..de3c606 100644
--- a/comm/suite/components/helpviewer/content/helpContextOverlay.xul
+++ b/comm/suite/components/helpviewer/content/helpContextOverlay.xul
@@ -36,13 +36,13 @@
command="cmd_selectAll"/>
<menuseparator/>
<menuitem id="zoom-in"
- label="&fullZoomEnlargeBtn.label;"
- accesskey="&fullZoomEnlargeBtn.accesskey;"
- oncommand="ZoomManager.enlarge();"/>
+ label="&fullZoomEnlargeBtn.label;"
+ accesskey="&fullZoomEnlargeBtn.accesskey;"
+ oncommand="ZoomManager.enlarge();"/>
<menuitem id="zoom-out"
- label="&fullZoomReduceBtn.label;"
- accesskey="&fullZoomReduceBtn.accesskey;"
- oncommand="ZoomManager.reduce();"/>
+ label="&fullZoomReduceBtn.label;"
+ accesskey="&fullZoomReduceBtn.accesskey;"
+ oncommand="ZoomManager.reduce();"/>
#ifdef XP_WIN
#define HELP_ALWAYS_RAISED_TOGGLE
#endif
diff --git a/comm/suite/components/nsSuiteGlue.js b/comm/suite/components/nsSuiteGlue.js
index ad09f13..11d6389 100644
--- a/comm/suite/components/nsSuiteGlue.js
+++ b/comm/suite/components/nsSuiteGlue.js
@@ -28,6 +28,7 @@ XPCOMUtils.defineLazyModuleGetters(this, {
PrivateBrowsingUtils: "resource://gre/modules/PrivateBrowsingUtils.jsm",
Integration: "resource://gre/modules/Integration.jsm",
PermissionUI: "resource:///modules/PermissionUI.jsm",
+ AppConstants: "resource://gre/modules/AppConstants.jsm",
});
XPCOMUtils.defineLazyGetter(this, "DebuggerServer", () => {
@@ -866,6 +867,10 @@ SuiteGlue.prototype = {
* having updates off and an old build that likely should be updated.
*/
_shouldShowUpdateWarning: function () {
+ // If the Updater is not available we don't show the warning.
+ if (!AppConstants.MOZ_UPDATER) {
+ return false;
+ }
// Look for an unconditional override pref. If set, do what it says.
// (true --> never show, false --> always show)
try {
diff --git a/comm/suite/components/places/content/places.js b/comm/suite/components/places/content/places.js
index bb46320..74336c7 100644
--- a/comm/suite/components/places/content/places.js
+++ b/comm/suite/components/places/content/places.js
@@ -4,7 +4,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/* import-globals-from editBookmarkOverlay.js */
-/* import-globals-from ../../../../toolkit/content/contentAreaUtils.js */
+/* import-globals-from ../../../../../toolkit/content/contentAreaUtils.js */
ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
diff --git a/comm/suite/components/places/tests/autocomplete/.eslintrc b/comm/suite/components/places/tests/autocomplete/.eslintrc
deleted file mode 100644
index 8a895f9..0000000
--- a/comm/suite/components/places/tests/autocomplete/.eslintrc
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "extends": [
- "../../../../../testing/xpcshell/xpcshell.eslintrc"
- ]
-}
diff --git a/comm/suite/components/pref/content/pref-applicationManager.js b/comm/suite/components/pref/content/pref-applicationManager.js
index 7a0be53..cfb1092 100644
--- a/comm/suite/components/pref/content/pref-applicationManager.js
+++ b/comm/suite/components/pref/content/pref-applicationManager.js
@@ -30,7 +30,7 @@ var gAppManagerDialog = {
var apps = this.handlerInfo.possibleApplicationHandlers.enumerate();
while (apps.hasMoreElements()) {
let app = apps.getNext();
- app.QueryInterface(nsIHandlerApp);
+ app.QueryInterface(Ci.nsIHandlerApp);
var item = list.appendItem(app.name);
item.className = "listitem-iconic";
item.setAttribute("image", gApplicationsPane._getIconURLForHandlerApp(app));
@@ -83,16 +83,16 @@ var gAppManagerDialog = {
document.getElementById("cmd_delete").removeAttribute("disabled");
var app = list.selectedItem.app;
var address = "";
- if (app instanceof nsILocalHandlerApp)
+ if (app instanceof Ci.nsILocalHandlerApp)
address = app.executable.path;
- else if (app instanceof nsIWebHandlerApp)
+ else if (app instanceof Ci.nsIWebHandlerApp)
address = app.uriTemplate;
- else if (app instanceof nsIWebContentHandlerInfo)
+ else if (app instanceof Ci.nsIWebContentHandlerInfo)
address = app.uri;
document.getElementById("appLocation").value = address;
var bundle = document.getElementById("appManagerBundle");
- var appType = app instanceof nsILocalHandlerApp ? "descriptionLocalApp"
- : "descriptionWebApp";
+ var appType = app instanceof Ci.nsILocalHandlerApp ? "descriptionLocalApp"
+ : "descriptionWebApp";
document.getElementById("appType").value = bundle.getString(appType);
}
};
diff --git a/comm/suite/components/pref/content/pref-applications.js b/comm/suite/components/pref/content/pref-applications.js
index 7ea9508..86d5b38 100644
--- a/comm/suite/components/pref/content/pref-applications.js
+++ b/comm/suite/components/pref/content/pref-applications.js
@@ -14,16 +14,6 @@ function Startup()
//****************************************************************************//
// Constants & Enumeration Values
-// constants for interfaces we need multiple times
-const nsIHandlerApp = Ci.nsIHandlerApp;
-const nsIHandlerInfo = Ci.nsIHandlerInfo;
-const nsILocalHandlerApp = Ci.nsILocalHandlerApp;
-const nsIWebHandlerApp = Ci.nsIWebHandlerApp;
-const nsIWebContentHandlerInfo = Ci.nsIWebContentHandlerInfo;
-const nsIFilePicker = Ci.nsIFilePicker;
-const nsIMIMEInfo = Ci.nsIMIMEInfo;
-const nsIPropertyBag = Ci.nsIPropertyBag;
-
// global services
var handlerSvc = Cc["@mozilla.org/uriloader/handler-service;1"]
.getService(Ci.nsIHandlerService);
@@ -116,7 +106,7 @@ function getFileDisplayName(aFile) {
function getLocalHandlerApp(aFile) {
var localHandlerApp = Cc["@mozilla.org/uriloader/local-handler-app;1"]
- .createInstance(nsILocalHandlerApp);
+ .createInstance(Ci.nsILocalHandlerApp);
localHandlerApp.name = getFileDisplayName(aFile);
localHandlerApp.executable = aFile;
@@ -261,11 +251,11 @@ HandlerInfoWrapper.prototype = {
// Note: "save to disk" is an invalid value for protocol info objects,
// but the alwaysAskBeforeHandling getter will detect that situation
// and always return true in that case to override this invalid value.
- if (this.wrappedHandlerInfo.preferredAction == nsIHandlerInfo.useHelperApp &&
+ if (this.wrappedHandlerInfo.preferredAction == Ci.nsIHandlerInfo.useHelperApp &&
!gApplicationsPane.isValidHandlerApp(this.preferredApplicationHandler)) {
return this.wrappedHandlerInfo.hasDefaultHandler ?
- nsIHandlerInfo.useSystemDefault :
- nsIHandlerInfo.saveToDisk;
+ Ci.nsIHandlerInfo.useSystemDefault :
+ Ci.nsIHandlerInfo.saveToDisk;
}
return this.wrappedHandlerInfo.preferredAction;
@@ -296,8 +286,8 @@ HandlerInfoWrapper.prototype = {
// app, but the preferredApplicationHandler is invalid, and there isn't
// a default handler, so the preferredAction getter returns save to disk
// instead.
- if (!(this.wrappedHandlerInfo instanceof nsIMIMEInfo) &&
- this.preferredAction == nsIHandlerInfo.saveToDisk)
+ if (!(this.wrappedHandlerInfo instanceof Ci.nsIMIMEInfo) &&
+ this.preferredAction == Ci.nsIHandlerInfo.saveToDisk)
return true;
return this.wrappedHandlerInfo.alwaysAskBeforeHandling;
@@ -318,7 +308,7 @@ HandlerInfoWrapper.prototype = {
// those properties for an extension?
get primaryExtension() {
try {
- if (this.wrappedHandlerInfo instanceof nsIMIMEInfo &&
+ if (this.wrappedHandlerInfo instanceof Ci.nsIMIMEInfo &&
this.wrappedHandlerInfo.primaryExtension)
return this.wrappedHandlerInfo.primaryExtension;
} catch(ex) {}
@@ -423,7 +413,7 @@ HandlerInfoWrapper.prototype = {
if (this.primaryExtension)
return "moz-icon://goat." + this.primaryExtension + "?size=" + aSize;
- if (this.wrappedHandlerInfo instanceof nsIMIMEInfo)
+ if (this.wrappedHandlerInfo instanceof Ci.nsIMIMEInfo)
return "moz-icon://goat?size=" + aSize + "&contentType=" + this.type;
// We're falling back to a generic icon when we can't get a URL for one
@@ -493,11 +483,11 @@ FeedHandlerInfo.prototype = {
},
set preferredApplicationHandler(aNewValue) {
- if (aNewValue instanceof nsILocalHandlerApp) {
+ if (aNewValue instanceof Ci.nsILocalHandlerApp) {
document.getElementById(this._prefSelectedApp).value = aNewValue.executable;
document.getElementById(this._prefSelectedReader).value = "client";
}
- else if (aNewValue instanceof nsIWebContentHandlerInfo) {
+ else if (aNewValue instanceof Ci.nsIWebContentHandlerInfo) {
document.getElementById(this._prefSelectedWeb).value = aNewValue.uri;
document.getElementById(this._prefSelectedReader).value = "web";
// Make the web handler be the new "auto handler" for feeds.
@@ -597,9 +587,9 @@ FeedHandlerInfo.prototype = {
if (defaultFeedReader) {
let handlerApp = Cc["@mozilla.org/uriloader/local-handler-app;1"]
- .createInstance(nsIHandlerApp);
+ .createInstance(Ci.nsIHandlerApp);
handlerApp.name = getFileDisplayName(defaultFeedReader);
- handlerApp.QueryInterface(nsILocalHandlerApp);
+ handlerApp.QueryInterface(Ci.nsILocalHandlerApp);
handlerApp.executable = defaultFeedReader;
this.__defaultApplicationHandler = handlerApp;
@@ -643,16 +633,16 @@ FeedHandlerInfo.prototype = {
// the default app; otherwise return useHelperApp.
if (gApplicationsPane.isValidHandlerApp(preferredApp)) {
if (defaultApp && defaultApp.equals(preferredApp))
- return nsIHandlerInfo.useSystemDefault;
+ return Ci.nsIHandlerInfo.useSystemDefault;
- return nsIHandlerInfo.useHelperApp;
+ return Ci.nsIHandlerInfo.useHelperApp;
}
// The pref is set to "reader", but we don't have a valid preferred app.
// What do we do now? Not sure this is the best option (perhaps we
// should direct the user to the default app, if any), but for now let's
// direct the user to live bookmarks.
- return nsIHandlerInfo.handleInternally;
+ return Ci.nsIHandlerInfo.handleInternally;
}
// If the action is "ask", then alwaysAskBeforeHandling will override
@@ -661,24 +651,24 @@ FeedHandlerInfo.prototype = {
case "ask":
case "messenger":
default:
- return nsIHandlerInfo.handleInternally;
+ return Ci.nsIHandlerInfo.handleInternally;
}
},
set preferredAction(aNewValue) {
switch (aNewValue) {
- case nsIHandlerInfo.handleInternally:
+ case Ci.nsIHandlerInfo.handleInternally:
document.getElementById(this._prefSelectedReader).value = "messenger";
break;
- case nsIHandlerInfo.useHelperApp:
+ case Ci.nsIHandlerInfo.useHelperApp:
document.getElementById(this._prefSelectedAction).value = "reader";
// The controller has already set preferredApplicationHandler
// to the new helper app.
break;
- case nsIHandlerInfo.useSystemDefault:
+ case Ci.nsIHandlerInfo.useSystemDefault:
document.getElementById(this._prefSelectedAction).value = "reader";
this.preferredApplicationHandler = this._defaultApplicationHandler;
break;
@@ -721,7 +711,7 @@ FeedHandlerInfo.prototype = {
// XXX Should we hold off on making the changes until this method gets called?
store: function() {
for (let app of this._possibleApplicationHandlers._removed) {
- if (app instanceof nsILocalHandlerApp) {
+ if (app instanceof Ci.nsILocalHandlerApp) {
let pref = document.getElementById(PREF_FEED_SELECTED_APP);
var preferredAppFile = pref.value;
if (preferredAppFile) {
@@ -731,7 +721,7 @@ FeedHandlerInfo.prototype = {
}
}
else {
- app.QueryInterface(nsIWebContentHandlerInfo);
+ app.QueryInterface(Ci.nsIWebContentHandlerInfo);
converterSvc.removeContentHandler(app.contentType, app.uri);
}
}
@@ -1036,7 +1026,7 @@ var gApplicationsPane = {
var wrappedHandlerInfos = handlerSvc.enumerate();
while (wrappedHandlerInfos.hasMoreElements()) {
let wrappedHandlerInfo =
- wrappedHandlerInfos.getNext().QueryInterface(nsIHandlerInfo);
+ wrappedHandlerInfos.getNext().QueryInterface(Ci.nsIHandlerInfo);
let type = wrappedHandlerInfo.type;
let handlerInfoWrapper;
@@ -1076,7 +1066,7 @@ var gApplicationsPane = {
// FIXME: should we also check the "suffixes" property of the plugin?
// Filed as bug 395135.
if (hidePluginsWithoutExtensions && handlerInfo.handledOnlyByPlugin &&
- handlerInfo.wrappedHandlerInfo instanceof nsIMIMEInfo &&
+ handlerInfo.wrappedHandlerInfo instanceof Ci.nsIMIMEInfo &&
!handlerInfo.primaryExtension)
continue;
@@ -1180,17 +1170,17 @@ var gApplicationsPane = {
}
switch (aHandlerInfo.preferredAction) {
- case nsIHandlerInfo.saveToDisk:
+ case Ci.nsIHandlerInfo.saveToDisk:
return this._prefsBundle.getString("saveFile");
- case nsIHandlerInfo.useHelperApp:
+ case Ci.nsIHandlerInfo.useHelperApp:
var preferredApp = aHandlerInfo.preferredApplicationHandler;
- var name = (preferredApp instanceof nsILocalHandlerApp) ?
+ var name = (preferredApp instanceof Ci.nsILocalHandlerApp) ?
getFileDisplayName(preferredApp.executable) :
preferredApp.name;
return this._prefsBundle.getFormattedString("useApp", [name]);
- case nsIHandlerInfo.handleInternally:
+ case Ci.nsIHandlerInfo.handleInternally:
// For the feed type, handleInternally means News & Blogs.
if (isFeedType(aHandlerInfo.type))
return this._prefsBundle.getFormattedString("addNewsBlogsInApp",
@@ -1208,7 +1198,7 @@ var gApplicationsPane = {
// then why would a preferredAction ever get set to this value
// in the first place?
- case nsIHandlerInfo.useSystemDefault:
+ case Ci.nsIHandlerInfo.useSystemDefault:
return this._prefsBundle.getFormattedString("useDefault",
[aHandlerInfo.defaultDescription]);
@@ -1232,13 +1222,13 @@ var gApplicationsPane = {
if (!aHandlerApp)
return false;
- if (aHandlerApp instanceof nsILocalHandlerApp)
+ if (aHandlerApp instanceof Ci.nsILocalHandlerApp)
return this._isValidHandlerExecutable(aHandlerApp.executable);
- if (aHandlerApp instanceof nsIWebHandlerApp)
+ if (aHandlerApp instanceof Ci.nsIWebHandlerApp)
return aHandlerApp.uriTemplate;
- if (aHandlerApp instanceof nsIWebContentHandlerInfo)
+ if (aHandlerApp instanceof Ci.nsIWebContentHandlerInfo)
return aHandlerApp.uri;
return false;
@@ -1275,7 +1265,7 @@ var gApplicationsPane = {
{
let askMenuItem = document.createElement("menuitem");
askMenuItem.setAttribute("class", "handler-action");
- askMenuItem.setAttribute("value", nsIHandlerInfo.alwaysAsk);
+ askMenuItem.setAttribute("value", Ci.nsIHandlerInfo.alwaysAsk);
let label;
if (isFeedType(handlerInfo.type))
label = this._prefsBundle.getFormattedString("previewInApp",
@@ -1292,11 +1282,11 @@ var gApplicationsPane = {
// Note: this option isn't available to protocol types, since we don't know
// what it means to save a URL having a certain scheme to disk, nor is it
// available to feeds, since the feed code doesn't implement the capability.
- if ((handlerInfo.wrappedHandlerInfo instanceof nsIMIMEInfo) &&
+ if ((handlerInfo.wrappedHandlerInfo instanceof Ci.nsIMIMEInfo) &&
!isFeedType(handlerInfo.type)) {
let saveMenuItem = document.createElement("menuitem");
saveMenuItem.setAttribute("class", "handler-action");
- saveMenuItem.setAttribute("value", nsIHandlerInfo.saveToDisk);
+ saveMenuItem.setAttribute("value", Ci.nsIHandlerInfo.saveToDisk);
let label = this._prefsBundle.getString("saveFile");
saveMenuItem.setAttribute("label", label);
saveMenuItem.setAttribute("tooltiptext", label);
@@ -1308,7 +1298,7 @@ var gApplicationsPane = {
if (isFeedType(handlerInfo.type)) {
let internalMenuItem = document.createElement("menuitem");
internalMenuItem.setAttribute("class", "handler-action");
- internalMenuItem.setAttribute("value", nsIHandlerInfo.handleInternally);
+ internalMenuItem.setAttribute("value", Ci.nsIHandlerInfo.handleInternally);
let label = this._prefsBundle.getFormattedString("addNewsBlogsInApp",
[this._brandShortName]);
internalMenuItem.setAttribute("label", label);
@@ -1326,7 +1316,7 @@ var gApplicationsPane = {
if (handlerInfo.hasDefaultHandler) {
let defaultMenuItem = document.createElement("menuitem");
defaultMenuItem.setAttribute("class", "handler-action");
- defaultMenuItem.setAttribute("value", nsIHandlerInfo.useSystemDefault);
+ defaultMenuItem.setAttribute("value", Ci.nsIHandlerInfo.useSystemDefault);
let label = this._prefsBundle.getFormattedString("useDefault",
[handlerInfo.defaultDescription]);
defaultMenuItem.setAttribute("label", label);
@@ -1351,9 +1341,9 @@ var gApplicationsPane = {
let menuItem = document.createElement("menuitem");
menuItem.setAttribute("class", "handler-action");
- menuItem.setAttribute("value", nsIHandlerInfo.useHelperApp);
+ menuItem.setAttribute("value", Ci.nsIHandlerInfo.useHelperApp);
let label;
- if (possibleApp instanceof nsILocalHandlerApp)
+ if (possibleApp instanceof Ci.nsILocalHandlerApp)
label = getFileDisplayName(possibleApp.executable);
else
label = possibleApp.name;
@@ -1421,8 +1411,8 @@ var gApplicationsPane = {
// the item identified by the preferred action (when the preferred action
// is to use a helper app, we have to pick the specific helper app item).
if (handlerInfo.alwaysAskBeforeHandling)
- menu.value = nsIHandlerInfo.alwaysAsk;
- else if (handlerInfo.preferredAction == nsIHandlerInfo.useHelperApp &&
+ menu.value = Ci.nsIHandlerInfo.alwaysAsk;
+ else if (handlerInfo.preferredAction == Ci.nsIHandlerInfo.useHelperApp &&
preferredApp)
menu.selectedItem =
possibleAppMenuItems.filter(v => v.handlerApp.equals(preferredApp))[0];
@@ -1521,14 +1511,14 @@ var gApplicationsPane = {
// legacy datastores that don't have the preferred app in the list
// of possible apps still include the preferred app in the list of apps
// the user can choose to handle the type.
- if (action == nsIHandlerInfo.useHelperApp)
+ if (action == Ci.nsIHandlerInfo.useHelperApp)
handlerInfo.preferredApplicationHandler = aActionItem.handlerApp;
// Set the preferred action.
handlerInfo.preferredAction = action;
// Set the "always ask" flag.
- handlerInfo.alwaysAskBeforeHandling = action == nsIHandlerInfo.alwaysAsk;
+ handlerInfo.alwaysAskBeforeHandling = action == Ci.nsIHandlerInfo.alwaysAsk;
handlerInfo.store();
@@ -1627,21 +1617,20 @@ var gApplicationsPane = {
}
onSelectionDone();
} else {
- const nsIFilePicker = Ci.nsIFilePicker;
let fp = Cc["@mozilla.org/filepicker;1"]
- .createInstance(nsIFilePicker);
+ .createInstance(Ci.nsIFilePicker);
let winTitle = this._prefsBundle.getString("fpTitleChooseApp");
- fp.init(window, winTitle, nsIFilePicker.modeOpen);
- fp.appendFilters(nsIFilePicker.filterApps);
+ fp.init(window, winTitle, Ci.nsIFilePicker.modeOpen);
+ fp.appendFilters(Ci.nsIFilePicker.filterApps);
// Prompt the user to pick an app. If they pick one, and it's a valid
// selection, then add it to the list of possible handlers.
fp.open(rv => {
- if (rv == nsIFilePicker.returnOK && fp.file &&
+ if (rv == Ci.nsIFilePicker.returnOK && fp.file &&
this._isValidHandlerExecutable(fp.file)) {
handlerApp = Cc["@mozilla.org/uriloader/local-handler-app;1"]
.createInstance(Ci.nsILocalHandlerApp);
- handlerApp.name = getDisplayNameForFile(fp.file);
+ handlerApp.name = getFileDisplayName(fp.file);
handlerApp.executable = fp.file;
// Add the app to the type's list of possible handlers.
@@ -1665,11 +1654,11 @@ var gApplicationsPane = {
}
switch (aHandlerInfo.preferredAction) {
- case nsIHandlerInfo.saveToDisk:
+ case Ci.nsIHandlerInfo.saveToDisk:
aElement.setAttribute("appHandlerIcon", "save");
return true;
- case nsIHandlerInfo.handleInternally:
+ case Ci.nsIHandlerInfo.handleInternally:
if (isFeedType(aHandlerInfo.type)) {
aElement.setAttribute("appHandlerIcon", "feed");
return true;
@@ -1686,10 +1675,10 @@ var gApplicationsPane = {
_getIconURLForPreferredAction: function(aHandlerInfo) {
switch (aHandlerInfo.preferredAction) {
- case nsIHandlerInfo.useSystemDefault:
+ case Ci.nsIHandlerInfo.useSystemDefault:
return this._getIconURLForSystemDefault(aHandlerInfo);
- case nsIHandlerInfo.useHelperApp:
+ case Ci.nsIHandlerInfo.useHelperApp:
let preferredApp = aHandlerInfo.preferredApplicationHandler;
if (this.isValidHandlerApp(preferredApp))
return this._getIconURLForHandlerApp(preferredApp);
@@ -1701,14 +1690,14 @@ var gApplicationsPane = {
},
_getIconURLForHandlerApp: function(aHandlerApp) {
- if (aHandlerApp instanceof nsILocalHandlerApp)
+ if (aHandlerApp instanceof Ci.nsILocalHandlerApp)
return this._getIconURLForFile(aHandlerApp.executable);
if (Services.prefs.getBoolPref("browser.chrome.favicons")) { // q.v. Bug 514671
- if (aHandlerApp instanceof nsIWebHandlerApp)
+ if (aHandlerApp instanceof Ci.nsIWebHandlerApp)
return this._getIconURLForWebApp(aHandlerApp.uriTemplate);
- if (aHandlerApp instanceof nsIWebContentHandlerInfo)
+ if (aHandlerApp instanceof Ci.nsIWebContentHandlerInfo)
return this._getIconURLForWebApp(aHandlerApp.uri)
}
@@ -1742,8 +1731,8 @@ var gApplicationsPane = {
if ("wrappedHandlerInfo" in aHandlerInfo) {
let wrappedHandlerInfo = aHandlerInfo.wrappedHandlerInfo;
- if (wrappedHandlerInfo instanceof nsIMIMEInfo &&
- wrappedHandlerInfo instanceof nsIPropertyBag) {
+ if (wrappedHandlerInfo instanceof Ci.nsIMIMEInfo &&
+ wrappedHandlerInfo instanceof Ci.nsIPropertyBag) {
try {
let url = wrappedHandlerInfo.getProperty("defaultApplicationIconURL");
if (url)
diff --git a/comm/suite/components/pref/content/pref-cache.js b/comm/suite/components/pref/content/pref-cache.js
index d3126e0..2f04b82 100644
--- a/comm/suite/components/pref/content/pref-cache.js
+++ b/comm/suite/components/pref/content/pref-cache.js
@@ -65,19 +65,18 @@ function ReadCacheFolder(aField)
function CacheSelectFolder()
{
- const nsIFilePicker = Ci.nsIFilePicker;
let fp = Cc["@mozilla.org/filepicker;1"]
- .createInstance(nsIFilePicker);
+ .createInstance(Ci.nsIFilePicker);
let title = document.getElementById("bundle_prefutilities")
.getString("cachefolder");
- fp.init(window, title, nsIFilePicker.modeGetFolder);
+ fp.init(window, title, Ci.nsIFilePicker.modeGetFolder);
fp.displayDirectory =
document.getElementById("browser.cache.disk.parent_directory").value;
- fp.appendFilters(nsIFilePicker.filterAll);
+ fp.appendFilters(Ci.nsIFilePicker.filterAll);
fp.open(rv => {
- if (rv != nsIFilePicker.returnOK || !fp.file) {
+ if (rv != Ci.nsIFilePicker.returnOK || !fp.file) {
return;
}
document.getElementById("browser.cache.disk.parent_directory").value = fp.file;
diff --git a/comm/suite/components/pref/content/pref-cookies.js b/comm/suite/components/pref/content/pref-cookies.js
index c9bbe1c..fd51881 100644
--- a/comm/suite/components/pref/content/pref-cookies.js
+++ b/comm/suite/components/pref/content/pref-cookies.js
@@ -9,10 +9,11 @@ function Startup()
function SetDisables(aSetFocus)
{
+ // Policy 1 was "ask before accepting" and is no longer valid.
+
// const for Cookie Accept Policy
const kCookiesDisabled = 2;
// const for Cookie Lifetime Policy
- const kAskBeforeAccepting = 1;
const kAcceptForNDays = 3;
var behavior = document.getElementById("networkCookieBehavior");
@@ -23,15 +24,10 @@ function SetDisables(aSetFocus)
var days = document.getElementById("lifetimeDays");
var daysPref = document.getElementById(days.getAttribute("preference"));
- var session = document.getElementById("alwaysAcceptSession");
- var sessionPref = document.getElementById(session.getAttribute("preference"));
-
var cookiesDisabled = (behaviorPref.value == kCookiesDisabled);
lifetime.disabled = cookiesDisabled || lifetimePref.locked;
days.disabled = cookiesDisabled || daysPref.locked ||
(lifetimePref.value != kAcceptForNDays);
- session.disabled = cookiesDisabled || sessionPref.locked ||
- (lifetimePref.value != kAskBeforeAccepting);
if (!days.disabled && aSetFocus)
days.focus();
diff --git a/comm/suite/components/pref/content/pref-images.xul b/comm/suite/components/pref/content/pref-images.xul
index 62138bd..92c048d 100644
--- a/comm/suite/components/pref/content/pref-images.xul
+++ b/comm/suite/components/pref/content/pref-images.xul
@@ -15,7 +15,7 @@
label="&pref.images.title;">
<preferences id="images_preferences">
<preference id="permissions.default.image"
- name="permissions.default.image" type="int"/>
+ name="permissions.default.image" type="int"/>
<preference id="pref.advanced.images.disable_button.view_image" type="bool"
name="pref.advanced.images.disable_button.view_image"/>
</preferences>
diff --git a/comm/suite/components/pref/content/pref-navigator.js b/comm/suite/components/pref/content/pref-navigator.js
index 285fe29..f2944c7 100644
--- a/comm/suite/components/pref/content/pref-navigator.js
+++ b/comm/suite/components/pref/content/pref-navigator.js
@@ -202,20 +202,19 @@ function UpdateHomePageList(aSingleURL)
function SelectFile()
{
- const nsIFilePicker = Ci.nsIFilePicker;
let fp = Cc["@mozilla.org/filepicker;1"]
- .createInstance(nsIFilePicker);
+ .createInstance(Ci.nsIFilePicker);
let title = document.getElementById("bundle_prefutilities")
.getString("choosehomepage");
- fp.init(window, title, nsIFilePicker.modeOpen);
- fp.appendFilters(nsIFilePicker.filterAll |
- nsIFilePicker.filterText |
- nsIFilePicker.filterXML |
- nsIFilePicker.filterHTML |
- nsIFilePicker.filterImages);
+ fp.init(window, title, Ci.nsIFilePicker.modeOpen);
+ fp.appendFilters(Ci.nsIFilePicker.filterAll |
+ Ci.nsIFilePicker.filterText |
+ Ci.nsIFilePicker.filterXML |
+ Ci.nsIFilePicker.filterHTML |
+ Ci.nsIFilePicker.filterImages);
fp.open(rv => {
- if (rv == nsIFilePicker.returnOK && fp.fileURL.spec &&
+ if (rv == Ci.nsIFilePicker.returnOK && fp.fileURL.spec &&
fp.fileURL.spec.length > 0) {
UpdateHomePageList(fp.fileURL.spec);
}
diff --git a/comm/suite/components/pref/content/preferences.js b/comm/suite/components/pref/content/preferences.js
index f33999a..6d43f51 100644
--- a/comm/suite/components/pref/content/preferences.js
+++ b/comm/suite/components/pref/content/preferences.js
@@ -59,12 +59,11 @@ function WriteSoundField(aField, aValue)
function SelectSound(aSoundUrlPref)
{
var soundUrlPref = aSoundUrlPref;
- const nsIFilePicker = Ci.nsIFilePicker;
let fp = Cc["@mozilla.org/filepicker;1"]
- .createInstance(nsIFilePicker);
+ .createInstance(Ci.nsIFilePicker);
var prefutilitiesBundle = document.getElementById("bundle_prefutilities");
fp.init(window, prefutilitiesBundle.getString("choosesound"),
- nsIFilePicker.modeOpen);
+ Ci.nsIFilePicker.modeOpen);
let file = GetFileFromString(soundUrlPref.value);
if (file && file.parent && file.parent.exists())
@@ -76,9 +75,9 @@ function SelectSound(aSoundUrlPref)
filterExts += "; *.aif; *.aiff; *.caf";
}
fp.appendFilter(prefutilitiesBundle.getString("SoundFiles"), filterExts);
- fp.appendFilters(nsIFilePicker.filterAll);
+ fp.appendFilters(Ci.nsIFilePicker.filterAll);
fp.open(rv => {
- if (rv == nsIFilePicker.returnOK && fp.fileURL.spec &&
+ if (rv == Ci.nsIFilePicker.returnOK && fp.fileURL.spec &&
fp.fileURL.spec.length > 0) {
soundUrlPref.value = fp.fileURL.spec;
}
diff --git a/comm/suite/components/shell/nsGNOMEShellService.cpp b/comm/suite/components/shell/nsGNOMEShellService.cpp
index d62e66b..9133a01 100644
--- a/comm/suite/components/shell/nsGNOMEShellService.cpp
+++ b/comm/suite/components/shell/nsGNOMEShellService.cpp
@@ -14,7 +14,6 @@
#include "nsIPrefService.h"
#include "prenv.h"
#include "nsString.h"
-#include "nsIGConfService.h"
#include "nsIGIOService.h"
#include "nsIGSettingsService.h"
#include "nsIStringBundle.h"
@@ -27,8 +26,11 @@
#include "imgIRequest.h"
#include "imgIContainer.h"
#include "mozilla/Sprintf.h"
+#if defined(MOZ_WIDGET_GTK)
#include "nsIImageToPixbuf.h"
+#endif
#include "nsXULAppAPI.h"
+#include "gfxPlatform.h"
#include <glib.h>
#include <glib-object.h>
@@ -38,23 +40,10 @@
#include <limits.h>
#include <stdlib.h>
-// GConf registry key constants
-#define DG_BACKGROUND "/desktop/gnome/background"
-
-#define DGB_OPTIONS DG_BACKGROUND "/picture_options"
-#define DGB_IMAGE DG_BACKGROUND "/picture_filename"
-#define DGB_DRAWBG DG_BACKGROUND "/draw_background"
-#define DGB_COLOR DG_BACKGROUND "/primary_color"
-
-#define OGDB_SCHEMA "org.gnome.desktop.background"
-#define OGDB_OPTIONS "picture-options"
-#define OGDB_IMAGE "picture-uri"
-#define OGDB_DRAWBG "draw-background"
-#define OGDB_COLOR "primary-color"
-
struct ProtocolAssociation {
uint16_t app;
const char* protocol;
+ bool essential;
};
struct MimeTypeAssociation {
@@ -64,21 +53,29 @@ struct MimeTypeAssociation {
};
static const ProtocolAssociation gProtocols[] = {
- { nsIShellService::BROWSER, "http" },
- { nsIShellService::BROWSER, "https" },
- { nsIShellService::MAIL, "mailto" },
- { nsIShellService::NEWS, "news" },
- { nsIShellService::NEWS, "snews" },
- { nsIShellService::RSS, "feed" }
+ { nsIShellService::BROWSER, "http", true },
+ { nsIShellService::BROWSER, "https", true },
+ { nsIShellService::BROWSER, "ftp", false },
+ { nsIShellService::BROWSER, "chrome", false },
+ { nsIShellService::MAIL, "mailto", true },
+ { nsIShellService::NEWS, "news", true },
+ { nsIShellService::NEWS, "snews", true },
+ { nsIShellService::RSS, "feed", true }
};
static const MimeTypeAssociation gMimeTypes[] = {
- { nsIShellService::BROWSER, "text/html", "htm html" },
- { nsIShellService::BROWSER, "application/xhtml+xml", "xhtml" },
+ { nsIShellService::BROWSER, "text/html", "htm html shtml" },
+ { nsIShellService::BROWSER, "application/xhtml+xml", "xhtml xht" },
{ nsIShellService::MAIL, "message/rfc822", "eml" },
{ nsIShellService::RSS, "application/rss+xml", "rss" }
};
+#define kDesktopBGSchema "org.gnome.desktop.background"
+#define kDesktopImageGSKey "picture-uri"
+#define kDesktopOptionGSKey "picture-options"
+#define kDesktopDrawBGGSKey "draw-background"
+#define kDesktopColorGSKey "primary-color"
+
NS_IMPL_ISUPPORTS(nsGNOMEShellService, nsIGNOMEShellService, nsIShellService)
nsresult
@@ -106,30 +103,15 @@ nsGNOMEShellService::Init()
{
nsresult rv;
+ if (gfxPlatform::IsHeadless()) {
+ return NS_ERROR_NOT_AVAILABLE;
+ }
+
// Check G_BROKEN_FILENAMES. If it's set, then filenames in glib use
// the locale encoding. If it's not set, they use UTF-8.
mUseLocaleFilenames = PR_GetEnv("G_BROKEN_FILENAMES") != nullptr;
- const char* launcher = PR_GetEnv("MOZ_APP_LAUNCHER");
- if (launcher) {
- if (g_path_is_absolute(launcher)) {
- mAppPath = launcher;
- gchar* basename = g_path_get_basename(launcher);
- gchar* fullpath = g_find_program_in_path(basename);
- mAppIsInPath = fullpath && mAppPath.Equals(fullpath);
- g_free(fullpath);
- g_free(basename);
- return NS_OK;
- }
-
- gchar* fullpath = g_find_program_in_path(launcher);
- if (fullpath) {
- mAppPath = fullpath;
- mAppIsInPath = true;
- g_free(fullpath);
- return NS_OK;
- }
- }
+ if (GetAppPathFromLauncher()) return NS_OK;
nsCOMPtr<nsIFile> appPath;
rv = NS_GetSpecialDirectory(XRE_EXECUTABLE_FILE, getter_AddRefs(appPath));
@@ -138,29 +120,63 @@ nsGNOMEShellService::Init()
return appPath->GetNativePath(mAppPath);
}
+bool nsGNOMEShellService::GetAppPathFromLauncher() {
+ gchar *tmp;
+
+ const char* launcher = PR_GetEnv("MOZ_APP_LAUNCHER");
+ if (!launcher) return false;
+
+ if (g_path_is_absolute(launcher)) {
+ mAppPath = launcher;
+ tmp = g_path_get_basename(launcher);
+ gchar* fullpath = g_find_program_in_path(tmp);
+ if (fullpath && mAppPath.Equals(fullpath)) mAppIsInPath = true;
+ g_free(fullpath);
+ } else {
+ tmp = g_find_program_in_path(launcher);
+ if (!tmp) return false;
+ mAppPath = tmp;
+ mAppIsInPath = true;
+ }
+
+ g_free(tmp);
+ return true;
+}
+
bool
-nsGNOMEShellService::HandlerMatchesAppName(const char* aHandler)
+nsGNOMEShellService::CheckHandlerMatchesAppName(const nsACString &handler) const
{
- bool matches = false;
gint argc;
gchar** argv;
- if (g_shell_parse_argv(aHandler, &argc, &argv, nullptr) && argc > 0) {
- gchar* command = nullptr;
- if (!mUseLocaleFilenames)
- command = g_find_program_in_path(argv[0]);
- else {
- gchar* nativeFile = g_filename_from_utf8(argv[0], -1,
- nullptr, nullptr, nullptr);
- if (nativeFile) {
- command = g_find_program_in_path(nativeFile);
- g_free(nativeFile);
- }
- }
- matches = command && mAppPath.Equals(command);
- g_free(command);
+ nsAutoCString command(handler);
+
+ // The string will be something of the form: [/path/to/]application "%s"
+ // We want to remove all of the parameters and get just the binary name.
+
+ if (g_shell_parse_argv(command.get(), &argc, &argv, nullptr) && argc > 0) {
+ command.Assign(argv[0]);
g_strfreev(argv);
}
+ gchar *commandPath;
+ if (mUseLocaleFilenames) {
+ gchar *nativePath =
+ g_filename_from_utf8(command.get(), -1, nullptr, nullptr, nullptr);
+ if (!nativePath) {
+ NS_ERROR("Error converting path to filesystem encoding");
+ return false;
+ }
+
+ commandPath = g_find_program_in_path(nativePath);
+ g_free(nativePath);
+ } else {
+ commandPath = g_find_program_in_path(command.get());
+ }
+
+ if (!commandPath) return false;
+
+ bool matches = mAppPath.Equals(commandPath);
+ g_free(commandPath);
return matches;
}
@@ -170,36 +186,34 @@ nsGNOMEShellService::IsDefaultClient(bool aStartupCheck, uint16_t aApps,
{
*aIsDefaultClient = false;
- nsCString handler;
- nsCOMPtr<nsIGIOMimeApp> gioApp;
nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
- nsCOMPtr<nsIGConfService> gconf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
+ nsAutoCString handler;
+ nsCOMPtr<nsIGIOMimeApp> gioApp;
for (unsigned i = 0; i < mozilla::ArrayLength(gProtocols); i++) {
if (aApps & gProtocols[i].app) {
nsDependentCString protocol(gProtocols[i].protocol);
+ if (!gProtocols[i].essential)
+ continue;
+
if (giovfs) {
+ handler.Truncate();
nsCOMPtr<nsIHandlerApp> handlerApp;
+ nsDependentCString protocol(gProtocols[i].protocol);
giovfs->GetAppForURIScheme(protocol, getter_AddRefs(handlerApp));
-
gioApp = do_QueryInterface(handlerApp);
if (!gioApp)
return NS_OK;
-
+
if (NS_SUCCEEDED(gioApp->GetCommand(handler)) &&
- !HandlerMatchesAppName(handler.get()))
+ !CheckHandlerMatchesAppName(handler))
return NS_OK;
}
-
- bool enabled;
- if (gconf &&
- NS_SUCCEEDED(gconf->GetAppForProtocol(protocol, &enabled, handler)) &&
- (!enabled || !HandlerMatchesAppName(handler.get())))
- return NS_OK;
}
}
*aIsDefaultClient = true;
+
return NS_OK;
}
@@ -207,53 +221,43 @@ NS_IMETHODIMP
nsGNOMEShellService::SetDefaultClient(bool aForAllUsers,
bool aClaimAllTypes, uint16_t aApps)
{
- nsresult rv;
-
- nsCOMPtr<nsIGIOMimeApp> app;
nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
if (giovfs) {
+ nsresult rv;
nsCString brandName;
rv = GetBrandName(brandName);
NS_ENSURE_SUCCESS(rv, rv);
- rv = giovfs->CreateAppFromCommand(mAppPath, brandName, getter_AddRefs(app));
- NS_ENSURE_SUCCESS(rv, rv);
-
- for (unsigned i = 0; i < mozilla::ArrayLength(gMimeTypes); i++) {
- if (aApps & gMimeTypes[i].app) {
- rv = app->SetAsDefaultForMimeType(nsDependentCString(gMimeTypes[i].mimeType));
- NS_ENSURE_SUCCESS(rv, rv);
- rv = app->SetAsDefaultForFileExtensions(nsDependentCString(gMimeTypes[i].extensions));
- NS_ENSURE_SUCCESS(rv, rv);
- }
+ nsCOMPtr<nsIGIOMimeApp> appInfo;
+ rv = giovfs->FindAppFromCommand(mAppPath, getter_AddRefs(appInfo));
+ if (NS_FAILED(rv)) {
+ // Application was not found in the list of installed applications
+ // provided by OS. Fallback to create appInfo from command and name.
+ rv = giovfs->CreateAppFromCommand(mAppPath, brandName,
+ getter_AddRefs(appInfo));
+ NS_ENSURE_SUCCESS(rv, rv);
}
- }
- nsCString appKeyValue;
- nsCOMPtr<nsIGConfService> gconf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
- if (gconf) {
- if (!mAppIsInPath)
- appKeyValue = mAppPath;
- else {
- gchar* basename = g_path_get_basename(mAppPath.get());
- appKeyValue = basename;
- g_free(basename);
- }
- appKeyValue.AppendLiteral(" %s");
- }
-
- for (unsigned i = 0; i < mozilla::ArrayLength(gProtocols); i++) {
- if (aApps & gProtocols[i].app) {
- nsDependentCString protocol(gProtocols[i].protocol);
- if (app) {
- rv = app->SetAsDefaultForURIScheme(protocol);
- NS_ENSURE_SUCCESS(rv, rv);
- }
- if (gconf) {
- rv = gconf->SetAppForProtocol(protocol, appKeyValue);
- NS_ENSURE_SUCCESS(rv, rv);
+ // set handler for the protocols
+ for (unsigned int i = 0; i < mozilla::ArrayLength(gProtocols); ++i) {
+ if (aApps & gProtocols[i].app) {
+ if (appInfo && (gProtocols[i].essential || aClaimAllTypes)) {
+ nsDependentCString protocol(gProtocols[i].protocol);
+ appInfo->SetAsDefaultForURIScheme(protocol);
+ }
}
}
+
+ if (aClaimAllTypes) {
+ for (unsigned int i = 0; i < mozilla::ArrayLength(gMimeTypes); i++) {
+ if (aApps & gMimeTypes[i].app) {
+ nsDependentCString type(gMimeTypes[i].mimeType);
+ appInfo->SetAsDefaultForMimeType(type);
+ nsDependentCString extensions(gMimeTypes[i].extensions);
+ appInfo->SetAsDefaultForFileExtensions(extensions);
+ }
+ }
+ }
}
return NS_OK;
@@ -262,139 +266,144 @@ nsGNOMEShellService::SetDefaultClient(bool aForAllUsers,
NS_IMETHODIMP
nsGNOMEShellService::GetCanSetDesktopBackground(bool* aResult)
{
- nsCOMPtr<nsIGConfService> gconf(do_GetService(NS_GCONFSERVICE_CONTRACTID));
- *aResult = gconf && getenv("GNOME_DESKTOP_SESSION_ID");
+ // for Gnome or desktops using the same GSettings keys
+ const char *currentDesktop = getenv("XDG_CURRENT_DESKTOP");
+ if (currentDesktop && strstr(currentDesktop, "GNOME") != nullptr) {
+ *aResult = true;
+ return NS_OK;
+ }
+
+ const char *gnomeSession = getenv("GNOME_DESKTOP_SESSION_ID");
+ if (gnomeSession) {
+ *aResult = true;
+ } else {
+ *aResult = false;
+ }
+
return NS_OK;
}
+static nsresult WriteImage(const nsCString &aPath, imgIContainer *aImage) {
+#if !defined(MOZ_WIDGET_GTK)
+ return NS_ERROR_NOT_AVAILABLE;
+#else
+ nsCOMPtr<nsIImageToPixbuf> imgToPixbuf =
+ do_GetService("@mozilla.org/widget/image-to-gdk-pixbuf;1");
+ if (!imgToPixbuf) return NS_ERROR_NOT_AVAILABLE;
+
+ GdkPixbuf *pixbuf = imgToPixbuf->ConvertImageToPixbuf(aImage);
+ if (!pixbuf) return NS_ERROR_NOT_AVAILABLE;
+
+ gboolean res = gdk_pixbuf_save(pixbuf, aPath.get(), "png", nullptr, nullptr);
+
+ g_object_unref(pixbuf);
+ return res ? NS_OK : NS_ERROR_FAILURE;
+#endif
+}
+
NS_IMETHODIMP
nsGNOMEShellService::SetDesktopBackground(nsIDOMElement* aElement,
int32_t aPosition,
const nsACString& aImageName)
{
- nsCString brandName;
- nsresult rv = GetBrandName(brandName);
- NS_ENSURE_SUCCESS(rv, rv);
-
- // build the file name
- nsCString filePath(PR_GetEnv("HOME"));
- filePath.Append('/');
- filePath.Append(brandName);
- filePath.AppendLiteral("_wallpaper.png");
-
- // get the image container
- nsCOMPtr<nsIImageLoadingContent> imageContent(do_QueryInterface(aElement, &rv));
- NS_ENSURE_SUCCESS(rv, rv);
+ nsresult rv;
+ nsCOMPtr<nsIImageLoadingContent> imageContent =
+ do_QueryInterface(aElement, &rv);
+ if (!imageContent) return rv;
+ // Get the image container.
nsCOMPtr<imgIRequest> request;
rv = imageContent->GetRequest(nsIImageLoadingContent::CURRENT_REQUEST,
getter_AddRefs(request));
- NS_ENSURE_TRUE(request, rv);
-
+ if (!request) return rv;
nsCOMPtr<imgIContainer> container;
rv = request->GetImage(getter_AddRefs(container));
- NS_ENSURE_TRUE(request, rv);
-
- nsCOMPtr<nsIImageToPixbuf> imgToPixbuf(do_GetService("@mozilla.org/widget/image-to-gdk-pixbuf;1"));
- if (!imgToPixbuf)
- return NS_ERROR_NOT_AVAILABLE;
-
- GdkPixbuf* pixbuf = imgToPixbuf->ConvertImageToPixbuf(container);
- if (!pixbuf)
- return NS_ERROR_NOT_AVAILABLE;
-
- // write the image to a file in the home dir
- gboolean res = gdk_pixbuf_save(pixbuf, filePath.get(), "png",
- nullptr, nullptr);
-
- g_object_unref(pixbuf);
- if (!res)
- return NS_ERROR_FAILURE;
-
- // set desktop wallpaper filling style
- const char* options;
+ if (!container) return rv;
+
+ // Set desktop wallpaper filling style.
+ nsAutoCString options;
switch (aPosition) {
case BACKGROUND_TILE:
- options = "wallpaper";
+ options.AssignLiteral("wallpaper");
break;
case BACKGROUND_STRETCH:
- options = "stretched";
+ options.AssignLiteral("stretched");
break;
case BACKGROUND_FILL:
- options = "zoom";
+ options.AssignLiteral("zoom");
break;
case BACKGROUND_FIT:
- options = "scaled";
+ options.AssignLiteral("scaled");
break;
default:
- options = "centered";
+ options.AssignLiteral("centered");
break;
}
- // Try GSettings first. If we don't have GSettings or the right schema, fall back
- // to using GConf instead. Note that if GSettings works ok, the changes get
- // mirrored to GConf by the gsettings->gconf bridge in gnome-settings-daemon
- nsCOMPtr<nsIGSettingsService> gsettings(do_GetService(NS_GSETTINGSSERVICE_CONTRACTID));
+ // Write the background file to the home directory.
+ nsCString filePath(PR_GetEnv("HOME"));
+
+ nsCString brandName;
+ rv = GetBrandName(brandName);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ // Build the file name.
+ filePath.Append('/');
+ filePath.Append(brandName);
+ filePath.AppendLiteral("_wallpaper.png");
+
+ // Write the image to a file in the home dir.
+ rv = WriteImage(filePath, container);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsCOMPtr<nsIGSettingsService> gsettings =
+ do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
if (gsettings) {
nsCOMPtr<nsIGSettingsCollection> background_settings;
- gsettings->GetCollectionForSchema(NS_LITERAL_CSTRING(OGDB_SCHEMA),
+ gsettings->GetCollectionForSchema(NS_LITERAL_CSTRING(kDesktopBGSchema),
getter_AddRefs(background_settings));
if (background_settings) {
gchar *file_uri = g_filename_to_uri(filePath.get(), nullptr, nullptr);
- if (!file_uri)
- return NS_ERROR_FAILURE;
+ if (!file_uri) return NS_ERROR_FAILURE;
- background_settings->SetString(NS_LITERAL_CSTRING(OGDB_OPTIONS),
- nsDependentCString(options));
- background_settings->SetString(NS_LITERAL_CSTRING(OGDB_IMAGE),
+ background_settings->SetString(NS_LITERAL_CSTRING(kDesktopOptionGSKey),
+ options);
+ background_settings->SetString(NS_LITERAL_CSTRING(kDesktopImageGSKey),
nsDependentCString(file_uri));
g_free(file_uri);
- background_settings->SetBoolean(NS_LITERAL_CSTRING(OGDB_DRAWBG), true);
- return NS_OK;
+ background_settings->SetBoolean(NS_LITERAL_CSTRING(kDesktopDrawBGGSKey),
+ true);
+ return rv;
}
}
- // if the file was written successfully, set it as the system wallpaper
- nsCOMPtr<nsIGConfService> gconf(do_GetService(NS_GCONFSERVICE_CONTRACTID));
-
- if (gconf) {
- gconf->SetString(NS_LITERAL_CSTRING(DGB_OPTIONS), nsDependentCString(options));
-
- // Set the image to an empty string first to force a refresh (since we could
- // be writing a new image on top of an existing SeaMonkey_wallpaper.png
- // and nautilus doesn't monitor the file for changes).
- gconf->SetString(NS_LITERAL_CSTRING(DGB_IMAGE), EmptyCString());
- gconf->SetString(NS_LITERAL_CSTRING(DGB_IMAGE), filePath);
- gconf->SetBool(NS_LITERAL_CSTRING(DGB_DRAWBG), true);
- }
-
- return NS_OK;
+ return NS_ERROR_FAILURE;
}
#define COLOR_16_TO_8_BIT(_c) ((_c) >> 8)
+#define COLOR_8_TO_16_BIT(_c) ((_c) << 8 | (_c))
NS_IMETHODIMP
nsGNOMEShellService::GetDesktopBackgroundColor(uint32_t *aColor)
{
- nsCOMPtr<nsIGSettingsService> gsettings(do_GetService(NS_GSETTINGSSERVICE_CONTRACTID));
+ nsCOMPtr<nsIGSettingsService> gsettings =
+ do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
nsCOMPtr<nsIGSettingsCollection> background_settings;
+ nsAutoCString background;
- if (gsettings)
- gsettings->GetCollectionForSchema(NS_LITERAL_CSTRING(OGDB_SCHEMA),
+ if (gsettings) {
+ gsettings->GetCollectionForSchema(NS_LITERAL_CSTRING(kDesktopBGSchema),
getter_AddRefs(background_settings));
-
- nsCString background;
- if (background_settings)
- background_settings->GetString(NS_LITERAL_CSTRING(OGDB_COLOR),
- background);
- else {
- nsCOMPtr<nsIGConfService> gconf(do_GetService(NS_GCONFSERVICE_CONTRACTID));
- if (gconf)
- gconf->GetString(NS_LITERAL_CSTRING(DGB_COLOR), background);
+ if (background_settings) {
+ background_settings->GetString(NS_LITERAL_CSTRING(kDesktopColorGSKey),
+ background);
+ }
}
- if (background.IsEmpty())
- return NS_ERROR_FAILURE;
+ if (background.IsEmpty()) {
+ *aColor = 0;
+ return NS_OK;
+ }
GdkColor color;
NS_ENSURE_TRUE(gdk_color_parse(background.get(), &color), NS_ERROR_FAILURE);
@@ -405,37 +414,31 @@ nsGNOMEShellService::GetDesktopBackgroundColor(uint32_t *aColor)
return NS_OK;
}
-#define COLOR_8_TO_16_BIT(_c) ((_c) << 8 | (_c))
-
NS_IMETHODIMP
nsGNOMEShellService::SetDesktopBackgroundColor(uint32_t aColor)
{
NS_ENSURE_ARG_MAX(aColor, 0xFFFFFF);
- uint8_t red = aColor >> 16;
- uint8_t green = aColor >> 8;
- uint8_t blue = aColor;
+ uint16_t red = COLOR_8_TO_16_BIT((aColor >> 16) & 0xff);
+ uint16_t green = COLOR_8_TO_16_BIT((aColor >> 8) & 0xff);
+ uint16_t blue = COLOR_8_TO_16_BIT(aColor & 0xff);
char colorString[14];
- sprintf(colorString, "#%04x%04x%04x", COLOR_8_TO_16_BIT(red),
- COLOR_8_TO_16_BIT(green), COLOR_8_TO_16_BIT(blue));
+ sprintf(colorString, "#%04x%04x%04x", red, green, blue);
- nsCOMPtr<nsIGSettingsService> gsettings(do_GetService(NS_GSETTINGSSERVICE_CONTRACTID));
+ nsCOMPtr<nsIGSettingsService> gsettings =
+ do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
if (gsettings) {
nsCOMPtr<nsIGSettingsCollection> background_settings;
- gsettings->GetCollectionForSchema(NS_LITERAL_CSTRING(OGDB_SCHEMA),
+ gsettings->GetCollectionForSchema(NS_LITERAL_CSTRING(kDesktopBGSchema),
getter_AddRefs(background_settings));
if (background_settings) {
- background_settings->SetString(NS_LITERAL_CSTRING(OGDB_COLOR),
+ background_settings->SetString(NS_LITERAL_CSTRING(kDesktopColorGSKey),
nsDependentCString(colorString));
return NS_OK;
}
}
- nsCOMPtr<nsIGConfService> gconf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
- if (gconf)
- gconf->SetString(NS_LITERAL_CSTRING(DGB_COLOR), nsDependentCString(colorString));
-
- return NS_OK;
+ return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
diff --git a/comm/suite/components/shell/nsGNOMEShellService.h b/comm/suite/components/shell/nsGNOMEShellService.h
index 7d43b51..558663a 100644
--- a/comm/suite/components/shell/nsGNOMEShellService.h
+++ b/comm/suite/components/shell/nsGNOMEShellService.h
@@ -11,12 +11,10 @@
#include "mozilla/Attributes.h"
#include "nsSuiteCID.h"
-struct ProtocolAssociation;
-
class nsGNOMEShellService final : public nsIGNOMEShellService
{
public:
- nsGNOMEShellService() {};
+ nsGNOMEShellService() : mAppIsInPath(false) {}
NS_DECL_ISUPPORTS
NS_DECL_NSISHELLSERVICE
@@ -27,8 +25,9 @@ public:
private:
~nsGNOMEShellService() {}
- bool HandlerMatchesAppName(const char* aHandler);
+ bool CheckHandlerMatchesAppName(const nsACString& handler) const;
+ bool GetAppPathFromLauncher();
bool mUseLocaleFilenames;
nsCString mAppPath;
bool mAppIsInPath;
diff --git a/comm/suite/config/mozconfigs/mozconfig.linux.common b/comm/suite/config/mozconfigs/mozconfig.linux.common
index 03a7e0b..10111f5 100644
--- a/comm/suite/config/mozconfigs/mozconfig.linux.common
+++ b/comm/suite/config/mozconfigs/mozconfig.linux.common
@@ -6,7 +6,8 @@
export PKG_CONFIG_LIBDIR=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
-ac_add_options --with-google-api-keyfile=/builds/google-api.key
+ac_add_options --with-google-location-service-api-keyfile=/builds/google-api.key
+ac_add_options --with-google-safebrowsing-api-keyfile=/builds/google-api.key
# SeaMonkey uses the google api key for Geolocation services
# See Bug 1352850 - Switch to Google for Geolocation services
diff --git a/comm/suite/config/mozconfigs/mozconfig.macosx.common b/comm/suite/config/mozconfigs/mozconfig.macosx.common
index 050ddc6..62bc613 100644
--- a/comm/suite/config/mozconfigs/mozconfig.macosx.common
+++ b/comm/suite/config/mozconfigs/mozconfig.macosx.common
@@ -2,7 +2,8 @@
# Same location as on Linux so no need to distingush when doing
# a macOS cross compile on Linux.
-ac_add_options --with-google-api-keyfile=/builds/google-api.key
+ac_add_options --with-google-location-service-api-keyfile=/builds/google-api.key
+ac_add_options --with-google-safebrowsing-api-keyfile=/builds/google-api.key
# SeaMonkey uses the google api key for Geolocation services.
# See Bug 1352850 - Switch to Google for Geolocation services.
diff --git a/comm/suite/config/mozconfigs/mozconfig.win.common b/comm/suite/config/mozconfigs/mozconfig.win.common
index c2d1d29..8b6c436 100644
--- a/comm/suite/config/mozconfigs/mozconfig.win.common
+++ b/comm/suite/config/mozconfigs/mozconfig.win.common
@@ -1,6 +1,7 @@
# Common statements that are applicable to Windows x86 and x64.
-ac_add_options --with-google-api-keyfile=c:/builds/google-api.key
+ac_add_options --with-google-location-service-api-keyfile=/builds/google-api.key
+ac_add_options --with-google-safebrowsing-api-keyfile=/builds/google-api.key
# SeaMonkey uses the google api key for Geolocation services
# See Bug 1352850 - Switch to Google for Geolocation services
diff --git a/comm/suite/extensions/Makefile.in b/comm/suite/extensions/Makefile.in
deleted file mode 100644
index 665a0aa..0000000
--- a/comm/suite/extensions/Makefile.in
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DISTROEXT = $(ABS_DIST)/bin/distribution/extensions
-
-include $(topsrcdir)/config/rules.mk
-
-# If adding extra extensions here, check that EXTRA_ARGS defined below won't
-# affect them unintentionally.
-EXTENSIONS = \
- $(NULL)
-
-# We are in release mode, we don't want to ship the debug file.
-ifndef MOZ_DEBUG
-EXTRA_ARGS = -x content/debug.html
-endif
-
-DEFINES += \
- -DMOZ_APP_VERSION=$(MOZ_APP_VERSION) \
- -DMOZ_APP_MAXVERSION=$(MOZ_APP_MAXVERSION) \
- $(NULL)
-
-define _INSTALL_EXTENSION
-$(NSINSTALL) -D $(dir) && \
- $(PYTHON) -m mozbuild.action.preprocessor $(DEFINES) $(ACDEFINES) $(srcdir)/$(dir)/install.rdf.in -o $(dir)/install.rdf && \
- cd $(dir) && \
- $(ZIP) -r9XD $(DISTROEXT)/$(dir).xpi install.rdf && \
- cd $(abspath $(srcdir)/$(dir)) && \
- $(ZIP) -r9XD $(DISTROEXT)/$(dir).xpi * -x install.rdf.in $(EXTRA_ARGS)
-
-endef # do not remove the blank line!
-
-libs::
- $(NSINSTALL) -D $(DISTROEXT)
- $(foreach dir,$(EXTENSIONS),$(_INSTALL_EXTENSION))
diff --git a/comm/suite/extensions/debugQA/Makefile.in b/comm/suite/extensions/debugQA/Makefile.in
deleted file mode 100644
index 81a0ec2..0000000
--- a/comm/suite/extensions/debugQA/Makefile.in
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-INSTALL_EXTENSION_ID = debugQA@mozilla.org
-XPI_PKGNAME = debugQA-$(MOZ_APP_VERSION)
-
diff --git a/comm/suite/extensions/debugQA/content/EditorInitPage.html b/comm/suite/extensions/debugQA/content/EditorInitPage.html
index 1b29b4a..bdfa194 100644
--- a/comm/suite/extensions/debugQA/content/EditorInitPage.html
+++ b/comm/suite/extensions/debugQA/content/EditorInitPage.html
@@ -101,13 +101,13 @@ This text has two spaces between every word
<li>list item with child paragraphs
<p>
First child paragraph
- </p>
+ </p>
<p>
Second child paragraph
- </p>
+ </p>
<p>
Third child paragraph
- </p>
+ </p>
</li>
<li>
Another list item
@@ -131,17 +131,17 @@ Another thing.
<table border="1" id="bigtable">
<tr><td>big cell 1 </td>
<td>
- <table BORDER>
- <tr><td>nested cell 1 </td><td>nested cell 2 </td></tr>
- <tr><td>nested cell 3 </td><td>nested cell 4 </td></tr>
- </table>
+<table BORDER>
+<tr><td>nested cell 1 </td><td>nested cell 2 </td></tr>
+<tr><td>nested cell 3 </td><td>nested cell 4 </td></tr>
+</table>
</td>
</tr>
<tr><td>
- <table BORDER>
- <tr><td>nested cell 5 </td><td>nested cell 6 </td></tr>
- <tr><td>nested cell 7 </td><td>nested cell 8 </td></tr>
- </table>
+<table BORDER>
+<tr><td>nested cell 5 </td><td>nested cell 6 </td></tr>
+<tr><td>nested cell 7 </td><td>nested cell 8 </td></tr>
+</table>
</td><td>big cell 4 </td></tr>
</table>
diff --git a/comm/suite/extensions/debugQA/install.rdf b/comm/suite/extensions/debugQA/install.rdf.in
index e6e46db..e6e46db 100644
--- a/comm/suite/extensions/debugQA/install.rdf
+++ b/comm/suite/extensions/debugQA/install.rdf.in
diff --git a/comm/suite/extensions/debugQA/jar.mn b/comm/suite/extensions/debugQA/jar.mn
index d92b263..78c7371 100644
--- a/comm/suite/extensions/debugQA/jar.mn
+++ b/comm/suite/extensions/debugQA/jar.mn
@@ -2,7 +2,7 @@
# 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/.
-debugqa.jar:
+[distribution/extensions/debugQA@mozilla.org] debugqa.jar:
% content debugqa %content/debugqa/
% overlay chrome://navigator/content/navigatorOverlay.xul chrome://debugqa/content/debugQAMenuOverlay.xul
% overlay chrome://editor/content/editor.xul chrome://debugqa/content/debugQAEditorOverlay.xul
diff --git a/comm/suite/extensions/debugQA/locales/jar.mn b/comm/suite/extensions/debugQA/locales/jar.mn
index 78baec2..dddc609 100644
--- a/comm/suite/extensions/debugQA/locales/jar.mn
+++ b/comm/suite/extensions/debugQA/locales/jar.mn
@@ -4,7 +4,7 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-debugqa.jar:
+[distribution/extensions/debugQA@mozilla.org] debugqa.jar:
% locale debugQA @AB_CD@ %locale/@AB_CD@/debugQA/
locale/@AB_CD@/debugQA/debugQAEditorOverlay.dtd (en-US/debugQAEditorOverlay.dtd)
locale/@AB_CD@/debugQA/debugQANavigatorOverlay.properties (en-US/debugQANavigatorOverlay.properties)
diff --git a/comm/suite/extensions/debugQA/locales/moz.build b/comm/suite/extensions/debugQA/locales/moz.build
index 9f62249..e0eb66a 100644
--- a/comm/suite/extensions/debugQA/locales/moz.build
+++ b/comm/suite/extensions/debugQA/locales/moz.build
@@ -3,8 +3,4 @@
# 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/.
-XPI_NAME = 'debugQA'
-
JAR_MANIFESTS += ['jar.mn']
-
-USE_EXTENSION_MANIFEST = True
diff --git a/comm/suite/extensions/debugQA/moz.build b/comm/suite/extensions/debugQA/moz.build
index 3c45913..e6231c7 100644
--- a/comm/suite/extensions/debugQA/moz.build
+++ b/comm/suite/extensions/debugQA/moz.build
@@ -3,15 +3,13 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-DIRS += ['locales']
+DEFINES['MOZ_APP_VERSION'] = CONFIG['MOZ_APP_VERSION']
+DEFINES['MOZ_APP_MAXVERSION'] = CONFIG['MOZ_APP_MAXVERSION']
-XPI_NAME = 'debugQA'
+DIRS += ['locales']
-FINAL_TARGET_PP_FILES += ['install.rdf']
+FINAL_TARGET_PP_FILES.distribution.extensions['debugQA@mozilla.org'] += [
+ 'install.rdf.in'
+]
JAR_MANIFESTS += ['jar.mn']
-
-USE_EXTENSION_MANIFEST = True
-
-DEFINES['MOZ_APP_VERSION'] = CONFIG['MOZ_APP_VERSION']
-DEFINES['MOZ_APP_MAXVERSION'] = CONFIG['MOZ_APP_MAXVERSION']
diff --git a/comm/suite/installer/package-manifest.in b/comm/suite/installer/package-manifest.in
index a8fb40f..3d7c616 100644
--- a/comm/suite/installer/package-manifest.in
+++ b/comm/suite/installer/package-manifest.in
@@ -161,7 +161,7 @@
; [Components]
#ifdef ACCESSIBILITY
-#ifdef XP_WIN32
+#ifdef XP_WIN
@BINPATH@/Accessible.tlb
@BINPATH@/AccessibleHandler.dll
@BINPATH@/AccessibleMarshal.dll
@@ -578,7 +578,7 @@
#ifdef MOZ_UPDATER
@RESPATH@/icons/updater.png
#endif
-#elifdef XP_WIN32
+#elifdef XP_WIN
@RESPATH@/chrome/icons/default/bookmarkproperties.ico
@RESPATH@/chrome/icons/default/downloadManager.ico
@RESPATH@/chrome/icons/default/editorWindow.ico
@@ -817,7 +817,7 @@ man/*
@RESPATH@/chrome/icons/default/msgcomposeWindow.png
@RESPATH@/chrome/icons/default/msgcomposeWindow16.png
@RESPATH@/chrome/icons/default/msgcomposeWindow48.png
-#elifdef XP_WIN32
+#elifdef XP_WIN
@RESPATH@/chrome/icons/default/abcardWindow.ico
@RESPATH@/chrome/icons/default/ablistWindow.ico
@RESPATH@/chrome/icons/default/addressbookWindow.ico
diff --git a/comm/suite/installer/removed-files.in b/comm/suite/installer/removed-files.in
index 5b9c2eb..2bac25d 100644
--- a/comm/suite/installer/removed-files.in
+++ b/comm/suite/installer/removed-files.in
@@ -110,7 +110,7 @@
@DIR_MACOS@chrome/icons/default/venkman-window.png
@DIR_MACOS@chrome/icons/default/venkman-window16.png
@DIR_MACOS@chrome/icons/default/venkman-window48.png
-#elifdef XP_WIN32
+#elifdef XP_WIN
chrome/icons/default/venkman-window.ico
#endif
#ifndef ENABLE_TESTS
diff --git a/comm/suite/installer/windows/nsis/shared.nsh b/comm/suite/installer/windows/nsis/shared.nsh
index d10cee6..5830eb8 100644
--- a/comm/suite/installer/windows/nsis/shared.nsh
+++ b/comm/suite/installer/windows/nsis/shared.nsh
@@ -467,7 +467,6 @@
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
@@ -792,6 +791,11 @@
${If} "$2" == "SeamonkeyURL"
DeleteRegKey HKCU "$0"
${EndIf}
+
+ ; Remove the SupportUTF8 registry value as it causes MAPI issues on some locales
+ ; with non-ASCII characters in file names.
+ StrCpy $0 "Software\Clients\Mail\${ClientsRegName}"
+ DeleteRegValue HKLM $0 "SupportUTF8"
!macroend
!define RemoveDeprecatedKeys "!insertmacro RemoveDeprecatedKeys"
diff --git a/comm/suite/locales/Makefile.in b/comm/suite/locales/Makefile.in
index c04f1e8..1f78448 100644
--- a/comm/suite/locales/Makefile.in
+++ b/comm/suite/locales/Makefile.in
@@ -143,6 +143,9 @@ libs-%:
ifdef MOZ_IRC
@$(MAKE) -C $(DEPTH)/extensions/irc/locales libs-$*
endif
+ifdef MOZ_DEBUGQA
+ @$(MAKE) -C ../extensions/debugQA/locales AB_CD=$* XPI_NAME=locale-$*
+endif
@$(MAKE) -C $(DEPTH)/extensions/spellcheck/locales AB_CD=$* XPI_NAME=locale-$*
@$(MAKE) -B searchplugins AB_CD=$* XPI_NAME=locale-$*
@$(MAKE) -C $(DEPTH)/devtools/client/locales AB_CD=$* XPI_NAME=locale-$*
diff --git a/comm/suite/locales/en-US/chrome/common/downloads/downloadmanager.dtd b/comm/suite/locales/en-US/chrome/common/downloads/downloadmanager.dtd
index 64af0a9..f285278 100644
--- a/comm/suite/locales/en-US/chrome/common/downloads/downloadmanager.dtd
+++ b/comm/suite/locales/en-US/chrome/common/downloads/downloadmanager.dtd
@@ -93,4 +93,3 @@
-->
<!ENTITY cmd.unblock2.label "Allow Download">
<!ENTITY cmd.unblock2.accesskey "l">
-
diff --git a/comm/suite/locales/en-US/chrome/common/help/developer_tools.xhtml b/comm/suite/locales/en-US/chrome/common/help/developer_tools.xhtml
index c28770e..baff941 100644
--- a/comm/suite/locales/en-US/chrome/common/help/developer_tools.xhtml
+++ b/comm/suite/locales/en-US/chrome/common/help/developer_tools.xhtml
@@ -61,12 +61,12 @@
</li>
<li id="webide">
<strong>WebIDE</strong>: &brandShortName; includes Developer Tools WebIDE,
- which can be used to debug other web sites or Gecko-based applications
- running on the same computer, or on another device (such as a smartphone)
- through a USB or network connection. To learn more, visit the
- <a href="https://developer.mozilla.org/docs/Tools/Remote_Debugging">Remote
- Debugging</a> page at MDN. Note that you may not be able to debug
- applications that are newer than the included version of WebIDE.
+ which can be used to debug other web sites or Gecko-based applications
+ running on the same computer, or on another device (such as a smartphone)
+ through a USB or network connection. To learn more, visit the
+ <a href="https://developer.mozilla.org/docs/Tools/Remote_Debugging">Remote
+ Debugging</a> page at MDN. Note that you may not be able to debug
+ applications that are newer than the included version of WebIDE.
</li>
</ul>
diff --git a/comm/suite/locales/en-US/chrome/common/help/help-win.rdf b/comm/suite/locales/en-US/chrome/common/help/help-win.rdf
index d511b56..1c2e5ca 100644
--- a/comm/suite/locales/en-US/chrome/common/help/help-win.rdf
+++ b/comm/suite/locales/en-US/chrome/common/help/help-win.rdf
@@ -66,7 +66,7 @@
<rdf:Seq><rdf:li>
<rdf:Description ID="default_browser_preferences"
nc:name="default browser preferences"
- nc:link="cs_nav_prefs_navigator.xhtml#navigator"/>
+ nc:link="cs_nav_prefs_navigator.xhtml#navigator"/>
</rdf:li></rdf:Seq>
</nc:subheadings>
</rdf:Description>
@@ -76,7 +76,7 @@
<rdf:Seq><rdf:li>
<rdf:Description ID="ieusers"
nc:name="Internet Explorer User Help"
- nc:link="forieusers.xhtml"/>
+ nc:link="forieusers.xhtml"/>
</rdf:li></rdf:Seq>
</nc:subheadings>
</rdf:Description>
@@ -111,7 +111,7 @@
<rdf:Seq><rdf:li>
<rdf:Description ID="preferences:default_browser"
nc:name="default browser preferences"
- nc:link="cs_nav_prefs_navigator.xhtml#navigator"/>
+ nc:link="cs_nav_prefs_navigator.xhtml#navigator"/>
</rdf:li></rdf:Seq>
</nc:subheadings>
</rdf:Description>
diff --git a/comm/suite/locales/en-US/chrome/common/help/helpFileLayout.css b/comm/suite/locales/en-US/chrome/common/help/helpFileLayout.css
index 9f61a48..5504ba6 100644
--- a/comm/suite/locales/en-US/chrome/common/help/helpFileLayout.css
+++ b/comm/suite/locales/en-US/chrome/common/help/helpFileLayout.css
@@ -4,10 +4,10 @@
@import url("chrome://help/content/platformClasses.css");
body {
- margin: 2ex;
- font-family: sans-serif;
- font-size: 0.75em;
- max-width: 120ex;
+ margin: 2ex;
+ font-family: sans-serif;
+ font-size: 0.75em;
+ max-width: 120ex;
}
dd { margin-inline-start: 0px; margin-bottom: 1em; }
@@ -47,17 +47,17 @@ p:first-child { padding-top: 0; margin-top: 0; }
.separate > li { margin-bottom: 0.5em; }
.contentsBox {
- margin-top: 12px;
- background-color: #cccccc;
- border: 1px solid black;
- width: 300px;
- padding: 1em;
+ margin-top: 12px;
+ background-color: #cccccc;
+ border: 1px solid black;
+ width: 300px;
+ padding: 1em;
}
.contentsBox > ul {
- list-style-type: none;
+ list-style-type: none;
}
a[href^="http://"]:after, a[href^="https://"]:after, a[href^="x-moz-url-link:"]:after {
- content: url("images/web-links.png");
+ content: url("images/web-links.png");
}
diff --git a/comm/suite/locales/en-US/chrome/common/help/suite-toc.rdf b/comm/suite/locales/en-US/chrome/common/help/suite-toc.rdf
index c75815c..75a5717 100644
--- a/comm/suite/locales/en-US/chrome/common/help/suite-toc.rdf
+++ b/comm/suite/locales/en-US/chrome/common/help/suite-toc.rdf
@@ -519,7 +519,7 @@
<rdf:Description about="#comp">
<nc:subheadings>
<rdf:Seq>
- <rdf:li> <rdf:Description ID="comp-doc" nc:name="Starting a New Page" nc:link="composer_help.xhtml#starting_a_new_page"/> </rdf:li>
+ <rdf:li> <rdf:Description ID="comp-doc" nc:name="Starting a New Page" nc:link="composer_help.xhtml#starting_a_new_page"/> </rdf:li>
<rdf:li> <rdf:Description ID="page_change" nc:name="Formatting Your Web Pages" nc:link="composer_help.xhtml#formatting_your_web_pages"/> </rdf:li>
<rdf:li> <rdf:Description ID="comp-doc-table" nc:name="Adding Tables to Your Web Page" nc:link="composer_help.xhtml#adding_tables_to_your_web_page"/> </rdf:li>
<rdf:li> <rdf:Description ID="comp-doc-image" nc:name="Adding Images to Your Web Page" nc:link="composer_help.xhtml#adding_images_to_your_web_page"/> </rdf:li>
@@ -856,11 +856,11 @@
<rdf:Description about="#privacy-doc">
<nc:subheadings>
<rdf:Seq>
- <rdf:li><rdf:Description ID="privacy-doc-visit" nc:name="What Information Does My Browser Give to a Website?" nc:link="privacy_help.xhtml#what_information_does_my_browser_give_to_a_website"/> </rdf:li>
- <rdf:li><rdf:Description ID="privacy-doc-cookies" nc:name="What Are Cookies, and How Do They Work?" nc:link="privacy_help.xhtml#what_are_cookies_and_how_do_they_work"/> </rdf:li>
- <rdf:li><rdf:Description ID="privacy-doc-tracking" nc:name="Why and How Are Websites Tracking Me?" nc:link="privacy_help.xhtml#why_and_how_are_websites_tracking_me"/> </rdf:li>
- <rdf:li><rdf:Description ID="privacy-doc-email" nc:name="How Can I Control Web Pages in Email Messages?" nc:link="privacy_help.xhtml#how_can_i_control_web_pages_in_email_messages"/> </rdf:li>
- <rdf:li><rdf:Description ID="privacy-doc-unauth" nc:name="How Can I Make Sure Unauthorized People Don't Use Information About Me?" nc:link="privacy_help.xhtml#how_can_i_make_sure_unauthorized_people_dont_use_information_about_me"/> </rdf:li>
+ <rdf:li><rdf:Description ID="privacy-doc-visit" nc:name="What Information Does My Browser Give to a Website?" nc:link="privacy_help.xhtml#what_information_does_my_browser_give_to_a_website"/> </rdf:li>
+ <rdf:li><rdf:Description ID="privacy-doc-cookies" nc:name="What Are Cookies, and How Do They Work?" nc:link="privacy_help.xhtml#what_are_cookies_and_how_do_they_work"/> </rdf:li>
+ <rdf:li><rdf:Description ID="privacy-doc-tracking" nc:name="Why and How Are Websites Tracking Me?" nc:link="privacy_help.xhtml#why_and_how_are_websites_tracking_me"/> </rdf:li>
+ <rdf:li><rdf:Description ID="privacy-doc-email" nc:name="How Can I Control Web Pages in Email Messages?" nc:link="privacy_help.xhtml#how_can_i_control_web_pages_in_email_messages"/> </rdf:li>
+ <rdf:li><rdf:Description ID="privacy-doc-unauth" nc:name="How Can I Make Sure Unauthorized People Don't Use Information About Me?" nc:link="privacy_help.xhtml#how_can_i_make_sure_unauthorized_people_dont_use_information_about_me"/> </rdf:li>
</rdf:Seq>
</nc:subheadings>
</rdf:Description>
diff --git a/comm/suite/locales/en-US/chrome/common/pref/mac/platformPrefOverlay.dtd b/comm/suite/locales/en-US/chrome/common/pref/mac/platformPrefOverlay.dtd
index 46dcc1d..34f1266 100644
--- a/comm/suite/locales/en-US/chrome/common/pref/mac/platformPrefOverlay.dtd
+++ b/comm/suite/locales/en-US/chrome/common/pref/mac/platformPrefOverlay.dtd
@@ -4,8 +4,8 @@
<!-- LOCALIZATION NOTE : this is part of an inline-style attribute on the
preference dialog's <window> node, which specifies the width and height
- in em units of the dialog. Localizers ONLY can increase these widths
- if they are having difficulty getting panel content to fit. 1em = the
+ in em units of the dialog. Localizers ONLY can increase these widths
+ if they are having difficulty getting panel content to fit. 1em = the
width of the letter 'm' in the selected font.
XUL/FE DEVELOPERS: DO NOT MODIFY THIS VALUE. It represents the correct
size of this window for en-US. -->
diff --git a/comm/suite/locales/en-US/chrome/common/pref/pref-cookies.dtd b/comm/suite/locales/en-US/chrome/common/pref/pref-cookies.dtd
index edcea8c..e6dad7b 100644
--- a/comm/suite/locales/en-US/chrome/common/pref/pref-cookies.dtd
+++ b/comm/suite/locales/en-US/chrome/common/pref/pref-cookies.dtd
@@ -37,4 +37,3 @@
<!ENTITY viewCookies.label "Cookie Manager">
<!ENTITY viewCookies.accesskey "M">
-
diff --git a/comm/suite/locales/en-US/chrome/common/pref/pref-images.dtd b/comm/suite/locales/en-US/chrome/common/pref/pref-images.dtd
index 42abb35..dd03e77 100644
--- a/comm/suite/locales/en-US/chrome/common/pref/pref-images.dtd
+++ b/comm/suite/locales/en-US/chrome/common/pref/pref-images.dtd
@@ -8,7 +8,7 @@
<!--LOCALIZATION NOTE (onStartLegend.label): Don't translate "&brandShortName;".
Place "&brandShortName;" in the phrase where the name of the application should
- appear
+ appear
-->
<!ENTITY imageDetails "Specify how &brandShortName; handles images.">
diff --git a/comm/suite/locales/en-US/chrome/common/pref/pref-popups.dtd b/comm/suite/locales/en-US/chrome/common/pref/pref-popups.dtd
index eece412..0119de2 100644
--- a/comm/suite/locales/en-US/chrome/common/pref/pref-popups.dtd
+++ b/comm/suite/locales/en-US/chrome/common/pref/pref-popups.dtd
@@ -32,4 +32,3 @@
<!ENTITY displayNotification.accesskey "N">
<!ENTITY popupNote.description "Note: Blocking all popups may prevent important features of some websites from working, such as login windows for banks and shopping websites. For details of how to allow specific websites to use popups while blocking all others, click Help. Even if blocked, websites may use other methods to show popups.">
-
diff --git a/comm/suite/locales/en-US/chrome/common/pref/unix/platformPrefOverlay.dtd b/comm/suite/locales/en-US/chrome/common/pref/unix/platformPrefOverlay.dtd
index 5b1f940..2ccf0e8 100644
--- a/comm/suite/locales/en-US/chrome/common/pref/unix/platformPrefOverlay.dtd
+++ b/comm/suite/locales/en-US/chrome/common/pref/unix/platformPrefOverlay.dtd
@@ -4,8 +4,8 @@
<!-- LOCALIZATION NOTE : this is part of an inline-style attribute on the
preference dialog's <window> node, which specifies the width and height
- in em units of the dialog. Localizers ONLY can increase these widths
- if they are having difficulty getting panel content to fit. 1em = the
+ in em units of the dialog. Localizers ONLY can increase these widths
+ if they are having difficulty getting panel content to fit. 1em = the
width of the letter 'm' in the selected font.
XUL/FE DEVELOPERS: DO NOT MODIFY THIS VALUE. It represents the correct
size of this window for en-US. -->
diff --git a/comm/suite/locales/en-US/chrome/common/pref/win/platformPrefOverlay.dtd b/comm/suite/locales/en-US/chrome/common/pref/win/platformPrefOverlay.dtd
index 545b2bc..80f6fc8 100644
--- a/comm/suite/locales/en-US/chrome/common/pref/win/platformPrefOverlay.dtd
+++ b/comm/suite/locales/en-US/chrome/common/pref/win/platformPrefOverlay.dtd
@@ -4,8 +4,8 @@
<!-- LOCALIZATION NOTE : this is part of an inline-style attribute on the
preference dialog's <window> node, which specifies the width and height
- in em units of the dialog. Localizers ONLY can increase these widths
- if they are having difficulty getting panel content to fit. 1em = the
+ in em units of the dialog. Localizers ONLY can increase these widths
+ if they are having difficulty getting panel content to fit. 1em = the
width of the letter 'm' in the selected font.
XUL/FE DEVELOPERS: DO NOT MODIFY THIS VALUE. It represents the correct
size of this window for en-US. -->
diff --git a/comm/suite/locales/en-US/chrome/common/safeBrowsing.dtd b/comm/suite/locales/en-US/chrome/common/safeBrowsing.dtd
index 766a52d..2e498ba 100644
--- a/comm/suite/locales/en-US/chrome/common/safeBrowsing.dtd
+++ b/comm/suite/locales/en-US/chrome/common/safeBrowsing.dtd
@@ -26,4 +26,3 @@
<!ENTITY reportDeceptiveSite.accesskey "d">
<!ENTITY notADeceptiveSite.label "This isn't a deceptive site…">
<!ENTITY notADeceptiveSite.accesskey "d">
-
diff --git a/comm/suite/locales/en-US/chrome/common/utilityOverlay.dtd b/comm/suite/locales/en-US/chrome/common/utilityOverlay.dtd
index bc61810..7f6e1ec 100644
--- a/comm/suite/locales/en-US/chrome/common/utilityOverlay.dtd
+++ b/comm/suite/locales/en-US/chrome/common/utilityOverlay.dtd
@@ -6,7 +6,7 @@
<!ENTITY offlineGoOfflineCmd.label "Work Offline">
<!ENTITY offlineGoOfflineCmd.accesskey "k">
-<!-- LOCALIZATION NOTE : FILE This file contains the global menu items -->
+<!-- LOCALIZATION NOTE : FILE This file contains the global menu items -->
<!ENTITY fileMenu.label "File">
<!ENTITY fileMenu.accesskey "F">
@@ -62,13 +62,13 @@
<!ENTITY selectAllCmd.label "Select All">
<!ENTITY selectAllCmd.key "A">
<!ENTITY selectAllCmd.accesskey "A">
-<!ENTITY clearHistoryCmd.label "Clear Search History">
-<!ENTITY clearHistoryCmd.accesskey "H">
-<!ENTITY showSuggestionsCmd.label "Show Suggestions">
-<!ENTITY showSuggestionsCmd.accesskey "S">
-<!ENTITY preferencesCmd.label "Preferences…">
-<!ENTITY preferencesCmd.key "E">
-<!ENTITY preferencesCmd.accesskey "e">
+<!ENTITY clearHistoryCmd.label "Clear Search History">
+<!ENTITY clearHistoryCmd.accesskey "H">
+<!ENTITY showSuggestionsCmd.label "Show Suggestions">
+<!ENTITY showSuggestionsCmd.accesskey "S">
+<!ENTITY preferencesCmd.label "Preferences…">
+<!ENTITY preferencesCmd.key "E">
+<!ENTITY preferencesCmd.accesskey "e">
<!ENTITY findBarCmd.key "F">
<!-- LOCALIZATION NOTE (findBarCmd.accesskey): This accesskey should be within
findBarCmd.label found in editorOverlay.dtd, findCmd.label in messenger.dtd
@@ -88,15 +88,15 @@
<!ENTITY findTypeLinksCmd.label "Find Links As You Type">
<!ENTITY findTypeLinksCmd.accesskey "k">
-<!ENTITY viewMenu.label "View">
+<!ENTITY viewMenu.label "View">
<!ENTITY viewMenu.accesskey "V">
-<!ENTITY viewToolbarsMenu.label "Show/Hide">
-<!ENTITY viewToolbarsMenu.accesskey "w">
-<!ENTITY showTaskbarCmd.label "Status Bar">
-<!ENTITY showTaskbarCmd.accesskey "S">
+<!ENTITY viewToolbarsMenu.label "Show/Hide">
+<!ENTITY viewToolbarsMenu.accesskey "w">
+<!ENTITY showTaskbarCmd.label "Status Bar">
+<!ENTITY showTaskbarCmd.accesskey "S">
-<!ENTITY helpMenu.label "Help">
-<!ENTITY helpMenu.accesskey "h">
+<!ENTITY helpMenu.label "Help">
+<!ENTITY helpMenu.accesskey "h">
<!ENTITY helpTroubleshootingInfo.label "Troubleshooting Information">
<!ENTITY helpTroubleshootingInfo.accesskey "T">
@@ -106,24 +106,24 @@
<!ENTITY helpSafeMode.accesskey "R">
<!ENTITY updateCmd.label "Check for Updates…">
<!ENTITY updateCmd.accesskey "C">
-<!ENTITY aboutCmd.label "About &brandShortName;">
-<!ENTITY aboutCmd.accesskey "A">
-<!ENTITY aboutCommPluginsCmd.label "About Plugins">
-<!ENTITY aboutCommPluginsCmd.accesskey "p">
+<!ENTITY aboutCmd.label "About &brandShortName;">
+<!ENTITY aboutCmd.accesskey "A">
+<!ENTITY aboutCommPluginsCmd.label "About Plugins">
+<!ENTITY aboutCommPluginsCmd.accesskey "p">
-<!ENTITY direct.label "Online (Proxy: None)">
-<!ENTITY direct.accesskey "N">
-<!ENTITY manual.label "Online (Proxy: Manual)">
-<!ENTITY manual.accesskey "M">
-<!ENTITY pac.label "Online (Proxy: Auto URL)">
-<!ENTITY pac.accesskey "A">
-<!ENTITY wpad.label "Online (Proxy: Auto Discover)">
-<!ENTITY wpad.accesskey "D">
-<!ENTITY system.label "Online (Proxy: System Proxy)">
-<!ENTITY system.accesskey "S">
+<!ENTITY direct.label "Online (Proxy: None)">
+<!ENTITY direct.accesskey "N">
+<!ENTITY manual.label "Online (Proxy: Manual)">
+<!ENTITY manual.accesskey "M">
+<!ENTITY pac.label "Online (Proxy: Auto URL)">
+<!ENTITY pac.accesskey "A">
+<!ENTITY wpad.label "Online (Proxy: Auto Discover)">
+<!ENTITY wpad.accesskey "D">
+<!ENTITY system.label "Online (Proxy: System Proxy)">
+<!ENTITY system.accesskey "S">
-<!ENTITY proxy.label "Proxy Configuration…">
-<!ENTITY proxy.accesskey "C">
+<!ENTITY proxy.label "Proxy Configuration…">
+<!ENTITY proxy.accesskey "C">
<!ENTITY bidiSwitchTextDirectionItem.label "Switch Text Direction">
<!ENTITY bidiSwitchTextDirectionItem.accesskey "w">
diff --git a/comm/suite/locales/en-US/chrome/mailnews/addressbook/abMainWindow.dtd b/comm/suite/locales/en-US/chrome/mailnews/addressbook/abMainWindow.dtd
index 7600184..213179e 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/addressbook/abMainWindow.dtd
+++ b/comm/suite/locales/en-US/chrome/mailnews/addressbook/abMainWindow.dtd
@@ -12,10 +12,10 @@
<!-- LOCALIZATION NOTE (newContact.accesskey) : DONT_TRANSLATE -->
<!ENTITY newContact.accesskey "C">
<!ENTITY newListCmd.label "Mailing List…">
-<!-- LOCALIZATION NOTE (newListCmd.accesskey) : DONT_TRANSLATE -->
-<!ENTITY newListCmd.accesskey "L">
-<!ENTITY newAddressBookCmd.label "Address Book…">
-<!ENTITY newAddressBookCmd.accesskey "o">
+<!-- LOCALIZATION NOTE (newListCmd.accesskey) : DONT_TRANSLATE -->
+<!ENTITY newListCmd.accesskey "L">
+<!ENTITY newAddressBookCmd.label "Address Book…">
+<!ENTITY newAddressBookCmd.accesskey "o">
<!ENTITY newLDAPDirectoryCmd.label "LDAP Directory…">
<!-- LOCALIZATION NOTE (newLDAPDirectoryCmd.accesskey) : DONT_TRANSLATE -->
<!ENTITY newLDAPDirectoryCmd.accesskey "D">
@@ -25,42 +25,42 @@
<!ENTITY printPreviewContactViewCmd.label "Print Preview Contact">
<!ENTITY printPreviewContactViewCmd.accesskey "v">
<!ENTITY printContactViewCmd.key "P">
-<!ENTITY printAddressBook.label "Print Address Book…">
-<!ENTITY printAddressBook.accesskey "A">
-<!ENTITY printPreviewAddressBook.label "Print Preview Address Book">
+<!ENTITY printAddressBook.label "Print Address Book…">
+<!ENTITY printAddressBook.accesskey "A">
+<!ENTITY printPreviewAddressBook.label "Print Preview Address Book">
<!ENTITY printPreviewAddressBook.accesskey "B">
<!-- Edit Menu -->
-<!ENTITY deleteAbCmd.label "Delete Address Book">
+<!ENTITY deleteAbCmd.label "Delete Address Book">
<!ENTITY deleteContactCmd.label "Delete Contact">
<!ENTITY deleteContactsCmd.label "Delete Selected Contacts">
<!ENTITY deleteListCmd.label "Delete List">
<!ENTITY deleteListsCmd.label "Delete Selected Lists">
<!ENTITY deleteItemsCmd.label "Delete Selected Items">
<!ENTITY swapFirstNameLastNameCmd.label "Swap First/Last Name">
-<!ENTITY swapFirstNameLastNameCmd.accesskey "w">
+<!ENTITY swapFirstNameLastNameCmd.accesskey "w">
<!ENTITY propertiesCmd.label "Properties…">
-<!-- LOCALIZATION NOTE (propertiesCmd.accesskey) : DONT_TRANSLATE -->
-<!ENTITY propertiesCmd.accesskey "i">
-<!ENTITY propertiesCmd.key "i">
+<!-- LOCALIZATION NOTE (propertiesCmd.accesskey) : DONT_TRANSLATE -->
+<!ENTITY propertiesCmd.accesskey "i">
+<!ENTITY propertiesCmd.key "i">
<!-- View Menu -->
-<!ENTITY showAbToolbarCmd.label "Address Book Toolbar">
-<!ENTITY showAbToolbarCmd.accesskey "o">
+<!ENTITY showAbToolbarCmd.label "Address Book Toolbar">
+<!ENTITY showAbToolbarCmd.accesskey "o">
<!ENTITY layoutMenu.label "Layout">
<!ENTITY layoutMenu.accesskey "L">
<!ENTITY showDirectoryPane.label "Directory Pane">
<!ENTITY showDirectoryPane.accesskey "D">
<!ENTITY showContactPane2.label "Contact Pane">
<!ENTITY showContactPane2.accesskey "C">
-<!ENTITY menu_ShowNameAs.label "Show Name As">
-<!ENTITY menu_ShowNameAs.accesskey "n">
-<!ENTITY firstLastCmd.label "First Last">
-<!ENTITY firstLastCmd.accesskey "f">
-<!ENTITY lastFirstCmd.label "Last, First">
-<!ENTITY lastFirstCmd.accesskey "l">
-<!ENTITY displayNameCmd.label "Display Name">
-<!ENTITY displayNameCmd.accesskey "d">
+<!ENTITY menu_ShowNameAs.label "Show Name As">
+<!ENTITY menu_ShowNameAs.accesskey "n">
+<!ENTITY firstLastCmd.label "First Last">
+<!ENTITY firstLastCmd.accesskey "f">
+<!ENTITY lastFirstCmd.label "Last, First">
+<!ENTITY lastFirstCmd.accesskey "l">
+<!ENTITY displayNameCmd.label "Display Name">
+<!ENTITY displayNameCmd.accesskey "d">
<!-- Tasks Menu -->
<!ENTITY importCmd.label "Import…">
@@ -68,29 +68,29 @@
<!ENTITY exportCmd.label "Export…">
<!ENTITY exportCmd.accesskey "E">
-<!-- Toolbar and Popup items -->
+<!-- Toolbar and Popup items -->
<!ENTITY newContactButton.label "New Contact">
<!ENTITY newContactButton.accesskey "C">
-<!ENTITY newlistButton.label "New List">
-<!ENTITY newlistButton.accesskey "L">
+<!ENTITY newlistButton.label "New List">
+<!ENTITY newlistButton.accesskey "L">
<!ENTITY editItemButton.label "Properties">
<!ENTITY editItemButton.accesskey "P">
-<!ENTITY newmsgButton.label "Compose">
-<!ENTITY newmsgButton.accesskey "C">
+<!ENTITY newmsgButton.label "Compose">
+<!ENTITY newmsgButton.accesskey "C">
<!ENTITY deleteItemButton.label "Delete">
<!ENTITY deleteItemButton.accesskey "D">
-<!ENTITY newimButton.label "Instant Message">
-<!ENTITY newimButton.accesskey "I">
+<!ENTITY newimButton.label "Instant Message">
+<!ENTITY newimButton.accesskey "I">
<!ENTITY searchNameAndEmail.placeholder "Search Name and Email">
<!ENTITY searchBox.title "Search">
<!-- Tooltips -->
<!ENTITY addressbookToolbar.tooltip "Address Book Toolbar">
<!ENTITY newContactButton.tooltip "Create a new address book contact">
-<!ENTITY newlistButton.tooltip "Create a new list">
+<!ENTITY newlistButton.tooltip "Create a new list">
<!ENTITY editItemButton.tooltip "Edit the selected item">
-<!ENTITY newmsgButton.tooltip "Send a mail message">
-<!ENTITY newIM.tooltip "Send an instant message or chat">
+<!ENTITY newmsgButton.tooltip "Send a mail message">
+<!ENTITY newIM.tooltip "Send an instant message or chat">
<!ENTITY deleteItemButton.tooltip "Delete selected item">
<!ENTITY throbber.tooltip "Go to the &vendorShortName; home page">
<!ENTITY advancedButton.tooltip "Advanced address search">
@@ -112,7 +112,7 @@
<!ENTITY mapItButton.label "Get Map">
<!ENTITY mapIt.tooltip "Display a map of this address from the Web">
-<!-- Status Bar -->
+<!-- Status Bar -->
<!ENTITY statusText.label "">
<!-- LOCALIZATION NOTE (hideSwapFnLnUI) : DONT_TRANSLATE -->
diff --git a/comm/suite/locales/en-US/chrome/mailnews/addressbook/abSelectAddressesDialog.dtd b/comm/suite/locales/en-US/chrome/mailnews/addressbook/abSelectAddressesDialog.dtd
index 1956cbe..7922186 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/addressbook/abSelectAddressesDialog.dtd
+++ b/comm/suite/locales/en-US/chrome/mailnews/addressbook/abSelectAddressesDialog.dtd
@@ -6,26 +6,25 @@
<!ENTITY selectAddressWindow.title "Select Addresses">
<!-- Buttons -->
-<!ENTITY toButton.label "To->">
-<!ENTITY toButton.accesskey "T">
-<!ENTITY ccButton.label "Cc->">
-<!ENTITY ccButton.accesskey "C">
-<!ENTITY bccButton.label "Bcc->">
-<!ENTITY bccButton.accesskey "B">
-<!ENTITY newButton.label "New…">
-<!ENTITY newButton.accesskey "N">
-<!ENTITY editButton.label "Edit…">
+<!ENTITY toButton.label "To->">
+<!ENTITY toButton.accesskey "T">
+<!ENTITY ccButton.label "Cc->">
+<!ENTITY ccButton.accesskey "C">
+<!ENTITY bccButton.label "Bcc->">
+<!ENTITY bccButton.accesskey "B">
+<!ENTITY newButton.label "New…">
+<!ENTITY newButton.accesskey "N">
+<!ENTITY editButton.label "Edit…">
<!ENTITY editButton.accesskey "E">
-<!ENTITY removeButton.label "Remove">
-<!ENTITY removeButton.accesskey "R">
-<!ENTITY lookIn.label "Look in:">
-<!ENTITY lookIn.accesskey "L">
-<!ENTITY for.label "for:">
-<!ENTITY for.accesskey "f">
+<!ENTITY removeButton.label "Remove">
+<!ENTITY removeButton.accesskey "R">
+<!ENTITY lookIn.label "Look in:">
+<!ENTITY lookIn.accesskey "L">
+<!ENTITY for.label "for:">
+<!ENTITY for.accesskey "f">
<!ENTITY for.placeholder "Name or Email">
-<!ENTITY addressMessageTo.label "Address message to:">
-
-<!-- Tooltips items -->
-<!ENTITY addressPickerNewButton.tooltip "Create a new address book card">
-<!ENTITY addressPickerEditButton.tooltip "Edit the selected card">
+<!ENTITY addressMessageTo.label "Address message to:">
+<!-- Tooltips items -->
+<!ENTITY addressPickerNewButton.tooltip "Create a new address book card">
+<!ENTITY addressPickerEditButton.tooltip "Edit the selected card">
diff --git a/comm/suite/locales/en-US/chrome/mailnews/compose/addressingWidgetOverlay.dtd b/comm/suite/locales/en-US/chrome/mailnews/compose/addressingWidgetOverlay.dtd
index 038042c..cbad906 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/compose/addressingWidgetOverlay.dtd
+++ b/comm/suite/locales/en-US/chrome/mailnews/compose/addressingWidgetOverlay.dtd
@@ -4,10 +4,9 @@
<!-- address labels -->
<!--LOCALIZATION NOTE addressingWidgetOverlay.dtd The basic mail/news composition headers as they are seen in UI -->
-<!ENTITY toAddr.label "To:">
-<!ENTITY ccAddr.label "Cc:">
-<!ENTITY bccAddr.label "Bcc:">
-<!ENTITY replyAddr.label "Reply-To:">
-<!ENTITY newsgroupsAddr.label "Newsgroup:">
-<!ENTITY followupAddr.label "Followup-To:">
-
+<!ENTITY toAddr.label "To:">
+<!ENTITY ccAddr.label "Cc:">
+<!ENTITY bccAddr.label "Bcc:">
+<!ENTITY replyAddr.label "Reply-To:">
+<!ENTITY newsgroupsAddr.label "Newsgroup:">
+<!ENTITY followupAddr.label "Followup-To:">
diff --git a/comm/suite/locales/en-US/chrome/mailnews/compose/messengercompose.dtd b/comm/suite/locales/en-US/chrome/mailnews/compose/messengercompose.dtd
index b474c71..e410369 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/compose/messengercompose.dtd
+++ b/comm/suite/locales/en-US/chrome/mailnews/compose/messengercompose.dtd
@@ -114,12 +114,12 @@
<!-- We already inherit &menuBar.tooltip and &mailToolbar.tooltip from messenger.dtd -->
<!ENTITY addressBar.tooltip "Address Bar">
<!ENTITY formatToolbar.tooltip "Formatting Toolbar">
-<!ENTITY sendButton.tooltip "Send this message now">
-<!ENTITY sendlaterButton.tooltip "Send this message later">
-<!ENTITY addressButton.tooltip "Select a recipient from an Address Book">
-<!ENTITY attachButton.tooltip "Include an attachment">
-<!ENTITY saveButton.tooltip "Save this message">
-<!ENTITY stopButton.tooltip "Stop the current transfer">
+<!ENTITY sendButton.tooltip "Send this message now">
+<!ENTITY sendlaterButton.tooltip "Send this message later">
+<!ENTITY addressButton.tooltip "Select a recipient from an Address Book">
+<!ENTITY attachButton.tooltip "Include an attachment">
+<!ENTITY saveButton.tooltip "Save this message">
+<!ENTITY stopButton.tooltip "Stop the current transfer">
<!-- context menu items -->
<!ENTITY openAttachment.label "Open">
diff --git a/comm/suite/locales/en-US/chrome/mailnews/downloadheaders.dtd b/comm/suite/locales/en-US/chrome/mailnews/downloadheaders.dtd
index a11bba9..405c295 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/downloadheaders.dtd
+++ b/comm/suite/locales/en-US/chrome/mailnews/downloadheaders.dtd
@@ -6,9 +6,9 @@
<!ENTITY all.accesskey "D">
<!--LOCALIZATION NOTE (download.label):
consider the download.label and headers.label as a single sentence
- with the number of headers to be downloaded inserted between them:
- EXAMPLE: "Download" <some number> "headers"
- Either label could be set to null ("") if required grammatically.
+ with the number of headers to be downloaded inserted between them:
+ EXAMPLE: "Download" <some number> "headers"
+ Either label could be set to null ("") if required grammatically.
-->
<!ENTITY download.label "Download">
diff --git a/comm/suite/locales/en-US/chrome/mailnews/fieldMapImport.dtd b/comm/suite/locales/en-US/chrome/mailnews/fieldMapImport.dtd
index 1223e1c..69c17ae 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/fieldMapImport.dtd
+++ b/comm/suite/locales/en-US/chrome/mailnews/fieldMapImport.dtd
@@ -18,5 +18,3 @@
<!ENTITY fieldMapImport.dataTitle "Record data to import">
<!ENTITY fieldMapImport.skipFirstRecord.label "First record contains field names">
<!ENTITY fieldMapImport.skipFirstRecord.accessKey "F">
-
-
diff --git a/comm/suite/locales/en-US/chrome/mailnews/folderpane.dtd b/comm/suite/locales/en-US/chrome/mailnews/folderpane.dtd
index dc1a22e..20d6bb2 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/folderpane.dtd
+++ b/comm/suite/locales/en-US/chrome/mailnews/folderpane.dtd
@@ -1,10 +1,10 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<!ENTITY nameColumn.label "Name">
-<!ENTITY unreadColumn.label "Unread">
-<!ENTITY totalColumn.label "Total">
-<!ENTITY folderSizeColumn.label "Size">
+<!ENTITY nameColumn.label "Name">
+<!ENTITY unreadColumn.label "Unread">
+<!ENTITY totalColumn.label "Total">
+<!ENTITY folderSizeColumn.label "Size">
<!ENTITY folderLocationToolbarItem.title "Folder Location">
<!ENTITY mailViewsToolbarItem.title "Mail Views">
<!ENTITY searchToolbarItem.title "Search">
diff --git a/comm/suite/locales/en-US/chrome/mailnews/importMsgs.properties b/comm/suite/locales/en-US/chrome/mailnews/importMsgs.properties
index af98e8e..e90cefb 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/importMsgs.properties
+++ b/comm/suite/locales/en-US/chrome/mailnews/importMsgs.properties
@@ -3,7 +3,7 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
-# The following are used by the import code to display status/error
+# The following are used by the import code to display status/error
# and informational messages
#
@@ -12,7 +12,7 @@
## @loc None
2000=No address books were found to import.
-# Error: Address book import not intialized
+# Error: Address book import not intialized
## @name IMPORT_ERROR_AB_NOTINITIALIZED
## @loc None
2001=Unable to import address books: initialization error.
@@ -33,7 +33,7 @@
## @loc None
2004=No mailboxes were found to import
-# Error: Mailbox import not intialized
+# Error: Mailbox import not intialized
## @name IMPORT_ERROR_MB_NOTINITIALIZED
## @loc None
2005=Unable to import mailboxes, initialization error
diff --git a/comm/suite/locales/en-US/chrome/mailnews/mailOverlay.dtd b/comm/suite/locales/en-US/chrome/mailnews/mailOverlay.dtd
index 63b8339..9dfb061 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/mailOverlay.dtd
+++ b/comm/suite/locales/en-US/chrome/mailnews/mailOverlay.dtd
@@ -6,9 +6,9 @@
<!ENTITY newMessageCmd.key "M">
<!ENTITY newMessageCmd.label "Message">
<!ENTITY newMessageCmd.accesskey "m">
-
+
<!ENTITY newContactCmd.label "Contact…">
<!ENTITY newContactCmd.accesskey "C">
-
+
<!ENTITY printButton.label "Print">
<!ENTITY printButton.tooltip "Print this message">
diff --git a/comm/suite/locales/en-US/chrome/mailnews/mailTasksOverlay.dtd b/comm/suite/locales/en-US/chrome/mailnews/mailTasksOverlay.dtd
index 7538470..03002d5 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/mailTasksOverlay.dtd
+++ b/comm/suite/locales/en-US/chrome/mailnews/mailTasksOverlay.dtd
@@ -4,12 +4,12 @@
<!-- LOCALIZATION NOTE (messengerCmd.label): DONT_TRANSLATE -->
-<!ENTITY messengerCmd.label "Mail &amp; Newsgroups">
-<!ENTITY messengerCmd.accesskey "m">
-<!ENTITY messengerCmd.commandkey "2">
-<!ENTITY addressBookCmd.label "Address Book">
-<!ENTITY addressBookCmd.accesskey "a">
-<!ENTITY addressBookCmd.commandkey "5">
+<!ENTITY messengerCmd.label "Mail &amp; Newsgroups">
+<!ENTITY messengerCmd.accesskey "m">
+<!ENTITY messengerCmd.commandkey "2">
+<!ENTITY addressBookCmd.label "Address Book">
+<!ENTITY addressBookCmd.accesskey "a">
+<!ENTITY addressBookCmd.commandkey "5">
<!ENTITY taskMessenger.tooltip "Mail &amp; Newsgroups">
<!ENTITY taskAddressBook.tooltip "Address Book">
diff --git a/comm/suite/locales/en-US/chrome/mailnews/mailViewList.dtd b/comm/suite/locales/en-US/chrome/mailnews/mailViewList.dtd
index 01dabeb..f83b7e6 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/mailViewList.dtd
+++ b/comm/suite/locales/en-US/chrome/mailnews/mailViewList.dtd
@@ -6,4 +6,3 @@
<!ENTITY mailViewListTitle.label "Customize Message Views">
<!ENTITY viewName.label "View Name">
-
diff --git a/comm/suite/locales/en-US/chrome/mailnews/mailViewSetup.dtd b/comm/suite/locales/en-US/chrome/mailnews/mailViewSetup.dtd
index 598f7a2..3ebe724 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/mailViewSetup.dtd
+++ b/comm/suite/locales/en-US/chrome/mailnews/mailViewSetup.dtd
@@ -8,4 +8,3 @@
<!ENTITY mailViewHeading.label "Message view name:">
<!ENTITY mailViewHeading.accesskey "e">
<!ENTITY searchTermCaption.label "When this view is selected, display only messages that:">
-
diff --git a/comm/suite/locales/en-US/chrome/mailnews/messenger.dtd b/comm/suite/locales/en-US/chrome/mailnews/messenger.dtd
index 5dc79d5..54fbac6 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/messenger.dtd
+++ b/comm/suite/locales/en-US/chrome/mailnews/messenger.dtd
@@ -58,9 +58,9 @@
<!ENTITY renameFolder.label "Rename Folder…">
<!ENTITY renameFolder.accesskey "R">
<!ENTITY compactFolders.label "Compact Folders">
-<!ENTITY compactFolders.accesskey "F">
+<!ENTITY compactFolders.accesskey "F">
<!ENTITY emptyTrashCmd.label "Empty Trash">
-<!ENTITY emptyTrashCmd.accesskey "y">
+<!ENTITY emptyTrashCmd.accesskey "y">
<!ENTITY offlineMenu.label "Offline">
<!ENTITY offlineMenu.accesskey "l">
<!ENTITY synchronizeOfflineCmd.label "Download/Sync Now…">
@@ -284,23 +284,23 @@
<!ENTITY newNewMsgCmd.accesskey "M">
<!ENTITY replyMsgCmd.label "Reply">
<!ENTITY replyMsgCmd.accesskey "R">
-<!ENTITY replyMsgCmd.key "r">
+<!ENTITY replyMsgCmd.key "r">
<!ENTITY replyListCmd.label "Reply to List">
<!ENTITY replyListCmd.accesskey "y">
<!ENTITY replyNewsgroupCmd.label "Reply to Newsgroup">
-<!ENTITY replyNewsgroupCmd.accesskey "y">
+<!ENTITY replyNewsgroupCmd.accesskey "y">
<!ENTITY replySenderCmd.label "Reply to Sender Only">
<!ENTITY replySenderCmd.accesskey "R">
<!ENTITY replyToAllMsgCmd.label "Reply to All">
-<!ENTITY replyToAllMsgCmd.accesskey "p">
-<!ENTITY replyToAllMsgCmd.key "r">
+<!ENTITY replyToAllMsgCmd.accesskey "p">
+<!ENTITY replyToAllMsgCmd.key "r">
<!ENTITY replyToSenderAndNewsgroupCmd.label "Reply to Sender and Newsgroup">
<!ENTITY replyToSenderAndNewsgroupCmd.accesskey "p">
<!ENTITY replyToAllRecipientsCmd.label "Reply to All Recipients">
<!ENTITY replyToAllRecipientsCmd.accesskey "a">
<!ENTITY forwardMsgCmd.label "Forward">
<!ENTITY forwardMsgCmd.accesskey "F">
-<!ENTITY forwardMsgCmd.key "l">
+<!ENTITY forwardMsgCmd.key "l">
<!ENTITY forwardAsMenu.label "Forward As">
<!ENTITY forwardAsMenu.accesskey "o">
<!ENTITY forwardAsInline.label "Inline">
diff --git a/comm/suite/locales/en-US/chrome/mailnews/msgAccountCentral.dtd b/comm/suite/locales/en-US/chrome/mailnews/msgAccountCentral.dtd
index 0f7618f..e7c99cc 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/msgAccountCentral.dtd
+++ b/comm/suite/locales/en-US/chrome/mailnews/msgAccountCentral.dtd
@@ -2,24 +2,23 @@
- 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/. -->
-<!ENTITY emailSectionHdr.label "Email">
-<!ENTITY readMsgsLink.label "Read messages">
-<!ENTITY composeMsgLink.label "Compose a new message">
+<!ENTITY emailSectionHdr.label "Email">
+<!ENTITY readMsgsLink.label "Read messages">
+<!ENTITY composeMsgLink.label "Compose a new message">
-<!ENTITY newsSectionHdr.label "Newsgroups">
-<!ENTITY subscribeNewsLink.label "Manage newsgroup subscriptions">
+<!ENTITY newsSectionHdr.label "Newsgroups">
+<!ENTITY subscribeNewsLink.label "Manage newsgroup subscriptions">
-<!ENTITY accountsSectionHdr.label "Accounts">
-<!ENTITY subscribeImapFolders.label "Manage folder subscriptions">
-<!ENTITY settingsLink.label "View settings for this account">
-<!ENTITY newAcctLink.label "Create a new account">
+<!ENTITY accountsSectionHdr.label "Accounts">
+<!ENTITY subscribeImapFolders.label "Manage folder subscriptions">
+<!ENTITY settingsLink.label "View settings for this account">
+<!ENTITY newAcctLink.label "Create a new account">
-<!ENTITY advFeaturesSectionHdr.label "Advanced Features">
-<!ENTITY searchMsgsLink.label "Search messages">
+<!ENTITY advFeaturesSectionHdr.label "Advanced Features">
+<!ENTITY searchMsgsLink.label "Search messages">
<!ENTITY filtersLink.label "Manage message filters">
<!ENTITY junkSettings.label "Junk mail settings">
<!ENTITY offlineLink.label "Offline settings">
<!ENTITY feedsSectionHdr.label "Feeds">
<!ENTITY subscribeFeeds.label "Manage subscriptions">
-
diff --git a/comm/suite/locales/en-US/chrome/mailnews/msgFolderPickerOverlay.dtd b/comm/suite/locales/en-US/chrome/mailnews/msgFolderPickerOverlay.dtd
index 637dc9e..d4c90f9 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/msgFolderPickerOverlay.dtd
+++ b/comm/suite/locales/en-US/chrome/mailnews/msgFolderPickerOverlay.dtd
@@ -3,5 +3,5 @@
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<!-- Labels -->
-<!ENTITY newfolderchoosethis.label "choose this for the parent">
-<!ENTITY filemessageschoosethis.label "choose this folder">
+<!ENTITY newfolderchoosethis.label "choose this for the parent">
+<!ENTITY filemessageschoosethis.label "choose this folder">
diff --git a/comm/suite/locales/en-US/chrome/mailnews/msgSynchronize.dtd b/comm/suite/locales/en-US/chrome/mailnews/msgSynchronize.dtd
index 9b49928..84bcfc0 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/msgSynchronize.dtd
+++ b/comm/suite/locales/en-US/chrome/mailnews/msgSynchronize.dtd
@@ -20,4 +20,4 @@
<!ENTITY selectButton.accesskey "E">
<!ENTITY MsgSelectDesc.label "Choose mail folders and newsgroups for offline use.">
<!ENTITY MsgSelectInd.label "Download">
-<!ENTITY MsgSelectItems.label "Folders and Newsgroups"> \ No newline at end of file
+<!ENTITY MsgSelectItems.label "Folders and Newsgroups">
diff --git a/comm/suite/locales/en-US/chrome/mailnews/outlookImportMsgs.properties b/comm/suite/locales/en-US/chrome/mailnews/outlookImportMsgs.properties
index cb70a48..c755859 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/outlookImportMsgs.properties
+++ b/comm/suite/locales/en-US/chrome/mailnews/outlookImportMsgs.properties
@@ -3,7 +3,7 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
-# The following are used by the outlook express import code to display status/error
+# The following are used by the outlook express import code to display status/error
# and informational messages
#
@@ -70,8 +70,3 @@
## LOCALIZATION NOTE (2009): In this item, don't translate "%S"
## The variable %S will receive the name of the address book
2009=Error importing address book %S, all addresses may not have been imported.
-
-
-
-
-
diff --git a/comm/suite/locales/en-US/chrome/mailnews/pgpmime.properties b/comm/suite/locales/en-US/chrome/mailnews/pgpmime.properties
index 723578b..17beb4f 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/pgpmime.properties
+++ b/comm/suite/locales/en-US/chrome/mailnews/pgpmime.properties
@@ -9,5 +9,3 @@
# LOCALIZATION NOTE(pgpMimeNeedsAddon): The text can contain HTML tags.
# %S is the url to Enigmail on AMO supplied from preferences.
pgpMimeNeedsAddon=This is an encrypted OpenPGP message.<br>In order to decrypt this mail, you need to install an <a href="%S">OpenPGP add-on</a>.
-
-
diff --git a/comm/suite/locales/en-US/chrome/mailnews/pref/am-server-advanced.dtd b/comm/suite/locales/en-US/chrome/mailnews/pref/am-server-advanced.dtd
index 6abca7c..b06449d 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/pref/am-server-advanced.dtd
+++ b/comm/suite/locales/en-US/chrome/mailnews/pref/am-server-advanced.dtd
@@ -22,7 +22,7 @@
<!ENTITY otherUsersNamespace.accesskey "O">
<!ENTITY overrideNamespaces.label "Allow server to override these namespaces">
<!ENTITY overrideNamespaces.accesskey "A">
-<!ENTITY pop3DeferringDesc.label "When downloading mail from this account's server, use the following folder to store new messages:" >
+<!ENTITY pop3DeferringDesc.label "When downloading mail from this account's server, use the following folder to store new messages:">
<!ENTITY accountInbox.label "Inbox for this account">
<!ENTITY accountInbox.accesskey "s">
<!ENTITY deferToServer.label "Inbox for different account">
diff --git a/comm/suite/locales/en-US/chrome/mailnews/pref/am-server-top.dtd b/comm/suite/locales/en-US/chrome/mailnews/pref/am-server-top.dtd
index a52fdf4..363fe91 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/pref/am-server-top.dtd
+++ b/comm/suite/locales/en-US/chrome/mailnews/pref/am-server-top.dtd
@@ -60,8 +60,8 @@
<!ENTITY loginAtStartup.label "Check for new messages at startup">
<!ENTITY loginAtStartup.accesskey "C">
<!-- LOCALIZATION NOTE (maxMessagesStart.label) : translate below 2 lines with grammar dependency
- maxMessengerStart.label will be followed by maxMessagesEnd.label with the number
- of messages between them
+ maxMessengerStart.label will be followed by maxMessagesEnd.label with the number
+ of messages between them
-->
<!ENTITY maxMessagesStart.label "Ask me before downloading more than">
<!ENTITY maxMessagesStart.accesskey "m">
diff --git a/comm/suite/locales/en-US/chrome/mailnews/pref/pref-directory-add.dtd b/comm/suite/locales/en-US/chrome/mailnews/pref/pref-directory-add.dtd
index a135d3b..2e721ce 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/pref/pref-directory-add.dtd
+++ b/comm/suite/locales/en-US/chrome/mailnews/pref/pref-directory-add.dtd
@@ -34,11 +34,11 @@
<!ENTITY saslMechanism.label "Login method: ">
<!ENTITY saslMechanism.accesskey "m">
<!ENTITY saslOff.label "Simple">
-<!ENTITY saslOff.accesskey "l">
+<!ENTITY saslOff.accesskey "l">
<!ENTITY saslGSSAPI.label "Kerberos (GSSAPI)">
-<!ENTITY saslGSSAPI.accesskey "K">
+<!ENTITY saslGSSAPI.accesskey "K">
-<!-- Localization note: this is here because the width of the dialog
+<!-- Localization note: this is here because the width of the dialog
is determined by the width of the base DN box; and that is likely
to vary somewhat with the language.
-->
diff --git a/comm/suite/locales/en-US/chrome/mailnews/smime.properties b/comm/suite/locales/en-US/chrome/mailnews/smime.properties
index 6370ce7..7bfffdb 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/smime.properties
+++ b/comm/suite/locales/en-US/chrome/mailnews/smime.properties
@@ -7,7 +7,5 @@
#
## @name NS_MSG_UNABLE_TO_OPEN_FILE
-## LOCALIZATION NOTE: the text can contain HTML tags.
+## LOCALIZATION NOTE: the text can contain HTML tags.
1000=This is an <B>ENCRYPTED</B> or <B>SIGNED</B> message.<br> This Mail application does not support encrypted or signed mail.
-
-
diff --git a/comm/suite/locales/en-US/chrome/mailnews/textImportMsgs.properties b/comm/suite/locales/en-US/chrome/mailnews/textImportMsgs.properties
index 714a1250..d7222f2 100644
--- a/comm/suite/locales/en-US/chrome/mailnews/textImportMsgs.properties
+++ b/comm/suite/locales/en-US/chrome/mailnews/textImportMsgs.properties
@@ -3,7 +3,7 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
-# The following are used by the outlook express import code to display status/error
+# The following are used by the outlook express import code to display status/error
# and informational messages
#
@@ -41,6 +41,3 @@
## @name TEXTIMPORT_ADDRESS_CONVERTERROR
## @loc None
2006=Error importing address book %S, all addresses may not have been imported.
-
-
-
diff --git a/comm/suite/locales/generic/profile/mimeTypes.rdf b/comm/suite/locales/generic/profile/mimeTypes.rdf
index 10edce3..443dffc 100644
--- a/comm/suite/locales/generic/profile/mimeTypes.rdf
+++ b/comm/suite/locales/generic/profile/mimeTypes.rdf
@@ -73,7 +73,7 @@
an address in a mailto: link:
http://www.example.com/sendmail?link=%s
-->
-
+
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:NC="http://home.netscape.com/NC-rdf#">
diff --git a/comm/suite/mailnews/components/addrbook/content/abCardViewOverlay.js b/comm/suite/mailnews/components/addrbook/content/abCardViewOverlay.js
index 26f1506..a54b1f2 100644
--- a/comm/suite/mailnews/components/addrbook/content/abCardViewOverlay.js
+++ b/comm/suite/mailnews/components/addrbook/content/abCardViewOverlay.js
@@ -52,83 +52,83 @@ function OnLoadCardView()
zCustom3 = gAddressBookBundle.getString("propertyCustom3");
zCustom4 = gAddressBookBundle.getString("propertyCustom4");
- var doc = document;
-
- /* data for address book, prefixes: "cvb" = card view box
- "cvh" = crad view header
- "cv" = card view (normal fields) */
- cvData = new Object;
-
- // Card View Box
- cvData.CardViewBox = doc.getElementById("CardViewInnerBox");
- // Title
- cvData.CardTitle = doc.getElementById("CardTitle");
- // Name section
- cvData.cvbContact = doc.getElementById("cvbContact");
- cvData.cvhContact = doc.getElementById("cvhContact");
- cvData.cvNickname = doc.getElementById("cvNickname");
- cvData.cvDisplayName = doc.getElementById("cvDisplayName");
- cvData.cvEmail1Box = doc.getElementById("cvEmail1Box");
- cvData.cvEmail1 = doc.getElementById("cvEmail1");
- cvData.cvScreennameBox = doc.getElementById("cvScreennameBox");
- cvData.cvScreenname = doc.getElementById("cvScreenname");
- cvData.cvBuddyIcon = doc.getElementById("cvBuddyIcon");
- cvData.cvListNameBox = doc.getElementById("cvListNameBox");
- cvData.cvListName = doc.getElementById("cvListName");
- cvData.cvEmail2Box = doc.getElementById("cvEmail2Box");
- cvData.cvEmail2 = doc.getElementById("cvEmail2");
- // Home section
- cvData.cvbHome = doc.getElementById("cvbHome");
- cvData.cvhHome = doc.getElementById("cvhHome");
- cvData.cvHomeAddress = doc.getElementById("cvHomeAddress");
- cvData.cvHomeAddress2 = doc.getElementById("cvHomeAddress2");
- cvData.cvHomeCityStZip = doc.getElementById("cvHomeCityStZip");
- cvData.cvHomeCountry = doc.getElementById("cvHomeCountry");
- cvData.cvbHomeMapItBox = doc.getElementById("cvbHomeMapItBox");
+ var doc = document;
+
+ /* data for address book, prefixes: "cvb" = card view box
+ "cvh" = crad view header
+ "cv" = card view (normal fields) */
+ cvData = new Object;
+
+ // Card View Box
+ cvData.CardViewBox = doc.getElementById("CardViewInnerBox");
+ // Title
+ cvData.CardTitle = doc.getElementById("CardTitle");
+ // Name section
+ cvData.cvbContact = doc.getElementById("cvbContact");
+ cvData.cvhContact = doc.getElementById("cvhContact");
+ cvData.cvNickname = doc.getElementById("cvNickname");
+ cvData.cvDisplayName = doc.getElementById("cvDisplayName");
+ cvData.cvEmail1Box = doc.getElementById("cvEmail1Box");
+ cvData.cvEmail1 = doc.getElementById("cvEmail1");
+ cvData.cvScreennameBox = doc.getElementById("cvScreennameBox");
+ cvData.cvScreenname = doc.getElementById("cvScreenname");
+ cvData.cvBuddyIcon = doc.getElementById("cvBuddyIcon");
+ cvData.cvListNameBox = doc.getElementById("cvListNameBox");
+ cvData.cvListName = doc.getElementById("cvListName");
+ cvData.cvEmail2Box = doc.getElementById("cvEmail2Box");
+ cvData.cvEmail2 = doc.getElementById("cvEmail2");
+ // Home section
+ cvData.cvbHome = doc.getElementById("cvbHome");
+ cvData.cvhHome = doc.getElementById("cvhHome");
+ cvData.cvHomeAddress = doc.getElementById("cvHomeAddress");
+ cvData.cvHomeAddress2 = doc.getElementById("cvHomeAddress2");
+ cvData.cvHomeCityStZip = doc.getElementById("cvHomeCityStZip");
+ cvData.cvHomeCountry = doc.getElementById("cvHomeCountry");
+ cvData.cvbHomeMapItBox = doc.getElementById("cvbHomeMapItBox");
cvData.cvHomeMapIt = doc.getElementById("cvHomeMapIt");
- cvData.cvHomeWebPageBox = doc.getElementById("cvHomeWebPageBox");
- cvData.cvHomeWebPage = doc.getElementById("cvHomeWebPage");
- // Other section
- cvData.cvbOther = doc.getElementById("cvbOther");
- cvData.cvBirthday = doc.getElementById("cvBirthday");
- cvData.cvhOther = doc.getElementById("cvhOther");
- cvData.cvCustom1 = doc.getElementById("cvCustom1");
- cvData.cvCustom2 = doc.getElementById("cvCustom2");
- cvData.cvCustom3 = doc.getElementById("cvCustom3");
- cvData.cvCustom4 = doc.getElementById("cvCustom4");
- cvData.cvNotes = doc.getElementById("cvNotes");
+ cvData.cvHomeWebPageBox = doc.getElementById("cvHomeWebPageBox");
+ cvData.cvHomeWebPage = doc.getElementById("cvHomeWebPage");
+ // Other section
+ cvData.cvbOther = doc.getElementById("cvbOther");
+ cvData.cvBirthday = doc.getElementById("cvBirthday");
+ cvData.cvhOther = doc.getElementById("cvhOther");
+ cvData.cvCustom1 = doc.getElementById("cvCustom1");
+ cvData.cvCustom2 = doc.getElementById("cvCustom2");
+ cvData.cvCustom3 = doc.getElementById("cvCustom3");
+ cvData.cvCustom4 = doc.getElementById("cvCustom4");
+ cvData.cvNotes = doc.getElementById("cvNotes");
// Description section (mailing lists only)
- cvData.cvbDescription = doc.getElementById("cvbDescription");
- cvData.cvhDescription = doc.getElementById("cvhDescription");
- cvData.cvDescription = doc.getElementById("cvDescription");
+ cvData.cvbDescription = doc.getElementById("cvbDescription");
+ cvData.cvhDescription = doc.getElementById("cvhDescription");
+ cvData.cvDescription = doc.getElementById("cvDescription");
// Addresses section (mailing lists only)
- cvData.cvbAddresses = doc.getElementById("cvbAddresses");
- cvData.cvhAddresses = doc.getElementById("cvhAddresses");
- cvData.cvAddresses = doc.getElementById("cvAddresses");
- // Phone section
- cvData.cvbPhone = doc.getElementById("cvbPhone");
- cvData.cvhPhone = doc.getElementById("cvhPhone");
- cvData.cvPhWork = doc.getElementById("cvPhWork");
- cvData.cvPhHome = doc.getElementById("cvPhHome");
- cvData.cvPhFax = doc.getElementById("cvPhFax");
- cvData.cvPhCellular = doc.getElementById("cvPhCellular");
- cvData.cvPhPager = doc.getElementById("cvPhPager");
- // Work section
- cvData.cvbWork = doc.getElementById("cvbWork");
- cvData.cvhWork = doc.getElementById("cvhWork");
- cvData.cvJobTitle = doc.getElementById("cvJobTitle");
- cvData.cvDepartment = doc.getElementById("cvDepartment");
- cvData.cvCompany = doc.getElementById("cvCompany");
- cvData.cvWorkAddress = doc.getElementById("cvWorkAddress");
- cvData.cvWorkAddress2 = doc.getElementById("cvWorkAddress2");
- cvData.cvWorkCityStZip = doc.getElementById("cvWorkCityStZip");
- cvData.cvWorkCountry = doc.getElementById("cvWorkCountry");
- cvData.cvbWorkMapItBox = doc.getElementById("cvbWorkMapItBox");
+ cvData.cvbAddresses = doc.getElementById("cvbAddresses");
+ cvData.cvhAddresses = doc.getElementById("cvhAddresses");
+ cvData.cvAddresses = doc.getElementById("cvAddresses");
+ // Phone section
+ cvData.cvbPhone = doc.getElementById("cvbPhone");
+ cvData.cvhPhone = doc.getElementById("cvhPhone");
+ cvData.cvPhWork = doc.getElementById("cvPhWork");
+ cvData.cvPhHome = doc.getElementById("cvPhHome");
+ cvData.cvPhFax = doc.getElementById("cvPhFax");
+ cvData.cvPhCellular = doc.getElementById("cvPhCellular");
+ cvData.cvPhPager = doc.getElementById("cvPhPager");
+ // Work section
+ cvData.cvbWork = doc.getElementById("cvbWork");
+ cvData.cvhWork = doc.getElementById("cvhWork");
+ cvData.cvJobTitle = doc.getElementById("cvJobTitle");
+ cvData.cvDepartment = doc.getElementById("cvDepartment");
+ cvData.cvCompany = doc.getElementById("cvCompany");
+ cvData.cvWorkAddress = doc.getElementById("cvWorkAddress");
+ cvData.cvWorkAddress2 = doc.getElementById("cvWorkAddress2");
+ cvData.cvWorkCityStZip = doc.getElementById("cvWorkCityStZip");
+ cvData.cvWorkCountry = doc.getElementById("cvWorkCountry");
+ cvData.cvbWorkMapItBox = doc.getElementById("cvbWorkMapItBox");
cvData.cvWorkMapIt = doc.getElementById("cvWorkMapIt");
- cvData.cvWorkWebPageBox = doc.getElementById("cvWorkWebPageBox");
- cvData.cvWorkWebPage = doc.getElementById("cvWorkWebPage");
+ cvData.cvWorkWebPageBox = doc.getElementById("cvWorkWebPageBox");
+ cvData.cvWorkWebPage = doc.getElementById("cvWorkWebPage");
cvData.cvbPhoto = doc.getElementById("cvbPhoto");
- cvData.cvPhoto = doc.getElementById("cvPhoto");
+ cvData.cvPhoto = doc.getElementById("cvPhoto");
}
// XXX todo
@@ -222,22 +222,22 @@ function DisplayCardViewPane(realCard)
visible = HandleLink(data.cvHomeWebPage, "", card.getProperty("WebPage2"), data.cvHomeWebPageBox, card.getProperty("WebPage2")) || visible;
- cvSetVisible(data.cvhHome, visible);
- cvSetVisible(data.cvbHome, visible);
+ cvSetVisible(data.cvhHome, visible);
+ cvSetVisible(data.cvbHome, visible);
if (card.isMailList) {
// Description section
- visible = cvSetNode(data.cvDescription, card.getProperty("Notes"))
- cvSetVisible(data.cvbDescription, visible);
+ visible = cvSetNode(data.cvDescription, card.getProperty("Notes"))
+ cvSetVisible(data.cvbDescription, visible);
// Addresses section
- visible = cvAddAddressNodes(data.cvAddresses, card.mailListURI);
- cvSetVisible(data.cvbAddresses, visible);
+ visible = cvAddAddressNodes(data.cvAddresses, card.mailListURI);
+ cvSetVisible(data.cvbAddresses, visible);
// Other section, not shown for mailing lists.
cvSetVisible(data.cvbOther, false);
}
else {
- // Other section
+ // Other section
/// setup the birthday information
var day = card.getProperty("BirthDay", null);
var month = card.getProperty("BirthMonth", null);
@@ -266,11 +266,11 @@ function DisplayCardViewPane(realCard)
dateStr = year;
visible = cvSetNodeWithLabel(data.cvBirthday, zBirthday, dateStr);
- visible = cvSetNodeWithLabel(data.cvCustom1, zCustom1, card.getProperty("Custom1")) || visible;
- visible = cvSetNodeWithLabel(data.cvCustom2, zCustom2, card.getProperty("Custom2")) || visible;
- visible = cvSetNodeWithLabel(data.cvCustom3, zCustom3, card.getProperty("Custom3")) || visible;
- visible = cvSetNodeWithLabel(data.cvCustom4, zCustom4, card.getProperty("Custom4")) || visible;
- visible = cvSetNode(data.cvNotes, card.getProperty("Notes")) || visible;
+ visible = cvSetNodeWithLabel(data.cvCustom1, zCustom1, card.getProperty("Custom1")) || visible;
+ visible = cvSetNodeWithLabel(data.cvCustom2, zCustom2, card.getProperty("Custom2")) || visible;
+ visible = cvSetNodeWithLabel(data.cvCustom3, zCustom3, card.getProperty("Custom3")) || visible;
+ visible = cvSetNodeWithLabel(data.cvCustom4, zCustom4, card.getProperty("Custom4")) || visible;
+ visible = cvSetNode(data.cvNotes, card.getProperty("Notes")) || visible;
visible = setBuddyIcon(card, data.cvBuddyIcon) || visible;
cvSetVisible(data.cvhOther, visible);
@@ -283,23 +283,23 @@ function DisplayCardViewPane(realCard)
cvSetVisible(data.cvbAddresses, false);
}
- // Phone section
- visible = cvSetNodeWithLabel(data.cvPhWork, zWork, card.getProperty("WorkPhone"));
- visible = cvSetNodeWithLabel(data.cvPhHome, zHome, card.getProperty("HomePhone")) || visible;
- visible = cvSetNodeWithLabel(data.cvPhFax, zFax, card.getProperty("FaxNumber")) || visible;
- visible = cvSetNodeWithLabel(data.cvPhCellular, zCellular, card.getProperty("CellularNumber")) || visible;
- visible = cvSetNodeWithLabel(data.cvPhPager, zPager, card.getProperty("PagerNumber")) || visible;
- cvSetVisible(data.cvhPhone, visible);
- cvSetVisible(data.cvbPhone, visible);
- // Work section
- visible = cvSetNode(data.cvJobTitle, card.getProperty("JobTitle"));
- visible = cvSetNode(data.cvDepartment, card.getProperty("Department")) || visible;
- visible = cvSetNode(data.cvCompany, card.getProperty("Company")) || visible;
-
- var addressVisible = cvSetNode(data.cvWorkAddress, card.getProperty("WorkAddress"));
- addressVisible = cvSetNode(data.cvWorkAddress2, card.getProperty("WorkAddress2")) || addressVisible;
- addressVisible = cvSetCityStateZip(data.cvWorkCityStZip, card.getProperty("WorkCity"), card.getProperty("WorkState"), card.getProperty("WorkZipCode")) || addressVisible;
- addressVisible = cvSetNode(data.cvWorkCountry, card.getProperty("WorkCountry")) || addressVisible;
+ // Phone section
+ visible = cvSetNodeWithLabel(data.cvPhWork, zWork, card.getProperty("WorkPhone"));
+ visible = cvSetNodeWithLabel(data.cvPhHome, zHome, card.getProperty("HomePhone")) || visible;
+ visible = cvSetNodeWithLabel(data.cvPhFax, zFax, card.getProperty("FaxNumber")) || visible;
+ visible = cvSetNodeWithLabel(data.cvPhCellular, zCellular, card.getProperty("CellularNumber")) || visible;
+ visible = cvSetNodeWithLabel(data.cvPhPager, zPager, card.getProperty("PagerNumber")) || visible;
+ cvSetVisible(data.cvhPhone, visible);
+ cvSetVisible(data.cvbPhone, visible);
+ // Work section
+ visible = cvSetNode(data.cvJobTitle, card.getProperty("JobTitle"));
+ visible = cvSetNode(data.cvDepartment, card.getProperty("Department")) || visible;
+ visible = cvSetNode(data.cvCompany, card.getProperty("Company")) || visible;
+
+ var addressVisible = cvSetNode(data.cvWorkAddress, card.getProperty("WorkAddress"));
+ addressVisible = cvSetNode(data.cvWorkAddress2, card.getProperty("WorkAddress2")) || addressVisible;
+ addressVisible = cvSetCityStateZip(data.cvWorkCityStZip, card.getProperty("WorkCity"), card.getProperty("WorkState"), card.getProperty("WorkZipCode")) || addressVisible;
+ addressVisible = cvSetNode(data.cvWorkCountry, card.getProperty("WorkCountry")) || addressVisible;
mapURLList = data.cvWorkMapIt.firstChild;
if (addressVisible)
@@ -309,11 +309,11 @@ function DisplayCardViewPane(realCard)
visible = HandleLink(data.cvWorkWebPage, "", card.getProperty("WebPage1"), data.cvWorkWebPageBox, card.getProperty("WebPage1")) || addressVisible || visible;
- cvSetVisible(data.cvhWork, visible);
- cvSetVisible(data.cvbWork, visible);
+ cvSetVisible(data.cvhWork, visible);
+ cvSetVisible(data.cvbWork, visible);
- // make the card view box visible
- cvSetVisible(top.cvData.CardViewBox, true);
+ // make the card view box visible
+ cvSetVisible(top.cvData.CardViewBox, true);
}
function setBuddyIcon(card, buddyIcon)
@@ -350,7 +350,7 @@ function setBuddyIcon(card, buddyIcon)
function ClearCardViewPane()
{
- cvSetVisible(top.cvData.CardViewBox, false);
+ cvSetVisible(top.cvData.CardViewBox, false);
}
function cvSetNodeWithLabel(node, label, text)
@@ -388,27 +388,27 @@ function cvSetCityStateZip(node, city, state, zip)
function cvSetNode(node, text)
{
- if ( node )
- {
- if ( !node.hasChildNodes() )
- {
- var textNode = document.createTextNode(text);
- node.appendChild(textNode);
- }
- else if ( node.childNodes.length == 1 )
- node.childNodes[0].nodeValue = text;
-
- var visible;
-
- if ( text )
- visible = true;
- else
- visible = false;
-
- cvSetVisible(node, visible);
- }
-
- return visible;
+ if ( node )
+ {
+ if ( !node.hasChildNodes() )
+ {
+ var textNode = document.createTextNode(text);
+ node.appendChild(textNode);
+ }
+ else if ( node.childNodes.length == 1 )
+ node.childNodes[0].nodeValue = text;
+
+ var visible;
+
+ if ( text )
+ visible = true;
+ else
+ visible = false;
+
+ cvSetVisible(node, visible);
+ }
+
+ return visible;
}
function cvAddAddressNodes(node, uri)
@@ -426,7 +426,7 @@ function cvAddAddressNodes(node, uri)
node.lastChild.remove();
}
for (i = 0; i < total; i++ ) {
- var descNode = document.createElement("description");
+ var descNode = document.createElement("description");
var card = addressList.queryElementAt(i, Ci.nsIAbCard);
descNode.setAttribute("class", "CardViewLink");
@@ -450,10 +450,10 @@ function cvAddAddressNodes(node, uri)
function cvSetVisible(node, visible)
{
- if ( visible )
- node.removeAttribute("collapsed");
- else
- node.setAttribute("collapsed", "true");
+ if ( visible )
+ node.removeAttribute("collapsed");
+ else
+ node.setAttribute("collapsed", "true");
}
function HandleLink(node, label, value, box, link)
diff --git a/comm/suite/mailnews/components/addrbook/content/abSelectAddressesDialog.js b/comm/suite/mailnews/components/addrbook/content/abSelectAddressesDialog.js
index 996a1b8..70eee27 100644
--- a/comm/suite/mailnews/components/addrbook/content/abSelectAddressesDialog.js
+++ b/comm/suite/mailnews/components/addrbook/content/abSelectAddressesDialog.js
@@ -29,7 +29,7 @@ var gDragService = Cc["@mozilla.org/widget/dragservice;1"]
.getService(Ci.nsIDragService);
var gSelectAddressesAbViewListener = {
- onSelectionChanged: function() {
+ onSelectionChanged: function() {
ResultsPaneSelectionChanged();
},
onCountChanged: function(total) {
diff --git a/comm/suite/mailnews/components/addrbook/content/addressbook-panel.xul b/comm/suite/mailnews/components/addrbook/content/addressbook-panel.xul
index 1da68d3..0e93c6f 100644
--- a/comm/suite/mailnews/components/addrbook/content/addressbook-panel.xul
+++ b/comm/suite/mailnews/components/addrbook/content/addressbook-panel.xul
@@ -58,21 +58,21 @@
</menupopup>
<vbox id="results_box" flex="1">
<hbox id="panel-bar" class="toolbar" align="center">
- <label value="&lookIn.label;" control="addressbookList" id="lookInLabel"/>
+ <label value="&lookIn.label;" control="addressbookList" id="lookInLabel"/>
<menulist id="addressbookList"
oncommand="DirPaneSelectionChangeMenulist();" flex="1"
persist="value">
<menupopup id="addressbookList-menupopup" class="addrbooksPopup"/>
</menulist>
</hbox>
- <hbox align="center">
- <label value="&for.label;" id="forLabel" control="searchInput"/>
- <textbox id="searchInput" flex="1" type="search"
+ <hbox align="center">
+ <label value="&for.label;" id="forLabel" control="searchInput"/>
+ <textbox id="searchInput" flex="1" type="search"
aria-labelledby="lookInLabel addressbookList forLabel"
aria-controls="abResultsTree"
placeholder="&for.placeholder;"
oncommand="onEnterInSearchBar();" clickSelectsAll="true"/>
- </hbox>
+ </hbox>
<tree id="abResultsTree" flex="1" context="composeMail" onclick="AbResultsPaneOnClick(event);" class="plain"
sortCol="GeneratedName" persist="sortCol">
diff --git a/comm/suite/mailnews/components/addrbook/content/addressbook.js b/comm/suite/mailnews/components/addrbook/content/addressbook.js
index 7b28dcc..bcec7d3 100644
--- a/comm/suite/mailnews/components/addrbook/content/addressbook.js
+++ b/comm/suite/mailnews/components/addrbook/content/addressbook.js
@@ -56,7 +56,7 @@ function OnLoadAddressBook()
{
gSearchInput = document.getElementById("searchInput");
- verifyAccounts(null, false); // this will do migration, if we need to.
+ verifyAccounts(null, false); // this will do migration, if we need to.
InitCommonJS();
@@ -100,25 +100,25 @@ function OnLoadAddressBook()
function GetCurrentPrefs()
{
- // check "Show Name As" menu item based on pref
- var menuitemID;
- switch (Services.prefs.getIntPref(kPrefMailAddrBookLastNameFirst))
- {
- case kFirstNameFirst:
- menuitemID = 'firstLastCmd';
- break;
- case kLastNameFirst:
- menuitemID = 'lastFirstCmd';
- break;
- case kDisplayName:
- default:
- menuitemID = 'displayNameCmd';
- break;
- }
-
- var menuitem = top.document.getElementById(menuitemID);
- if ( menuitem )
- menuitem.setAttribute('checked', 'true');
+ // check "Show Name As" menu item based on pref
+ var menuitemID;
+ switch (Services.prefs.getIntPref(kPrefMailAddrBookLastNameFirst))
+ {
+ case kFirstNameFirst:
+ menuitemID = 'firstLastCmd';
+ break;
+ case kLastNameFirst:
+ menuitemID = 'lastFirstCmd';
+ break;
+ case kDisplayName:
+ default:
+ menuitemID = 'displayNameCmd';
+ break;
+ }
+
+ var menuitem = top.document.getElementById(menuitemID);
+ if ( menuitem )
+ menuitem.setAttribute('checked', 'true');
// show phonetic fields if indicated by the pref
if (GetLocalizedStringPref("mail.addr_book.show_phonetic_fields") == "true")
@@ -210,10 +210,10 @@ function AbPrintCardInternal(doPrintPreview, msgType)
}
printEngineWindow = window.openDialog("chrome://messenger/content/msgPrintEngine.xul",
- "",
- "chrome,dialog=no,all",
- selectionArray.length, selectionArray,
- statusFeedback, doPrintPreview, msgType);
+ "",
+ "chrome,dialog=no,all",
+ selectionArray.length, selectionArray,
+ statusFeedback, doPrintPreview, msgType);
return;
}
@@ -240,8 +240,8 @@ function AbPrintAddressBookInternal(doPrintPreview, msgType)
return;
var statusFeedback;
- statusFeedback = Cc["@mozilla.org/messenger/statusfeedback;1"].createInstance();
- statusFeedback = statusFeedback.QueryInterface(Ci.nsIMsgStatusFeedback);
+ statusFeedback = Cc["@mozilla.org/messenger/statusfeedback;1"].createInstance();
+ statusFeedback = statusFeedback.QueryInterface(Ci.nsIMsgStatusFeedback);
/*
turn "moz-abmdbdirectory://abook.mab" into
@@ -251,12 +251,13 @@ function AbPrintAddressBookInternal(doPrintPreview, msgType)
var abURIArr = uri.split("://");
var printUrl = "addbook://" + abURIArr[0] + "/" + abURIArr[1] + "?action=print"
- printEngineWindow = window.openDialog("chrome://messenger/content/msgPrintEngine.xul",
- "",
- "chrome,dialog=no,all",
- 1, [printUrl], statusFeedback, doPrintPreview, msgType);
+ printEngineWindow = window.openDialog("chrome://messenger/content/msgPrintEngine.xul",
+ "",
+ "chrome,dialog=no,all",
+ 1, [printUrl],
+ statusFeedback, doPrintPreview, msgType);
- return;
+ return;
}
function AbPrintAddressBook()
diff --git a/comm/suite/mailnews/components/compose/content/addressingWidgetOverlay.js b/comm/suite/mailnews/components/compose/content/addressingWidgetOverlay.js
index e0db5f4..93cbfbc 100644
--- a/comm/suite/mailnews/components/compose/content/addressingWidgetOverlay.js
+++ b/comm/suite/mailnews/components/compose/content/addressingWidgetOverlay.js
@@ -728,9 +728,9 @@ function awRecipientErrorCommand(errItem, element)
//
var generalErrString;
if (errItem.value != "") {
- generalErrString = errItem.value.slice(1, errItem.value.length-1);
+ generalErrString = errItem.value.slice(1, errItem.value.length-1);
} else {
- generalErrString = "Unknown LDAP server problem encountered";
+ generalErrString = "Unknown LDAP server problem encountered";
}
// try and get the string of the specific error to contruct the complete
@@ -741,13 +741,12 @@ function awRecipientErrorCommand(errItem, element)
//
var specificErrString = "";
try {
- var specificError = errItem.param.QueryInterface(
- Ci.nsISupportsString);
- specificErrString = specificError.data;
+ var specificError = errItem.param.QueryInterface(Ci.nsISupportsString);
+ specificErrString = specificError.data;
} catch (ex) {
}
if (specificErrString == "") {
- specificErrString = "Internal error";
+ specificErrString = "Internal error";
}
Services.prompt.alert(window, generalErrString, specificErrString);
diff --git a/comm/suite/mailnews/components/compose/content/addressingWidgetOverlay.xul b/comm/suite/mailnews/components/compose/content/addressingWidgetOverlay.xul
deleted file mode 100644
index e937050..0000000
--- a/comm/suite/mailnews/components/compose/content/addressingWidgetOverlay.xul
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0"?>
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-
-<!DOCTYPE overlay SYSTEM "chrome://messenger/locale/messengercompose/addressingWidgetOverlay.dtd">
-
-
-<overlay xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-<script type="application/javascript" src="chrome://messenger/content/messengercompose/addressingWidgetOverlay.js"/>
-<script type="application/javascript" src="chrome://messenger/content/addressbook/abDragDrop.js"/>
-
- <!-- Addressing Widget -->
- <listbox id="addressingWidget" seltype="multiple" rows="4"
- onkeydown="awKeyDown(event, this)"
- onclick="awClickEmptySpace(event.originalTarget, true)"
- ondragover="DragAddressOverTargetControl(event);"
- ondrop="DropAddressOverTargetControl(event);">
-
- <listcols>
- <listcol id="typecol-addressingWidget"/>
- <listcol id="textcol-addressingWidget" flex="1"/>
- </listcols>
-
- <listitem class="addressingWidgetItem" allowevents="true">
- <listcell class="addressingWidgetCell" align="stretch">
- <menulist id="addressCol1#1" disableonsend="true"
- class="aw-menulist menulist-compact" flex="1"
- onkeypress="awMenulistKeyPress(event, this)"
- oncommand="gContentChanged=true; awSetAutoComplete(this.id.slice(this.id.lastIndexOf('#') + 1));">
- <menupopup>
- <menuitem value="addr_to" label="&toAddr.label;"/>
- <menuitem value="addr_cc" label="&ccAddr.label;"/>
- <menuitem value="addr_bcc" label="&bccAddr.label;"/>
- <menuitem value="addr_reply" label="&replyAddr.label;"/>
- <menuitem value="addr_newsgroups" label="&newsgroupsAddr.label;"/>
- <menuitem value="addr_followup" label="&followupAddr.label;"/>
- </menupopup>
- </menulist>
- </listcell>
-
- <listcell class="addressingWidgetCell">
- <textbox id="addressCol2#1" class="plain textbox-addressingWidget uri-element"
- aria-labelledby="addressCol1#1"
- type="autocomplete" flex="1" maxrows="4"
- newlines="replacewithcommas"
- autocompletesearch="mydomain addrbook ldap news" timeout="300"
- autocompletesearchparam="{}"
- completedefaultindex="true" forcecomplete="true"
- minresultsforpopup="2" ignoreblurwhilesearching="true"
- ontextentered="awRecipientTextCommand(eventParam, this)"
- onerrorcommand="awRecipientErrorCommand(eventParam, this)"
- oninput="gContentChanged=true; setupAutocomplete();" disableonsend="true"
- onkeypress="awRecipientKeyPress(event, this)"
- onkeydown="awRecipientKeyDown(event, this)">
- <image class="person-icon" onclick="this.parentNode.select();"/>
- </textbox>
- </listcell>
- </listitem>
-
- </listbox>
-
-</overlay>
diff --git a/comm/suite/mailnews/components/compose/content/mailComposeExtrasOverlay.xul b/comm/suite/mailnews/components/compose/content/mailComposeExtrasOverlay.xul
deleted file mode 100644
index f27e272..0000000
--- a/comm/suite/mailnews/components/compose/content/mailComposeExtrasOverlay.xul
+++ /dev/null
@@ -1,12 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-
-<overlay
- xmlns:nc="http://home.netscape.com/NC-rdf#"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-<!-- plug in your mail compose window extras here.
- see http://www.mozilla.org/mailnews/arch/composewindowextras.html -->
-
-</overlay>
diff --git a/comm/suite/mailnews/components/compose/content/messengercompose.xul b/comm/suite/mailnews/components/compose/content/messengercompose.xul
index a31aa54..a38b51c 100644
--- a/comm/suite/mailnews/components/compose/content/messengercompose.xul
+++ b/comm/suite/mailnews/components/compose/content/messengercompose.xul
@@ -13,18 +13,18 @@
<?xul-overlay href="chrome://communicator/content/sidebar/sidebarOverlay.xul"?>
<?xul-overlay href="chrome://communicator/content/contentAreaContextOverlay.xul"?>
<?xul-overlay href="chrome://messenger/content/messengercompose/msgComposeContextOverlay.xul"?>
-<?xul-overlay href="chrome://messenger/content/messengercompose/addressingWidgetOverlay.xul"?>
<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
<?xul-overlay href="chrome://editor/content/editorOverlay.xul"?>
<?xul-overlay href="chrome://editor/content/editorSmileyOverlay.xul"?>
<?xul-overlay href="chrome://messenger/content/messengercompose/mailComposeOverlay.xul"?>
-<?xul-overlay href="chrome://messenger/content/messengercompose/mailComposeExtrasOverlay.xul"?>
<?xul-overlay href="chrome://messenger/content/mailOverlay.xul"?>
<?xul-overlay href="chrome://messenger/content/platformMailnewsOverlay.xul"?>
<!DOCTYPE window [
<!ENTITY % messengercomposeDTD SYSTEM "chrome://messenger/locale/messengercompose/messengercompose.dtd" >
%messengercomposeDTD;
+<!ENTITY % addressingWidgetDTD SYSTEM "chrome://messenger/locale/messengercompose/addressingWidgetOverlay.dtd" >
+%addressingWidgetDTD;
<!ENTITY % messengerDTD SYSTEM "chrome://messenger/locale/messenger.dtd" >
%messengerDTD;
<!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
@@ -68,9 +68,11 @@
<script type="application/javascript" src="chrome://messenger/content/mail-offline.js"/>
<script type="application/javascript" src="chrome://editor/content/editor.js"/>
<script type="application/javascript" src="chrome://messenger/content/messengercompose/MsgComposeCommands.js"/>
+ <script type="application/javascript" src="chrome://messenger/content/messengercompose/addressingWidgetOverlay.js"/>
<!-- drag and drop -->
<script type="application/javascript" src="chrome://global/content/nsDragAndDrop.js"/>
+ <script type="application/javascript" src="chrome://messenger/content/addressbook/abDragDrop.js"/>
<commandset id="composeCommands">
<commandset id="msgComposeCommandUpdate"
@@ -563,7 +565,60 @@
<menupopup id="msgIdentityPopup"/>
</menulist>
</hbox>
- <listbox id="addressingWidget" flex="1"/>
+ <!-- Addressing Widget -->
+ <listbox id="addressingWidget" flex="1"
+ seltype="multiple" rows="4"
+ onkeydown="awKeyDown(event, this);"
+ onclick="awClickEmptySpace(event.originalTarget, true);"
+ ondragover="DragAddressOverTargetControl(event);"
+ ondrop="DropAddressOverTargetControl(event);">
+
+ <listcols>
+ <listcol id="typecol-addressingWidget"/>
+ <listcol id="textcol-addressingWidget" flex="1"/>
+ </listcols>
+
+ <listitem class="addressingWidgetItem" allowevents="true">
+ <listcell class="addressingWidgetCell" align="stretch">
+ <menulist id="addressCol1#1" disableonsend="true"
+ class="aw-menulist menulist-compact" flex="1"
+ onkeypress="awMenulistKeyPress(event, this);"
+ oncommand="gContentChanged=true; awSetAutoComplete(this.id.slice(this.id.lastIndexOf('#') + 1));">
+ <menupopup>
+ <menuitem value="addr_to" label="&toAddr.label;"/>
+ <menuitem value="addr_cc" label="&ccAddr.label;"/>
+ <menuitem value="addr_bcc" label="&bccAddr.label;"/>
+ <menuitem value="addr_reply" label="&replyAddr.label;"/>
+ <menuitem value="addr_newsgroups"
+ label="&newsgroupsAddr.label;"/>
+ <menuitem value="addr_followup"
+ label="&followupAddr.label;"/>
+ </menupopup>
+ </menulist>
+ </listcell>
+
+ <listcell class="addressingWidgetCell">
+ <textbox id="addressCol2#1"
+ class="plain textbox-addressingWidget uri-element"
+ aria-labelledby="addressCol1#1"
+ type="autocomplete" flex="1" maxrows="4"
+ newlines="replacewithcommas"
+ autocompletesearch="mydomain addrbook ldap news"
+ timeout="300" autocompletesearchparam="{}"
+ completedefaultindex="true" forcecomplete="true"
+ minresultsforpopup="2" ignoreblurwhilesearching="true"
+ ontextentered="awRecipientTextCommand(eventParam, this);"
+ onerrorcommand="awRecipientErrorCommand(eventParam, this);"
+ oninput="gContentChanged=true; setupAutocomplete();"
+ disableonsend="true"
+ onkeypress="awRecipientKeyPress(event, this);"
+ onkeydown="awRecipientKeyDown(event, this);">
+ <image class="person-icon"
+ onclick="this.parentNode.select();"/>
+ </textbox>
+ </listcell>
+ </listitem>
+ </listbox>
<hbox align="center">
<label value="&subject.label;" accesskey="&subject.accesskey;" control="msgSubject"/>
<textbox id="msgSubject" flex="1" class="toolbar" disableonsend="true"
diff --git a/comm/suite/mailnews/components/compose/content/prefs/pref-composing_messages.xul b/comm/suite/mailnews/components/compose/content/prefs/pref-composing_messages.xul
index c18760d..c6f3b4f 100644
--- a/comm/suite/mailnews/components/compose/content/prefs/pref-composing_messages.xul
+++ b/comm/suite/mailnews/components/compose/content/prefs/pref-composing_messages.xul
@@ -164,7 +164,7 @@
</menupopup>
</menulist>
</row>
- <row align="center">
+ <row align="center">
<label value="&size.label;"
accesskey="&size.accesskey;"
control="fontSizeSelect"/>
diff --git a/comm/suite/mailnews/components/compose/jar.mn b/comm/suite/mailnews/components/compose/jar.mn
index d884591..66fff95 100644
--- a/comm/suite/mailnews/components/compose/jar.mn
+++ b/comm/suite/mailnews/components/compose/jar.mn
@@ -13,5 +13,3 @@ messenger.jar:
content/messenger/messengercompose/msgComposeContextOverlay.xul (content/msgComposeContextOverlay.xul)
content/messenger/messengercompose/MsgComposeCommands.js (content/MsgComposeCommands.js)
content/messenger/messengercompose/addressingWidgetOverlay.js (content/addressingWidgetOverlay.js)
- content/messenger/messengercompose/addressingWidgetOverlay.xul (content/addressingWidgetOverlay.xul)
- content/messenger/messengercompose/mailComposeExtrasOverlay.xul (content/mailComposeExtrasOverlay.xul)
diff --git a/comm/suite/mailnews/content/FilterListDialog.js b/comm/suite/mailnews/content/FilterListDialog.js
index 282ba09..16cb8ab 100644
--- a/comm/suite/mailnews/content/FilterListDialog.js
+++ b/comm/suite/mailnews/content/FilterListDialog.js
@@ -21,18 +21,18 @@ var gStatusText;
var gCurrentFolder;
var gStatusFeedback = {
- showStatusString: function(status)
+ showStatusString: function(status)
{
gStatusText.setAttribute("value", status);
},
- startMeteors: function()
+ startMeteors: function()
{
// change run button to be a stop button
gRunFiltersButton.setAttribute("label", gRunFiltersButton.getAttribute("stoplabel"));
gRunFiltersButton.setAttribute("accesskey", gRunFiltersButton.getAttribute("stopaccesskey"));
gStatusBar.setAttribute("mode", "undetermined");
},
- stopMeteors: function()
+ stopMeteors: function()
{
try {
// change run button to be a stop button
diff --git a/comm/suite/mailnews/content/mac/platformMailnewsOverlay.xul b/comm/suite/mailnews/content/mac/platformMailnewsOverlay.xul
index 6cabb9e..1f982cc 100644
--- a/comm/suite/mailnews/content/mac/platformMailnewsOverlay.xul
+++ b/comm/suite/mailnews/content/mac/platformMailnewsOverlay.xul
@@ -11,7 +11,7 @@
<!-- Delete Key -->
<!-- not all Mac keyboards have a VK_DELETE key, so we use VK_BACK as
the primary and provide VK_DELETE as a secondary key definition -->
- <key id="key_shiftDelete" keycode="VK_BACK" modifiers="shift" command="cmd_shiftDelete"/>
- <key id="key_shiftDelete2" keycode="VK_DELETE" modifiers="shift" command="cmd_shiftDelete"/>
+ <key id="key_shiftDelete" keycode="VK_BACK" modifiers="shift" command="cmd_shiftDelete"/>
+ <key id="key_shiftDelete2" keycode="VK_DELETE" modifiers="shift" command="cmd_shiftDelete"/>
</overlay>
diff --git a/comm/suite/mailnews/content/mail3PaneWindowCommands.js b/comm/suite/mailnews/content/mail3PaneWindowCommands.js
index 0069569..10df019 100644
--- a/comm/suite/mailnews/content/mail3PaneWindowCommands.js
+++ b/comm/suite/mailnews/content/mail3PaneWindowCommands.js
@@ -6,62 +6,62 @@
// Controller object for folder pane
var FolderPaneController =
{
- supportsCommand: function(command)
- {
- switch ( command )
- {
- case "cmd_delete":
- case "cmd_shiftDelete":
- case "button_delete":
- case "button_shiftDelete":
- //case "cmd_selectAll": the folder pane currently only handles single selection
- case "cmd_cut":
- case "cmd_copy":
- case "cmd_paste":
- return true;
-
- default:
- return false;
- }
- },
-
- isCommandEnabled: function(command)
- {
- switch ( command )
- {
- case "cmd_cut":
- case "cmd_copy":
- case "cmd_paste":
- return false;
- case "cmd_delete":
- case "cmd_shiftDelete":
- case "button_delete":
+ supportsCommand: function(command)
+ {
+ switch ( command )
+ {
+ case "cmd_delete":
+ case "cmd_shiftDelete":
+ case "button_delete":
+ case "button_shiftDelete":
+ //case "cmd_selectAll": the folder pane currently only handles single selection
+ case "cmd_cut":
+ case "cmd_copy":
+ case "cmd_paste":
+ return true;
+
+ default:
+ return false;
+ }
+ },
+
+ isCommandEnabled: function(command)
+ {
+ switch ( command )
+ {
+ case "cmd_cut":
+ case "cmd_copy":
+ case "cmd_paste":
+ return false;
+ case "cmd_delete":
+ case "cmd_shiftDelete":
+ case "button_delete":
// Make sure the button doesn't show "Undelete" for folders.
if (command == "button_delete")
UpdateDeleteToolbarButton(true);
- case "button_shiftDelete":
- if ( command == "cmd_delete" )
- goSetMenuValue(command, 'valueFolder');
+ case "button_shiftDelete":
+ if ( command == "cmd_delete" )
+ goSetMenuValue(command, 'valueFolder');
let folders = GetSelectedMsgFolders();
if (folders.length) {
var canDeleteThisFolder;
- var specialFolder = null;
- var isServer = null;
- try {
+ var specialFolder = null;
+ var isServer = null;
+ try {
let folder = folders[0];
specialFolder = getSpecialFolderString(folder);
isServer = folder.isServer;
if (folder.server.type == "nntp") {
- if ( command == "cmd_delete" ) {
- goSetMenuValue(command, 'valueNewsgroup');
- goSetAccessKey(command, 'valueNewsgroupAccessKey');
+ if ( command == "cmd_delete" ) {
+ goSetMenuValue(command, 'valueNewsgroup');
+ goSetAccessKey(command, 'valueNewsgroupAccessKey');
}
}
- }
- catch (ex) {
- //dump("specialFolder failure: " + ex + "\n");
- }
+ }
+ catch (ex) {
+ //dump("specialFolder failure: " + ex + "\n");
+ }
if (specialFolder == "Inbox" || specialFolder == "Trash" || specialFolder == "Drafts" ||
specialFolder == "Sent" || specialFolder == "Templates" || specialFolder == "Outbox" ||
(specialFolder == "Junk" && !CanRenameDeleteJunkMail(GetSelectedFolderURI())) || isServer)
@@ -70,120 +70,120 @@ var FolderPaneController =
canDeleteThisFolder = true;
return canDeleteThisFolder && isCommandEnabled(command);
}
- else
- return false;
+ else
+ return false;
- default:
- return false;
- }
- },
+ default:
+ return false;
+ }
+ },
- doCommand: function(command)
- {
+ doCommand: function(command)
+ {
// if the user invoked a key short cut then it is possible that we got here for a command which is
// really disabled. kick out if the command should be disabled.
if (!this.isCommandEnabled(command)) return;
- switch ( command )
- {
- case "cmd_delete":
- case "cmd_shiftDelete":
- case "button_delete":
- case "button_shiftDelete":
- MsgDeleteFolder();
- break;
- }
- },
-
- onEvent: function(event)
- {
- }
+ switch ( command )
+ {
+ case "cmd_delete":
+ case "cmd_shiftDelete":
+ case "button_delete":
+ case "button_shiftDelete":
+ MsgDeleteFolder();
+ break;
+ }
+ },
+
+ onEvent: function(event)
+ {
+ }
};
// DefaultController object (handles commands when one of the trees does not have focus)
var DefaultController =
{
- supportsCommand: function(command)
- {
+ supportsCommand: function(command)
+ {
- switch ( command )
- {
+ switch ( command )
+ {
case "cmd_createFilterFromPopup":
case "cmd_archive":
- case "cmd_reply":
- case "button_reply":
- case "cmd_replyList":
- case "cmd_replyGroup":
- case "cmd_replySender":
- case "cmd_replyall":
- case "button_replyall":
+ case "cmd_reply":
+ case "button_reply":
+ case "cmd_replyList":
+ case "cmd_replyGroup":
+ case "cmd_replySender":
+ case "cmd_replyall":
+ case "button_replyall":
case "cmd_replySenderAndGroup":
case "cmd_replyAllRecipients":
- case "cmd_forward":
- case "button_forward":
- case "cmd_forwardInline":
- case "cmd_forwardAttachment":
- case "cmd_editAsNew":
+ case "cmd_forward":
+ case "button_forward":
+ case "cmd_forwardInline":
+ case "cmd_forwardAttachment":
+ case "cmd_editAsNew":
case "cmd_createFilterFromMenu":
case "cmd_delete":
case "cmd_shiftDelete":
case "button_delete":
case "button_shiftDelete":
case "button_junk":
- case "cmd_nextMsg":
+ case "cmd_nextMsg":
case "button_next":
- case "cmd_nextUnreadMsg":
- case "cmd_nextFlaggedMsg":
- case "cmd_nextUnreadThread":
- case "cmd_previousMsg":
- case "cmd_previousUnreadMsg":
- case "cmd_previousFlaggedMsg":
+ case "cmd_nextUnreadMsg":
+ case "cmd_nextFlaggedMsg":
+ case "cmd_nextUnreadThread":
+ case "cmd_previousMsg":
+ case "cmd_previousUnreadMsg":
+ case "cmd_previousFlaggedMsg":
case "button_goBack":
case "cmd_goBack":
case "button_goForward":
case "cmd_goForward":
case "cmd_goStartPage":
- case "cmd_viewAllMsgs":
- case "cmd_viewUnreadMsgs":
+ case "cmd_viewAllMsgs":
+ case "cmd_viewUnreadMsgs":
case "cmd_viewThreadsWithUnread":
case "cmd_viewWatchedThreadsWithUnread":
case "cmd_viewIgnoredThreads":
case "cmd_stop":
case "cmd_undo":
case "cmd_redo":
- case "cmd_expandAllThreads":
- case "cmd_collapseAllThreads":
- case "cmd_renameFolder":
- case "cmd_sendUnsentMsgs":
+ case "cmd_expandAllThreads":
+ case "cmd_collapseAllThreads":
+ case "cmd_renameFolder":
+ case "cmd_sendUnsentMsgs":
case "cmd_subscribe":
case "cmd_openMessage":
case "button_print":
- case "cmd_print":
- case "cmd_printpreview":
- case "cmd_printSetup":
- case "cmd_saveAsFile":
- case "cmd_saveAsTemplate":
+ case "cmd_print":
+ case "cmd_printpreview":
+ case "cmd_printSetup":
+ case "cmd_saveAsFile":
+ case "cmd_saveAsTemplate":
case "cmd_properties":
- case "cmd_viewPageSource":
- case "cmd_setFolderCharset":
- case "cmd_reload":
+ case "cmd_viewPageSource":
+ case "cmd_setFolderCharset":
+ case "cmd_reload":
case "button_getNewMessages":
- case "cmd_getNewMessages":
+ case "cmd_getNewMessages":
case "cmd_getMsgsForAuthAccounts":
- case "cmd_getNextNMessages":
- case "cmd_find":
+ case "cmd_getNextNMessages":
+ case "cmd_find":
case "cmd_findNext":
- case "cmd_findPrev":
+ case "cmd_findPrev":
case "button_search":
case "cmd_search":
case "button_mark":
- case "cmd_markAsRead":
- case "cmd_markAllRead":
- case "cmd_markThreadAsRead":
- case "cmd_markReadByDate":
- case "cmd_markAsFlagged":
- case "cmd_markAsJunk":
- case "cmd_markAsNotJunk":
+ case "cmd_markAsRead":
+ case "cmd_markAllRead":
+ case "cmd_markThreadAsRead":
+ case "cmd_markReadByDate":
+ case "cmd_markAsFlagged":
+ case "cmd_markAsJunk":
+ case "cmd_markAsNotJunk":
case "cmd_recalculateJunkScore":
case "cmd_markAsShowRemote":
case "cmd_markAsNotPhish":
@@ -193,29 +193,27 @@ var DefaultController =
case "cmd_runJunkControls":
case "cmd_deleteJunk":
case "button_file":
- case "cmd_emptyTrash":
- case "cmd_compactFolder":
- case "cmd_settingsOffline":
+ case "cmd_emptyTrash":
+ case "cmd_compactFolder":
+ case "cmd_settingsOffline":
case "cmd_close":
case "cmd_selectAll":
case "cmd_selectThread":
case "cmd_selectFlagged":
- return true;
+ return true;
case "cmd_downloadFlagged":
case "cmd_downloadSelected":
case "cmd_synchronizeOffline":
return !Services.io.offline;
-
case "cmd_watchThread":
case "cmd_killThread":
case "cmd_killSubthread":
case "cmd_cancel":
return gFolderDisplay.selectedMessageIsNews;
-
- default:
- return false;
- }
- },
+ default:
+ return false;
+ }
+ },
isCommandEnabled: function(command)
{
@@ -304,7 +302,7 @@ var DefaultController =
}
return false;
case "cmd_printpreview":
- if ( GetNumSelectedMessages() == 1 && gDBView)
+ if ( GetNumSelectedMessages() == 1 && gDBView)
{
gDBView.getCommandStatus(nsMsgViewCommandType.cmdRequiringMsgBody, enabled, checkStatus);
return enabled.value;
@@ -462,51 +460,51 @@ var DefaultController =
MsgCloseCurrentTab();
break;
case "button_getNewMessages":
- case "cmd_getNewMessages":
- MsgGetMessage();
- break;
+ case "cmd_getNewMessages":
+ MsgGetMessage();
+ break;
case "cmd_getMsgsForAuthAccounts":
MsgGetMessagesForAllAuthenticatedAccounts();
break;
- case "cmd_getNextNMessages":
- MsgGetNextNMessages();
- break;
- case "cmd_archive":
- MsgArchiveSelectedMessages(null);
- break;
- case "cmd_reply":
- MsgReplyMessage(null);
- break;
- case "cmd_replyList":
- MsgReplyList(null);
- break;
- case "cmd_replyGroup":
- MsgReplyGroup(null);
- break;
- case "cmd_replySender":
- MsgReplySender(null);
- break;
- case "cmd_replyall":
- MsgReplyToAllMessage(null);
- break;
+ case "cmd_getNextNMessages":
+ MsgGetNextNMessages();
+ break;
+ case "cmd_archive":
+ MsgArchiveSelectedMessages(null);
+ break;
+ case "cmd_reply":
+ MsgReplyMessage(null);
+ break;
+ case "cmd_replyList":
+ MsgReplyList(null);
+ break;
+ case "cmd_replyGroup":
+ MsgReplyGroup(null);
+ break;
+ case "cmd_replySender":
+ MsgReplySender(null);
+ break;
+ case "cmd_replyall":
+ MsgReplyToAllMessage(null);
+ break;
case "cmd_replySenderAndGroup":
MsgReplyToSenderAndGroup(null);
break;
case "cmd_replyAllRecipients":
MsgReplyToAllRecipients(null);
break;
- case "cmd_forward":
- MsgForwardMessage(null);
- break;
- case "cmd_forwardInline":
- MsgForwardAsInline(null);
- break;
- case "cmd_forwardAttachment":
- MsgForwardAsAttachment(null);
- break;
- case "cmd_editAsNew":
- MsgEditMessageAsNew();
- break;
+ case "cmd_forward":
+ MsgForwardMessage(null);
+ break;
+ case "cmd_forwardInline":
+ MsgForwardAsInline(null);
+ break;
+ case "cmd_forwardAttachment":
+ MsgForwardAsAttachment(null);
+ break;
+ case "cmd_editAsNew":
+ MsgEditMessageAsNew();
+ break;
case "cmd_createFilterFromMenu":
MsgCreateFilter();
break;
@@ -530,7 +528,7 @@ var DefaultController =
break;
case "cmd_killThread":
/* kill thread kills the thread and then does a next unread */
- GoNextMessage(nsMsgNavigationType.toggleThreadKilled, true);
+ GoNextMessage(nsMsgNavigationType.toggleThreadKilled, true);
break;
case "cmd_killSubthread":
GoNextMessage(nsMsgNavigationType.toggleSubthreadKilled, true);
@@ -539,27 +537,27 @@ var DefaultController =
gDBView.doCommand(nsMsgViewCommandType.toggleThreadWatched);
break;
case "button_next":
- case "cmd_nextUnreadMsg":
- MsgNextUnreadMessage();
- break;
- case "cmd_nextUnreadThread":
- MsgNextUnreadThread();
- break;
- case "cmd_nextMsg":
- MsgNextMessage();
- break;
- case "cmd_nextFlaggedMsg":
- MsgNextFlaggedMessage();
- break;
- case "cmd_previousMsg":
- MsgPreviousMessage();
- break;
- case "cmd_previousUnreadMsg":
- MsgPreviousUnreadMessage();
- break;
- case "cmd_previousFlaggedMsg":
- MsgPreviousFlaggedMessage();
- break;
+ case "cmd_nextUnreadMsg":
+ MsgNextUnreadMessage();
+ break;
+ case "cmd_nextUnreadThread":
+ MsgNextUnreadThread();
+ break;
+ case "cmd_nextMsg":
+ MsgNextMessage();
+ break;
+ case "cmd_nextFlaggedMsg":
+ MsgNextFlaggedMessage();
+ break;
+ case "cmd_previousMsg":
+ MsgPreviousMessage();
+ break;
+ case "cmd_previousUnreadMsg":
+ MsgPreviousUnreadMessage();
+ break;
+ case "cmd_previousFlaggedMsg":
+ MsgPreviousFlaggedMessage();
+ break;
case "button_goBack":
case "cmd_goBack":
MsgGoBack();
@@ -572,31 +570,31 @@ var DefaultController =
HideMessageHeaderPane();
loadStartPage();
break;
- case "cmd_viewAllMsgs":
+ case "cmd_viewAllMsgs":
case "cmd_viewThreadsWithUnread":
case "cmd_viewWatchedThreadsWithUnread":
- case "cmd_viewUnreadMsgs":
+ case "cmd_viewUnreadMsgs":
case "cmd_viewIgnoredThreads":
- SwitchView(command);
- break;
- case "cmd_undo":
- messenger.undo(msgWindow);
- break;
- case "cmd_redo":
- messenger.redo(msgWindow);
- break;
- case "cmd_expandAllThreads":
+ SwitchView(command);
+ break;
+ case "cmd_undo":
+ messenger.undo(msgWindow);
+ break;
+ case "cmd_redo":
+ messenger.redo(msgWindow);
+ break;
+ case "cmd_expandAllThreads":
gDBView.doCommand(nsMsgViewCommandType.expandAll);
- break;
- case "cmd_collapseAllThreads":
+ break;
+ case "cmd_collapseAllThreads":
gDBView.doCommand(nsMsgViewCommandType.collapseAll);
- break;
- case "cmd_renameFolder":
- MsgRenameFolder();
- return;
- case "cmd_sendUnsentMsgs":
- MsgSendUnsentMsgs();
- return;
+ break;
+ case "cmd_renameFolder":
+ MsgRenameFolder();
+ return;
+ case "cmd_sendUnsentMsgs":
+ MsgSendUnsentMsgs();
+ return;
case "cmd_subscribe":
MsgSubscribe();
return;
@@ -606,36 +604,36 @@ var DefaultController =
case "cmd_printSetup":
PrintUtils.showPageSetup();
return;
- case "cmd_print":
- PrintEnginePrint();
- return;
- case "cmd_printpreview":
- PrintEnginePrintPreview();
- return;
- case "cmd_saveAsFile":
- MsgSaveAsFile();
- return;
- case "cmd_saveAsTemplate":
- MsgSaveAsTemplate();
- return;
- case "cmd_viewPageSource":
- MsgViewPageSource();
- return;
- case "cmd_setFolderCharset":
- MsgFolderProperties();
- return;
- case "cmd_reload":
- ReloadMessage();
- return;
- case "cmd_find":
- MsgFind();
- return;
+ case "cmd_print":
+ PrintEnginePrint();
+ return;
+ case "cmd_printpreview":
+ PrintEnginePrintPreview();
+ return;
+ case "cmd_saveAsFile":
+ MsgSaveAsFile();
+ return;
+ case "cmd_saveAsTemplate":
+ MsgSaveAsTemplate();
+ return;
+ case "cmd_viewPageSource":
+ MsgViewPageSource();
+ return;
+ case "cmd_setFolderCharset":
+ MsgFolderProperties();
+ return;
+ case "cmd_reload":
+ ReloadMessage();
+ return;
+ case "cmd_find":
+ MsgFind();
+ return;
case "cmd_findNext":
- MsgFindAgain(false);
- return;
- case "cmd_findPrev":
- MsgFindAgain(true);
- return;
+ MsgFindAgain(false);
+ return;
+ case "cmd_findPrev":
+ MsgFindAgain(true);
+ return;
case "cmd_properties":
MsgFolderProperties();
return;
@@ -644,16 +642,16 @@ var DefaultController =
MsgSearchMessages();
return;
case "button_mark":
- case "cmd_markAsRead":
- MsgMarkMsgAsRead(null);
- return;
- case "cmd_markThreadAsRead":
- MsgMarkThreadAsRead();
- return;
- case "cmd_markAllRead":
+ case "cmd_markAsRead":
+ MsgMarkMsgAsRead(null);
+ return;
+ case "cmd_markThreadAsRead":
+ MsgMarkThreadAsRead();
+ return;
+ case "cmd_markAllRead":
gDBView.doCommand(nsMsgViewCommandType.markAllRead);
- return;
- case "cmd_markReadByDate":
+ return;
+ case "cmd_markReadByDate":
MsgMarkReadByDate();
return;
case "button_junk":
@@ -662,15 +660,15 @@ var DefaultController =
case "cmd_stop":
MsgStop();
return;
- case "cmd_markAsFlagged":
- MsgMarkAsFlagged(null);
- return;
- case "cmd_markAsJunk":
+ case "cmd_markAsFlagged":
+ MsgMarkAsFlagged(null);
+ return;
+ case "cmd_markAsJunk":
JunkSelectedMessages(true);
- return;
- case "cmd_markAsNotJunk":
+ return;
+ case "cmd_markAsNotJunk":
JunkSelectedMessages(false);
- return;
+ return;
case "cmd_recalculateJunkScore":
analyzeMessagesForJunk();
return;
@@ -695,62 +693,62 @@ var DefaultController =
case "cmd_deleteJunk":
deleteJunkInFolder();
return;
- case "cmd_emptyTrash":
- MsgEmptyTrash();
- return;
- case "cmd_compactFolder":
- MsgCompactFolder(true);
- return;
- case "cmd_downloadFlagged":
- MsgDownloadFlagged();
- break;
- case "cmd_downloadSelected":
- MsgDownloadSelected();
- break;
- case "cmd_synchronizeOffline":
- MsgSynchronizeOffline();
- break;
- case "cmd_settingsOffline":
- MsgSettingsOffline();
- break;
- case "cmd_selectAll":
- // move the focus so the user can delete the newly selected messages, not the folder
- SetFocusThreadPane();
- // if in threaded mode, the view will expand all before selecting all
- gDBView.doCommand(nsMsgViewCommandType.selectAll)
- if (gDBView.numSelected != 1) {
- setTitleFromFolder(gDBView.msgFolder,null);
- ClearMessagePane();
- }
- break;
- case "cmd_selectThread":
- gDBView.doCommand(nsMsgViewCommandType.selectThread);
- break;
+ case "cmd_emptyTrash":
+ MsgEmptyTrash();
+ return;
+ case "cmd_compactFolder":
+ MsgCompactFolder(true);
+ return;
+ case "cmd_downloadFlagged":
+ MsgDownloadFlagged();
+ break;
+ case "cmd_downloadSelected":
+ MsgDownloadSelected();
+ break;
+ case "cmd_synchronizeOffline":
+ MsgSynchronizeOffline();
+ break;
+ case "cmd_settingsOffline":
+ MsgSettingsOffline();
+ break;
+ case "cmd_selectAll":
+ // move the focus so the user can delete the newly selected messages, not the folder
+ SetFocusThreadPane();
+ // if in threaded mode, the view will expand all before selecting all
+ gDBView.doCommand(nsMsgViewCommandType.selectAll)
+ if (gDBView.numSelected != 1) {
+ setTitleFromFolder(gDBView.msgFolder,null);
+ ClearMessagePane();
+ }
+ break;
+ case "cmd_selectThread":
+ gDBView.doCommand(nsMsgViewCommandType.selectThread);
+ break;
case "cmd_selectFlagged":
gDBView.doCommand(nsMsgViewCommandType.selectFlagged);
break;
- }
- },
+ }
+ },
- onEvent: function(event)
- {
- // on blur events set the menu item texts back to the normal values
- if ( event == 'blur' )
- {
- goSetMenuValue('cmd_undo', 'valueDefault');
- goSetMenuValue('cmd_redo', 'valueDefault');
- }
- }
+ onEvent: function(event)
+ {
+ // on blur events set the menu item texts back to the normal values
+ if ( event == 'blur' )
+ {
+ goSetMenuValue('cmd_undo', 'valueDefault');
+ goSetMenuValue('cmd_redo', 'valueDefault');
+ }
+ }
};
function GetNumSelectedMessages()
{
- try {
- return gDBView.numSelected;
- }
- catch (ex) {
- return 0;
- }
+ try {
+ return gDBView.numSelected;
+ }
+ catch (ex) {
+ return 0;
+ }
}
var gLastFocusedElement=null;
@@ -766,7 +764,7 @@ function FocusRingUpdate_Mail()
// which calls nsFocusController::SetFocusedElement(element)
var currentFocusedElement = WhichPaneHasFocus();
- if (currentFocusedElement != gLastFocusedElement) {
+ if (currentFocusedElement != gLastFocusedElement) {
if (currentFocusedElement)
currentFocusedElement.setAttribute("focusring", "true");
@@ -792,17 +790,17 @@ function WhichPaneHasFocus()
if (top.document.commandDispatcher.focusedWindow == GetMessagePaneFrame())
return messagePane;
- var currentNode = top.document.commandDispatcher.focusedElement;
- while (currentNode) {
+ var currentNode = top.document.commandDispatcher.focusedElement;
+ while (currentNode) {
if (currentNode === threadTree ||
currentNode === folderTree ||
currentNode === messagePane)
return currentNode;
- currentNode = currentNode.parentNode;
+ currentNode = currentNode.parentNode;
}
- return null;
+ return null;
}
function SetupCommandUpdateHandlers()
@@ -934,63 +932,62 @@ function IsMessageDisplayedInMessagePane()
function MsgDeleteFolder()
{
- const NS_MSG_ERROR_COPY_FOLDER_ABORTED = 0x8055001a;
- var folderTree = GetFolderTree();
- var selectedFolders = GetSelectedMsgFolders();
- var prompt = Services.prompt;
- for (var i = 0; i < selectedFolders.length; i++)
+ const NS_MSG_ERROR_COPY_FOLDER_ABORTED = 0x8055001a;
+ var folderTree = GetFolderTree();
+ var selectedFolders = GetSelectedMsgFolders();
+ var prompt = Services.prompt;
+ for (var i = 0; i < selectedFolders.length; i++)
+ {
+ var selectedFolder = selectedFolders[i];
+ let specialFolder = getSpecialFolderString(selectedFolder);
+ if (specialFolder != "Inbox" && specialFolder != "Trash")
{
- var selectedFolder = selectedFolders[i];
- let specialFolder = getSpecialFolderString(selectedFolder);
- if (specialFolder != "Inbox" && specialFolder != "Trash")
- {
- var folder = selectedFolder.QueryInterface(Ci.nsIMsgFolder);
- if (folder.flags & Ci.nsMsgFolderFlags.Virtual)
- {
- var confirmation = gMessengerBundle.getString("confirmSavedSearchDeleteMessage");
- var title = gMessengerBundle.getString("confirmSavedSearchDeleteTitle");
- var buttonTitle = gMessengerBundle.getString("confirmSavedSearchDeleteButton");
- var buttonFlags = prompt.BUTTON_TITLE_IS_STRING * prompt.BUTTON_POS_0 +
- prompt.BUTTON_TITLE_CANCEL * prompt.BUTTON_POS_1;
- if (prompt.confirmEx(window, title, confirmation, buttonFlags, buttonTitle,
- "", "", "", {}) != 0) /* the yes button is in position 0 */
- continue;
- if (gCurrentVirtualFolderUri == selectedFolder.URI)
- gCurrentVirtualFolderUri = null;
- var array = Cc["@mozilla.org/array;1"]
- .createInstance(Ci.nsIMutableArray);
- array.appendElement(folder);
- folder.parent.deleteSubFolders(array, msgWindow);
- continue;
- }
+ var folder = selectedFolder.QueryInterface(Ci.nsIMsgFolder);
+ if (folder.flags & Ci.nsMsgFolderFlags.Virtual)
+ {
+ var confirmation = gMessengerBundle.getString("confirmSavedSearchDeleteMessage");
+ var title = gMessengerBundle.getString("confirmSavedSearchDeleteTitle");
+ var buttonTitle = gMessengerBundle.getString("confirmSavedSearchDeleteButton");
+ var buttonFlags = prompt.BUTTON_TITLE_IS_STRING * prompt.BUTTON_POS_0 +
+ prompt.BUTTON_TITLE_CANCEL * prompt.BUTTON_POS_1;
+ if (prompt.confirmEx(window, title, confirmation, buttonFlags, buttonTitle,
+ "", "", "", {}) != 0) /* the yes button is in position 0 */
+ continue;
+ if (gCurrentVirtualFolderUri == selectedFolder.URI)
+ gCurrentVirtualFolderUri = null;
+ var array = Cc["@mozilla.org/array;1"]
+ .createInstance(Ci.nsIMutableArray);
+ array.appendElement(folder);
+ folder.parent.deleteSubFolders(array, msgWindow);
+ continue;
+ }
- if (isNewsURI(selectedFolder.URI))
- {
- var unsubscribe = ConfirmUnsubscribe(selectedFolder);
- if (unsubscribe)
- UnSubscribe(selectedFolder);
- }
- else if (specialFolder == "Junk" ?
- CanRenameDeleteJunkMail(folder.URI) : folder.deletable)
- {
- // We can delete this folder.
-
- var array = Cc["@mozilla.org/array;1"]
- .createInstance(Ci.nsIMutableArray);
- array.appendElement(selectedFolder);
- try
- {
- selectedFolder.parent.deleteSubFolders(array, msgWindow);
- }
- // Ignore known errors from canceled warning dialogs.
- catch (ex) {
- if (ex.result != NS_MSG_ERROR_COPY_FOLDER_ABORTED) {
- throw ex;
- }
- }
- }
+ if (isNewsURI(selectedFolder.URI))
+ {
+ var unsubscribe = ConfirmUnsubscribe(selectedFolder);
+ if (unsubscribe)
+ UnSubscribe(selectedFolder);
+ }
+ else if (specialFolder == "Junk" ?
+ CanRenameDeleteJunkMail(folder.URI) : folder.deletable)
+ {
+ // We can delete this folder.
+ var array = Cc["@mozilla.org/array;1"]
+ .createInstance(Ci.nsIMutableArray);
+ array.appendElement(selectedFolder);
+ try
+ {
+ selectedFolder.parent.deleteSubFolders(array, msgWindow);
+ }
+ // Ignore known errors from canceled warning dialogs.
+ catch (ex) {
+ if (ex.result != NS_MSG_ERROR_COPY_FOLDER_ABORTED) {
+ throw ex;
+ }
}
+ }
}
+ }
}
function SetFocusThreadPaneIfNotOnMessagePane()
@@ -1005,16 +1002,16 @@ function SetFocusThreadPaneIfNotOnMessagePane()
// 3pane related commands. Need to go in own file. Putting here for the moment.
function MsgNextMessage()
{
- GoNextMessage(nsMsgNavigationType.nextMessage, false );
+ GoNextMessage(nsMsgNavigationType.nextMessage, false);
}
function MsgNextUnreadMessage()
{
- GoNextMessage(nsMsgNavigationType.nextUnreadMessage, true);
+ GoNextMessage(nsMsgNavigationType.nextUnreadMessage, true);
}
function MsgNextFlaggedMessage()
{
- GoNextMessage(nsMsgNavigationType.nextFlagged, true);
+ GoNextMessage(nsMsgNavigationType.nextFlagged, true);
}
function MsgNextUnreadThread()
@@ -1024,17 +1021,17 @@ function MsgNextUnreadThread()
function MsgPreviousMessage()
{
- GoNextMessage(nsMsgNavigationType.previousMessage, false);
+ GoNextMessage(nsMsgNavigationType.previousMessage, false);
}
function MsgPreviousUnreadMessage()
{
- GoNextMessage(nsMsgNavigationType.previousUnreadMessage, true);
+ GoNextMessage(nsMsgNavigationType.previousUnreadMessage, true);
}
function MsgPreviousFlaggedMessage()
{
- GoNextMessage(nsMsgNavigationType.previousFlagged, true);
+ GoNextMessage(nsMsgNavigationType.previousFlagged, true);
}
function MsgGoBack()
@@ -1085,16 +1082,16 @@ function SwitchPaneFocus(event)
function SetFocusThreadPane()
{
- var threadTree = GetThreadTree();
- threadTree.focus();
+ var threadTree = GetThreadTree();
+ threadTree.focus();
}
function SetFocusMessagePane()
{
- // XXX hack: to clear the focus on the previous element first focus
- // on the message pane element then focus on the main content window
- GetMessagePane().focus();
- GetMessagePaneFrame().focus();
+ // XXX hack: to clear the focus on the previous element first focus
+ // on the message pane element then focus on the main content window
+ GetMessagePane().focus();
+ GetMessagePaneFrame().focus();
}
function isCommandEnabled(cmd)
diff --git a/comm/suite/mailnews/content/messageWindow.js b/comm/suite/mailnews/content/messageWindow.js
index 2fbd7d3..f74c48d 100644
--- a/comm/suite/mailnews/content/messageWindow.js
+++ b/comm/suite/mailnews/content/messageWindow.js
@@ -455,8 +455,8 @@ function GetLoadedMessage()
//Clear everything related to the current message. called after load start page.
function ClearMessageSelection()
{
- gCurrentMessageUri = null;
- gCurrentFolderUri = null;
+ gCurrentMessageUri = null;
+ gCurrentFolderUri = null;
UpdateMailToolbar("clear msg, std alone window");
}
@@ -637,15 +637,15 @@ var MessageWindowController =
}
},
- isCommandEnabled: function(command)
- {
+ isCommandEnabled: function(command)
+ {
var loadedFolder;
var enabled = new Object();
enabled.value = false;
var checkStatus = new Object();
- switch (command)
- {
+ switch (command)
+ {
case "cmd_createFilterFromPopup":
case "cmd_createFilterFromMenu":
loadedFolder = GetLoadedMsgFolder();
@@ -665,7 +665,7 @@ var MessageWindowController =
UpdateJunkToolbarButton();
// fall through
case "cmd_markAsJunk":
- case "cmd_markAsNotJunk":
+ case "cmd_markAsNotJunk":
if (gDBView)
gDBView.getCommandStatus(nsMsgViewCommandType.junk, enabled, checkStatus);
return enabled.value;
@@ -673,72 +673,72 @@ var MessageWindowController =
if (GetNumSelectedMessages() > 0 && gDBView)
gDBView.getCommandStatus(nsMsgViewCommandType.runJunkControls, enabled, checkStatus);
return enabled.value;
- case "cmd_reply":
- case "button_reply":
- case "cmd_replyList":
- case "cmd_replyGroup":
- case "cmd_replySender":
- case "cmd_replyall":
- case "button_replyall":
+ case "cmd_reply":
+ case "button_reply":
+ case "cmd_replyList":
+ case "cmd_replyGroup":
+ case "cmd_replySender":
+ case "cmd_replyall":
+ case "button_replyall":
case "cmd_replySenderAndGroup":
case "cmd_replyAllRecipients":
- case "cmd_forward":
- case "button_forward":
- case "cmd_forwardInline":
- case "cmd_forwardAttachment":
- case "cmd_editAsNew":
- case "cmd_print":
- case "cmd_printpreview":
+ case "cmd_forward":
+ case "button_forward":
+ case "cmd_forwardInline":
+ case "cmd_forwardAttachment":
+ case "cmd_editAsNew":
+ case "cmd_print":
+ case "cmd_printpreview":
case "button_print":
- case "cmd_saveAsFile":
+ case "cmd_saveAsFile":
return true;
- case "cmd_saveAsTemplate":
+ case "cmd_saveAsTemplate":
var target = gMessageBrowser.contentPrincipal.URI.scheme;
return target != "news";
- case "cmd_viewPageSource":
- case "cmd_reload":
- case "cmd_find":
+ case "cmd_viewPageSource":
+ case "cmd_reload":
+ case "cmd_find":
case "button_mark":
- case "cmd_markAsRead":
- case "cmd_markAllRead":
- case "cmd_markThreadAsRead":
- case "cmd_markReadByDate":
+ case "cmd_markAsRead":
+ case "cmd_markAllRead":
+ case "cmd_markThreadAsRead":
+ case "cmd_markReadByDate":
return true;
- case "cmd_markAsFlagged":
+ case "cmd_markAsFlagged":
case "button_file":
return (gCurrentMessageUri != null);
case "cmd_markAsShowRemote":
return (GetNumSelectedMessages() > 0 && checkMsgHdrPropertyIsNot("remoteContentPolicy", kAllowRemoteContent));
case "cmd_markAsNotPhish":
return (GetNumSelectedMessages() > 0 && checkMsgHdrPropertyIsNot("notAPhishMessage", kNotAPhishMessage));
- case "cmd_printSetup":
- return true;
- case "cmd_getNewMessages":
+ case "cmd_printSetup":
+ return true;
+ case "cmd_getNewMessages":
case "button_getNewMessages":
case "cmd_getMsgsForAuthAccounts":
- return IsGetNewMessagesEnabled();
- case "cmd_getNextNMessages":
- return IsGetNextNMessagesEnabled();
- case "cmd_downloadFlagged":
- case "cmd_downloadSelected":
+ return IsGetNewMessagesEnabled();
+ case "cmd_getNextNMessages":
+ return IsGetNextNMessagesEnabled();
+ case "cmd_downloadFlagged":
+ case "cmd_downloadSelected":
case "cmd_synchronizeOffline":
return !Services.io.offline;
- case "cmd_settingsOffline":
- return IsAccountOfflineEnabled();
- case "cmd_close":
- case "cmd_nextMsg":
+ case "cmd_settingsOffline":
+ return IsAccountOfflineEnabled();
+ case "cmd_close":
+ case "cmd_nextMsg":
case "button_next":
- case "cmd_nextUnreadMsg":
+ case "cmd_nextUnreadMsg":
case "cmd_nextFlaggedMsg":
- case "cmd_nextUnreadThread":
- case "cmd_previousMsg":
- case "cmd_previousUnreadMsg":
+ case "cmd_nextUnreadThread":
+ case "cmd_previousMsg":
+ case "cmd_previousUnreadMsg":
case "cmd_previousFlaggedMsg":
case "cmd_applyFiltersToSelection":
- return true;
+ return true;
case "cmd_findNext":
- case "cmd_findPrev":
- return MsgCanFindAgain();
+ case "cmd_findPrev":
+ return MsgCanFindAgain();
case "cmd_goBack":
case "button_goBack":
return gDBView && gDBView.navigateStatus(nsMsgNavigationType.back);
@@ -758,72 +758,72 @@ var MessageWindowController =
case "cmd_runJunkControls":
case "cmd_deleteJunk":
return false;
- default:
- return false;
- }
- },
+ default:
+ return false;
+ }
+ },
- doCommand: function(command)
- {
+ doCommand: function(command)
+ {
// if the user invoked a key short cut then it is possible that we got here for a command which is
// really disabled. kick out if the command should be disabled.
if (!this.isCommandEnabled(command)) return;
var navigationType = nsMsgNavigationType.nextUnreadMessage;
- switch ( command )
- {
- case "cmd_close":
- CloseMailWindow();
- break;
- case "cmd_getNewMessages":
- MsgGetMessage();
- break;
- case "cmd_undo":
- messenger.undo(msgWindow);
- break;
- case "cmd_redo":
- messenger.redo(msgWindow);
- break;
+ switch ( command )
+ {
+ case "cmd_close":
+ CloseMailWindow();
+ break;
+ case "cmd_getNewMessages":
+ MsgGetMessage();
+ break;
+ case "cmd_undo":
+ messenger.undo(msgWindow);
+ break;
+ case "cmd_redo":
+ messenger.redo(msgWindow);
+ break;
case "cmd_getMsgsForAuthAccounts":
MsgGetMessagesForAllAuthenticatedAccounts();
break;
- case "cmd_getNextNMessages":
- MsgGetNextNMessages();
- break;
- case "cmd_reply":
- MsgReplyMessage(null);
- break;
- case "cmd_replyList":
- MsgReplyList(null);
- break;
- case "cmd_replyGroup":
- MsgReplyGroup(null);
- break;
- case "cmd_replySender":
- MsgReplySender(null);
- break;
- case "cmd_replyall":
- MsgReplyToAllMessage(null);
- break;
+ case "cmd_getNextNMessages":
+ MsgGetNextNMessages();
+ break;
+ case "cmd_reply":
+ MsgReplyMessage(null);
+ break;
+ case "cmd_replyList":
+ MsgReplyList(null);
+ break;
+ case "cmd_replyGroup":
+ MsgReplyGroup(null);
+ break;
+ case "cmd_replySender":
+ MsgReplySender(null);
+ break;
+ case "cmd_replyall":
+ MsgReplyToAllMessage(null);
+ break;
case "cmd_replySenderAndGroup":
MsgReplyToSenderAndGroup(null);
break;
case "cmd_replyAllRecipients":
MsgReplyToAllRecipients(null);
break;
- case "cmd_forward":
- MsgForwardMessage(null);
- break;
- case "cmd_forwardInline":
- MsgForwardAsInline(null);
- break;
- case "cmd_forwardAttachment":
- MsgForwardAsAttachment(null);
- break;
- case "cmd_editAsNew":
- MsgEditMessageAsNew();
- break;
+ case "cmd_forward":
+ MsgForwardMessage(null);
+ break;
+ case "cmd_forwardInline":
+ MsgForwardAsInline(null);
+ break;
+ case "cmd_forwardAttachment":
+ MsgForwardAsAttachment(null);
+ break;
+ case "cmd_editAsNew":
+ MsgEditMessageAsNew();
+ break;
case "cmd_createFilterFromPopup":
CreateFilter(document.popupNode);
break;
@@ -848,59 +848,59 @@ var MessageWindowController =
case "cmd_printSetup":
PrintUtils.showPageSetup();
break;
- case "cmd_print":
- PrintEnginePrint();
- break;
- case "cmd_printpreview":
- PrintEnginePrintPreview();
- break;
- case "cmd_saveAsFile":
- MsgSaveAsFile();
- break;
- case "cmd_saveAsTemplate":
- MsgSaveAsTemplate();
- break;
- case "cmd_viewPageSource":
- MsgViewPageSource();
- break;
- case "cmd_reload":
- ReloadMessage();
- break;
- case "cmd_find":
- MsgFind();
- break;
+ case "cmd_print":
+ PrintEnginePrint();
+ break;
+ case "cmd_printpreview":
+ PrintEnginePrintPreview();
+ break;
+ case "cmd_saveAsFile":
+ MsgSaveAsFile();
+ break;
+ case "cmd_saveAsTemplate":
+ MsgSaveAsTemplate();
+ break;
+ case "cmd_viewPageSource":
+ MsgViewPageSource();
+ break;
+ case "cmd_reload":
+ ReloadMessage();
+ break;
+ case "cmd_find":
+ MsgFind();
+ break;
case "cmd_findNext":
- MsgFindAgain(false);
- break;
- case "cmd_findPrev":
- MsgFindAgain(true);
- break;
+ MsgFindAgain(false);
+ break;
+ case "cmd_findPrev":
+ MsgFindAgain(true);
+ break;
case "button_search":
case "cmd_search":
MsgSearchMessages();
break;
case "button_mark":
- case "cmd_markAsRead":
- MsgMarkMsgAsRead(null);
- return;
- case "cmd_markThreadAsRead":
- MsgMarkThreadAsRead();
- return;
- case "cmd_markAllRead":
- MsgMarkAllRead();
- return;
- case "cmd_markReadByDate":
- MsgMarkReadByDate();
- return;
- case "cmd_markAsFlagged":
- MsgMarkAsFlagged(null);
- return;
- case "cmd_markAsJunk":
+ case "cmd_markAsRead":
+ MsgMarkMsgAsRead(null);
+ return;
+ case "cmd_markThreadAsRead":
+ MsgMarkThreadAsRead();
+ return;
+ case "cmd_markAllRead":
+ MsgMarkAllRead();
+ return;
+ case "cmd_markReadByDate":
+ MsgMarkReadByDate();
+ return;
+ case "cmd_markAsFlagged":
+ MsgMarkAsFlagged(null);
+ return;
+ case "cmd_markAsJunk":
JunkSelectedMessages(true);
- return;
- case "cmd_markAsNotJunk":
+ return;
+ case "cmd_markAsNotJunk":
JunkSelectedMessages(false);
- return;
+ return;
case "cmd_recalculateJunkScore":
analyzeMessagesForJunk();
return;
@@ -926,24 +926,24 @@ var MessageWindowController =
case "button_next":
performNavigation(nsMsgNavigationType.nextUnreadMessage);
break;
- case "cmd_nextUnreadThread":
+ case "cmd_nextUnreadThread":
performNavigation(nsMsgNavigationType.nextUnreadThread);
- break;
- case "cmd_nextMsg":
+ break;
+ case "cmd_nextMsg":
performNavigation(nsMsgNavigationType.nextMessage);
- break;
- case "cmd_nextFlaggedMsg":
+ break;
+ case "cmd_nextFlaggedMsg":
performNavigation(nsMsgNavigationType.nextFlagged);
- break;
- case "cmd_previousMsg":
+ break;
+ case "cmd_previousMsg":
performNavigation(nsMsgNavigationType.previousMessage);
- break;
- case "cmd_previousUnreadMsg":
+ break;
+ case "cmd_previousUnreadMsg":
performNavigation(nsMsgNavigationType.previousUnreadMessage);
- break;
- case "cmd_previousFlaggedMsg":
+ break;
+ case "cmd_previousFlaggedMsg":
performNavigation(nsMsgNavigationType.previousFlagged);
- break;
+ break;
case "cmd_goBack":
performNavigation(nsMsgNavigationType.back);
break;
@@ -953,12 +953,12 @@ var MessageWindowController =
case "cmd_applyFiltersToSelection":
MsgApplyFiltersToSelection();
break;
- }
- },
+ }
+ },
- onEvent: function(event)
- {
- }
+ onEvent: function(event)
+ {
+ }
};
function LoadMessageByNavigationType(type)
diff --git a/comm/suite/mailnews/content/messageWindow.xul b/comm/suite/mailnews/content/messageWindow.xul
index b6d61e4..a6d0ccf 100644
--- a/comm/suite/mailnews/content/messageWindow.xul
+++ b/comm/suite/mailnews/content/messageWindow.xul
@@ -64,7 +64,7 @@
<commandset id="mailMarkMenuItems"/>
<commandset id="mailToolsMenuItems"/>
<commandset id="mailEditContextMenuItems"/>
- <commandset id="tasksCommands"/>
+ <commandset id="tasksCommands"/>
<commandset id="commandKeys"/>
</commandset>
diff --git a/comm/suite/mailnews/content/msgMail3PaneWindow.js b/comm/suite/mailnews/content/msgMail3PaneWindow.js
index ffc4223..a93c495 100644
--- a/comm/suite/mailnews/content/msgMail3PaneWindow.js
+++ b/comm/suite/mailnews/content/msgMail3PaneWindow.js
@@ -1433,9 +1433,9 @@ function SetBusyCursor(window, enable)
window.setCursor("auto");
}
- var numFrames = window.frames.length;
- for(var i = 0; i < numFrames; i++)
- SetBusyCursor(window.frames[i], enable);
+ var numFrames = window.frames.length;
+ for(var i = 0; i < numFrames; i++)
+ SetBusyCursor(window.frames[i], enable);
}
function GetDBView()
diff --git a/comm/suite/mailnews/jar.mn b/comm/suite/mailnews/jar.mn
index a860397..a007b86 100644
--- a/comm/suite/mailnews/jar.mn
+++ b/comm/suite/mailnews/jar.mn
@@ -75,7 +75,7 @@ messenger.jar:
#ifdef XP_MACOSX
content/messenger/platformMailnewsOverlay.xul (content/mac/platformMailnewsOverlay.xul)
#else
-#ifdef XP_WIN32
+#ifdef XP_WIN
content/messenger/platformMailnewsOverlay.xul (content/win/platformMailnewsOverlay.xul)
#else
content/messenger/platformMailnewsOverlay.xul (content/unix/platformMailnewsOverlay.xul)
diff --git a/comm/taskcluster/ci/release-mark-as-started/kind.yml b/comm/taskcluster/ci/release-mark-as-started/kind.yml
deleted file mode 100644
index 9030130..0000000
--- a/comm/taskcluster/ci/release-mark-as-started/kind.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-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 59d51fb..6fec00b 100644
--- a/comm/taskcluster/ci/repackage-l10n/kind.yml
+++ b/comm/taskcluster/ci/repackage-l10n/kind.yml
@@ -48,7 +48,7 @@ job-template:
- repackage/win64_signed.py
package-formats:
by-release-type:
- esr60:
+ release:
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 09bfba1..f47ae20 100644
--- a/comm/taskcluster/ci/repackage/kind.yml
+++ b/comm/taskcluster/ci/repackage/kind.yml
@@ -47,7 +47,7 @@ job-template:
- repackage/win64_signed.py
package-formats:
by-release-type:
- esr60:
+ release:
by-build-platform:
linux-.*: [mar, mar-bz2]
linux64.*: [mar, mar-bz2]
diff --git a/config/external/icu/data/icudt60l.dat b/config/external/icu/data/icudt60l.dat
index 69497c1..1aee30f 100644
--- a/config/external/icu/data/icudt60l.dat
+++ b/config/external/icu/data/icudt60l.dat
Binary files differ
diff --git a/config/external/nspr/pr/moz.build b/config/external/nspr/pr/moz.build
index cc2ccb0..1fd9257 100644
--- a/config/external/nspr/pr/moz.build
+++ b/config/external/nspr/pr/moz.build
@@ -40,6 +40,8 @@ elif CONFIG['OS_TARGET'] in ('FreeBSD', 'OpenBSD', 'NetBSD'):
SOURCES += ['/nsprpub/pr/src/md/unix/%s.c' % CONFIG['OS_TARGET'].lower()]
elif CONFIG['OS_TARGET'] == 'Darwin':
OS_LIBS += ['-framework CoreServices']
+ DEFINES['FD_SETSIZE'] = 10240
+ DEFINES['_DARWIN_UNLIMITED_SELECT'] = True
if not CONFIG['HOST_MAJOR_VERSION']:
DEFINES.update(
HAS_CONNECTX=True,
diff --git a/config/milestone.txt b/config/milestone.txt
index 1d3d528..17e3cb9 100644
--- a/config/milestone.txt
+++ b/config/milestone.txt
@@ -10,4 +10,4 @@
# hardcoded milestones in the tree from these two files.
#--------------------------------------------------------
-60.6.1
+60.7.0
diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
index f005c5f..9da5fb3 100644
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -316,7 +316,6 @@ nsDocShell::nsDocShell()
mForcedCharset(nullptr),
mParentCharset(nullptr),
mTreeOwner(nullptr),
- mChromeEventHandler(nullptr),
mDefaultScrollbarPref(Scrollbar_Auto, Scrollbar_Auto),
mCharsetReloadState(eCharsetReloadInit),
mOrientationLock(eScreenOrientation_None),
@@ -492,7 +491,7 @@ void nsDocShell::DestroyChildren() {
NS_IMPL_CYCLE_COLLECTION_INHERITED(nsDocShell, nsDocLoader,
mSessionStorageManager, mScriptGlobal,
- mInitialClientSource)
+ mInitialClientSource, mChromeEventHandler)
NS_IMPL_ADDREF_INHERITED(nsDocShell, nsDocLoader)
NS_IMPL_RELEASE_INHERITED(nsDocShell, nsDocLoader)
@@ -1343,9 +1342,7 @@ nsDocShell::GetContentViewer(nsIContentViewer** aContentViewer) {
NS_IMETHODIMP
nsDocShell::SetChromeEventHandler(nsIDOMEventTarget* aChromeEventHandler) {
- // Weak reference. Don't addref.
- nsCOMPtr<EventTarget> handler = do_QueryInterface(aChromeEventHandler);
- mChromeEventHandler = handler.get();
+ mChromeEventHandler = do_QueryInterface(aChromeEventHandler);
if (mScriptGlobal) {
mScriptGlobal->SetChromeEventHandler(mChromeEventHandler);
@@ -5302,6 +5299,8 @@ nsDocShell::Destroy() {
SetTreeOwner(nullptr);
+ mChromeEventHandler = nullptr;
+
mOnePermittedSandboxedNavigator = nullptr;
// required to break ref cycle
diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h
index c9ef809..46357e6 100644
--- a/docshell/base/nsDocShell.h
+++ b/docshell/base/nsDocShell.h
@@ -941,8 +941,9 @@ class nsDocShell final : public nsDocLoader,
// Note these are intentionally not addrefd. Doing so will create a cycle.
// For that reasons don't use nsCOMPtr.
- nsIDocShellTreeOwner* mTreeOwner; // Weak Reference
- mozilla::dom::EventTarget* mChromeEventHandler; // Weak Reference
+ nsIDocShellTreeOwner* mTreeOwner; // Weak Reference
+
+ nsCOMPtr<mozilla::dom::EventTarget> mChromeEventHandler;
nsIntPoint mDefaultScrollbarPref; // persistent across doc loads
diff --git a/dom/bindings/CallbackObject.h b/dom/bindings/CallbackObject.h
index e995d44..141e725 100644
--- a/dom/bindings/CallbackObject.h
+++ b/dom/bindings/CallbackObject.h
@@ -479,8 +479,9 @@ class CallbackObjectHolder : CallbackObjectHolderBase {
void UnlinkSelf() {
// NS_IF_RELEASE because we might have been unlinked before
nsISupports* ptr = GetISupports();
- NS_IF_RELEASE(ptr);
+ // Clear mPtrBits before the release to prevent reentrance.
mPtrBits = 0;
+ NS_IF_RELEASE(ptr);
}
uintptr_t mPtrBits;
diff --git a/dom/bindings/Codegen.py b/dom/bindings/Codegen.py
index 9415c0b..f5c1a0e 100644
--- a/dom/bindings/Codegen.py
+++ b/dom/bindings/Codegen.py
@@ -4642,6 +4642,22 @@ def recordKeyDeclType(recordType):
return CGGeneric(recordKeyType(recordType))
+def initializerForType(type):
+ """
+ Get the right initializer for the given type for a data location where we
+ plan to then initialize it from a JS::Value. Some types need to always be
+ initialized even before we start the JS::Value-to-IDL-value conversion.
+
+ Returns a string or None if no initialization is needed.
+ """
+ if type.isObject():
+ return "nullptr"
+ # We could probably return CGDictionary.getNonInitializingCtorArg() for the
+ # dictionary case, but code outside DictionaryBase subclasses can't use
+ # that, so we can't do it across the board.
+ return None
+
+
# If this function is modified, modify CGNativeMember.getArg and
# CGNativeMember.getRetvalInfo accordingly. The latter cares about the decltype
# and holdertype we end up using, because it needs to be able to return the code
@@ -4949,6 +4965,12 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None,
"passedToJSImpl": "${passedToJSImpl}"
})
+ elementInitializer = initializerForType(elementType)
+ if elementInitializer is None:
+ elementInitializer = ""
+ else:
+ elementInitializer = elementInitializer + ", "
+
# NOTE: Keep this in sync with variadic conversions as needed
templateBody = fill(
"""
@@ -4969,7 +4991,7 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None,
if (done${nestingLevel}) {
break;
}
- ${elementType}* slotPtr${nestingLevel} = arr${nestingLevel}.AppendElement(mozilla::fallible);
+ ${elementType}* slotPtr${nestingLevel} = arr${nestingLevel}.AppendElement(${elementInitializer}mozilla::fallible);
if (!slotPtr${nestingLevel}) {
JS_ReportOutOfMemory(cx);
$*{exceptionCode}
@@ -4984,6 +5006,7 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None,
arrayRef=arrayRef,
elementType=elementInfo.declType.define(),
elementConversion=elementConversion,
+ elementInitializer=elementInitializer,
nestingLevel=str(nestingLevel))
templateBody = wrapObjectTemplate(templateBody, type,
@@ -6528,6 +6551,8 @@ class CGArgumentConverter(CGThing):
rooterDecl = ""
replacer["elemType"] = typeConversion.declType.define()
+ replacer["elementInitializer"] = initializerForType(self.argument.type) or ""
+
# NOTE: Keep this in sync with sequence conversions as needed
variadicConversion = string.Template(
"${seqType} ${declName};\n" +
@@ -6539,7 +6564,8 @@ class CGArgumentConverter(CGThing):
return false;
}
for (uint32_t variadicArg = ${index}; variadicArg < ${argc}; ++variadicArg) {
- ${elemType}& slot = *${declName}.AppendElement(mozilla::fallible);
+ // OK to do infallible append here, since we ensured capacity already.
+ ${elemType}& slot = *${declName}.AppendElement(${elementInitializer});
""")
).substitute(replacer)
@@ -13689,8 +13715,9 @@ class CGDictionary(CGThing):
def getMemberInitializer(self, memberInfo):
"""
Get the right initializer for the member. Most members don't need one,
- but we need to pre-initialize 'any' and 'object' that have a default
- value, so they're safe to trace at all times.
+ but we need to pre-initialize 'object' that have a default value or are
+ required (and hence are not inside Optional), so they're safe to trace
+ at all times. And we can optimize a bit for dictionary-typed members.
"""
member, _ = memberInfo
if member.canHaveMissingValue():
@@ -13699,17 +13726,13 @@ class CGDictionary(CGThing):
# up.
return None
type = member.type
- if type.isAny():
- return "JS::UndefinedValue()"
- if type.isObject():
- return "nullptr"
if type.isDictionary():
# When we construct ourselves, we don't want to init our member
# dictionaries. Either we're being constructed-but-not-initialized
# ourselves (and then we don't want to init them) or we're about to
# init ourselves and then we'll init them anyway.
return CGDictionary.getNonInitializingCtorArg()
- return None
+ return initializerForType(type)
def getMemberSourceDescription(self, member):
return ("'%s' member of %s" %
@@ -16324,7 +16347,7 @@ class CallbackMethod(CallbackMember):
spiderMonkeyInterfacesAreStructs=spiderMonkeyInterfacesAreStructs)
def getRvalDecl(self):
- return "JS::Rooted<JS::Value> rval(cx, JS::UndefinedValue());\n"
+ return "JS::Rooted<JS::Value> rval(cx);\n"
def getCall(self):
if self.argCount > 0:
@@ -16480,7 +16503,7 @@ class CallbackGetter(CallbackAccessor):
spiderMonkeyInterfacesAreStructs)
def getRvalDecl(self):
- return "JS::Rooted<JS::Value> rval(cx, JS::UndefinedValue());\n"
+ return "JS::Rooted<JS::Value> rval(cx);\n"
def getCall(self):
return fill(
diff --git a/dom/bindings/Record.h b/dom/bindings/Record.h
index 277f40f..c3827af 100644
--- a/dom/bindings/Record.h
+++ b/dom/bindings/Record.h
@@ -35,6 +35,21 @@ class RecordEntry {
ValueType mValue;
};
+// Specialize for a JSObject* ValueType and initialize it on construction, so we
+// don't need to worry about un-initialized JSObject* floating around.
+template <typename KeyType>
+class RecordEntry<KeyType, JSObject*> {
+ public:
+ RecordEntry() : mValue(nullptr) {}
+
+ // Move constructor so we can do Records of Records.
+ RecordEntry(RecordEntry<KeyType, JSObject*>&& aOther)
+ : mKey(std::move(aOther.mKey)), mValue(std::move(aOther.mValue)) {}
+
+ KeyType mKey;
+ JSObject* mValue;
+};
+
} // namespace binding_detail
template <typename KeyType, typename ValueType>
diff --git a/dom/canvas/CanvasRenderingContext2D.cpp b/dom/canvas/CanvasRenderingContext2D.cpp
index eee73e5..73cd347 100644
--- a/dom/canvas/CanvasRenderingContext2D.cpp
+++ b/dom/canvas/CanvasRenderingContext2D.cpp
@@ -1080,7 +1080,8 @@ CanvasRenderingContext2D::CanvasRenderingContext2D(
mPredictManyRedrawCalls(false),
mIsCapturedFrameInvalid(false),
mPathTransformWillUpdate(false),
- mInvalidateCount(0) {
+ mInvalidateCount(0),
+ mWriteOnly(false) {
if (!sMaxContextsInitialized) {
sMaxContexts = gfxPrefs::CanvasAzureAcceleratedLimit();
sMaxContextsInitialized = true;
@@ -2346,7 +2347,11 @@ void CanvasRenderingContext2D::SetStyleFromUnion(
}
if (aValue.IsCanvasPattern()) {
- SetStyleFromPattern(aValue.GetAsCanvasPattern(), aWhichStyle);
+ CanvasPattern& pattern = aValue.GetAsCanvasPattern();
+ SetStyleFromPattern(pattern, aWhichStyle);
+ if (pattern.mForceWriteOnly) {
+ SetWriteOnly();
+ }
return;
}
@@ -2497,7 +2502,7 @@ already_AddRefed<CanvasPattern> CanvasRenderingContext2D::CreatePattern(
// nullptr and set CORSUsed to true for passing the security check in
// CanvasUtils::DoDrawImageSecurityCheck().
RefPtr<CanvasPattern> pat =
- new CanvasPattern(this, srcSurf, repeatMode, nullptr, false, true);
+ new CanvasPattern(this, srcSurf, repeatMode, nullptr, imgBitmap.IsWriteOnly(), true);
return pat.forget();
}
@@ -2514,13 +2519,14 @@ already_AddRefed<CanvasPattern> CanvasRenderingContext2D::CreatePattern(
nsLayoutUtils::SurfaceFromElement(
element, nsLayoutUtils::SFE_WANT_FIRST_FRAME_IF_IMAGE, mTarget);
- if (!res.GetSourceSurface()) {
+ RefPtr<SourceSurface> surface = res.GetSourceSurface();
+ if (!surface) {
return nullptr;
}
RefPtr<CanvasPattern> pat =
- new CanvasPattern(this, res.GetSourceSurface(), repeatMode,
- res.mPrincipal, res.mIsWriteOnly, res.mCORSUsed);
+ new CanvasPattern(this, surface, repeatMode, res.mPrincipal,
+ res.mIsWriteOnly, res.mCORSUsed);
return pat.forget();
}
@@ -4848,8 +4854,8 @@ CanvasRenderingContext2D::CachedSurfaceFromElement(Element* aElement) {
res.mSize = res.mSourceSurface->GetSize();
res.mPrincipal = principal.forget();
- res.mIsWriteOnly = false;
res.mImageRequest = imgRequest.forget();
+ res.mIsWriteOnly = CheckWriteOnlySecurity(res.mCORSUsed, res.mPrincipal);
return res;
}
@@ -4908,6 +4914,10 @@ void CanvasRenderingContext2D::DrawImage(const CanvasImageSource& aImage,
aError.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
return;
}
+
+ if (canvas->IsWriteOnly()) {
+ SetWriteOnly();
+ }
} else if (aImage.IsImageBitmap()) {
ImageBitmap& imageBitmap = aImage.GetAsImageBitmap();
srcSurf = imageBitmap.PrepareForDrawTarget(mTarget);
@@ -4916,6 +4926,10 @@ void CanvasRenderingContext2D::DrawImage(const CanvasImageSource& aImage,
return;
}
+ if (imageBitmap.IsWriteOnly()) {
+ SetWriteOnly();
+ }
+
imgSize = gfx::IntSize(imageBitmap.Width(), imageBitmap.Height());
} else {
if (aImage.IsHTMLImageElement()) {
@@ -5421,13 +5435,8 @@ already_AddRefed<ImageData> CanvasRenderingContext2D::GetImageData(
// Check only if we have a canvas element; if we were created with a docshell,
// then it's special internal use.
- if (mCanvasElement && mCanvasElement->IsWriteOnly() &&
- // We could ask bindings for the caller type, but they already hand us a
- // JSContext, and we're at least _somewhat_ perf-sensitive (so may not
- // want to compute the caller type in the common non-write-only case), so
- // let's just use what we have.
- !nsContentUtils::CallerHasPermission(aCx,
- nsGkAtoms::all_urlsPermission)) {
+ if (IsWriteOnly() ||
+ (mCanvasElement && !mCanvasElement->CallerCanRead(aCx))) {
// XXX ERRMSG we need to report an error to developers here! (bug 329026)
aError.Throw(NS_ERROR_DOM_SECURITY_ERR);
return nullptr;
@@ -6029,6 +6038,13 @@ bool CanvasRenderingContext2D::ShouldForceInactiveLayer(
return !aManager->CanUseCanvasLayerForSize(GetSize());
}
+void CanvasRenderingContext2D::SetWriteOnly() {
+ mWriteOnly = true;
+ if (mCanvasElement) {
+ mCanvasElement->SetWriteOnly();
+ }
+}
+
NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(CanvasPath, AddRef)
NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(CanvasPath, Release)
diff --git a/dom/canvas/CanvasRenderingContext2D.h b/dom/canvas/CanvasRenderingContext2D.h
index c436d36..693daf2 100644
--- a/dom/canvas/CanvasRenderingContext2D.h
+++ b/dom/canvas/CanvasRenderingContext2D.h
@@ -43,6 +43,7 @@ class
HTMLImageElementOrSVGImageElementOrHTMLCanvasElementOrHTMLVideoElementOrImageBitmap;
typedef HTMLImageElementOrSVGImageElementOrHTMLCanvasElementOrHTMLVideoElementOrImageBitmap
CanvasImageSource;
+class ImageBitmap;
class ImageData;
class StringOrCanvasGradientOrCanvasPattern;
class OwningStringOrCanvasGradientOrCanvasPattern;
@@ -1091,6 +1092,16 @@ class CanvasRenderingContext2D final : public nsICanvasRenderingContextInternal,
friend struct CanvasBidiProcessor;
friend class CanvasDrawObserver;
+ friend class ImageBitmap;
+
+ void SetWriteOnly();
+
+ bool IsWriteOnly() const
+ {
+ return mWriteOnly;
+ }
+
+ bool mWriteOnly;
};
size_t BindingJSObjectMallocBytes(CanvasRenderingContext2D* aContext);
diff --git a/dom/canvas/CanvasUtils.cpp b/dom/canvas/CanvasUtils.cpp
index 5ab2aa7..a76885b 100644
--- a/dom/canvas/CanvasUtils.cpp
+++ b/dom/canvas/CanvasUtils.cpp
@@ -236,7 +236,9 @@ void DoDrawImageSecurityCheck(dom::HTMLCanvasElement* aCanvasElement,
return;
}
- if (aCanvasElement->IsWriteOnly()) return;
+ if (aCanvasElement->IsWriteOnly() && !aCanvasElement->mExpandedReader) {
+ return;
+ }
// If we explicitly set WriteOnly just do it and get out
if (forceWriteOnly) {
@@ -254,6 +256,25 @@ void DoDrawImageSecurityCheck(dom::HTMLCanvasElement* aCanvasElement,
return;
}
+ if (BasePrincipal::Cast(aPrincipal)->AddonPolicy()) {
+ // This is a resource from an extension content script principal.
+
+ if (aCanvasElement->mExpandedReader &&
+ aCanvasElement->mExpandedReader->Subsumes(aPrincipal)) {
+ // This canvas already allows reading from this principal.
+ return;
+ }
+
+ if (!aCanvasElement->mExpandedReader) {
+ // Allow future reads from this same princial only.
+ aCanvasElement->SetWriteOnly(aPrincipal);
+ return;
+ }
+
+ // If we got here, this must be the *second* extension tainting
+ // the canvas. Fall through to mark it WriteOnly for everyone.
+ }
+
aCanvasElement->SetWriteOnly();
}
@@ -275,5 +296,25 @@ bool HasDrawWindowPrivilege(JSContext* aCx, JSObject* /* unused */) {
nsGkAtoms::all_urlsPermission);
}
+bool CheckWriteOnlySecurity(bool aCORSUsed, nsIPrincipal* aPrincipal) {
+ if (!aPrincipal) {
+ return true;
+ }
+
+ if (!aCORSUsed) {
+ nsIGlobalObject* incumbentSettingsObject = dom::GetIncumbentGlobal();
+ if (NS_WARN_IF(!incumbentSettingsObject)) {
+ return true;
+ }
+
+ nsIPrincipal* principal = incumbentSettingsObject->PrincipalOrNull();
+ if (NS_WARN_IF(!principal) || !(principal->Subsumes(aPrincipal))) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
} // namespace CanvasUtils
} // namespace mozilla
diff --git a/dom/canvas/CanvasUtils.h b/dom/canvas/CanvasUtils.h
index f87a5af..fa5c497 100644
--- a/dom/canvas/CanvasUtils.h
+++ b/dom/canvas/CanvasUtils.h
@@ -11,6 +11,7 @@
#include "mozilla/dom/ToJSValue.h"
#include "jsapi.h"
#include "mozilla/FloatingPoint.h"
+#include "nsLayoutUtils.h"
class nsIPrincipal;
@@ -172,6 +173,10 @@ void DashArrayToJSVal(nsTArray<T>& dashes, JSContext* cx,
}
}
+// returns true if write-only mode must used for this principal based on
+// the incumbent global.
+bool CheckWriteOnlySecurity(bool aCORSUsed, nsIPrincipal* aPrincipal);
+
} // namespace CanvasUtils
} // namespace mozilla
diff --git a/dom/canvas/ImageBitmap.cpp b/dom/canvas/ImageBitmap.cpp
index e74df2e..6e579dc 100644
--- a/dom/canvas/ImageBitmap.cpp
+++ b/dom/canvas/ImageBitmap.cpp
@@ -407,50 +407,18 @@ class CreateImageFromRawDataInMainThreadSyncTask final
const Maybe<IntRect>& mCropRect;
};
-static bool CheckSecurityForHTMLElements(bool aIsWriteOnly, bool aCORSUsed,
- nsIPrincipal* aPrincipal) {
- if (aIsWriteOnly || !aPrincipal) {
- return false;
- }
-
- if (!aCORSUsed) {
- nsIGlobalObject* incumbentSettingsObject = GetIncumbentGlobal();
- if (NS_WARN_IF(!incumbentSettingsObject)) {
- return false;
- }
-
- nsIPrincipal* principal = incumbentSettingsObject->PrincipalOrNull();
- if (NS_WARN_IF(!principal) || !(principal->Subsumes(aPrincipal))) {
- return false;
- }
- }
-
- return true;
-}
-
-static bool CheckSecurityForHTMLElements(
- const nsLayoutUtils::SurfaceFromElementResult& aRes) {
- return CheckSecurityForHTMLElements(aRes.mIsWriteOnly, aRes.mCORSUsed,
- aRes.mPrincipal);
-}
-
/*
* A wrapper to the nsLayoutUtils::SurfaceFromElement() function followed by the
* security checking.
*/
-template <class HTMLElementType>
+template <class ElementType>
static already_AddRefed<SourceSurface> GetSurfaceFromElement(
- nsIGlobalObject* aGlobal, HTMLElementType& aElement, ErrorResult& aRv) {
+ nsIGlobalObject* aGlobal, ElementType& aElement, bool* aWriteOnly,
+ ErrorResult& aRv) {
nsLayoutUtils::SurfaceFromElementResult res =
nsLayoutUtils::SurfaceFromElement(
&aElement, nsLayoutUtils::SFE_WANT_FIRST_FRAME_IF_IMAGE);
- // check origin-clean
- if (!CheckSecurityForHTMLElements(res)) {
- aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
- return nullptr;
- }
-
RefPtr<SourceSurface> surface = res.GetSourceSurface();
if (NS_WARN_IF(!surface)) {
@@ -458,6 +426,8 @@ static already_AddRefed<SourceSurface> GetSurfaceFromElement(
return nullptr;
}
+ *aWriteOnly = res.mIsWriteOnly;
+
return surface.forget();
}
@@ -485,7 +455,7 @@ static bool HasRasterImage(HTMLImageElement& aImageEl) {
}
ImageBitmap::ImageBitmap(nsIGlobalObject* aGlobal, layers::Image* aData,
- gfxAlphaType aAlphaType)
+ bool aWriteOnly, gfxAlphaType aAlphaType)
: mParent(aGlobal),
mData(aData),
mSurface(nullptr),
@@ -493,7 +463,8 @@ ImageBitmap::ImageBitmap(nsIGlobalObject* aGlobal, layers::Image* aData,
mPictureRect(0, 0, aData->GetSize().width, aData->GetSize().height),
mAlphaType(aAlphaType),
mIsCroppingAreaOutSideOfSourceImage(false),
- mAllocatedImageData(false) {
+ mAllocatedImageData(false),
+ mWriteOnly(aWriteOnly) {
MOZ_ASSERT(aData, "aData is null in ImageBitmap constructor.");
mShutdownObserver = new ImageBitmapShutdownObserver(this);
@@ -751,6 +722,7 @@ UniquePtr<ImageBitmapCloneData> ImageBitmap::ToCloneData() const {
RefPtr<SourceSurface> surface = mData->GetAsSourceSurface();
result->mSurface = surface->GetDataSurface();
MOZ_ASSERT(result->mSurface);
+ result->mWriteOnly = mWriteOnly;
return Move(result);
}
@@ -759,7 +731,8 @@ UniquePtr<ImageBitmapCloneData> ImageBitmap::ToCloneData() const {
nsIGlobalObject* aGlobal, ImageBitmapCloneData* aData) {
RefPtr<layers::Image> data = CreateImageFromSurface(aData->mSurface);
- RefPtr<ImageBitmap> ret = new ImageBitmap(aGlobal, data, aData->mAlphaType);
+ RefPtr<ImageBitmap> ret =
+ new ImageBitmap(aGlobal, data, aData->mWriteOnly, aData->mAlphaType);
ret->mAllocatedImageData = true;
@@ -775,11 +748,8 @@ UniquePtr<ImageBitmapCloneData> ImageBitmap::ToCloneData() const {
ImageBitmap::CreateFromOffscreenCanvas(nsIGlobalObject* aGlobal,
OffscreenCanvas& aOffscreenCanvas,
ErrorResult& aRv) {
- // Check origin-clean.
- if (aOffscreenCanvas.IsWriteOnly()) {
- aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
- return nullptr;
- }
+ // Check write-only mode.
+ bool writeOnly = aOffscreenCanvas.IsWriteOnly();
nsLayoutUtils::SurfaceFromElementResult res =
nsLayoutUtils::SurfaceFromOffscreenCanvas(
@@ -794,7 +764,7 @@ ImageBitmap::CreateFromOffscreenCanvas(nsIGlobalObject* aGlobal,
RefPtr<layers::Image> data = CreateImageFromSurface(surface);
- RefPtr<ImageBitmap> ret = new ImageBitmap(aGlobal, data);
+ RefPtr<ImageBitmap> ret = new ImageBitmap(aGlobal, data, writeOnly);
ret->mAllocatedImageData = true;
@@ -816,9 +786,12 @@ ImageBitmap::CreateFromOffscreenCanvas(nsIGlobalObject* aGlobal,
return nullptr;
}
+ bool writeOnly = true;
+
// Get the SourceSurface out from the image element and then do security
// checking.
- RefPtr<SourceSurface> surface = GetSurfaceFromElement(aGlobal, aImageEl, aRv);
+ RefPtr<SourceSurface> surface = GetSurfaceFromElement(aGlobal, aImageEl,
+ &writeOnly, aRv);
if (NS_WARN_IF(aRv.Failed())) {
return nullptr;
@@ -832,7 +805,7 @@ ImageBitmap::CreateFromOffscreenCanvas(nsIGlobalObject* aGlobal,
return nullptr;
}
- RefPtr<ImageBitmap> ret = new ImageBitmap(aGlobal, data);
+ RefPtr<ImageBitmap> ret = new ImageBitmap(aGlobal, data, writeOnly);
// Set the picture rectangle.
if (ret && aCropRect.isSome()) {
@@ -868,10 +841,7 @@ ImageBitmap::CreateFromOffscreenCanvas(nsIGlobalObject* aGlobal,
// Check security.
nsCOMPtr<nsIPrincipal> principal = aVideoEl.GetCurrentVideoPrincipal();
bool CORSUsed = aVideoEl.GetCORSMode() != CORS_NONE;
- if (!CheckSecurityForHTMLElements(false, CORSUsed, principal)) {
- aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
- return nullptr;
- }
+ bool writeOnly = CheckWriteOnlySecurity(CORSUsed, principal);
// Create ImageBitmap.
RefPtr<layers::Image> data = aVideoEl.GetCurrentImage();
@@ -879,7 +849,7 @@ ImageBitmap::CreateFromOffscreenCanvas(nsIGlobalObject* aGlobal,
aRv.Throw(NS_ERROR_NOT_AVAILABLE);
return nullptr;
}
- RefPtr<ImageBitmap> ret = new ImageBitmap(aGlobal, data);
+ RefPtr<ImageBitmap> ret = new ImageBitmap(aGlobal, data, writeOnly);
// Set the picture rectangle.
if (ret && aCropRect.isSome()) {
@@ -900,13 +870,18 @@ ImageBitmap::CreateFromOffscreenCanvas(nsIGlobalObject* aGlobal,
return nullptr;
}
- RefPtr<SourceSurface> surface =
- GetSurfaceFromElement(aGlobal, aCanvasEl, aRv);
+ bool writeOnly = true;
+ RefPtr<SourceSurface> surface = GetSurfaceFromElement(aGlobal, aCanvasEl,
+ &writeOnly, aRv);
if (NS_WARN_IF(aRv.Failed())) {
return nullptr;
}
+ if (!writeOnly) {
+ writeOnly = aCanvasEl.IsWriteOnly();
+ }
+
// Crop the source surface if needed.
RefPtr<SourceSurface> croppedSurface;
IntRect cropRect = aCropRect.valueOr(IntRect());
@@ -939,7 +914,7 @@ ImageBitmap::CreateFromOffscreenCanvas(nsIGlobalObject* aGlobal,
return nullptr;
}
- RefPtr<ImageBitmap> ret = new ImageBitmap(aGlobal, data);
+ RefPtr<ImageBitmap> ret = new ImageBitmap(aGlobal, data, writeOnly);
if (needToReportMemoryAllocation) {
ret->mAllocatedImageData = true;
@@ -1001,7 +976,8 @@ ImageBitmap::CreateFromOffscreenCanvas(nsIGlobalObject* aGlobal,
}
// Create an ImageBimtap.
- RefPtr<ImageBitmap> ret = new ImageBitmap(aGlobal, data, alphaType);
+ RefPtr<ImageBitmap> ret =
+ new ImageBitmap(aGlobal, data, false /* write-only */, alphaType);
ret->mAllocatedImageData = true;
@@ -1017,11 +993,9 @@ ImageBitmap::CreateFromOffscreenCanvas(nsIGlobalObject* aGlobal,
/* static */ already_AddRefed<ImageBitmap> ImageBitmap::CreateInternal(
nsIGlobalObject* aGlobal, CanvasRenderingContext2D& aCanvasCtx,
const Maybe<IntRect>& aCropRect, ErrorResult& aRv) {
- // Check origin-clean.
- if (aCanvasCtx.GetCanvas()->IsWriteOnly()) {
- aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
- return nullptr;
- }
+ // Check write-only mode.
+ bool writeOnly =
+ aCanvasCtx.GetCanvas()->IsWriteOnly() || aCanvasCtx.IsWriteOnly();
RefPtr<SourceSurface> surface = aCanvasCtx.GetSurfaceSnapshot();
@@ -1043,7 +1017,8 @@ ImageBitmap::CreateFromOffscreenCanvas(nsIGlobalObject* aGlobal,
return nullptr;
}
- RefPtr<ImageBitmap> ret = new ImageBitmap(aGlobal, data);
+ RefPtr<ImageBitmap> ret =
+ new ImageBitmap(aGlobal, data, writeOnly);
ret->mAllocatedImageData = true;
@@ -1068,7 +1043,8 @@ ImageBitmap::CreateFromOffscreenCanvas(nsIGlobalObject* aGlobal,
RefPtr<layers::Image> data = aImageBitmap.mData;
RefPtr<ImageBitmap> ret =
- new ImageBitmap(aGlobal, data, aImageBitmap.mAlphaType);
+ new ImageBitmap(aGlobal, data, aImageBitmap.mWriteOnly,
+ aImageBitmap.mAlphaType);
// Set the picture rectangle.
if (ret && aCropRect.isSome()) {
@@ -1384,14 +1360,19 @@ static void AsyncCreateImageBitmapFromBlob(Promise* aPromise,
uint32_t picRectHeight_;
uint32_t alphaType_;
uint32_t isCroppingAreaOutSideOfSourceImage_;
+ uint32_t writeOnly;
+ uint32_t dummy;
if (!JS_ReadUint32Pair(aReader, &picRectX_, &picRectY_) ||
!JS_ReadUint32Pair(aReader, &picRectWidth_, &picRectHeight_) ||
!JS_ReadUint32Pair(aReader, &alphaType_,
- &isCroppingAreaOutSideOfSourceImage_)) {
+ &isCroppingAreaOutSideOfSourceImage_) ||
+ !JS_ReadUint32Pair(aReader, &writeOnly, &dummy)) {
return nullptr;
}
+ MOZ_ASSERT(dummy == 0);
+
int32_t picRectX = BitwiseCast<int32_t>(picRectX_);
int32_t picRectY = BitwiseCast<int32_t>(picRectY_);
int32_t picRectWidth = BitwiseCast<int32_t>(picRectWidth_);
@@ -1415,7 +1396,7 @@ static void AsyncCreateImageBitmapFromBlob(Promise* aPromise,
}
#endif
RefPtr<layers::Image> img = CreateImageFromSurface(aClonedSurfaces[aIndex]);
- RefPtr<ImageBitmap> imageBitmap = new ImageBitmap(aParent, img, alphaType);
+ RefPtr<ImageBitmap> imageBitmap = new ImageBitmap(aParent, img, !!writeOnly, alphaType);
imageBitmap->mIsCroppingAreaOutSideOfSourceImage =
isCroppingAreaOutSideOfSourceImage_;
@@ -1462,7 +1443,8 @@ static void AsyncCreateImageBitmapFromBlob(Promise* aPromise,
NS_WARN_IF(!JS_WriteUint32Pair(aWriter, picRectX, picRectY)) ||
NS_WARN_IF(!JS_WriteUint32Pair(aWriter, picRectWidth, picRectHeight)) ||
NS_WARN_IF(!JS_WriteUint32Pair(aWriter, alphaType,
- isCroppingAreaOutSideOfSourceImage))) {
+ isCroppingAreaOutSideOfSourceImage)) ||
+ NS_WARN_IF(!JS_WriteUint32Pair(aWriter, aImageBitmap->mWriteOnly, 0))) {
return false;
}
@@ -2003,7 +1985,8 @@ class CreateImageFromBufferSourceRawDataInMainThreadSyncTask final
// Create an ImageBimtap.
// Assume the data from an external buffer is not alpha-premultiplied.
RefPtr<ImageBitmap> imageBitmap =
- new ImageBitmap(aGlobal, data, gfxAlphaType::NonPremult);
+ new ImageBitmap(aGlobal, data, false /* write-only */,
+ gfxAlphaType::NonPremult);
imageBitmap->mAllocatedImageData = true;
@@ -2239,7 +2222,8 @@ void CreateImageBitmapFromBlob::DecodeAndCropBlobCompletedOwningThread(
}
// Create ImageBitmap object.
- RefPtr<ImageBitmap> imageBitmap = new ImageBitmap(mGlobalObject, aImage);
+ RefPtr<ImageBitmap> imageBitmap = new ImageBitmap(mGlobalObject, aImage,
+ false /* write-only */);
// Set mIsCroppingAreaOutSideOfSourceImage.
imageBitmap->SetIsCroppingAreaOutSideOfSourceImage(mSourceSize,
diff --git a/dom/canvas/ImageBitmap.h b/dom/canvas/ImageBitmap.h
index 1612296..8b4bd12 100644
--- a/dom/canvas/ImageBitmap.h
+++ b/dom/canvas/ImageBitmap.h
@@ -63,6 +63,7 @@ struct ImageBitmapCloneData final {
gfx::IntRect mPictureRect;
gfxAlphaType mAlphaType;
bool mIsCroppingAreaOutSideOfSourceImage;
+ bool mWriteOnly;
};
/*
@@ -160,6 +161,11 @@ class ImageBitmap final : public nsISupports, public nsWrapperCache {
void OnShutdown();
+ bool IsWriteOnly() const
+ {
+ return mWriteOnly;
+ }
+
protected:
/*
* The default value of aIsPremultipliedAlpha is TRUE because that the
@@ -181,6 +187,7 @@ class ImageBitmap final : public nsISupports, public nsWrapperCache {
* CreateInternal(from ImageData) method.
*/
ImageBitmap(nsIGlobalObject* aGlobal, layers::Image* aData,
+ bool aWriteOnly,
gfxAlphaType aAlphaType = gfxAlphaType::Premult);
virtual ~ImageBitmap();
@@ -271,6 +278,13 @@ class ImageBitmap final : public nsISupports, public nsWrapperCache {
* Whether this object allocated allocated and owns the image data.
*/
bool mAllocatedImageData;
+
+ /*
+ * Write-Only flag is set to true if this image has been generated from a
+ * cross-origin source. This is the opposite of what is called 'origin-clean'
+ * in the spec.
+ */
+ bool mWriteOnly;
};
} // namespace dom
diff --git a/dom/canvas/ImageBitmapRenderingContext.cpp b/dom/canvas/ImageBitmapRenderingContext.cpp
index 01ce541..1761acc 100644
--- a/dom/canvas/ImageBitmapRenderingContext.cpp
+++ b/dom/canvas/ImageBitmapRenderingContext.cpp
@@ -60,6 +60,10 @@ void ImageBitmapRenderingContext::TransferFromImageBitmap(
return;
}
+ if (aImageBitmap.IsWriteOnly() && mCanvasElement) {
+ mCanvasElement->SetWriteOnly();
+ }
+
Redraw(gfxRect(0, 0, mWidth, mHeight));
}
diff --git a/dom/canvas/WebGLBuffer.cpp b/dom/canvas/WebGLBuffer.cpp
index 657ad78..63dbbc0 100644
--- a/dom/canvas/WebGLBuffer.cpp
+++ b/dom/canvas/WebGLBuffer.cpp
@@ -96,7 +96,7 @@ void WebGLBuffer::BufferData(GLenum target, size_t size, const void* data,
if (!ValidateBufferUsageEnum(mContext, funcName, usage)) return;
-#ifdef XP_MACOSX
+#if defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK)
// bug 790879
if (mContext->gl->WorkAroundDriverBugs() && size > INT32_MAX) {
mContext->ErrorOutOfMemory("%s: Allocation size too large.", funcName);
diff --git a/dom/canvas/WebGLContext.h b/dom/canvas/WebGLContext.h
index 1bfde2f..bc2cab7 100644
--- a/dom/canvas/WebGLContext.h
+++ b/dom/canvas/WebGLContext.h
@@ -241,8 +241,9 @@ struct TexImageSourceAdapter final : public TexImageSource {
mPboOffset = pboOffset;
}
- TexImageSourceAdapter(const dom::ImageBitmap* imageBitmap, ErrorResult*) {
+ TexImageSourceAdapter(const dom::ImageBitmap* imageBitmap, ErrorResult* out_error) {
mImageBitmap = imageBitmap;
+ mOut_error = out_error;
}
TexImageSourceAdapter(const dom::ImageData* imageData, ErrorResult*) {
diff --git a/dom/canvas/WebGLTextureUpload.cpp b/dom/canvas/WebGLTextureUpload.cpp
index ef29d18..7170fc1 100644
--- a/dom/canvas/WebGLTextureUpload.cpp
+++ b/dom/canvas/WebGLTextureUpload.cpp
@@ -12,6 +12,7 @@
#include "GLBlitHelper.h"
#include "GLContext.h"
#include "mozilla/gfx/2D.h"
+#include "mozilla/dom/HTMLCanvasElement.h"
#include "mozilla/dom/HTMLVideoElement.h"
#include "mozilla/dom/ImageBitmap.h"
#include "mozilla/dom/ImageData.h"
@@ -222,7 +223,12 @@ static UniquePtr<webgl::TexUnpackBytes> FromPboOffset(
static UniquePtr<webgl::TexUnpackBlob> FromImageBitmap(
WebGLContext* webgl, const char* funcName, TexImageTarget target,
uint32_t width, uint32_t height, uint32_t depth,
- const dom::ImageBitmap& imageBitmap) {
+ const dom::ImageBitmap& imageBitmap, ErrorResult* aRv) {
+ if (imageBitmap.IsWriteOnly()) {
+ aRv->Throw(NS_ERROR_DOM_SECURITY_ERR);
+ return nullptr;
+ }
+
UniquePtr<dom::ImageBitmapCloneData> cloneData =
Move(imageBitmap.ToCloneData());
const RefPtr<gfx::DataSourceSurface> surf = cloneData->mSurface;
@@ -294,6 +300,14 @@ UniquePtr<webgl::TexUnpackBlob> WebGLContext::FromDomElem(
const char* funcName, TexImageTarget target, uint32_t width,
uint32_t height, uint32_t depth, const dom::Element& elem,
ErrorResult* const out_error) {
+ if (elem.IsHTMLElement(nsGkAtoms::canvas)) {
+ const dom::HTMLCanvasElement* canvas = static_cast<const dom::HTMLCanvasElement*>(&elem);
+ if (canvas->IsWriteOnly()) {
+ out_error->Throw(NS_ERROR_DOM_SECURITY_ERR);
+ return nullptr;
+ }
+ }
+
// The canvas spec says that drawImage should draw the first frame of
// animated images. The webgl spec doesn't mention the issue, so we do the
// same as drawImage.
@@ -414,7 +428,7 @@ UniquePtr<webgl::TexUnpackBlob> WebGLContext::From(
if (src.mImageBitmap) {
return FromImageBitmap(this, funcName, target, width, height, depth,
- *(src.mImageBitmap));
+ *(src.mImageBitmap), src.mOut_error);
}
if (src.mImageData) {
diff --git a/dom/canvas/test/test_imagebitmap.html b/dom/canvas/test/test_imagebitmap.html
index 17f050e..81360d2 100644
--- a/dom/canvas/test/test_imagebitmap.html
+++ b/dom/canvas/test/test_imagebitmap.html
@@ -270,13 +270,22 @@ function testSecurityErrors() {
}
function checkPromiseFailedWithSecurityError(p) {
- return p.then( function(reason) { ok(false, "Did not get SecurityError with unclean source. ImageBitmap was created successfully."); },
- function(reason) { if (reason == "SecurityError: The operation is insecure.") {
- ok(true, reason);
- }
- else {
- ok(false, "Did not get SecurityError with unclean source. Error Message: " + reason);
- }});
+ return p.then(imageBitmap => {
+ ok(!!imageBitmap, "ImageBitmaps are always created");
+ const context = document.createElement("canvas").getContext("2d");
+ context.drawImage(imageBitmap, 0, 0);
+ try {
+ context.getImageData(0, 0, 1, 1);
+ ok(false, "Did not get SecurityError with unclean source. ImageBitmap was created successfully.");
+ } catch (ex) {
+ if (ex == "SecurityError: The operation is insecure.") {
+ ok(true, ex);
+ }
+ else {
+ ok(false, "Did not get SecurityError with unclean source. Error Message: " + ex);
+ }
+ }
+ });
}
return Promise.all([
diff --git a/dom/events/DataTransfer.cpp b/dom/events/DataTransfer.cpp
index cbb606b..e1a4690 100644
--- a/dom/events/DataTransfer.cpp
+++ b/dom/events/DataTransfer.cpp
@@ -39,6 +39,7 @@
#include "mozilla/dom/OSFileSystem.h"
#include "mozilla/dom/Promise.h"
#include "nsNetUtil.h"
+#include "nsReadableUtils.h"
namespace mozilla {
namespace dom {
@@ -644,7 +645,18 @@ void DataTransfer::MozGetDataAt(JSContext* aCx, const nsAString& aFormat,
"DataTransfer");
return false;
}
+
+ // Disallow content from creating x-moz-place flavors, so that it cannot
+ // create fake Places smart queries exposing user data, but give a free
+ // pass to WebExtensions.
+ auto principal = BasePrincipal::Cast(aPrincipal);
+ if (!principal->AddonPolicy() &&
+ StringBeginsWith(aType, NS_LITERAL_STRING("text/x-moz-place"))) {
+ NS_WARNING("Disallowing adding moz-place types to DataTransfer");
+ return false;
+ }
}
+
return true;
}
diff --git a/dom/fetch/Fetch.cpp b/dom/fetch/Fetch.cpp
index 4b000fa..40e83bc 100644
--- a/dom/fetch/Fetch.cpp
+++ b/dom/fetch/Fetch.cpp
@@ -1023,6 +1023,8 @@ void FetchBody<Derived>::SetBodyUsed(JSContext* aCx, ErrorResult& aRv) {
// If we already have a ReadableStreamBody and it has been created by DOM, we
// have to lock it now because it can have been shared with other objects.
if (mReadableStreamBody) {
+ JSAutoCompartment ac(aCx, mOwner->GetGlobalJSObject());
+
JS::Rooted<JSObject*> readableStreamObj(aCx, mReadableStreamBody);
if (JS::ReadableStreamGetMode(readableStreamObj) ==
JS::ReadableStreamMode::ExternalSource) {
@@ -1232,6 +1234,8 @@ void FetchBody<Derived>::MaybeTeeReadableStreamBody(
return;
}
+ JSAutoCompartment ac(aCx, mOwner->GetGlobalJSObject());
+
JS::Rooted<JSObject*> stream(aCx, mReadableStreamBody);
// If this is a ReadableStream with an external source, this has been
diff --git a/dom/html/HTMLCanvasElement.cpp b/dom/html/HTMLCanvasElement.cpp
index 0417a30..3a4d67a 100644
--- a/dom/html/HTMLCanvasElement.cpp
+++ b/dom/html/HTMLCanvasElement.cpp
@@ -586,9 +586,8 @@ bool HTMLCanvasElement::ParseAttribute(int32_t aNamespaceID, nsAtom* aAttribute,
void HTMLCanvasElement::ToDataURL(JSContext* aCx, const nsAString& aType,
JS::Handle<JS::Value> aParams,
nsAString& aDataURL, ErrorResult& aRv) {
- // do a trust check if this is a write-only canvas
- if (mWriteOnly && !nsContentUtils::CallerHasPermission(
- aCx, nsGkAtoms::all_urlsPermission)) {
+ // mWriteOnly check is redundant, but optimizes for the common case.
+ if (mWriteOnly && !CallerCanRead(aCx)) {
aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
return;
}
@@ -761,9 +760,8 @@ void HTMLCanvasElement::ToBlob(JSContext* aCx, BlobCallback& aCallback,
const nsAString& aType,
JS::Handle<JS::Value> aParams,
ErrorResult& aRv) {
- // do a trust check if this is a write-only canvas
- if (mWriteOnly && !nsContentUtils::CallerHasPermission(
- aCx, nsGkAtoms::all_urlsPermission)) {
+ // mWriteOnly check is redundant, but optimizes for the common case.
+ if (mWriteOnly && !CallerCanRead(aCx)) {
aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
return;
}
@@ -939,9 +937,38 @@ already_AddRefed<nsISupports> HTMLCanvasElement::MozGetIPCContext(
nsIntSize HTMLCanvasElement::GetSize() { return GetWidthHeight(); }
-bool HTMLCanvasElement::IsWriteOnly() { return mWriteOnly; }
+bool HTMLCanvasElement::IsWriteOnly() const { return mWriteOnly; }
+
+void HTMLCanvasElement::SetWriteOnly() {
+ mExpandedReader = nullptr;
+ mWriteOnly = true;
+}
+
+void
+HTMLCanvasElement::SetWriteOnly(nsIPrincipal* aExpandedReader)
+{
+ mExpandedReader = aExpandedReader;
+ mWriteOnly = true;
+}
+
+bool
+HTMLCanvasElement::CallerCanRead(JSContext* aCx)
+{
+ if (!mWriteOnly) {
+ return true;
+ }
-void HTMLCanvasElement::SetWriteOnly() { mWriteOnly = true; }
+ nsIPrincipal* prin = nsContentUtils::SubjectPrincipal(aCx);
+
+ // If mExpandedReader is set, this canvas was tainted only by
+ // mExpandedReader's resources. So allow reading if the subject
+ // principal subsumes mExpandedReader.
+ if (mExpandedReader && prin->Subsumes(mExpandedReader)) {
+ return true;
+ }
+
+ return nsContentUtils::PrincipalHasPermission(prin, nsGkAtoms::all_urlsPermission);
+}
void HTMLCanvasElement::InvalidateCanvasContent(const gfx::Rect* damageRect) {
// We don't need to flush anything here; if there's no frame or if
diff --git a/dom/html/HTMLCanvasElement.h b/dom/html/HTMLCanvasElement.h
index 76c1cbf..99b9be8 100644
--- a/dom/html/HTMLCanvasElement.h
+++ b/dom/html/HTMLCanvasElement.h
@@ -201,7 +201,7 @@ class HTMLCanvasElement final : public nsGenericHTMLElement,
/**
* Determine whether the canvas is write-only.
*/
- bool IsWriteOnly();
+ bool IsWriteOnly() const;
/**
* Force the canvas to be write-only.
@@ -209,6 +209,12 @@ class HTMLCanvasElement final : public nsGenericHTMLElement,
void SetWriteOnly();
/**
+ * Force the canvas to be write-only, except for readers from
+ * a specific extension's content script expanded principal.
+ */
+ void SetWriteOnly(nsIPrincipal* aExpandedReader);
+
+ /**
* Notify that some canvas content has changed and the window may
* need to be updated. aDamageRect is in canvas coordinates.
*/
@@ -369,7 +375,14 @@ class HTMLCanvasElement final : public nsGenericHTMLElement,
// We also transitively set it when script paints a canvas which
// is itself write-only.
bool mWriteOnly;
-
+
+ // When this canvas is (only) tainted by an image from an extension
+ // content script, allow reads from the same extension afterwards.
+ RefPtr<nsIPrincipal> mExpandedReader;
+
+ // Determines if the caller should be able to read the content.
+ bool CallerCanRead(JSContext* aCx);
+
bool IsPrintCallbackDone();
void HandlePrintCallback(nsPresContext::nsPresContextType aType);
diff --git a/dom/indexedDB/ActorsParent.cpp b/dom/indexedDB/ActorsParent.cpp
index c64e117..d71da6b 100644
--- a/dom/indexedDB/ActorsParent.cpp
+++ b/dom/indexedDB/ActorsParent.cpp
@@ -21275,32 +21275,38 @@ void TransactionDatabaseOperationBase::SendPreprocessInfoOrResults(
MOZ_ASSERT(mTransaction);
if (NS_WARN_IF(IsActorDestroyed())) {
- // Don't send any notifications if the actor was destroyed already.
+ // Normally we wouldn't need to send any notifications if the actor was
+ // already destroyed, but this can be a VersionChangeOp which needs to
+ // notify its parent operation (OpenDatabaseOp) about the failure.
+ // So SendFailureResult needs to be called even when the actor was
+ // destroyed. Normal operations redundantly check if the actor was
+ // destroyed in SendSuccessResult and SendFailureResult, therefore it's
+ // ok to call it in all cases here.
if (NS_SUCCEEDED(mResultCode)) {
IDB_REPORT_INTERNAL_ERR();
mResultCode = NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR;
}
- } else {
- if (mTransaction->IsInvalidated() || mTransaction->IsAborted()) {
- // Aborted transactions always see their requests fail with ABORT_ERR,
- // even if the request succeeded or failed with another error.
- mResultCode = NS_ERROR_DOM_INDEXEDDB_ABORT_ERR;
- } else if (NS_SUCCEEDED(mResultCode)) {
- if (aSendPreprocessInfo) {
- // This should not release the IPDL reference.
- mResultCode = SendPreprocessInfo();
- } else {
- // This may release the IPDL reference.
- mResultCode = SendSuccessResult();
- }
+ } else if (mTransaction->IsInvalidated() || mTransaction->IsAborted()) {
+ // Aborted transactions always see their requests fail with ABORT_ERR,
+ // even if the request succeeded or failed with another error.
+ mResultCode = NS_ERROR_DOM_INDEXEDDB_ABORT_ERR;
+ }
+
+ if (NS_SUCCEEDED(mResultCode)) {
+ if (aSendPreprocessInfo) {
+ // This should not release the IPDL reference.
+ mResultCode = SendPreprocessInfo();
+ } else {
+ // This may release the IPDL reference.
+ mResultCode = SendSuccessResult();
}
+ }
- if (NS_FAILED(mResultCode)) {
- // This should definitely release the IPDL reference.
- if (!SendFailureResult(mResultCode)) {
- // Abort the transaction.
- mTransaction->Abort(mResultCode, /* aForce */ false);
- }
+ if (NS_FAILED(mResultCode)) {
+ // This should definitely release the IPDL reference.
+ if (!SendFailureResult(mResultCode)) {
+ // Abort the transaction.
+ mTransaction->Abort(mResultCode, /* aForce */ false);
}
}
diff --git a/dom/ipc/ContentParent.cpp b/dom/ipc/ContentParent.cpp
index d979d15..ae164c7 100644
--- a/dom/ipc/ContentParent.cpp
+++ b/dom/ipc/ContentParent.cpp
@@ -4505,6 +4505,9 @@ mozilla::ipc::IPCResult ContentParent::RecvBeginDriverCrashGuard(
case gfx::CrashGuardType::D3D11Video:
guard = MakeUnique<gfx::D3D11VideoCrashGuard>(this);
break;
+ case gfx::CrashGuardType::WMFVPXVideo:
+ guard = MakeUnique<gfx::WMFVPXVideoCrashGuard>(this);
+ break;
default:
MOZ_ASSERT_UNREACHABLE("unknown crash guard type");
return IPC_FAIL_NO_REASON(this);
diff --git a/dom/media/AudioConverter.cpp b/dom/media/AudioConverter.cpp
index 32a5e9a..50e2bb9 100644
--- a/dom/media/AudioConverter.cpp
+++ b/dom/media/AudioConverter.cpp
@@ -5,8 +5,8 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "AudioConverter.h"
-#include <string.h>
#include <speex/speex_resampler.h>
+#include <string.h>
#include <cmath>
/*
@@ -131,24 +131,26 @@ static inline int16_t clipTo15(int32_t aX) {
size_t AudioConverter::DownmixAudio(void* aOut, const void* aIn,
size_t aFrames) const {
- MOZ_ASSERT(mIn.Format() == AudioConfig::FORMAT_S16 ||
- mIn.Format() == AudioConfig::FORMAT_FLT);
- MOZ_ASSERT(mIn.Channels() >= mOut.Channels());
- MOZ_ASSERT(mIn.Layout() == AudioConfig::ChannelLayout(mIn.Channels()),
- "Can only downmix input data in SMPTE layout");
- MOZ_ASSERT(mOut.Layout() == AudioConfig::ChannelLayout(2) ||
- mOut.Layout() == AudioConfig::ChannelLayout(1));
+ MOZ_DIAGNOSTIC_ASSERT(mIn.Format() == AudioConfig::FORMAT_S16 ||
+ mIn.Format() == AudioConfig::FORMAT_FLT);
+ MOZ_DIAGNOSTIC_ASSERT(mIn.Channels() >= mOut.Channels());
+ MOZ_DIAGNOSTIC_ASSERT(
+ mIn.Layout() == AudioConfig::ChannelLayout(mIn.Channels()),
+ "Can only downmix input data in SMPTE layout");
+ MOZ_DIAGNOSTIC_ASSERT(mOut.Layout() == AudioConfig::ChannelLayout(2) ||
+ mOut.Layout() == AudioConfig::ChannelLayout(1));
- uint32_t channels = mIn.Channels();
+ uint32_t inChannels = mIn.Channels();
+ uint32_t outChannels = mOut.Channels();
- if (channels == 1 && mOut.Channels() == 1) {
+ if (inChannels == outChannels) {
if (aOut != aIn) {
memmove(aOut, aIn, FramesOutToBytes(aFrames));
}
return aFrames;
}
- if (channels > 2) {
+ if (inChannels > 2) {
if (mIn.Format() == AudioConfig::FORMAT_FLT) {
// Downmix matrix. Per-row normalization 1 for rows 3,4 and 2 for rows
// 5-8.
@@ -193,14 +195,16 @@ size_t AudioConverter::DownmixAudio(void* aOut, const void* aIn,
for (uint32_t i = 0; i < aFrames; i++) {
float sampL = 0.0;
float sampR = 0.0;
- for (uint32_t j = 0; j < channels; j++) {
- sampL +=
- in[i * mIn.Channels() + j] * dmatrix[mIn.Channels() - 3][j][0];
- sampR +=
- in[i * mIn.Channels() + j] * dmatrix[mIn.Channels() - 3][j][1];
+ for (uint32_t j = 0; j < inChannels; j++) {
+ sampL += in[i * inChannels + j] * dmatrix[inChannels - 3][j][0];
+ sampR += in[i * inChannels + j] * dmatrix[inChannels - 3][j][1];
+ }
+ if (outChannels == 2) {
+ *out++ = sampL;
+ *out++ = sampR;
+ } else {
+ *out++ = (sampL + sampR) * 0.5;
}
- *out++ = sampL;
- *out++ = sampR;
}
} else if (mIn.Format() == AudioConfig::FORMAT_S16) {
// Downmix matrix. Per-row normalization 1 for rows 3,4 and 2 for rows
@@ -240,45 +244,46 @@ size_t AudioConverter::DownmixAudio(void* aOut, const void* aIn,
for (uint32_t i = 0; i < aFrames; i++) {
int32_t sampL = 0;
int32_t sampR = 0;
- for (uint32_t j = 0; j < channels; j++) {
- sampL += in[i * channels + j] * dmatrix[channels - 3][j][0];
- sampR += in[i * channels + j] * dmatrix[channels - 3][j][1];
+ for (uint32_t j = 0; j < inChannels; j++) {
+ sampL += in[i * inChannels + j] * dmatrix[inChannels - 3][j][0];
+ sampR += in[i * inChannels + j] * dmatrix[inChannels - 3][j][1];
+ }
+ sampL = clipTo15((sampL + 8192) >> 14);
+ sampR = clipTo15((sampR + 8192) >> 14);
+ if (outChannels == 2) {
+ *out++ = sampL;
+ *out++ = sampR;
+ } else {
+ *out++ = (sampL + sampR) * 0.5;
}
- *out++ = clipTo15((sampL + 8192) >> 14);
- *out++ = clipTo15((sampR + 8192) >> 14);
}
} else {
MOZ_DIAGNOSTIC_ASSERT(false, "Unsupported data type");
}
-
- // If we are to continue downmixing to mono, start working on the output
- // buffer.
- aIn = aOut;
- channels = 2;
+ return aFrames;
}
- if (mOut.Channels() == 1) {
- if (mIn.Format() == AudioConfig::FORMAT_FLT) {
- const float* in = static_cast<const float*>(aIn);
- float* out = static_cast<float*>(aOut);
- for (size_t fIdx = 0; fIdx < aFrames; ++fIdx) {
- float sample = 0.0;
- // The sample of the buffer would be interleaved.
- sample = (in[fIdx * channels] + in[fIdx * channels + 1]) * 0.5;
- *out++ = sample;
- }
- } else if (mIn.Format() == AudioConfig::FORMAT_S16) {
- const int16_t* in = static_cast<const int16_t*>(aIn);
- int16_t* out = static_cast<int16_t*>(aOut);
- for (size_t fIdx = 0; fIdx < aFrames; ++fIdx) {
- int32_t sample = 0.0;
- // The sample of the buffer would be interleaved.
- sample = (in[fIdx * channels] + in[fIdx * channels + 1]) * 0.5;
- *out++ = sample;
- }
- } else {
- MOZ_DIAGNOSTIC_ASSERT(false, "Unsupported data type");
+ MOZ_DIAGNOSTIC_ASSERT(inChannels == 2 && outChannels == 1);
+ if (mIn.Format() == AudioConfig::FORMAT_FLT) {
+ const float* in = static_cast<const float*>(aIn);
+ float* out = static_cast<float*>(aOut);
+ for (size_t fIdx = 0; fIdx < aFrames; ++fIdx) {
+ float sample = 0.0;
+ // The sample of the buffer would be interleaved.
+ sample = (in[fIdx * inChannels] + in[fIdx * inChannels + 1]) * 0.5;
+ *out++ = sample;
}
+ } else if (mIn.Format() == AudioConfig::FORMAT_S16) {
+ const int16_t* in = static_cast<const int16_t*>(aIn);
+ int16_t* out = static_cast<int16_t*>(aOut);
+ for (size_t fIdx = 0; fIdx < aFrames; ++fIdx) {
+ int32_t sample = 0.0;
+ // The sample of the buffer would be interleaved.
+ sample = (in[fIdx * inChannels] + in[fIdx * inChannels + 1]) * 0.5;
+ *out++ = sample;
+ }
+ } else {
+ MOZ_DIAGNOSTIC_ASSERT(false, "Unsupported data type");
}
return aFrames;
}
diff --git a/dom/media/MediaPrefs.h b/dom/media/MediaPrefs.h
index 7f8191c..01db78a 100644
--- a/dom/media/MediaPrefs.h
+++ b/dom/media/MediaPrefs.h
@@ -154,7 +154,6 @@ class MediaPrefs final {
DECL_MEDIA_PREF("media.wmf.skip-blacklist", PDMWMFSkipBlacklist, bool, false);
DECL_MEDIA_PREF("media.decoder-doctor.wmf-disabled-is-failure",
DecoderDoctorWMFDisabledIsFailure, bool, false);
- DECL_MEDIA_PREF("media.wmf.vp9.enabled", PDMWMFVP9DecoderEnabled, bool, true);
#endif
DECL_MEDIA_PREF("media.decoder.recycle.enabled", MediaDecoderCheckRecycling,
bool, false);
diff --git a/dom/media/eme/CDMProxy.h b/dom/media/eme/CDMProxy.h
index 53e3a37..d0f7181 100644
--- a/dom/media/eme/CDMProxy.h
+++ b/dom/media/eme/CDMProxy.h
@@ -82,7 +82,7 @@ class CDMProxy {
// Main thread only.
CDMProxy(dom::MediaKeys* aKeys, const nsAString& aKeySystem,
bool aDistinctiveIdentifierRequired, bool aPersistentStateRequired,
- nsIEventTarget* aMainThread)
+ nsISerialEventTarget* aMainThread)
: mKeys(aKeys),
mKeySystem(aKeySystem),
mCapabilites("CDMProxy::mCDMCaps"),
@@ -272,7 +272,7 @@ class CDMProxy {
const bool mPersistentStateRequired;
// The main thread associated with the root document.
- const nsCOMPtr<nsIEventTarget> mMainThread;
+ const nsCOMPtr<nsISerialEventTarget> mMainThread;
};
} // namespace mozilla
diff --git a/dom/media/eme/MediaKeys.cpp b/dom/media/eme/MediaKeys.cpp
index 0434418..de2953a 100644
--- a/dom/media/eme/MediaKeys.cpp
+++ b/dom/media/eme/MediaKeys.cpp
@@ -307,7 +307,7 @@ class MediaKeysGMPCrashHelper : public GMPCrashHelper {
};
already_AddRefed<CDMProxy> MediaKeys::CreateCDMProxy(
- nsIEventTarget* aMainThread) {
+ nsISerialEventTarget* aMainThread) {
RefPtr<CDMProxy> proxy;
#ifdef MOZ_WIDGET_ANDROID
if (IsWidevineKeySystem(mKeySystem)) {
diff --git a/dom/media/eme/MediaKeys.h b/dom/media/eme/MediaKeys.h
index 8661d54..128c968 100644
--- a/dom/media/eme/MediaKeys.h
+++ b/dom/media/eme/MediaKeys.h
@@ -148,7 +148,7 @@ class MediaKeys final : public nsISupports,
// Instantiate CDMProxy instance.
// It could be MediaDrmCDMProxy (Widevine on Fennec) or ChromiumCDMProxy (the
// rest).
- already_AddRefed<CDMProxy> CreateCDMProxy(nsIEventTarget* aMainThread);
+ already_AddRefed<CDMProxy> CreateCDMProxy(nsISerialEventTarget* aMainThread);
// Removes promise from mPromises, and returns it.
already_AddRefed<DetailedPromise> RetrievePromise(PromiseId aId);
diff --git a/dom/media/eme/mediadrm/MediaDrmCDMProxy.cpp b/dom/media/eme/mediadrm/MediaDrmCDMProxy.cpp
index f8a81e8..3bb8678 100644
--- a/dom/media/eme/mediadrm/MediaDrmCDMProxy.cpp
+++ b/dom/media/eme/mediadrm/MediaDrmCDMProxy.cpp
@@ -28,7 +28,7 @@ MediaDrmCDMProxy::MediaDrmCDMProxy(dom::MediaKeys* aKeys,
const nsAString& aKeySystem,
bool aDistinctiveIdentifierRequired,
bool aPersistentStateRequired,
- nsIEventTarget* aMainThread)
+ nsISerialEventTarget* aMainThread)
: CDMProxy(aKeys, aKeySystem, aDistinctiveIdentifierRequired,
aPersistentStateRequired, aMainThread),
mCDM(nullptr),
diff --git a/dom/media/eme/mediadrm/MediaDrmCDMProxy.h b/dom/media/eme/mediadrm/MediaDrmCDMProxy.h
index cc0d4f2..92463ed 100644
--- a/dom/media/eme/mediadrm/MediaDrmCDMProxy.h
+++ b/dom/media/eme/mediadrm/MediaDrmCDMProxy.h
@@ -31,7 +31,8 @@ class MediaDrmCDMProxy : public CDMProxy {
MediaDrmCDMProxy(dom::MediaKeys* aKeys, const nsAString& aKeySystem,
bool aDistinctiveIdentifierRequired,
- bool aPersistentStateRequired, nsIEventTarget* aMainThread);
+ bool aPersistentStateRequired,
+ nsISerialEventTarget* aMainThread);
void Init(PromiseId aPromiseId, const nsAString& aOrigin,
const nsAString& aTopLevelOrigin,
diff --git a/dom/media/gmp/ChromiumCDMParent.cpp b/dom/media/gmp/ChromiumCDMParent.cpp
index 5d4534f..5d8a3e2 100644
--- a/dom/media/gmp/ChromiumCDMParent.cpp
+++ b/dom/media/gmp/ChromiumCDMParent.cpp
@@ -61,8 +61,6 @@ RefPtr<ChromiumCDMParent::InitPromise> ChromiumCDMParent::Init(
!aMainThread ? "true" : "false")),
__func__);
}
- mCDMCallback = aCDMCallback;
- mMainThread = aMainThread;
RefPtr<ChromiumCDMParent::InitPromise> promise =
mInitPromise.Ensure(__func__);
@@ -70,7 +68,7 @@ RefPtr<ChromiumCDMParent::InitPromise> ChromiumCDMParent::Init(
SendInit(aAllowDistinctiveIdentifier, aAllowPersistentState)
->Then(
AbstractThread::GetCurrent(), __func__,
- [self](bool aSuccess) {
+ [self, aCDMCallback](bool aSuccess) {
if (!aSuccess) {
GMP_LOG(
"ChromiumCDMParent::Init() failed with callback from "
@@ -84,6 +82,7 @@ RefPtr<ChromiumCDMParent::InitPromise> ChromiumCDMParent::Init(
}
GMP_LOG(
"ChromiumCDMParent::Init() succeeded with callback from child");
+ self->mCDMCallback = aCDMCallback;
self->mInitPromise.ResolveIfExists(true /* unused */, __func__);
},
[self](ResponseRejectReason aReason) {
diff --git a/dom/media/gmp/ChromiumCDMParent.h b/dom/media/gmp/ChromiumCDMParent.h
index fd7dcc2..61dfc92 100644
--- a/dom/media/gmp/ChromiumCDMParent.h
+++ b/dom/media/gmp/ChromiumCDMParent.h
@@ -179,9 +179,6 @@ class ChromiumCDMParent final : public PChromiumCDMParent,
// life time of this object, but never more than one active at once.
uint32_t mMaxRefFrames = 0;
ReorderQueue mReorderQueue;
-
- // The main thread associated with the root document. Must be set in Init().
- nsCOMPtr<nsIEventTarget> mMainThread;
};
} // namespace gmp
diff --git a/dom/media/gmp/ChromiumCDMProxy.cpp b/dom/media/gmp/ChromiumCDMProxy.cpp
index f00b4bc..4af9473 100644
--- a/dom/media/gmp/ChromiumCDMProxy.cpp
+++ b/dom/media/gmp/ChromiumCDMProxy.cpp
@@ -22,17 +22,18 @@ ChromiumCDMProxy::ChromiumCDMProxy(dom::MediaKeys* aKeys,
GMPCrashHelper* aCrashHelper,
bool aDistinctiveIdentifierRequired,
bool aPersistentStateRequired,
- nsIEventTarget* aMainThread)
+ nsISerialEventTarget* aMainThread)
: CDMProxy(aKeys, aKeySystem, aDistinctiveIdentifierRequired,
aPersistentStateRequired, aMainThread),
mCrashHelper(aCrashHelper),
mCDMMutex("ChromiumCDMProxy"),
mGMPThread(GetGMPAbstractThread()) {
MOZ_ASSERT(NS_IsMainThread());
- MOZ_COUNT_CTOR(ChromiumCDMProxy);
}
-ChromiumCDMProxy::~ChromiumCDMProxy() { MOZ_COUNT_DTOR(ChromiumCDMProxy); }
+ChromiumCDMProxy::~ChromiumCDMProxy() {
+ EME_LOG("ChromiumCDMProxy::~ChromiumCDMProxy(this=%p)", this);
+}
void ChromiumCDMProxy::Init(PromiseId aPromiseId, const nsAString& aOrigin,
const nsAString& aTopLevelOrigin,
@@ -90,13 +91,25 @@ void ChromiumCDMProxy::Init(PromiseId aPromiseId, const nsAString& aOrigin,
cdm->Init(self->mCallback.get(),
self->mDistinctiveIdentifierRequired,
self->mPersistentStateRequired, self->mMainThread)
- ->Then(thread, __func__,
+ ->Then(self->mMainThread, __func__,
[self, aPromiseId, cdm](bool /* unused */) {
// CDM init succeeded
{
MutexAutoLock lock(self->mCDMMutex);
self->mCDM = cdm;
}
+ if (self->mIsShutdown) {
+ self->RejectPromise(
+ aPromiseId, NS_ERROR_DOM_INVALID_STATE_ERR,
+ NS_LITERAL_CSTRING(
+ "ChromiumCDMProxy shutdown during "
+ "ChromiumCDMProxy::Init"));
+ // If shutdown happened while waiting to init, we
+ // need to explicitly shutdown the CDM to avoid it
+ // referencing this proxy which is on its way out.
+ self->ShutdownCDMIfExists();
+ return;
+ }
self->OnCDMCreated(aPromiseId);
},
[self, aPromiseId](MediaResult aResult) {
@@ -118,13 +131,6 @@ void ChromiumCDMProxy::OnCDMCreated(uint32_t aPromiseId) {
EME_LOG("ChromiumCDMProxy::OnCDMCreated(pid=%u) isMainThread=%d this=%p",
aPromiseId, NS_IsMainThread(), this);
- if (!NS_IsMainThread()) {
- mMainThread->Dispatch(NewRunnableMethod<PromiseId>(
- "ChromiumCDMProxy::OnCDMCreated", this,
- &ChromiumCDMProxy::OnCDMCreated, aPromiseId),
- NS_DISPATCH_NORMAL);
- return;
- }
MOZ_ASSERT(NS_IsMainThread());
if (mKeys.IsNull()) {
return;
@@ -141,6 +147,29 @@ void ChromiumCDMProxy::OnCDMCreated(uint32_t aPromiseId) {
}
}
+void ChromiumCDMProxy::ShutdownCDMIfExists() {
+ EME_LOG(
+ "ChromiumCDMProxy::ShutdownCDMIfExists(this=%p) mCDM=%p, mIsShutdown=%s",
+ this, mCDM.get(), mIsShutdown ? "true" : "false");
+ MOZ_ASSERT(NS_IsMainThread());
+ MOZ_ASSERT(mGMPThread);
+ MOZ_ASSERT(mIsShutdown,
+ "Should only shutdown the CDM if the proxy is shutting down");
+ RefPtr<gmp::ChromiumCDMParent> cdm;
+ {
+ MutexAutoLock lock(mCDMMutex);
+ cdm.swap(mCDM);
+ }
+ if (cdm) {
+ // We need to keep this proxy alive until the parent has finished its
+ // Shutdown (as it may still try to use the proxy until then).
+ RefPtr<ChromiumCDMProxy> self(this);
+ nsCOMPtr<nsIRunnable> task = NS_NewRunnableFunction(
+ "ChromiumCDMProxy::Shutdown", [self, cdm]() { cdm->Shutdown(); });
+ mGMPThread->Dispatch(task.forget());
+ }
+}
+
#ifdef DEBUG
bool ChromiumCDMProxy::IsOnOwnerThread() {
return mGMPThread->IsCurrentThreadIn();
@@ -294,21 +323,14 @@ void ChromiumCDMProxy::RemoveSession(const nsAString& aSessionId,
void ChromiumCDMProxy::Shutdown() {
MOZ_ASSERT(NS_IsMainThread());
- EME_LOG("ChromiumCDMProxy::Shutdown()");
- mKeys.Clear();
- RefPtr<gmp::ChromiumCDMParent> cdm;
- {
- MutexAutoLock lock(mCDMMutex);
- cdm.swap(mCDM);
- }
- if (cdm) {
- // We need to keep this proxy alive until the parent has finished its
- // Shutdown (as it may still try to use the proxy until then).
- RefPtr<ChromiumCDMProxy> self(this);
- nsCOMPtr<nsIRunnable> task = NS_NewRunnableFunction(
- "ChromiumCDMProxy::Shutdown", [self, cdm]() { cdm->Shutdown(); });
- mGMPThread->Dispatch(task.forget());
+ EME_LOG("ChromiumCDMProxy::Shutdown(this=%p) mCDM=%p, mIsShutdown=%s", this,
+ mCDM.get(), mIsShutdown ? "true" : "false");
+ if (mIsShutdown) {
+ return;
}
+ mIsShutdown = true;
+ mKeys.Clear();
+ ShutdownCDMIfExists();
}
void ChromiumCDMProxy::RejectPromise(PromiseId aId, nsresult aCode,
diff --git a/dom/media/gmp/ChromiumCDMProxy.h b/dom/media/gmp/ChromiumCDMProxy.h
index 13fa28b..9200969 100644
--- a/dom/media/gmp/ChromiumCDMProxy.h
+++ b/dom/media/gmp/ChromiumCDMProxy.h
@@ -7,8 +7,8 @@
#ifndef ChromiumCDMProxy_h_
#define ChromiumCDMProxy_h_
-#include "mozilla/CDMProxy.h"
#include "mozilla/AbstractThread.h"
+#include "mozilla/CDMProxy.h"
#include "ChromiumCDMParent.h"
namespace mozilla {
@@ -23,7 +23,7 @@ class ChromiumCDMProxy : public CDMProxy {
ChromiumCDMProxy(dom::MediaKeys* aKeys, const nsAString& aKeySystem,
GMPCrashHelper* aCrashHelper,
bool aAllowDistinctiveIdentifier, bool aAllowPersistentState,
- nsIEventTarget* aMainThread);
+ nsISerialEventTarget* aMainThread);
void Init(PromiseId aPromiseId, const nsAString& aOrigin,
const nsAString& aTopLevelOrigin,
@@ -108,9 +108,14 @@ class ChromiumCDMProxy : public CDMProxy {
private:
void OnCDMCreated(uint32_t aPromiseId);
+ void ShutdownCDMIfExists();
~ChromiumCDMProxy();
+ // True if Shutdown() has been called. Should only be read and written on
+ // main thread.
+ bool mIsShutdown = false;
+
GMPCrashHelper* mCrashHelper;
Mutex mCDMMutex;
diff --git a/dom/media/ipc/VideoDecoderParent.cpp b/dom/media/ipc/VideoDecoderParent.cpp
index 6c95f31..24eb234 100644
--- a/dom/media/ipc/VideoDecoderParent.cpp
+++ b/dom/media/ipc/VideoDecoderParent.cpp
@@ -11,6 +11,7 @@
#include "mozilla/layers/VideoBridgeChild.h"
#include "mozilla/layers/ImageClient.h"
#include "MediaInfo.h"
+#include "PDMFactory.h"
#include "VideoDecoderManagerParent.h"
#ifdef XP_WIN
#include "WMFDecoderModule.h"
@@ -61,9 +62,11 @@ VideoDecoderParent::VideoDecoderParent(
mKnowsCompositor->IdentifyTextureHost(aIdentifier);
#ifdef XP_WIN
+ // Ensure everything is properly initialized on the right thread.
+ PDMFactory::EnsureInit();
+
// TODO: Ideally we wouldn't hardcode the WMF PDM, and we'd use the normal PDM
// factory logic for picking a decoder.
- WMFDecoderModule::Init();
RefPtr<WMFDecoderModule> pdm(new WMFDecoderModule());
pdm->Startup();
diff --git a/dom/media/platforms/PDMFactory.cpp b/dom/media/platforms/PDMFactory.cpp
index 2211a1a..c8e7df2 100644
--- a/dom/media/platforms/PDMFactory.cpp
+++ b/dom/media/platforms/PDMFactory.cpp
@@ -152,7 +152,8 @@ PDMFactory::PDMFactory() {
PDMFactory::~PDMFactory() {}
-void PDMFactory::EnsureInit() const {
+/* static */
+void PDMFactory::EnsureInit() {
{
StaticMutexAutoLock mon(sMonitor);
if (sInstance) {
diff --git a/dom/media/platforms/PDMFactory.h b/dom/media/platforms/PDMFactory.h
index fb6065b..fcd89dc 100644
--- a/dom/media/platforms/PDMFactory.h
+++ b/dom/media/platforms/PDMFactory.h
@@ -45,6 +45,8 @@ class PDMFactory final {
// This is called on the decode task queue.
void SetCDMProxy(CDMProxy* aProxy);
+ static void EnsureInit();
+
static constexpr int kYUV400 = 0;
static constexpr int kYUV420 = 1;
static constexpr int kYUV422 = 2;
@@ -72,7 +74,6 @@ class PDMFactory final {
bool mFFmpegFailedToLoad = false;
bool mGMPPDMFailedToStartup = false;
- void EnsureInit() const;
template <class T>
friend class StaticAutoPtr;
static StaticAutoPtr<PDMFactoryImpl> sInstance;
diff --git a/dom/media/platforms/wmf/WMFDecoderModule.cpp b/dom/media/platforms/wmf/WMFDecoderModule.cpp
index 8db98b4..98b70b0 100644
--- a/dom/media/platforms/wmf/WMFDecoderModule.cpp
+++ b/dom/media/platforms/wmf/WMFDecoderModule.cpp
@@ -5,6 +5,9 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "WMFDecoderModule.h"
+#include <algorithm>
+#include <vector>
+#include "DriverCrashGuard.h"
#include "GfxDriverInfo.h"
#include "MFTDecoder.h"
#include "MP4Decoder.h"
@@ -22,22 +25,23 @@
#include "mozilla/StaticMutex.h"
#include "mozilla/WindowsVersion.h"
#include "mozilla/gfx/gfxVars.h"
+#include "mozilla/mscom/EnsureMTA.h"
#include "nsAutoPtr.h"
#include "nsComponentManagerUtils.h"
#include "nsIGfxInfo.h"
#include "nsIWindowsRegKey.h"
+#include "nsIXULRuntime.h"
#include "nsServiceManagerUtils.h"
#include "nsWindowsHelpers.h"
#include "prsystem.h"
#include "nsIXULRuntime.h"
-#include "mozilla/mscom/EnsureMTA.h"
extern const GUID CLSID_WebmMfVpxDec;
-extern const GUID CLSID_AMDWebmMfVp9Dec;
namespace mozilla {
static Atomic<bool> sDXVAEnabled(false);
+static Atomic<bool> sUsableVPXMFT(false);
WMFDecoderModule::~WMFDecoderModule() {
if (mWMFInitialized) {
@@ -46,22 +50,54 @@ WMFDecoderModule::~WMFDecoderModule() {
}
}
+static bool CanCreateMFTDecoder(const GUID& aGuid) {
+ // The IMFTransform interface used by MFTDecoder is documented to require to
+ // run on an MTA thread.
+ // https://msdn.microsoft.com/en-us/library/windows/desktop/ee892371(v=vs.85).aspx#components
+ // Note: our normal SharedThreadPool task queues are initialized to MTA, but
+ // the main thread (which calls in here from our CanPlayType implementation)
+ // is not.
+ bool canCreateDecoder = false;
+ mozilla::mscom::EnsureMTA([&]() -> void {
+ if (FAILED(wmf::MFStartup())) {
+ return;
+ }
+ RefPtr<MFTDecoder> decoder(new MFTDecoder());
+ canCreateDecoder = SUCCEEDED(decoder->Create(aGuid));
+ wmf::MFShutdown();
+ });
+ return canCreateDecoder;
+}
+
/* static */
void WMFDecoderModule::Init() {
+ MOZ_DIAGNOSTIC_ASSERT(NS_IsMainThread());
+ bool testForVPx;
if (XRE_IsContentProcess()) {
// If we're in the content process and the UseGPUDecoder pref is set, it
// means that we've given up on the GPU process (it's been crashing) so we
// should disable DXVA
sDXVAEnabled = !MediaPrefs::PDMUseGPUDecoder();
+ // We need to test for VPX in the content process as the GPUDecoderModule
+ // directly calls WMFDecoderModule::Supports in the content process.
+ // This unnecessary requirement will be fixed in bug 1534815.
+ testForVPx = true;
} else if (XRE_IsGPUProcess()) {
// Always allow DXVA in the GPU process.
- sDXVAEnabled = true;
+ testForVPx = sDXVAEnabled = true;
} else {
// Only allow DXVA in the UI process if we aren't in e10s Firefox
- sDXVAEnabled = !mozilla::BrowserTabsRemoteAutostart();
+ testForVPx = sDXVAEnabled = !mozilla::BrowserTabsRemoteAutostart();
}
sDXVAEnabled = sDXVAEnabled && gfx::gfxVars::CanUseHardwareVideoDecoding();
+ testForVPx = testForVPx && gfx::gfxVars::CanUseHardwareVideoDecoding();
+ if (testForVPx && gfxPrefs::PDMWMFVP9DecoderEnabled()) {
+ gfx::WMFVPXVideoCrashGuard guard;
+ if (!guard.Crashed()) {
+ sUsableVPXMFT = CanCreateMFTDecoder(CLSID_WebmMfVpxDec);
+ }
+ }
}
/* static */
@@ -122,25 +158,6 @@ already_AddRefed<MediaDataDecoder> WMFDecoderModule::CreateAudioDecoder(
return decoder.forget();
}
-static bool CanCreateMFTDecoder(const GUID& aGuid) {
- // The IMFTransform interface used by MFTDecoder is documented to require to
- // run on an MTA thread.
- // https://msdn.microsoft.com/en-us/library/windows/desktop/ee892371(v=vs.85).aspx#components
- // Note: our normal SharedThreadPool task queues are initialized to MTA, but
- // the main thread (which calls in here from our CanPlayType implementation)
- // is not.
- bool canCreateDecoder = false;
- mozilla::mscom::EnsureMTA([&]() -> void {
- if (FAILED(wmf::MFStartup())) {
- return;
- }
- RefPtr<MFTDecoder> decoder(new MFTDecoder());
- canCreateDecoder = SUCCEEDED(decoder->Create(aGuid));
- wmf::MFShutdown();
- });
- return canCreateDecoder;
-}
-
template <const GUID& aGuid>
static bool CanCreateWMFDecoder() {
static StaticMutex sMutex;
@@ -188,18 +205,12 @@ bool WMFDecoderModule::Supports(const TrackInfo& aTrackInfo,
CanCreateWMFDecoder<CLSID_CMP3DecMediaObject>()) {
return true;
}
- if (MediaPrefs::PDMWMFVP9DecoderEnabled()) {
+ if (sUsableVPXMFT) {
static const uint32_t VP8_USABLE_BUILD = 16287;
- if (VPXDecoder::IsVP8(aTrackInfo.mMimeType) &&
- IsWindowsBuildOrLater(VP8_USABLE_BUILD) &&
- CanCreateWMFDecoder<CLSID_WebmMfVpxDec>()) {
- return true;
- }
- if (VPXDecoder::IsVP9(aTrackInfo.mMimeType) &&
- ((gfxPrefs::PDMWMFAMDVP9DecoderEnabled() &&
- CanCreateWMFDecoder<CLSID_AMDWebmMfVp9Dec>()) ||
- CanCreateWMFDecoder<CLSID_WebmMfVpxDec>())) {
- return true;
+ if ((VPXDecoder::IsVP8(aTrackInfo.mMimeType) &&
+ IsWindowsBuildOrLater(VP8_USABLE_BUILD)) ||
+ VPXDecoder::IsVP9(aTrackInfo.mMimeType)) {
+ return CanCreateWMFDecoder<CLSID_WebmMfVpxDec>();
}
}
diff --git a/dom/tests/mochitest/general/test_clipboard_disallowed.html b/dom/tests/mochitest/general/test_clipboard_disallowed.html
index 71ba09d..0b5422d 100644
--- a/dom/tests/mochitest/general/test_clipboard_disallowed.html
+++ b/dom/tests/mochitest/general/test_clipboard_disallowed.html
@@ -48,6 +48,21 @@ function checkAllowed(event)
exception = null;
try {
+ clipboardData.mozSetDataAt("text/x-moz-place", "Test", 0);
+ } catch(ex) {
+ exception = ex;
+ }
+ is(String(exception).indexOf("SecurityError"), 0, "Cannot set place");
+ exception = null;
+ try {
+ clipboardData.mozSetDataAt("text/x-moz-place-container", "Test", 0);
+ } catch(ex) {
+ exception = ex;
+ }
+ is(String(exception).indexOf("SecurityError"), 0, "Cannot set place container");
+
+ exception = null;
+ try {
clipboardData.mozSetDataAt("application/something", "This is data", 0);
} catch(ex) {
exception = ex;
diff --git a/dom/u2f/U2F.cpp b/dom/u2f/U2F.cpp
index abc0a9b..478c48b 100644
--- a/dom/u2f/U2F.cpp
+++ b/dom/u2f/U2F.cpp
@@ -184,7 +184,7 @@ U2F::~U2F() {
MOZ_ASSERT(NS_IsMainThread());
if (mTransaction.isSome()) {
- RejectTransaction(NS_ERROR_ABORT);
+ ClearTransaction();
}
if (mChild) {
diff --git a/dom/webauthn/WebAuthnManager.cpp b/dom/webauthn/WebAuthnManager.cpp
index aa0b294..0dcfa51 100644
--- a/dom/webauthn/WebAuthnManager.cpp
+++ b/dom/webauthn/WebAuthnManager.cpp
@@ -192,7 +192,7 @@ WebAuthnManager::~WebAuthnManager() {
MOZ_ASSERT(NS_IsMainThread());
if (mTransaction.isSome()) {
- RejectTransaction(NS_ERROR_ABORT);
+ ClearTransaction();
}
if (mChild) {
diff --git a/editor/libeditor/HTMLEditUtils.cpp b/editor/libeditor/HTMLEditUtils.cpp
index 3e737c4..d4cf140 100644
--- a/editor/libeditor/HTMLEditUtils.cpp
+++ b/editor/libeditor/HTMLEditUtils.cpp
@@ -43,6 +43,34 @@ bool HTMLEditUtils::IsInlineStyle(nsINode* aNode) {
nsGkAtoms::sup, nsGkAtoms::font);
}
+bool HTMLEditUtils::IsRemovableInlineStyleElement(Element& aElement) {
+ if (!aElement.IsHTMLElement()) {
+ return false;
+ }
+ // https://w3c.github.io/editing/execCommand.html#removeformat-candidate
+ if (aElement.IsAnyOfHTMLElements(
+ nsGkAtoms::abbr, // Chrome ignores, but does not make sense.
+ nsGkAtoms::acronym, nsGkAtoms::b,
+ nsGkAtoms::bdi, // Chrome ignores, but does not make sense.
+ nsGkAtoms::bdo, nsGkAtoms::big, nsGkAtoms::cite, nsGkAtoms::code,
+ // nsGkAtoms::del, Chrome ignores, but does not make sense but
+ // execCommand unofficial draft excludes this. Spec issue:
+ // https://github.com/w3c/editing/issues/192
+ nsGkAtoms::dfn, nsGkAtoms::em, nsGkAtoms::font, nsGkAtoms::i,
+ nsGkAtoms::ins, nsGkAtoms::kbd,
+ nsGkAtoms::mark, // Chrome ignores, but does not make sense.
+ nsGkAtoms::nobr, nsGkAtoms::q, nsGkAtoms::s, nsGkAtoms::samp,
+ nsGkAtoms::small, nsGkAtoms::span, nsGkAtoms::strike,
+ nsGkAtoms::strong, nsGkAtoms::sub, nsGkAtoms::sup, nsGkAtoms::tt,
+ nsGkAtoms::u, nsGkAtoms::var)) {
+ return true;
+ }
+ // If it's a <blink> element, we can remove it.
+ nsAutoString tagName;
+ aElement.GetTagName(tagName);
+ return tagName.LowerCaseEqualsASCII("blink");
+}
+
/**
* IsFormatNode() returns true if aNode is a format node.
*/
diff --git a/editor/libeditor/HTMLEditUtils.h b/editor/libeditor/HTMLEditUtils.h
index 35fe8e3..c72e7b5 100644
--- a/editor/libeditor/HTMLEditUtils.h
+++ b/editor/libeditor/HTMLEditUtils.h
@@ -12,11 +12,20 @@ class nsIDOMNode;
class nsINode;
namespace mozilla {
+namespace dom {
+class Element;
+} // namespace dom
class HTMLEditUtils final {
public:
static bool IsInlineStyle(nsINode* aNode);
static bool IsInlineStyle(nsIDOMNode* aNode);
+ /**
+ * IsRemovableInlineStyleElement() returns true if aElement is an inline
+ * element and can be removed or split to in order to modifying inline
+ * styles.
+ */
+ static bool IsRemovableInlineStyleElement(dom::Element& aElement);
static bool IsFormatNode(nsINode* aNode);
static bool IsFormatNode(nsIDOMNode* aNode);
static bool IsNodeThatCanOutdent(nsINode* aNode);
diff --git a/editor/libeditor/HTMLEditor.h b/editor/libeditor/HTMLEditor.h
index f3d7875..7be8e58 100644
--- a/editor/libeditor/HTMLEditor.h
+++ b/editor/libeditor/HTMLEditor.h
@@ -835,7 +835,6 @@ class HTMLEditor final : public TextEditor,
nsAtom* aAttribute,
const bool aChildrenOnly = false);
- bool NodeIsProperty(nsINode& aNode);
bool IsAtFrontOfNode(nsINode& aNode, int32_t aOffset);
bool IsAtEndOfNode(nsINode& aNode, int32_t aOffset);
bool IsOnlyAttribute(const Element* aElement, nsAtom* aAttribute);
diff --git a/editor/libeditor/HTMLStyleEditor.cpp b/editor/libeditor/HTMLStyleEditor.cpp
index 7d43823..396a1eb 100644
--- a/editor/libeditor/HTMLStyleEditor.cpp
+++ b/editor/libeditor/HTMLStyleEditor.cpp
@@ -527,7 +527,8 @@ nsresult HTMLEditor::SplitStyleAbovePoint(
// node is href - test if really <a href=...
(aProperty == nsGkAtoms::href && HTMLEditUtils::IsLink(node)) ||
// or node is any prop, and we asked to split them all
- (!aProperty && NodeIsProperty(node)) ||
+ (!aProperty && node->IsElement() && IsEditable(node) &&
+ HTMLEditUtils::IsRemovableInlineStyleElement(*node->AsElement())) ||
// or the style is specified in the style attribute
isSet) {
// Found a style node we need to split
@@ -638,11 +639,6 @@ nsresult HTMLEditor::ClearStyle(nsCOMPtr<nsINode>* aNode, int32_t* aOffset,
return NS_OK;
}
-bool HTMLEditor::NodeIsProperty(nsINode& aNode) {
- return IsContainer(&aNode) && IsEditable(&aNode) && !IsBlockNode(&aNode) &&
- !aNode.IsHTMLElement(nsGkAtoms::a);
-}
-
nsresult HTMLEditor::RemoveStyleInside(nsIContent& aNode, nsAtom* aProperty,
nsAtom* aAttribute,
const bool aChildrenOnly /* = false */) {
@@ -669,7 +665,8 @@ nsresult HTMLEditor::RemoveStyleInside(nsIContent& aNode, nsAtom* aProperty,
// and for named anchors
(aProperty == nsGkAtoms::name && HTMLEditUtils::IsNamedAnchor(&aNode)) ||
// or node is any prop and we asked for that
- (!aProperty && NodeIsProperty(aNode)))) {
+ (!aProperty && IsEditable(&aNode) &&
+ HTMLEditUtils::IsRemovableInlineStyleElement(*aNode.AsElement())))) {
// if we weren't passed an attribute, then we want to
// remove any matching inlinestyles entirely
if (!aAttribute) {
diff --git a/gfx/ipc/GPUProcessManager.cpp b/gfx/ipc/GPUProcessManager.cpp
index 0584b70..f980242 100644
--- a/gfx/ipc/GPUProcessManager.cpp
+++ b/gfx/ipc/GPUProcessManager.cpp
@@ -785,8 +785,8 @@ bool GPUProcessManager::CreateContentCompositorManager(
if (mGPUChild) {
mGPUChild->SendNewContentCompositorManager(Move(parentPipe));
- } else {
- CompositorManagerParent::Create(Move(parentPipe));
+ } else if (!CompositorManagerParent::Create(Move(parentPipe))) {
+ return false;
}
*aOutEndpoint = Move(childPipe);
diff --git a/gfx/ipc/VsyncBridgeChild.cpp b/gfx/ipc/VsyncBridgeChild.cpp
index f69bd2a..220b1fa 100644
--- a/gfx/ipc/VsyncBridgeChild.cpp
+++ b/gfx/ipc/VsyncBridgeChild.cpp
@@ -12,7 +12,7 @@ namespace gfx {
VsyncBridgeChild::VsyncBridgeChild(RefPtr<VsyncIOThreadHolder> aThread,
const uint64_t& aProcessToken)
- : mThread(aThread), mLoop(nullptr), mProcessToken(aProcessToken) {}
+ : mThread(aThread), mProcessToken(aProcessToken) {}
VsyncBridgeChild::~VsyncBridgeChild() {}
@@ -38,8 +38,6 @@ void VsyncBridgeChild::Open(Endpoint<PVsyncBridgeChild>&& aEndpoint) {
return;
}
- mLoop = MessageLoop::current();
-
// Last reference is freed in DeallocPVsyncBridgeChild.
AddRef();
}
@@ -65,7 +63,7 @@ class NotifyVsyncTask : public Runnable {
};
bool VsyncBridgeChild::IsOnVsyncIOThread() const {
- return MessageLoop::current() == mLoop;
+ return mThread->IsOnCurrentThread();
}
void VsyncBridgeChild::NotifyVsync(TimeStamp aTimeStamp,
@@ -75,7 +73,7 @@ void VsyncBridgeChild::NotifyVsync(TimeStamp aTimeStamp,
RefPtr<NotifyVsyncTask> task =
new NotifyVsyncTask(this, aTimeStamp, aLayersId);
- mLoop->PostTask(task.forget());
+ mThread->Dispatch(task.forget());
}
void VsyncBridgeChild::NotifyVsyncImpl(TimeStamp aTimeStamp,
@@ -91,8 +89,8 @@ void VsyncBridgeChild::NotifyVsyncImpl(TimeStamp aTimeStamp,
void VsyncBridgeChild::Close() {
if (!IsOnVsyncIOThread()) {
- mLoop->PostTask(NewRunnableMethod("gfx::VsyncBridgeChild::Close", this,
- &VsyncBridgeChild::Close));
+ mThread->Dispatch(NewRunnableMethod("gfx::VsyncBridgeChild::Close", this,
+ &VsyncBridgeChild::Close));
return;
}
diff --git a/gfx/ipc/VsyncBridgeChild.h b/gfx/ipc/VsyncBridgeChild.h
index bcff815..a62cfa2 100644
--- a/gfx/ipc/VsyncBridgeChild.h
+++ b/gfx/ipc/VsyncBridgeChild.h
@@ -47,7 +47,6 @@ class VsyncBridgeChild final : public PVsyncBridgeChild {
private:
RefPtr<VsyncIOThreadHolder> mThread;
- MessageLoop* mLoop;
uint64_t mProcessToken;
};
diff --git a/gfx/ipc/VsyncIOThreadHolder.h b/gfx/ipc/VsyncIOThreadHolder.h
index ac305c7..b5ea0c2 100644
--- a/gfx/ipc/VsyncIOThreadHolder.h
+++ b/gfx/ipc/VsyncIOThreadHolder.h
@@ -23,6 +23,14 @@ class VsyncIOThreadHolder final {
RefPtr<nsIThread> GetThread() const;
+ bool IsOnCurrentThread() const {
+ return mThread->IsOnCurrentThread();
+ }
+
+ void Dispatch(already_AddRefed<nsIRunnable> task) {
+ mThread->Dispatch(std::move(task), NS_DISPATCH_NORMAL);
+ }
+
private:
~VsyncIOThreadHolder();
diff --git a/gfx/layers/composite/CanvasLayerComposite.cpp b/gfx/layers/composite/CanvasLayerComposite.cpp
index 03a1d38..ce48281 100644
--- a/gfx/layers/composite/CanvasLayerComposite.cpp
+++ b/gfx/layers/composite/CanvasLayerComposite.cpp
@@ -40,9 +40,13 @@ CanvasLayerComposite::~CanvasLayerComposite() {
bool CanvasLayerComposite::SetCompositableHost(CompositableHost* aHost) {
switch (aHost->GetType()) {
- case CompositableType::IMAGE:
+ case CompositableType::IMAGE: {
+ if (mCompositableHost && aHost != mCompositableHost) {
+ mCompositableHost->Detach(this);
+ }
mCompositableHost = aHost;
return true;
+ }
default:
return false;
}
diff --git a/gfx/layers/composite/ImageLayerComposite.cpp b/gfx/layers/composite/ImageLayerComposite.cpp
index 79a444b..a21ce22 100644
--- a/gfx/layers/composite/ImageLayerComposite.cpp
+++ b/gfx/layers/composite/ImageLayerComposite.cpp
@@ -47,9 +47,14 @@ ImageLayerComposite::~ImageLayerComposite() {
bool ImageLayerComposite::SetCompositableHost(CompositableHost* aHost) {
switch (aHost->GetType()) {
- case CompositableType::IMAGE:
- mImageHost = static_cast<ImageHost*>(aHost);
+ case CompositableType::IMAGE: {
+ ImageHost* newImageHost = static_cast<ImageHost*>(aHost);
+ if (mImageHost && newImageHost != mImageHost) {
+ mImageHost->Detach(this);
+ }
+ mImageHost = newImageHost;
return true;
+ }
default:
return false;
}
diff --git a/gfx/layers/composite/PaintedLayerComposite.cpp b/gfx/layers/composite/PaintedLayerComposite.cpp
index 391bb42..3f1c2db 100644
--- a/gfx/layers/composite/PaintedLayerComposite.cpp
+++ b/gfx/layers/composite/PaintedLayerComposite.cpp
@@ -47,9 +47,14 @@ bool PaintedLayerComposite::SetCompositableHost(CompositableHost* aHost) {
switch (aHost->GetType()) {
case CompositableType::CONTENT_TILED:
case CompositableType::CONTENT_SINGLE:
- case CompositableType::CONTENT_DOUBLE:
- mBuffer = static_cast<ContentHost*>(aHost);
+ case CompositableType::CONTENT_DOUBLE: {
+ ContentHost* newBuffer = static_cast<ContentHost*>(aHost);
+ if (mBuffer && newBuffer != mBuffer) {
+ mBuffer->Detach(this);
+ }
+ mBuffer = newBuffer;
return true;
+ }
default:
return false;
}
diff --git a/gfx/layers/ipc/CompositorManagerParent.cpp b/gfx/layers/ipc/CompositorManagerParent.cpp
index e20c7be..e6e0dcb 100644
--- a/gfx/layers/ipc/CompositorManagerParent.cpp
+++ b/gfx/layers/ipc/CompositorManagerParent.cpp
@@ -46,7 +46,8 @@ CompositorManagerParent::CreateSameProcess() {
return parent.forget();
}
-/* static */ void CompositorManagerParent::Create(
+/* static */
+bool CompositorManagerParent::Create(
Endpoint<PCompositorManagerParent>&& aEndpoint) {
MOZ_ASSERT(NS_IsMainThread());
@@ -54,6 +55,10 @@ CompositorManagerParent::CreateSameProcess() {
// (or UI process if it subsumbed the GPU process).
MOZ_ASSERT(aEndpoint.OtherPid() != base::GetCurrentProcId());
+ if (!CompositorThreadHolder::IsActive()) {
+ return false;
+ }
+
RefPtr<CompositorManagerParent> bridge = new CompositorManagerParent();
RefPtr<Runnable> runnable =
@@ -61,6 +66,7 @@ CompositorManagerParent::CreateSameProcess() {
"CompositorManagerParent::Bind", bridge,
&CompositorManagerParent::Bind, Move(aEndpoint));
CompositorThreadHolder::Loop()->PostTask(runnable.forget());
+ return true;
}
/* static */ already_AddRefed<CompositorBridgeParent>
diff --git a/gfx/layers/ipc/CompositorManagerParent.h b/gfx/layers/ipc/CompositorManagerParent.h
index 2a73303..0ed809b 100644
--- a/gfx/layers/ipc/CompositorManagerParent.h
+++ b/gfx/layers/ipc/CompositorManagerParent.h
@@ -30,7 +30,7 @@ class CompositorManagerParent final : public PCompositorManagerParent {
public:
static already_AddRefed<CompositorManagerParent> CreateSameProcess();
- static void Create(Endpoint<PCompositorManagerParent>&& aEndpoint);
+ static bool Create(Endpoint<PCompositorManagerParent>&& aEndpoint);
static void Shutdown();
static already_AddRefed<CompositorBridgeParent>
diff --git a/gfx/layers/ipc/ImageBridgeParent.cpp b/gfx/layers/ipc/ImageBridgeParent.cpp
index 15888b2..1fbbeff 100644
--- a/gfx/layers/ipc/ImageBridgeParent.cpp
+++ b/gfx/layers/ipc/ImageBridgeParent.cpp
@@ -92,6 +92,10 @@ ImageBridgeParent::~ImageBridgeParent() {}
MOZ_ASSERT(XRE_GetProcessType() == GeckoProcessType_GPU);
MessageLoop* loop = CompositorThreadHolder::Loop();
+ if (!loop) {
+ return false;
+ }
+
RefPtr<ImageBridgeParent> parent =
new ImageBridgeParent(loop, aEndpoint.OtherPid());
@@ -218,6 +222,9 @@ mozilla::ipc::IPCResult ImageBridgeParent::RecvUpdate(
/* static */ bool ImageBridgeParent::CreateForContent(
Endpoint<PImageBridgeParent>&& aEndpoint) {
MessageLoop* loop = CompositorThreadHolder::Loop();
+ if (!loop) {
+ return false;
+ }
RefPtr<ImageBridgeParent> bridge =
new ImageBridgeParent(loop, aEndpoint.OtherPid());
diff --git a/gfx/layers/mlgpu/PaintedLayerMLGPU.cpp b/gfx/layers/mlgpu/PaintedLayerMLGPU.cpp
index 6770b64..43b5eda 100644
--- a/gfx/layers/mlgpu/PaintedLayerMLGPU.cpp
+++ b/gfx/layers/mlgpu/PaintedLayerMLGPU.cpp
@@ -65,12 +65,16 @@ bool PaintedLayerMLGPU::SetCompositableHost(CompositableHost* aHost) {
switch (aHost->GetType()) {
case CompositableType::CONTENT_TILED:
case CompositableType::CONTENT_SINGLE:
- case CompositableType::CONTENT_DOUBLE:
+ case CompositableType::CONTENT_DOUBLE: {
+ if (mHost && mHost != aHost->AsContentHost()) {
+ mHost->Detach(this);
+ }
mHost = aHost->AsContentHost();
if (!mHost) {
gfxWarning() << "ContentHostBase is not a ContentHostTexture";
}
return true;
+ }
default:
return false;
}
diff --git a/gfx/skia/skia/src/core/SkPath.cpp b/gfx/skia/skia/src/core/SkPath.cpp
index ad7d931..7832f04 100644
--- a/gfx/skia/skia/src/core/SkPath.cpp
+++ b/gfx/skia/skia/src/core/SkPath.cpp
@@ -1676,10 +1676,10 @@ void SkPath::reverseAddPath(const SkPath& srcPath) {
src = tmp.set(srcPath);
}
- SkPathRef::Editor ed(&fPathRef, src->fPathRef->countPoints(), src->fPathRef->countVerbs());
+ SkPathRef::Editor ed(&fPathRef, src->countPoints(), src->countVerbs());
const SkPoint* pts = src->fPathRef->pointsEnd();
- // we will iterator through src's verbs backwards
+ // we will iterate through src's verbs backwards
const uint8_t* verbs = src->fPathRef->verbsMemBegin(); // points at the last verb
const uint8_t* verbsEnd = src->fPathRef->verbs(); // points just past the first verb
const SkScalar* conicWeights = src->fPathRef->conicWeightsEnd();
@@ -1808,6 +1808,7 @@ void SkPath::transform(const SkMatrix& matrix, SkPath* dst) const {
SkPathRef::CreateTransformedCopy(&dst->fPathRef, *fPathRef.get(), matrix);
if (this != dst) {
+ dst->fLastMoveToIndex = fLastMoveToIndex;
dst->fFillType = fFillType;
dst->fIsVolatile = fIsVolatile;
}
diff --git a/gfx/src/DriverCrashGuard.cpp b/gfx/src/DriverCrashGuard.cpp
index 4beca1d..a34db95 100644
--- a/gfx/src/DriverCrashGuard.cpp
+++ b/gfx/src/DriverCrashGuard.cpp
@@ -24,10 +24,7 @@ namespace gfx {
static const size_t NUM_CRASH_GUARD_TYPES = size_t(CrashGuardType::NUM_TYPES);
static const char* sCrashGuardNames[] = {
- "d3d11layers",
- "d3d9video",
- "glcontext",
- "d3d11video",
+ "d3d11layers", "d3d9video", "glcontext", "d3d11video", "wmfvpxvideo",
};
static_assert(MOZ_ARRAY_LENGTH(sCrashGuardNames) == NUM_CRASH_GUARD_TYPES,
"CrashGuardType updated without a name string");
@@ -60,7 +57,7 @@ void DriverCrashGuard::InitializeIfNeeded() {
Initialize();
}
-static inline bool AreCrashGuardsEnabled() {
+static inline bool AreCrashGuardsEnabled(CrashGuardType aType) {
// Crash guard isn't supported in the GPU process since the entire
// process is basically a crash guard.
if (XRE_IsGPUProcess()) {
@@ -71,18 +68,18 @@ static inline bool AreCrashGuardsEnabled() {
// channel is for development and having graphics features perma-disabled
// is rather annoying. Unless the user forces is with an environment
// variable, which comes in handy for testing.
- return gfxEnv::ForceCrashGuardNightly();
-#else
- // Check to see if all guards have been disabled through the environment.
- if (gfxEnv::DisableCrashGuard()) {
- return false;
+ // We handle the WMFVPXVideo crash guard differently to the other and always
+ // enable it as it completely breaks playback and there's no way around it.
+ if (aType != CrashGuardType::WMFVPXVideo) {
+ return gfxEnv::ForceCrashGuardNightly();
}
- return true;
#endif
+ // Check to see if all guards have been disabled through the environment.
+ return !gfxEnv::DisableCrashGuard();
}
void DriverCrashGuard::Initialize() {
- if (!AreCrashGuardsEnabled()) {
+ if (!AreCrashGuardsEnabled(mType)) {
return;
}
@@ -224,7 +221,6 @@ void DriverCrashGuard::ActivateGuard() {
}
void DriverCrashGuard::NotifyCrashed() {
- CheckOrRefreshEnvironment();
SetStatus(DriverInitStatus::Crashed);
FlushPreferences();
LogCrashRecovery();
@@ -254,18 +250,24 @@ bool DriverCrashGuard::RecoverFromCrash() {
// session are activated rather than just the first.
bool DriverCrashGuard::CheckOrRefreshEnvironment() {
// Our result can be cached statically since we don't check live prefs.
- static bool sBaseInfoChanged = false;
- static bool sBaseInfoChecked = false;
-
- if (!sBaseInfoChecked) {
+ // We need to cache once per crash guard type.
+ // The first call to CheckOrRefrechEnvironment will always return true should
+ // the configuration had changed, following calls will return false.
+ static bool sBaseInfoChanged[NUM_CRASH_GUARD_TYPES];
+ static bool sBaseInfoChecked[NUM_CRASH_GUARD_TYPES];
+
+ const uint32_t type = uint32_t(mType);
+ if (!sBaseInfoChecked[type]) {
// None of the prefs we care about, so we cache the result statically.
- sBaseInfoChecked = true;
- sBaseInfoChanged = UpdateBaseEnvironment();
+ sBaseInfoChecked[type] = true;
+ sBaseInfoChanged[type] = UpdateBaseEnvironment();
}
// Always update the full environment, even if the base info didn't change.
- return UpdateEnvironment() || sBaseInfoChanged ||
- GetStatus() == DriverInitStatus::Unknown;
+ bool result = UpdateEnvironment() || sBaseInfoChanged[type] ||
+ GetStatus() == DriverInitStatus::Unknown;
+ sBaseInfoChanged[type] = false;
+ return result;
}
bool DriverCrashGuard::UpdateBaseEnvironment() {
@@ -352,15 +354,15 @@ void DriverCrashGuard::FlushPreferences() {
void DriverCrashGuard::ForEachActiveCrashGuard(
const CrashGuardCallback& aCallback) {
- if (!AreCrashGuardsEnabled()) {
- // Even if guards look active (via prefs), they can be ignored if globally
- // disabled.
- return;
- }
-
for (size_t i = 0; i < NUM_CRASH_GUARD_TYPES; i++) {
CrashGuardType type = static_cast<CrashGuardType>(i);
+ if (!AreCrashGuardsEnabled(type)) {
+ // Even if guards look active (via prefs), they can be ignored if globally
+ // disabled.
+ continue;
+ }
+
nsCString prefName;
BuildCrashGuardPrefName(type, prefName);
@@ -394,14 +396,15 @@ void D3D11LayersCrashGuard::Initialize() {
bool D3D11LayersCrashGuard::UpdateEnvironment() {
// Our result can be cached statically since we don't check live prefs.
static bool checked = false;
- static bool changed = false;
if (checked) {
- return changed;
+ // We no longer need to bypass the crash guard.
+ return false;
}
checked = true;
+ bool changed = false;
// Feature status.
#if defined(XP_WIN)
bool d2dEnabled = gfxPrefs::Direct2DForceEnabled() ||
@@ -411,14 +414,12 @@ bool D3D11LayersCrashGuard::UpdateEnvironment() {
bool d3d11Enabled = gfxConfig::IsEnabled(Feature::D3D11_COMPOSITING);
changed |= CheckAndUpdateBoolPref("feature-d3d11", d3d11Enabled);
-#endif
-
- if (!changed) {
- return false;
+ if (changed) {
+ RecordTelemetry(TelemetryState::EnvironmentChanged);
}
+#endif
- RecordTelemetry(TelemetryState::EnvironmentChanged);
- return true;
+ return changed;
}
void D3D11LayersCrashGuard::LogCrashRecovery() {
@@ -452,11 +453,6 @@ void D3D11LayersCrashGuard::RecordTelemetry(TelemetryState aState) {
D3D9VideoCrashGuard::D3D9VideoCrashGuard(dom::ContentParent* aContentParent)
: DriverCrashGuard(CrashGuardType::D3D9Video, aContentParent) {}
-bool D3D9VideoCrashGuard::UpdateEnvironment() {
- // We don't care about any extra preferences here.
- return false;
-}
-
void D3D9VideoCrashGuard::LogCrashRecovery() {
gfxCriticalNote << "DXVA2D3D9 just crashed; hardware video will be disabled.";
}
@@ -469,11 +465,6 @@ void D3D9VideoCrashGuard::LogFeatureDisabled() {
D3D11VideoCrashGuard::D3D11VideoCrashGuard(dom::ContentParent* aContentParent)
: DriverCrashGuard(CrashGuardType::D3D11Video, aContentParent) {}
-bool D3D11VideoCrashGuard::UpdateEnvironment() {
- // We don't care about any extra preferences here.
- return false;
-}
-
void D3D11VideoCrashGuard::LogCrashRecovery() {
gfxCriticalNote
<< "DXVA2D3D11 just crashed; hardware video will be disabled.";
@@ -507,14 +498,16 @@ void GLContextCrashGuard::Initialize() {
bool GLContextCrashGuard::UpdateEnvironment() {
static bool checked = false;
- static bool changed = false;
if (checked) {
- return changed;
+ // We no longer need to bypass the crash guard.
+ return false;
}
checked = true;
+ bool changed = false;
+
#if defined(XP_WIN)
changed |= CheckAndUpdateBoolPref("gfx.driver-init.webgl-angle-force-d3d11",
gfxPrefs::WebGLANGLEForceD3D11());
@@ -541,5 +534,18 @@ void GLContextCrashGuard::LogFeatureDisabled() {
gfxCriticalNote << "GLContext remains enabled despite a previous crash.";
}
+WMFVPXVideoCrashGuard::WMFVPXVideoCrashGuard(dom::ContentParent* aContentParent)
+ : DriverCrashGuard(CrashGuardType::WMFVPXVideo, aContentParent) {}
+
+void WMFVPXVideoCrashGuard::LogCrashRecovery() {
+ gfxCriticalNote
+ << "WMF VPX decoder just crashed; hardware video will be disabled.";
+}
+
+void WMFVPXVideoCrashGuard::LogFeatureDisabled() {
+ gfxCriticalNote
+ << "WMF VPX video decoding is disabled due to a previous crash.";
+}
+
} // namespace gfx
} // namespace mozilla
diff --git a/gfx/src/DriverCrashGuard.h b/gfx/src/DriverCrashGuard.h
index eafe689..93feee0 100644
--- a/gfx/src/DriverCrashGuard.h
+++ b/gfx/src/DriverCrashGuard.h
@@ -40,6 +40,7 @@ enum class CrashGuardType : uint32_t {
D3D9Video,
GLContext,
D3D11Video,
+ WMFVPXVideo,
// Add new entries above this line, update the name array in
// DriverCrashGuard.cpp, and make sure to add an entry in
// ContentParent.cpp.
@@ -87,7 +88,15 @@ class DriverCrashGuard {
protected:
virtual void Initialize();
- virtual bool UpdateEnvironment() = 0;
+ // UpdateEnvironment needs to return true should we need to attempt the
+ // operation once again.
+ // It should return true once only so that in case of a crash, we won't
+ // needlessly attempt the operation over and over again leading to continual
+ // crashes. several times
+ virtual bool UpdateEnvironment() {
+ // We don't care about any extra preferences here.
+ return false;
+ }
virtual void LogCrashRecovery() = 0;
virtual void LogFeatureDisabled() = 0;
@@ -144,7 +153,6 @@ class D3D9VideoCrashGuard final : public DriverCrashGuard {
explicit D3D9VideoCrashGuard(dom::ContentParent* aContentParent = nullptr);
protected:
- bool UpdateEnvironment() override;
void LogCrashRecovery() override;
void LogFeatureDisabled() override;
};
@@ -154,7 +162,6 @@ class D3D11VideoCrashGuard final : public DriverCrashGuard {
explicit D3D11VideoCrashGuard(dom::ContentParent* aContentParent = nullptr);
protected:
- bool UpdateEnvironment() override;
void LogCrashRecovery() override;
void LogFeatureDisabled() override;
};
@@ -170,6 +177,15 @@ class GLContextCrashGuard final : public DriverCrashGuard {
void LogFeatureDisabled() override;
};
+class WMFVPXVideoCrashGuard final : public DriverCrashGuard {
+ public:
+ explicit WMFVPXVideoCrashGuard(dom::ContentParent* aContentParent = nullptr);
+
+ protected:
+ void LogCrashRecovery() override;
+ void LogFeatureDisabled() override;
+};
+
} // namespace gfx
} // namespace mozilla
diff --git a/gfx/thebes/gfxPrefs.h b/gfx/thebes/gfxPrefs.h
index b2e0946..f6ede81 100644
--- a/gfx/thebes/gfxPrefs.h
+++ b/gfx/thebes/gfxPrefs.h
@@ -710,6 +710,7 @@ class gfxPrefs final {
DECL_GFX_PREF(Live, "media.wmf.amd.vp9.enabled", PDMWMFAMDVP9DecoderEnabled, bool, false);
DECL_GFX_PREF(Live, "media.wmf.amd.highres.enabled", PDMWMFAMDHighResEnabled, bool, true);
DECL_GFX_PREF(Live, "media.wmf.allow-unsupported-resolutions", PDMWMFAllowUnsupportedResolutions, bool, false);
+ DECL_GFX_PREF(Once, "media.wmf.vp9.enabled", PDMWMFVP9DecoderEnabled, bool, true);
#endif
// These affect how line scrolls from wheel events will be accelerated.
diff --git a/gfx/vr/ipc/VRManagerParent.cpp b/gfx/vr/ipc/VRManagerParent.cpp
index e848484..deb25cd 100644
--- a/gfx/vr/ipc/VRManagerParent.cpp
+++ b/gfx/vr/ipc/VRManagerParent.cpp
@@ -73,6 +73,9 @@ void VRManagerParent::UnregisterFromManager() {
/* static */ bool VRManagerParent::CreateForContent(
Endpoint<PVRManagerParent>&& aEndpoint) {
MessageLoop* loop = VRListenerThreadHolder::Loop();
+ if (!loop) {
+ return false;
+ }
RefPtr<VRManagerParent> vmp = new VRManagerParent(aEndpoint.OtherPid(), true);
loop->PostTask(NewRunnableMethod<Endpoint<PVRManagerParent>&&>(
diff --git a/intl/icu/GIT-INFO b/intl/icu/GIT-INFO
new file mode 100644
index 0000000..263663f
--- /dev/null
+++ b/intl/icu/GIT-INFO
@@ -0,0 +1,5 @@
+commit dcae2a648060dce170fc47f37dbe40e1ec9db394
+Author: yumaoka <y.umaoka@gmail.com>
+Date: Tue Apr 9 23:29:57 2019 -0400
+
+ ICU-20536 ICU 60.3 release tasks
diff --git a/intl/icu/source/common/unicode/uvernum.h b/intl/icu/source/common/unicode/uvernum.h
index d905a0f..8a72f95 100644
--- a/intl/icu/source/common/unicode/uvernum.h
+++ b/intl/icu/source/common/unicode/uvernum.h
@@ -64,7 +64,7 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.6
*/
-#define U_ICU_VERSION_MINOR_NUM 2
+#define U_ICU_VERSION_MINOR_NUM 3
/** The current ICU patchlevel version as an integer.
* This value will change in the subsequent releases of ICU
@@ -119,7 +119,7 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.4
*/
-#define U_ICU_VERSION "60.2"
+#define U_ICU_VERSION "60.3"
/** The current ICU library major/minor version as a string without dots, for library name suffixes.
* This value will change in the subsequent releases of ICU
@@ -131,7 +131,7 @@
/** Data version in ICU4C.
* @internal ICU 4.4 Internal Use Only
**/
-#define U_ICU_DATA_VERSION "60.2"
+#define U_ICU_DATA_VERSION "60.3"
#endif /* U_HIDE_INTERNAL_API */
/*===========================================================================
diff --git a/intl/icu/source/common/wintz.cpp b/intl/icu/source/common/wintz.cpp
index 10e69ca..3aaa36a 100644
--- a/intl/icu/source/common/wintz.cpp
+++ b/intl/icu/source/common/wintz.cpp
@@ -49,7 +49,7 @@ typedef struct
/**
* Various registry keys and key fragments.
*/
-static const char CURRENT_ZONE_REGKEY[] = "SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation\\";
+static const wchar_t CURRENT_ZONE_REGKEY[] = L"SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation\\";
static const char STANDARD_TIME_REGKEY[] = " Standard Time";
static const char TZI_REGKEY[] = "TZI";
static const char STD_REGKEY[] = "Std";
@@ -121,27 +121,39 @@ static LONG getSTDName(const char *winid, char *regStdName, int32_t length)
return result;
}
-static LONG getTZKeyName(char* tzKeyName, int32_t length)
+static LONG getTZKeyName(char* tzKeyName, int32_t tzKeyNamelength)
{
HKEY hkey;
LONG result = FALSE;
- DWORD cbData = length;
+ WCHAR timeZoneKeyNameData[128];
+ DWORD timeZoneKeyNameLength = static_cast<DWORD>(sizeof(timeZoneKeyNameData));
- if(ERROR_SUCCESS == RegOpenKeyExA(
+ if(ERROR_SUCCESS == RegOpenKeyExW(
HKEY_LOCAL_MACHINE,
CURRENT_ZONE_REGKEY,
0,
KEY_QUERY_VALUE,
&hkey))
{
- result = RegQueryValueExA(
+ if (ERROR_SUCCESS == RegQueryValueExW(
hkey,
- "TimeZoneKeyName",
+ L"TimeZoneKeyName",
NULL,
NULL,
- (LPBYTE)tzKeyName,
- &cbData);
+ (LPBYTE)timeZoneKeyNameData,
+ &timeZoneKeyNameLength))
+ {
+ // Ensure null termination.
+ timeZoneKeyNameData[UPRV_LENGTHOF(timeZoneKeyNameData) - 1] = L'\0';
+ // Convert the UTF-16 string to UTF-8.
+ UErrorCode status = U_ZERO_ERROR;
+ u_strToUTF8(tzKeyName, tzKeyNamelength, NULL, reinterpret_cast<const UChar *>(timeZoneKeyNameData), -1, &status);
+ if (U_ZERO_ERROR == status)
+ {
+ result = ERROR_SUCCESS;
+ }
+ }
RegCloseKey(hkey);
}
diff --git a/intl/icu/source/data/locales/ar.txt b/intl/icu/source/data/locales/ar.txt
index aafe88a..af41175 100644
--- a/intl/icu/source/data/locales/ar.txt
+++ b/intl/icu/source/data/locales/ar.txt
@@ -1634,6 +1634,7 @@ ar{
"تيشو",
"شووا",
"هيسي",
+ "ريوا",
}
}
}
diff --git a/intl/icu/source/data/locales/ast.txt b/intl/icu/source/data/locales/ast.txt
index d9d5d1e..355dced 100644
--- a/intl/icu/source/data/locales/ast.txt
+++ b/intl/icu/source/data/locales/ast.txt
@@ -2304,6 +2304,7 @@ ast{
"Taishō",
"e. Shōwa",
"Heisei",
+ "Reiwa",
}
narrow{
"Taika",
@@ -2542,6 +2543,7 @@ ast{
"T",
"S",
"H",
+ "R",
}
wide{
"Taika (645–650)",
@@ -2780,6 +2782,7 @@ ast{
"Taishō",
"era Shōwa",
"Heisei",
+ "Reiwa",
}
}
intervalFormats{
diff --git a/intl/icu/source/data/locales/bs_Cyrl.txt b/intl/icu/source/data/locales/bs_Cyrl.txt
index 1c6eeb3..7d2533c 100644
--- a/intl/icu/source/data/locales/bs_Cyrl.txt
+++ b/intl/icu/source/data/locales/bs_Cyrl.txt
@@ -1030,6 +1030,7 @@ bs_Cyrl{
"Таишо",
"Шова",
"Хаисеи",
+ "Реива",
}
}
}
diff --git a/intl/icu/source/data/locales/cs.txt b/intl/icu/source/data/locales/cs.txt
index 6fc8684..08b3df4 100644
--- a/intl/icu/source/data/locales/cs.txt
+++ b/intl/icu/source/data/locales/cs.txt
@@ -3697,6 +3697,7 @@ cs{
"Taishō",
"Shōwa",
"Heisei",
+ "Reiwa",
}
narrow{
"Taika (645–650)",
@@ -3935,6 +3936,7 @@ cs{
"T",
"S",
"H",
+ "R",
}
wide{
"Taika (645–650)",
@@ -4173,6 +4175,7 @@ cs{
"Taishō",
"Shōwa",
"Heisei",
+ "Reiwa",
}
}
intervalFormats{
diff --git a/intl/icu/source/data/locales/de.txt b/intl/icu/source/data/locales/de.txt
index efd2206..1e12628 100644
--- a/intl/icu/source/data/locales/de.txt
+++ b/intl/icu/source/data/locales/de.txt
@@ -1601,6 +1601,7 @@ de{
"Taishō",
"Shōwa",
"Heisei",
+ "Reiwa",
}
}
}
diff --git a/intl/icu/source/data/locales/he.txt b/intl/icu/source/data/locales/he.txt
index 427dd79..8d5961a 100644
--- a/intl/icu/source/data/locales/he.txt
+++ b/intl/icu/source/data/locales/he.txt
@@ -1837,6 +1837,7 @@ he{
"Taishō",
"Shōwa",
"Heisei",
+ "Reiwa",
}
}
}
diff --git a/intl/icu/source/data/locales/hi.txt b/intl/icu/source/data/locales/hi.txt
index 9af2861..f40f952 100644
--- a/intl/icu/source/data/locales/hi.txt
+++ b/intl/icu/source/data/locales/hi.txt
@@ -1239,6 +1239,7 @@ hi{
"ताईशो",
"शोवा",
"हेईसेई",
+ "रेइवा",
}
}
}
diff --git a/intl/icu/source/data/locales/hr.txt b/intl/icu/source/data/locales/hr.txt
index 34322a8..044901e 100644
--- a/intl/icu/source/data/locales/hr.txt
+++ b/intl/icu/source/data/locales/hr.txt
@@ -1567,6 +1567,7 @@ hr{
"Taishō",
"Shōwa",
"Heisei",
+ "Reiwa",
}
}
}
diff --git a/intl/icu/source/data/locales/id.txt b/intl/icu/source/data/locales/id.txt
index ac9eb42..9bc40be 100644
--- a/intl/icu/source/data/locales/id.txt
+++ b/intl/icu/source/data/locales/id.txt
@@ -2217,6 +2217,7 @@ id{
"Taishō",
"Shōwa",
"Heisei",
+ "Reiwa",
}
}
}
diff --git a/intl/icu/source/data/locales/ja.txt b/intl/icu/source/data/locales/ja.txt
index ab8c0ab..59a8849 100644
--- a/intl/icu/source/data/locales/ja.txt
+++ b/intl/icu/source/data/locales/ja.txt
@@ -2464,6 +2464,7 @@ ja{
"大正",
"昭和",
"平成",
+ "令和",
}
narrow{
"大化",
@@ -2702,6 +2703,7 @@ ja{
"T",
"S",
"H",
+ "R",
}
}
}
diff --git a/intl/icu/source/data/locales/ko.txt b/intl/icu/source/data/locales/ko.txt
index df9f96e..98234a8 100644
--- a/intl/icu/source/data/locales/ko.txt
+++ b/intl/icu/source/data/locales/ko.txt
@@ -1909,6 +1909,7 @@ ko{
"다이쇼",
"쇼와",
"헤이세이",
+ "레이와",
}
}
}
diff --git a/intl/icu/source/data/locales/lo.txt b/intl/icu/source/data/locales/lo.txt
index cf70906..5f34d1a 100644
--- a/intl/icu/source/data/locales/lo.txt
+++ b/intl/icu/source/data/locales/lo.txt
@@ -1845,6 +1845,7 @@ lo{
"ໄຕໂຊ",
"ໂຊວາ",
"ຮີຊີ",
+ "Reiwa",
}
}
}
diff --git a/intl/icu/source/data/locales/lt.txt b/intl/icu/source/data/locales/lt.txt
index 88f50bf..2846048 100644
--- a/intl/icu/source/data/locales/lt.txt
+++ b/intl/icu/source/data/locales/lt.txt
@@ -2466,6 +2466,7 @@ lt{
"Taišo",
"Šova",
"Heisei",
+ "Reiwa",
}
}
}
diff --git a/intl/icu/source/data/locales/nb.txt b/intl/icu/source/data/locales/nb.txt
index d3a0037..3a20f9b 100644
--- a/intl/icu/source/data/locales/nb.txt
+++ b/intl/icu/source/data/locales/nb.txt
@@ -5483,6 +5483,7 @@ nb{
"Taishō",
"Shōwa",
"Heisei",
+ "Reiwa",
}
narrow{
"Taika (645–650)",
@@ -5721,6 +5722,7 @@ nb{
"T",
"S",
"H",
+ "R",
}
wide{
"Taika (645–650)",
@@ -5959,6 +5961,7 @@ nb{
"Taishō",
"Shōwa",
"Heisei",
+ "Reiwa",
}
}
intervalFormats{
diff --git a/intl/icu/source/data/locales/nl.txt b/intl/icu/source/data/locales/nl.txt
index 0430a50..378da5b 100644
--- a/intl/icu/source/data/locales/nl.txt
+++ b/intl/icu/source/data/locales/nl.txt
@@ -4894,6 +4894,7 @@ nl{
"Taishō",
"Shōwa",
"Heisei",
+ "Reiwa",
}
narrow{
"Taika (645–650)",
@@ -5132,6 +5133,7 @@ nl{
"T",
"S",
"H",
+ "R",
}
wide{
"Taika (645–650)",
@@ -5370,6 +5372,7 @@ nl{
"Taishō",
"Shōwa",
"Heisei",
+ "Reiwa",
}
}
}
diff --git a/intl/icu/source/data/locales/root.txt b/intl/icu/source/data/locales/root.txt
index e419ce9..8dbbee1 100644
--- a/intl/icu/source/data/locales/root.txt
+++ b/intl/icu/source/data/locales/root.txt
@@ -1713,6 +1713,7 @@ root{
"Taishō",
"Shōwa",
"Heisei",
+ "Reiwa",
}
narrow{
"Taika (645–650)",
@@ -1951,6 +1952,7 @@ root{
"T",
"S",
"H",
+ "R",
}
wide:alias{"/LOCALE/calendar/japanese/eras/abbreviated"}
}
diff --git a/intl/icu/source/data/locales/ru.txt b/intl/icu/source/data/locales/ru.txt
index 3fdd356..f2bbed9 100644
--- a/intl/icu/source/data/locales/ru.txt
+++ b/intl/icu/source/data/locales/ru.txt
@@ -1837,6 +1837,7 @@ ru{
"Эпоха Тайсьо",
"Сьова",
"Эпоха Хэйсэй",
+ "Рэйва",
}
}
}
diff --git a/intl/icu/source/data/locales/sr.txt b/intl/icu/source/data/locales/sr.txt
index 821d13a..860c491 100644
--- a/intl/icu/source/data/locales/sr.txt
+++ b/intl/icu/source/data/locales/sr.txt
@@ -1246,6 +1246,7 @@ sr{
"Таишо",
"Шова",
"Хаисеи",
+ "Реива",
}
}
}
diff --git a/intl/icu/source/data/locales/sr_Latn.txt b/intl/icu/source/data/locales/sr_Latn.txt
index 57a1279..8bcc68c 100644
--- a/intl/icu/source/data/locales/sr_Latn.txt
+++ b/intl/icu/source/data/locales/sr_Latn.txt
@@ -1247,6 +1247,7 @@ sr_Latn{
"Taišo",
"Šova",
"Haisei",
+ "Reiva",
}
}
}
diff --git a/intl/icu/source/data/locales/sv.txt b/intl/icu/source/data/locales/sv.txt
index 01debf9..beb77f4 100644
--- a/intl/icu/source/data/locales/sv.txt
+++ b/intl/icu/source/data/locales/sv.txt
@@ -1630,6 +1630,7 @@ sv{
"Taishō",
"Shōwa",
"Heisei",
+ "Reiwa",
}
}
}
diff --git a/intl/icu/source/data/locales/th.txt b/intl/icu/source/data/locales/th.txt
index 4794938..19add19 100644
--- a/intl/icu/source/data/locales/th.txt
+++ b/intl/icu/source/data/locales/th.txt
@@ -2332,6 +2332,7 @@ th{
"ทะอิโช",
"โชวะ",
"เฮเซ",
+ "เรวะ",
}
}
}
diff --git a/intl/icu/source/data/locales/yue.txt b/intl/icu/source/data/locales/yue.txt
index 74dd462..8d14665 100644
--- a/intl/icu/source/data/locales/yue.txt
+++ b/intl/icu/source/data/locales/yue.txt
@@ -2394,6 +2394,7 @@ yue{
"大正",
"昭和",
"平成",
+ "令和",
}
}
}
diff --git a/intl/icu/source/data/locales/yue_Hans.txt b/intl/icu/source/data/locales/yue_Hans.txt
index b087983..97b6215 100644
--- a/intl/icu/source/data/locales/yue_Hans.txt
+++ b/intl/icu/source/data/locales/yue_Hans.txt
@@ -2392,6 +2392,7 @@ yue_Hans{
"大正",
"昭和",
"平成",
+ "令和",
}
}
}
diff --git a/intl/icu/source/data/locales/zh.txt b/intl/icu/source/data/locales/zh.txt
index 6e8013b..f1aeca4 100644
--- a/intl/icu/source/data/locales/zh.txt
+++ b/intl/icu/source/data/locales/zh.txt
@@ -3403,6 +3403,7 @@ zh{
"大正",
"昭和",
"平成",
+ "令和",
}
narrow{
"大化(645–650)",
@@ -3641,6 +3642,7 @@ zh{
"T",
"S",
"H",
+ "R",
}
wide{
"大化 (645–650)",
@@ -3879,6 +3881,7 @@ zh{
"大正",
"昭和",
"平成",
+ "令和",
}
}
}
diff --git a/intl/icu/source/data/locales/zh_Hant.txt b/intl/icu/source/data/locales/zh_Hant.txt
index 5ff361e..f2a61ce 100644
--- a/intl/icu/source/data/locales/zh_Hant.txt
+++ b/intl/icu/source/data/locales/zh_Hant.txt
@@ -5737,6 +5737,7 @@ zh_Hant{
"大正",
"昭和",
"平成",
+ "令和",
}
narrow{
"大化",
@@ -5975,6 +5976,7 @@ zh_Hant{
"大正",
"昭和",
"平成",
+ "令和",
}
wide{
"大化",
@@ -6213,6 +6215,7 @@ zh_Hant{
"大正",
"昭和",
"平成",
+ "令和",
}
}
intervalFormats{
diff --git a/intl/icu/source/data/misc/icuver.txt b/intl/icu/source/data/misc/icuver.txt
index 1938d4f..add8672 100644
--- a/intl/icu/source/data/misc/icuver.txt
+++ b/intl/icu/source/data/misc/icuver.txt
@@ -8,6 +8,6 @@
// ***************************************************************************
icuver:table(nofallback){
- DataVersion { "59.1.0.0" }
- ICUVersion { "59.1.0.0" }
+ DataVersion { "60.3.0.0" }
+ ICUVersion { "60.3.0.0" }
}
diff --git a/intl/icu/source/data/misc/metaZones.txt b/intl/icu/source/data/misc/metaZones.txt
index e90883d..d6b0020 100644..100755
--- a/intl/icu/source/data/misc/metaZones.txt
+++ b/intl/icu/source/data/misc/metaZones.txt
@@ -131,11 +131,11 @@ metaZones:table(nofallback){
001{"America/Halifax"}
AG{"America/Antigua"}
AI{"America/Anguilla"}
- AN{"America/Curacao"}
AW{"America/Aruba"}
BB{"America/Barbados"}
BM{"Atlantic/Bermuda"}
BQ{"America/Kralendijk"}
+ CW{"America/Curacao"}
DM{"America/Dominica"}
GD{"America/Grenada"}
GL{"America/Thule"}
@@ -344,7 +344,6 @@ metaZones:table(nofallback){
SH{"Atlantic/St_Helena"}
SL{"Africa/Freetown"}
SN{"Africa/Dakar"}
- ST{"Africa/Sao_Tome"}
TG{"Africa/Lome"}
}
Galapagos{
@@ -814,7 +813,7 @@ metaZones:table(nofallback){
{
"Europe_Western",
"1985-12-31 23:00",
- "9999-12-31 23:59",
+ "2018-10-28 02:00",
}
}
"Africa:Ceuta"{
@@ -863,7 +862,7 @@ metaZones:table(nofallback){
{
"Europe_Western",
"1976-04-14 01:00",
- "9999-12-31 23:59",
+ "2018-10-28 02:00",
}
}
"Africa:Freetown"{
@@ -1030,6 +1029,18 @@ metaZones:table(nofallback){
"Africa:Sao_Tome"{
{
"GMT",
+ "1970-01-01 00:00",
+ "2018-01-01 01:00",
+ }
+ {
+ "Africa_Western",
+ "2018-01-01 01:00",
+ "2019-01-01 01:00",
+ }
+ {
+ "GMT",
+ "2019-01-01 01:00",
+ "9999-12-31 23:59",
}
}
"Africa:Tripoli"{
@@ -1088,11 +1099,11 @@ metaZones:table(nofallback){
{
"Africa_Western",
"1994-03-20 22:00",
- "2017-09-03 01:00",
+ "2017-10-23 22:00",
}
{
"Africa_Central",
- "2017-09-03 01:00",
+ "2017-10-23 22:00",
"9999-12-31 23:59",
}
}
@@ -2070,6 +2081,16 @@ metaZones:table(nofallback){
{
"Alaska",
"2015-11-01 10:00",
+ "2018-11-04 10:00",
+ }
+ {
+ "America_Pacific",
+ "2018-11-04 10:00",
+ "2019-01-20 10:00",
+ }
+ {
+ "Alaska",
+ "2019-01-20 10:00",
"9999-12-31 23:59",
}
}
@@ -2553,6 +2574,11 @@ metaZones:table(nofallback){
{
"Casey",
"2016-10-21 16:00",
+ "2018-03-10 17:00",
+ }
+ {
+ "Australia_Western",
+ "2018-03-10 17:00",
"9999-12-31 23:59",
}
}
@@ -3121,6 +3147,11 @@ metaZones:table(nofallback){
{
"Pyongyang",
"2015-08-14 15:00",
+ "2018-05-04 15:00",
+ }
+ {
+ "Korea",
+ "2018-05-04 15:00",
"9999-12-31 23:59",
}
}
@@ -3136,6 +3167,13 @@ metaZones:table(nofallback){
"9999-12-31 23:59",
}
}
+ "Asia:Qostanay"{
+ {
+ "Kazakhstan_Eastern",
+ "2004-10-30 21:00",
+ "9999-12-31 23:59",
+ }
+ }
"Asia:Qyzylorda"{
{
"Kizilorda",
@@ -3150,6 +3188,11 @@ metaZones:table(nofallback){
{
"Kazakhstan_Eastern",
"2004-10-30 21:00",
+ "2018-12-20 18:00",
+ }
+ {
+ "Kazakhstan_Western",
+ "2018-12-20 18:00",
"9999-12-31 23:59",
}
}
@@ -3976,6 +4019,11 @@ metaZones:table(nofallback){
{
"Moscow",
"1992-03-28 22:00",
+ "2018-10-27 23:00",
+ }
+ {
+ "Volgograd",
+ "2018-10-27 23:00",
"9999-12-31 23:59",
}
}
@@ -4195,11 +4243,11 @@ metaZones:table(nofallback){
{
"Kwajalein",
"1970-01-01 00:00",
- "1993-08-20 12:00",
+ "1993-08-21 12:00",
}
{
"Marshall_Islands",
- "1993-08-20 12:00",
+ "1993-08-21 12:00",
"9999-12-31 23:59",
}
}
diff --git a/intl/icu/source/data/misc/timezoneTypes.txt b/intl/icu/source/data/misc/timezoneTypes.txt
index 92be78c..4bcf727 100644..100755
--- a/intl/icu/source/data/misc/timezoneTypes.txt
+++ b/intl/icu/source/data/misc/timezoneTypes.txt
@@ -416,6 +416,7 @@ timezoneTypes:table(nofallback){
"Asia:Pontianak"{"idpnk"}
"Asia:Pyongyang"{"kpfnj"}
"Asia:Qatar"{"qadoh"}
+ "Asia:Qostanay"{"kzksn"}
"Asia:Qyzylorda"{"kzkzo"}
"Asia:Rangoon"{"mmrgn"}
"Asia:Riyadh"{"saruh"}
diff --git a/intl/icu/source/data/misc/windowsZones.txt b/intl/icu/source/data/misc/windowsZones.txt
index ec393d9..e29b769 100644..100755
--- a/intl/icu/source/data/misc/windowsZones.txt
+++ b/intl/icu/source/data/misc/windowsZones.txt
@@ -17,8 +17,8 @@ windowsZones:table(nofallback){
"Alaskan Standard Time"{
001{"America/Anchorage"}
US{
- "America/Anchorage America/Juneau America/Metlakatla America/Nome Ame"
- "rica/Sitka America/Yakutat"
+ "America/Anchorage America/Juneau America/Nome America/Sitka America/"
+ "Yakutat"
}
}
"Aleutian Standard Time"{
@@ -130,7 +130,7 @@ windowsZones:table(nofallback){
CN{"Asia/Urumqi"}
IO{"Indian/Chagos"}
KG{"Asia/Bishkek"}
- KZ{"Asia/Almaty Asia/Qyzylorda"}
+ KZ{"Asia/Almaty Asia/Qostanay"}
ZZ{"Etc/GMT-6"}
}
"Central Brazilian Standard Time"{
@@ -156,7 +156,6 @@ windowsZones:table(nofallback){
}
"Central Pacific Standard Time"{
001{"Pacific/Guadalcanal"}
- AQ{"Antarctica/Casey"}
AU{"Antarctica/Macquarie"}
FM{"Pacific/Ponape Pacific/Kosrae"}
NC{"Pacific/Noumea"}
@@ -212,7 +211,6 @@ windowsZones:table(nofallback){
KE{"Africa/Nairobi"}
KM{"Indian/Comoro"}
MG{"Indian/Antananarivo"}
- SD{"Africa/Khartoum"}
SO{"Africa/Mogadishu"}
SS{"Africa/Juba"}
TZ{"Africa/Dar_es_Salaam"}
@@ -289,7 +287,7 @@ windowsZones:table(nofallback){
}
"GTB Standard Time"{
001{"Europe/Bucharest"}
- CY{"Asia/Nicosia"}
+ CY{"Asia/Famagusta Asia/Nicosia"}
GR{"Europe/Athens"}
RO{"Europe/Bucharest"}
}
@@ -316,7 +314,6 @@ windowsZones:table(nofallback){
SH{"Atlantic/St_Helena"}
SL{"Africa/Freetown"}
SN{"Africa/Dakar"}
- ST{"Africa/Sao_Tome"}
TG{"Africa/Lome"}
}
"Haiti Standard Time"{
@@ -471,7 +468,7 @@ windowsZones:table(nofallback){
"Pacific Standard Time"{
001{"America/Los_Angeles"}
CA{"America/Vancouver America/Dawson America/Whitehorse"}
- US{"America/Los_Angeles"}
+ US{"America/Los_Angeles America/Metlakatla"}
ZZ{"PST8PDT"}
}
"Pakistan Standard Time"{
@@ -583,6 +580,10 @@ windowsZones:table(nofallback){
001{"Pacific/Apia"}
WS{"Pacific/Apia"}
}
+ "Sao Tome Standard Time"{
+ 001{"Africa/Sao_Tome"}
+ ST{"Africa/Sao_Tome"}
+ }
"Saratov Standard Time"{
001{"Europe/Saratov"}
RU{"Europe/Saratov"}
@@ -615,6 +616,10 @@ windowsZones:table(nofallback){
001{"Asia/Colombo"}
LK{"Asia/Colombo"}
}
+ "Sudan Standard Time"{
+ 001{"Africa/Khartoum"}
+ SD{"Africa/Khartoum"}
+ }
"Syria Standard Time"{
001{"Asia/Damascus"}
SY{"Asia/Damascus"}
@@ -653,7 +658,6 @@ windowsZones:table(nofallback){
}
"Turkey Standard Time"{
001{"Europe/Istanbul"}
- CY{"Asia/Famagusta"}
TR{"Europe/Istanbul"}
}
"Turks And Caicos Standard Time"{
@@ -729,6 +733,7 @@ windowsZones:table(nofallback){
}
"W. Australia Standard Time"{
001{"Australia/Perth"}
+ AQ{"Antarctica/Casey"}
AU{"Australia/Perth"}
}
"W. Central Africa Standard Time"{
@@ -774,7 +779,7 @@ windowsZones:table(nofallback){
"West Asia Standard Time"{
001{"Asia/Tashkent"}
AQ{"Antarctica/Mawson"}
- KZ{"Asia/Oral Asia/Aqtau Asia/Aqtobe Asia/Atyrau"}
+ KZ{"Asia/Oral Asia/Aqtau Asia/Aqtobe Asia/Atyrau Asia/Qyzylorda"}
MV{"Indian/Maldives"}
TF{"Indian/Kerguelen"}
TJ{"Asia/Dushanbe"}
diff --git a/intl/icu/source/data/misc/zoneinfo64.txt b/intl/icu/source/data/misc/zoneinfo64.txt
index 154470b..e649434 100644..100755
--- a/intl/icu/source/data/misc/zoneinfo64.txt
+++ b/intl/icu/source/data/misc/zoneinfo64.txt
@@ -3,20 +3,20 @@
// License & terms of use: http://www.unicode.org/copyright.html#License
//---------------------------------------------------------
// Build tool: tz2icu
-// Build date: Tue Oct 24 17:35:27 2017
+// Build date: Tue Mar 26 16:57:59 2019
// tz database: ftp://ftp.iana.org/tz/
-// tz version: 2017c
-// ICU version: 60.1
+// tz version: 2019a
+// ICU version: 64.1
//---------------------------------------------------------
// >> !!! >> THIS IS A MACHINE-GENERATED FILE << !!! <<
// >> !!! >>> DO NOT EDIT <<< !!! <<
//---------------------------------------------------------
zoneinfo64:table(nofallback) {
- TZVersion { "2017c" }
+ TZVersion { "2019a" }
Zones:array {
- /* ACT */ :int { 354 } //Z#0
- /* AET */ :int { 366 } //Z#1
+ /* ACT */ :int { 355 } //Z#0
+ /* AET */ :int { 367 } //Z#1
/* AGT */ :int { 64 } //Z#2
/* ART */ :int { 18 } //Z#3
/* AST */ :int { 60 } //Z#4
@@ -24,7 +24,7 @@ zoneinfo64:table(nofallback) {
trans:intvector { -1830383032 }
typeOffsets:intvector { -968, 0, 0, 0 }
typeMap:bin { "01" }
- links:intvector { 5, 11, 13, 21, 22, 27, 38, 51, 52, 54, 55, 346 }
+ links:intvector { 5, 11, 13, 21, 22, 27, 38, 51, 52, 55, 347 }
} //Z#5
/* Africa/Accra */ :table {
trans:intvector { -1640995148, -1556841600, -1546388400, -1525305600, -1514852400, -1493769600, -1483316400, -1462233600, -1451780400, -1430611200, -1420158000, -1399075200, -1388622000, -1367539200, -1357086000, -1336003200, -1325550000, -1304380800, -1293927600, -1272844800, -1262391600, -1241308800, -1230855600, -1209772800, -1199319600, -1178150400, -1167697200, -1146614400, -1136161200, -1115078400, -1104625200, -1083542400, -1073089200, -1051920000, -1041466800, -1020384000, -1009930800, -988848000, -978394800, -957312000, -946858800, -925689600, -915236400, -894153600, -883700400, -862617600, -852164400 }
@@ -44,7 +44,7 @@ zoneinfo64:table(nofallback) {
/* Africa/Bangui */ :int { 36 } //Z#12
/* Africa/Banjul */ :int { 5 } //Z#13
/* Africa/Bissau */ :table {
- trans:intvector { -1830380260, 157770000 }
+ trans:intvector { -1830380400, 157770000 }
typeOffsets:intvector { -3740, 0, -3600, 0, 0, 0 }
typeMap:bin { "0102" }
} //Z#14
@@ -56,16 +56,12 @@ zoneinfo64:table(nofallback) {
trans:intvector { -929844000, -923108400, -906170400, -892868400, -875844000, -857790000, -844308000, -825822000, -812685600, -794199600, -779853600, -762663600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -71107200, -52707600, -39484800, -21171600, -7948800, 10364400, 23587200, 41900400, 55123200, 73522800, 86745600, 105058800, 118281600, 136594800, 149817600, 168130800, 181353600, 199753200, 212976000, 231289200, 244512000, 262825200, 276048000, 294361200, 307584000, 325983600, 339206400, 357519600, 370742400, 396399600, 402278400, 426812400, 433814400, 452214000, 465436800, 483750000, 496972800, 515286000, 528508800, 546822000, 560044800, 578444400, 591667200, 610412400, 623203200, 641516400, 654739200, 673052400, 686275200, 704674800, 717897600, 736210800, 749433600, 767746800, 780969600, 799020000, 812322000, 830469600, 843771600, 861919200, 875221200, 893368800, 906670800, 925423200, 938725200, 956872800, 970174800, 988322400, 1001624400, 1019772000, 1033074000, 1051221600, 1064523600, 1083276000, 1096578000, 1114725600, 1128027600, 1146175200, 1158872400, 1177624800, 1189112400, 1209074400, 1219957200, 1240524000, 1250802000, 1272578400, 1281474000, 1284069600, 1285880400, 1400191200, 1403816400, 1406844000, 1411678800 }
typeOffsets:intvector { 7509, 0, 7200, 0, 7200, 3600 }
typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
- links:intvector { 3, 18, 400 }
+ links:intvector { 3, 18, 401 }
} //Z#18
/* Africa/Casablanca */ :table {
- trans:intvector { -1773012580, -956361600, -950490000, -942019200, -761187600, -617241600, -605149200, -81432000, -71110800, 141264000, 147222000, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 448243200, 504918000, 1212278400, 1220223600, 1243814400, 1250809200, 1272758400, 1281222000, 1301788800, 1312066800, 1335664800, 1342749600, 1345428000, 1348970400, 1367114400, 1373162400, 1376100000, 1382839200, 1396144800, 1403920800, 1406944800, 1414288800, 1427594400, 1434247200, 1437271200, 1445738400, 1459044000, 1465092000, 1468116000, 1477792800, 1490493600, 1495332000, 1498960800, 1509242400, 1521943200, 1526176800, 1529200800, 1540692000, 1553997600, 1557021600, 1560045600, 1572141600, 1585447200, 1587261600, 1590285600, 1603591200, 1616896800, 1618106400, 1621130400, 1635645600, 1651975200, 1667095200, 1682215200, 1698544800, 1713060000, 1729994400, 1743904800, 1761444000, 1774749600, 1792893600, 1806199200, 1824948000, 1837648800, 1856397600, 1869098400, 1887847200, 1901152800, 1919296800, 1932602400, 1950746400, 1964052000, 1982800800, 1995501600, 2014250400, 2026951200, 2045700000, 2058400800, 2077149600, 2090455200, 2107994400, 2121904800, 2138234400 }
- transPost32:intvector { 0, -2141612896, 0, -2122864096 }
+ trans:intvector { -1773012580, -956361600, -950490000, -942019200, -761187600, -617241600, -605149200, -81432000, -71110800, 141264000, 147222000, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 448243200, 504918000, 1212278400, 1220223600, 1243814400, 1250809200, 1272758400, 1281222000, 1301788800, 1312066800, 1335664800, 1342749600, 1345428000, 1348970400, 1367114400, 1373162400, 1376100000, 1382839200, 1396144800, 1403920800, 1406944800, 1414288800, 1427594400, 1434247200, 1437271200, 1445738400, 1459044000, 1465092000, 1468116000, 1477792800, 1490493600, 1495332000, 1498960800, 1509242400, 1521943200, 1526176800, 1529200800, 1557021600, 1560045600, 1587261600, 1590285600, 1618106400, 1621130400, 1648346400, 1651975200, 1679191200, 1682215200, 1710036000, 1713060000, 1740276000, 1743904800, 1771120800, 1774144800, 1801965600, 1804989600, 1832205600, 1835229600, 1863050400, 1866074400, 1893290400, 1896919200, 1924135200, 1927159200, 1954980000, 1958004000, 1985220000, 1988848800, 2016064800, 2019088800, 2046304800, 2049933600, 2077149600, 2080173600, 2107994400, 2111018400, 2138234400, 2141863200 }
typeOffsets:intvector { -1820, 0, 0, 0, 0, 3600, 3600, 0 }
- typeMap:bin { "0102010201020102010201020102010201030102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
- finalRule { "Morocco" }
- finalRaw:int { 0 }
- finalYear:int { 2039 }
+ typeMap:bin { "01020102010201020102010201020102010301020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }
} //Z#19
/* Africa/Ceuta */ :table {
transPre32:intvector { -1, 2117514496 }
@@ -82,13 +78,9 @@ zoneinfo64:table(nofallback) {
/* Africa/Djibouti */ :int { 48 } //Z#24
/* Africa/Douala */ :int { 36 } //Z#25
/* Africa/El_Aaiun */ :table {
- trans:intvector { -1136070432, 198291600, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 1212278400, 1220223600, 1243814400, 1250809200, 1272758400, 1281222000, 1301788800, 1312066800, 1335664800, 1342749600, 1345428000, 1348970400, 1367114400, 1373162400, 1376100000, 1382839200, 1396144800, 1403920800, 1406944800, 1414288800, 1427594400, 1434247200, 1437271200, 1445738400, 1459044000, 1465092000, 1468116000, 1477792800, 1490493600, 1495332000, 1498960800, 1509242400, 1521943200, 1526176800, 1529200800, 1540692000, 1553997600, 1557021600, 1560045600, 1572141600, 1585447200, 1587261600, 1590285600, 1603591200, 1616896800, 1618106400, 1621130400, 1635645600, 1651975200, 1667095200, 1682215200, 1698544800, 1713060000, 1729994400, 1743904800, 1761444000, 1774749600, 1792893600, 1806199200, 1824948000, 1837648800, 1856397600, 1869098400, 1887847200, 1901152800, 1919296800, 1932602400, 1950746400, 1964052000, 1982800800, 1995501600, 2014250400, 2026951200, 2045700000, 2058400800, 2077149600, 2090455200, 2107994400, 2121904800, 2138234400 }
- transPost32:intvector { 0, -2141612896, 0, -2122864096 }
+ trans:intvector { -1136070432, 198291600, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 1212278400, 1220223600, 1243814400, 1250809200, 1272758400, 1281222000, 1301788800, 1312066800, 1335664800, 1342749600, 1345428000, 1348970400, 1367114400, 1373162400, 1376100000, 1382839200, 1396144800, 1403920800, 1406944800, 1414288800, 1427594400, 1434247200, 1437271200, 1445738400, 1459044000, 1465092000, 1468116000, 1477792800, 1490493600, 1495332000, 1498960800, 1509242400, 1521943200, 1526176800, 1529200800, 1557021600, 1560045600, 1587261600, 1590285600, 1618106400, 1621130400, 1648346400, 1651975200, 1679191200, 1682215200, 1710036000, 1713060000, 1740276000, 1743904800, 1771120800, 1774144800, 1801965600, 1804989600, 1832205600, 1835229600, 1863050400, 1866074400, 1893290400, 1896919200, 1924135200, 1927159200, 1954980000, 1958004000, 1985220000, 1988848800, 2016064800, 2019088800, 2046304800, 2049933600, 2077149600, 2080173600, 2107994400, 2111018400, 2138234400, 2141863200 }
typeOffsets:intvector { -3168, 0, -3600, 0, 0, 0, 0, 3600 }
- typeMap:bin { "010203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
- finalRule { "Morocco" }
- finalRaw:int { 0 }
- finalYear:int { 2039 }
+ typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203" }
} //Z#26
/* Africa/Freetown */ :int { 5 } //Z#27
/* Africa/Gaborone */ :int { 43 } //Z#28
@@ -129,7 +121,7 @@ zoneinfo64:table(nofallback) {
trans:intvector { -2109291020 }
typeOffsets:intvector { 7820, 0, 7200, 0 }
typeMap:bin { "01" }
- links:intvector { 15, 17, 28, 29, 34, 40, 41, 43, 377 }
+ links:intvector { 15, 17, 28, 29, 34, 40, 41, 43, 378 }
} //Z#43
/* Africa/Maseru */ :int { 30 } //Z#44
/* Africa/Mbabane */ :int { 30 } //Z#45
@@ -143,7 +135,7 @@ zoneinfo64:table(nofallback) {
trans:intvector { -1309746436, -1262314800, -946780200, -315629100 }
typeOffsets:intvector { 8836, 0, 9000, 0, 9900, 0, 10800, 0 }
typeMap:bin { "03010203" }
- links:intvector { 7, 9, 10, 23, 24, 32, 46, 48, 395, 514, 518, 523 }
+ links:intvector { 7, 9, 10, 23, 24, 32, 46, 48, 396, 515, 519, 524 }
} //Z#48
/* Africa/Ndjamena */ :table {
trans:intvector { -1830387612, 308703600, 321314400 }
@@ -154,13 +146,18 @@ zoneinfo64:table(nofallback) {
/* Africa/Nouakchott */ :int { 5 } //Z#51
/* Africa/Ouagadougou */ :int { 5 } //Z#52
/* Africa/Porto-Novo */ :int { 36 } //Z#53
- /* Africa/Sao_Tome */ :int { 5 } //Z#54
+ /* Africa/Sao_Tome */ :table {
+ transPre32:intvector { -1, 1581055280 }
+ trans:intvector { -1830384000, 1514768400, 1546304400 }
+ typeOffsets:intvector { 1616, 0, -2205, 0, 0, 0, 3600, 0 }
+ typeMap:bin { "01020302" }
+ } //Z#54
/* Africa/Timbuktu */ :int { 5 } //Z#55
/* Africa/Tripoli */ :table {
trans:intvector { -1577926364, -574902000, -568087200, -512175600, -504928800, -449888400, -441856800, -347158800, 378684000, 386463600, 402271200, 417999600, 433807200, 449622000, 465429600, 481590000, 496965600, 512953200, 528674400, 544230000, 560037600, 575852400, 591660000, 607388400, 623196000, 641775600, 844034400, 860108400, 875916000, 1352505600, 1364515200, 1382659200 }
typeOffsets:intvector { 3164, 0, 3600, 0, 3600, 3600, 7200, 0 }
typeMap:bin { "0102010201020103010201020102010201020102010201020103010203010203" }
- links:intvector { 56, 531 }
+ links:intvector { 56, 532 }
} //Z#56
/* Africa/Tunis */ :table {
transPre32:intvector { -1, 1497764852 }
@@ -170,9 +167,9 @@ zoneinfo64:table(nofallback) {
} //Z#57
/* Africa/Windhoek */ :table {
transPre32:intvector { -1, 1836796792 }
- trans:intvector { -2109288600, -860976000, -845254800, 764200800, 778640400, 796780800, 810090000, 828835200, 841539600, 860284800, 873594000, 891734400, 905043600, 923184000, 936493200, 954633600, 967942800, 986083200, 999392400, 1018137600, 1030842000, 1049587200, 1062896400, 1081036800, 1094346000, 1112486400, 1125795600, 1143936000, 1157245200, 1175385600, 1188694800, 1207440000, 1220749200, 1238889600, 1252198800, 1270339200, 1283648400, 1301788800, 1315098000, 1333238400, 1346547600, 1365292800, 1377997200, 1396742400, 1410051600, 1428192000, 1441501200, 1459641600, 1472950800, 1491091200, 1504400400 }
+ trans:intvector { -2109288600, -860976000, -845254800, 764200800, 778640400, 796780800, 810090000, 828835200, 841539600, 860284800, 873594000, 891734400, 905043600, 923184000, 936493200, 954633600, 967942800, 986083200, 999392400, 1018137600, 1030842000, 1049587200, 1062896400, 1081036800, 1094346000, 1112486400, 1125795600, 1143936000, 1157245200, 1175385600, 1188694800, 1207440000, 1220749200, 1238889600, 1252198800, 1270339200, 1283648400, 1301788800, 1315098000, 1333238400, 1346547600, 1365292800, 1377997200, 1396742400, 1410051600, 1428192000, 1441501200, 1459641600, 1472950800, 1491091200, 1504400400, 1508796000 }
typeOffsets:intvector { 4104, 0, 3600, 0, 3600, 3600, 5400, 0, 7200, 0, 7200, 3600 }
- typeMap:bin { "03040504010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020104" }
+ typeMap:bin { "0304050401020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010204" }
} //Z#58
/* America/Adak */ :table {
transPre32:intvector { -1, 1069743569, -1, 2106022494 }
@@ -182,7 +179,7 @@ zoneinfo64:table(nofallback) {
finalRule { "US" }
finalRaw:int { -36000 }
finalYear:int { 2008 }
- links:intvector { 59, 80, 615 }
+ links:intvector { 59, 80, 616 }
} //Z#59
/* America/Anchorage */ :table {
transPre32:intvector { -1, 1069743569, -1, 2106016072 }
@@ -192,7 +189,7 @@ zoneinfo64:table(nofallback) {
finalRule { "US" }
finalRaw:int { -32400 }
finalYear:int { 2008 }
- links:intvector { 4, 60, 614 }
+ links:intvector { 4, 60, 615 }
} //Z#60
/* America/Anguilla */ :int { 186 } //Z#61
/* America/Antigua */ :int { 186 } //Z#62
@@ -358,8 +355,8 @@ zoneinfo64:table(nofallback) {
finalYear:int { 2008 }
} //Z#91
/* America/Campo_Grande */ :table {
- trans:intvector { -1767212492, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 592977600, 602046000, 624427200, 634705200, 656481600, 666759600, 687931200, 697604400, 719985600, 728449200, 750830400, 761713200, 782280000, 793162800, 813729600, 824007600, 844574400, 856062000, 876110400, 888721200, 908078400, 919566000, 938923200, 951620400, 970977600, 982465200, 1003032000, 1013914800, 1036296000, 1045364400, 1066536000, 1076814000, 1099368000, 1108868400, 1129435200, 1140318000, 1162699200, 1172372400, 1192334400, 1203217200, 1224388800, 1234666800, 1255838400, 1266721200, 1287288000, 1298170800, 1318737600, 1330225200, 1350792000, 1361070000, 1382241600, 1392519600, 1413691200, 1424574000, 1445140800, 1456023600, 1476590400, 1487473200, 1508040000, 1518922800, 1540094400, 1550372400, 1571544000, 1581822000, 1602993600, 1613876400, 1634443200, 1645326000, 1665892800, 1677380400, 1697342400, 1708225200, 1729396800, 1739674800, 1760846400, 1771729200, 1792296000, 1803178800, 1823745600, 1834628400, 1855195200, 1866078000, 1887249600, 1897527600, 1918699200, 1928977200, 1950148800, 1960426800, 1981598400, 1992481200, 2013048000, 2024535600, 2044497600, 2055380400, 2076552000, 2086830000, 2108001600, 2118884400, 2139451200 }
- transPost32:intvector { 0, -2144633296, 0, -2124066496 }
+ trans:intvector { -1767212492, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 592977600, 602046000, 624427200, 634705200, 656481600, 666759600, 687931200, 697604400, 719985600, 728449200, 750830400, 761713200, 782280000, 793162800, 813729600, 824007600, 844574400, 856062000, 876110400, 888721200, 908078400, 919566000, 938923200, 951620400, 970977600, 982465200, 1003032000, 1013914800, 1036296000, 1045364400, 1066536000, 1076814000, 1099368000, 1108868400, 1129435200, 1140318000, 1162699200, 1172372400, 1192334400, 1203217200, 1224388800, 1234666800, 1255838400, 1266721200, 1287288000, 1298170800, 1318737600, 1330225200, 1350792000, 1361070000, 1382241600, 1392519600, 1413691200, 1424574000, 1445140800, 1456023600, 1476590400, 1487473200, 1508040000, 1518922800, 1541304000, 1550372400, 1572753600, 1581822000, 1604203200, 1613876400, 1636257600, 1645326000, 1667707200, 1677380400, 1699156800, 1708225200, 1730606400, 1739674800, 1762056000, 1771729200, 1793505600, 1803178800, 1825560000, 1834628400, 1857009600, 1866078000, 1888459200, 1897527600, 1919908800, 1928977200, 1951358400, 1960426800, 1983412800, 1992481200, 2014862400, 2024535600, 2046312000, 2055380400, 2077761600, 2086830000, 2109211200, 2118884400, 2140660800 }
+ transPost32:intvector { 0, -2144633296, 0, -2122252096 }
typeOffsets:intvector { -13108, 0, -14400, 0, -14400, 3600 }
typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }
finalRule { "Brazil" }
@@ -392,7 +389,7 @@ zoneinfo64:table(nofallback) {
finalRule { "US" }
finalRaw:int { -21600 }
finalYear:int { 2008 }
- links:intvector { 98, 380, 617 }
+ links:intvector { 98, 381, 618 }
} //Z#98
/* America/Chihuahua */ :table {
trans:intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, 828864000, 846399600, 860313600, 877849200, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 989139600, 1001836800, 1018170000, 1035705600 }
@@ -416,8 +413,8 @@ zoneinfo64:table(nofallback) {
typeMap:bin { "020102" }
} //Z#103
/* America/Cuiaba */ :table {
- trans:intvector { -1767212140, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 592977600, 602046000, 624427200, 634705200, 656481600, 666759600, 687931200, 697604400, 719985600, 728449200, 750830400, 761713200, 782280000, 793162800, 813729600, 824007600, 844574400, 856062000, 876110400, 888721200, 908078400, 919566000, 938923200, 951620400, 970977600, 982465200, 1003032000, 1013914800, 1036296000, 1045364400, 1099368000, 1108868400, 1129435200, 1140318000, 1162699200, 1172372400, 1192334400, 1203217200, 1224388800, 1234666800, 1255838400, 1266721200, 1287288000, 1298170800, 1318737600, 1330225200, 1350792000, 1361070000, 1382241600, 1392519600, 1413691200, 1424574000, 1445140800, 1456023600, 1476590400, 1487473200, 1508040000, 1518922800, 1540094400, 1550372400, 1571544000, 1581822000, 1602993600, 1613876400, 1634443200, 1645326000, 1665892800, 1677380400, 1697342400, 1708225200, 1729396800, 1739674800, 1760846400, 1771729200, 1792296000, 1803178800, 1823745600, 1834628400, 1855195200, 1866078000, 1887249600, 1897527600, 1918699200, 1928977200, 1950148800, 1960426800, 1981598400, 1992481200, 2013048000, 2024535600, 2044497600, 2055380400, 2076552000, 2086830000, 2108001600, 2118884400, 2139451200 }
- transPost32:intvector { 0, -2144633296, 0, -2124066496 }
+ trans:intvector { -1767212140, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 592977600, 602046000, 624427200, 634705200, 656481600, 666759600, 687931200, 697604400, 719985600, 728449200, 750830400, 761713200, 782280000, 793162800, 813729600, 824007600, 844574400, 856062000, 876110400, 888721200, 908078400, 919566000, 938923200, 951620400, 970977600, 982465200, 1003032000, 1013914800, 1036296000, 1045364400, 1099368000, 1108868400, 1129435200, 1140318000, 1162699200, 1172372400, 1192334400, 1203217200, 1224388800, 1234666800, 1255838400, 1266721200, 1287288000, 1298170800, 1318737600, 1330225200, 1350792000, 1361070000, 1382241600, 1392519600, 1413691200, 1424574000, 1445140800, 1456023600, 1476590400, 1487473200, 1508040000, 1518922800, 1541304000, 1550372400, 1572753600, 1581822000, 1604203200, 1613876400, 1636257600, 1645326000, 1667707200, 1677380400, 1699156800, 1708225200, 1730606400, 1739674800, 1762056000, 1771729200, 1793505600, 1803178800, 1825560000, 1834628400, 1857009600, 1866078000, 1888459200, 1897527600, 1919908800, 1928977200, 1951358400, 1960426800, 1983412800, 1992481200, 2014862400, 2024535600, 2046312000, 2055380400, 2077761600, 2086830000, 2109211200, 2118884400, 2140660800 }
+ transPost32:intvector { 0, -2144633296, 0, -2122252096 }
typeOffsets:intvector { -13460, 0, -14400, 0, -14400, 3600 }
typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }
finalRule { "Brazil" }
@@ -458,7 +455,7 @@ zoneinfo64:table(nofallback) {
finalRule { "US" }
finalRaw:int { -25200 }
finalYear:int { 2008 }
- links:intvector { 109, 204, 543, 623 }
+ links:intvector { 109, 204, 544, 624 }
} //Z#109
/* America/Detroit */ :table {
trans:intvector { -2051202469, -1724083200, -880218000, -765396000, -684349200, -671047200, 104914800, 120636000, 126687600, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }
@@ -467,7 +464,7 @@ zoneinfo64:table(nofallback) {
finalRule { "US" }
finalRaw:int { -18000 }
finalYear:int { 2008 }
- links:intvector { 110, 622 }
+ links:intvector { 110, 623 }
} //Z#110
/* America/Dominica */ :int { 186 } //Z#111
/* America/Edmonton */ :table {
@@ -477,7 +474,7 @@ zoneinfo64:table(nofallback) {
finalRule { "Canada" }
finalRaw:int { -25200 }
finalYear:int { 2008 }
- links:intvector { 112, 387 }
+ links:intvector { 112, 388 }
} //Z#112
/* America/Eirunepe */ :table {
trans:intvector { -1767208832, -1206950400, -1191355200, -1175367600, -1159819200, -633812400, -622062000, -602276400, -591825600, -570740400, -560203200, -539118000, -531345600, -191358000, -184190400, -155156400, -150062400, -128890800, -121118400, -99946800, -89582400, -68410800, -57960000, 499755600, 511243200, 530600400, 540273600, 562136400, 571204800, 750834000, 761716800, 1214283600, 1384056000 }
@@ -529,8 +526,8 @@ zoneinfo64:table(nofallback) {
} //Z#121
/* America/Grand_Turk */ :table {
transPre32:intvector { -1, 1770462768 }
- trans:intvector { -1827687169, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000, 1205046000, 1225605600, 1236495600, 1257055200, 1268550000, 1289109600, 1299999600, 1320559200, 1331449200, 1352008800, 1362898800, 1383458400, 1394348400, 1414908000, 1425798000, 1446357600, 1520751600, 1541311200 }
- typeOffsets:intvector { -17072, 0, -18431, 0, -18000, 0, -18000, 3600, -14400, 0 }
+ trans:intvector { -1827687170, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000, 1205046000, 1225605600, 1236495600, 1257055200, 1268550000, 1289109600, 1299999600, 1320559200, 1331449200, 1352008800, 1362898800, 1383458400, 1394348400, 1414908000, 1425798000, 1446357600, 1520751600, 1541311200 }
+ typeOffsets:intvector { -17072, 0, -18430, 0, -18000, 0, -18000, 3600, -14400, 0 }
typeMap:bin { "010203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203040302" }
finalRule { "US" }
finalRaw:int { -18000 }
@@ -561,7 +558,7 @@ zoneinfo64:table(nofallback) {
finalRule { "Canada" }
finalRaw:int { -14400 }
finalYear:int { 2008 }
- links:intvector { 128, 383 }
+ links:intvector { 128, 384 }
} //Z#128
/* America/Havana */ :table {
transPre32:intvector { -1, 1770465464 }
@@ -571,7 +568,7 @@ zoneinfo64:table(nofallback) {
finalRule { "Cuba" }
finalRaw:int { -18000 }
finalYear:int { 2014 }
- links:intvector { 129, 394 }
+ links:intvector { 129, 395 }
} //Z#129
/* America/Hermosillo */ :table {
trans:intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, -873828000, -661539600, 28800, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400 }
@@ -586,7 +583,7 @@ zoneinfo64:table(nofallback) {
finalRule { "US" }
finalRaw:int { -18000 }
finalYear:int { 2008 }
- links:intvector { 117, 131, 139, 511, 618 }
+ links:intvector { 117, 131, 139, 512, 619 }
} //Z#131
/* America/Indiana/Knox */ :table {
transPre32:intvector { -1, 1577320096 }
@@ -596,7 +593,7 @@ zoneinfo64:table(nofallback) {
finalRule { "US" }
finalRaw:int { -21600 }
finalYear:int { 2008 }
- links:intvector { 132, 147, 621 }
+ links:intvector { 132, 147, 622 }
} //Z#132
/* America/Indiana/Marengo */ :table {
transPre32:intvector { -1, 1577320096 }
@@ -670,10 +667,10 @@ zoneinfo64:table(nofallback) {
finalYear:int { 2008 }
} //Z#141
/* America/Jamaica */ :table {
- trans:intvector { -1827687169, 126687600, 152085600, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600 }
- typeOffsets:intvector { -18431, 0, -18000, 0, -18000, 3600 }
+ trans:intvector { -1827687170, 126687600, 152085600, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600 }
+ typeOffsets:intvector { -18430, 0, -18000, 0, -18000, 3600 }
typeMap:bin { "010201020102010201020102010201020102010201" }
- links:intvector { 142, 528 }
+ links:intvector { 142, 529 }
} //Z#142
/* America/Jujuy */ :int { 68 } //Z#143
/* America/Juneau */ :table {
@@ -725,7 +722,7 @@ zoneinfo64:table(nofallback) {
finalRule { "US" }
finalRaw:int { -28800 }
finalYear:int { 2008 }
- links:intvector { 151, 548, 624, 625 }
+ links:intvector { 151, 549, 625, 626 }
} //Z#151
/* America/Louisville */ :int { 145 } //Z#152
/* America/Lower_Princes */ :int { 105 } //Z#153
@@ -744,7 +741,7 @@ zoneinfo64:table(nofallback) {
trans:intvector { -1767211196, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 750830400, 761713200 }
typeOffsets:intvector { -14404, 0, -14400, 0, -14400, 3600 }
typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201" }
- links:intvector { 156, 376 }
+ links:intvector { 156, 377 }
} //Z#156
/* America/Marigot */ :int { 186 } //Z#157
/* America/Martinique */ :table {
@@ -767,7 +764,7 @@ zoneinfo64:table(nofallback) {
finalRule { "Mexico" }
finalRaw:int { -25200 }
finalYear:int { 2003 }
- links:intvector { 160, 537 }
+ links:intvector { 160, 538 }
} //Z#160
/* America/Mendoza */ :int { 70 } //Z#161
/* America/Menominee */ :table {
@@ -789,12 +786,12 @@ zoneinfo64:table(nofallback) {
} //Z#163
/* America/Metlakatla */ :table {
transPre32:intvector { -1, 1069743569, -1, 2106011674 }
- trans:intvector { -880207200, -765385200, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 152096400, 162381600, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 1446372000, 1457866800, 1478426400 }
+ trans:intvector { -880207200, -765385200, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 152096400, 162381600, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 1446372000, 1457866800, 1478426400, 1489316400, 1509876000, 1520766000, 1541325600, 1547978400, 1552215600, 1572775200 }
typeOffsets:intvector { 54822, 0, -32400, 0, -32400, 3600, -31578, 0, -28800, 0, -28800, 3600 }
- typeMap:bin { "03040504050405040504050405040504050405040504050405040504050405040504010201" }
+ typeMap:bin { "0304050405040504050405040504050405040504050405040504050405040504050401020102010204010201" }
finalRule { "US" }
finalRaw:int { -32400 }
- finalYear:int { 2017 }
+ finalYear:int { 2020 }
} //Z#164
/* America/Mexico_City */ :table {
trans:intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, -975261600, -963169200, -917114400, -907354800, -821901600, -810068400, -627501600, -612990000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 989136000, 1001833200, 1018166400, 1035702000 }
@@ -803,7 +800,7 @@ zoneinfo64:table(nofallback) {
finalRule { "Mexico" }
finalRaw:int { -21600 }
finalYear:int { 2003 }
- links:intvector { 165, 538 }
+ links:intvector { 165, 539 }
} //Z#165
/* America/Miquelon */ :table {
trans:intvector { -1850328920, 326001600, 544597200, 562132800, 576046800, 594187200, 607496400, 625636800, 638946000, 657086400, 671000400, 688536000, 702450000, 719985600, 733899600, 752040000, 765349200, 783489600, 796798800, 814939200, 828853200, 846388800, 860302800, 877838400, 891752400, 909288000, 923202000, 941342400, 954651600, 972792000, 986101200, 1004241600, 1018155600, 1035691200, 1049605200, 1067140800, 1081054800, 1099195200, 1112504400, 1130644800, 1143954000, 1162094400, 1173589200, 1194148800 }
@@ -831,9 +828,9 @@ zoneinfo64:table(nofallback) {
finalYear:int { 2003 }
} //Z#168
/* America/Montevideo */ :table {
- trans:intvector { -1567455316, -1459542600, -1443819600, -1428006600, -1412283600, -1396470600, -1380747600, -1141590600, -1128286800, -1110141000, -1096837200, -1078691400, -1065387600, -1046637000, -1033938000, -1015187400, -1002488400, -983737800, -971038800, -952288200, -938984400, -920838600, -907534800, -896819400, -883602000, -853619400, -845848800, -334789200, -319672800, -314226000, -309996000, -149720400, -134604000, -118270800, -100044000, -86821200, -68508000, -50446800, -34119000, -18910800, -2583000, 12625200, 28953000, 72932400, 82692000, 132116400, 156911400, 212983200, 250052400, 260244000, 307594800, 325994400, 566449200, 574308000, 597812400, 605671200, 625633200, 636516000, 656478000, 667965600, 688532400, 699415200, 719377200, 730864800, 1095562800, 1111896000, 1128834000, 1142136000, 1159678800, 1173585600, 1191733200, 1205035200, 1223182800, 1236484800, 1254632400, 1268539200, 1286082000, 1299988800, 1317531600, 1331438400, 1349586000, 1362888000, 1381035600, 1394337600, 1412485200, 1425787200 }
- typeOffsets:intvector { -13484, 0, -12600, 0, -12600, 1800, -10800, 0, -10800, 1800, -10800, 3600 }
- typeMap:bin { "0102010201020102010201020102010201020102010201020105030503050305030503050304030403040305030405030503050305030503050305030503050305030503050305030503050305030503050305030503" }
+ trans:intvector { -1567455309, -1459627200, -1443819600, -1428006600, -1412283600, -1396470600, -1380747600, -1141590600, -1128286800, -1110141000, -1096837200, -1078691400, -1065387600, -1047241800, -1033938000, -1015187400, -1002488400, -983737800, -971038800, -954707400, -938984400, -920838600, -907534800, -896819400, -853621200, -845847000, -334789200, -319671000, -314226000, -309996000, -149720400, -134604000, -50446800, -34205400, 9860400, 14176800, 72846000, 80100000, 127278000, 132111000, 147234600, 156913200, 165376800, 219812400, 226461600, 250052400, 257911200, 282711600, 289360800, 294202800, 322020000, 566449200, 573012000, 597812400, 605066400, 625633200, 635911200, 656478000, 667965600, 688532400, 699415200, 719377200, 730864800, 1095562800, 1111896000, 1128834000, 1142136000, 1159678800, 1173585600, 1191733200, 1205035200, 1223182800, 1236484800, 1254632400, 1268539200, 1286082000, 1299988800, 1317531600, 1331438400, 1349586000, 1362888000, 1381035600, 1394337600, 1412485200, 1425787200 }
+ typeOffsets:intvector { -13491, 0, -14400, 0, -12600, 0, -12600, 1800, -10800, 0, -10800, 1800, -10800, 3600, -10800, 5400 }
+ typeMap:bin { "01030203020302030203020302030203020302030203020305040504060406040504060406040705040604060406040604060406040604060406040604060406040604060406040604060406040604060406040604" }
} //Z#169
/* America/Montreal */ :int { 217 } //Z#170
/* America/Montserrat */ :int { 186 } //Z#171
@@ -853,7 +850,7 @@ zoneinfo64:table(nofallback) {
finalRule { "US" }
finalRaw:int { -18000 }
finalYear:int { 2008 }
- links:intvector { 173, 619 }
+ links:intvector { 173, 620 }
} //Z#173
/* America/Nipigon */ :table {
transPre32:intvector { -1, 1928233280 }
@@ -877,7 +874,7 @@ zoneinfo64:table(nofallback) {
trans:intvector { -1767217820, -1206961200, -1191366000, -1175378400, -1159830000, -633823200, -622072800, -602287200, -591836400, -570751200, -560214000, -539128800, -531356400, -191368800, -184201200, -155167200, -150073200, -128901600, -121129200, -99957600, -89593200, -68421600, -57970800, 499744800, 511232400, 530589600, 540262800, 562125600, 571194000, 592970400, 602038800, 624420000, 634698000, 938916000, 951613200, 970970400, 971571600, 1003024800, 1013907600 }
typeOffsets:intvector { -7780, 0, -7200, 0, -7200, 3600 }
typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201" }
- links:intvector { 176, 374 }
+ links:intvector { 176, 375 }
} //Z#176
/* America/North_Dakota/Beulah */ :table {
transPre32:intvector { -1, 1577323696 }
@@ -939,7 +936,7 @@ zoneinfo64:table(nofallback) {
trans:intvector { -1633273200, -1615132800, -1601823600, -1583683200, -880210800, -820519140, -812653140, -796845540, -84380400, -68659200 }
typeOffsets:intvector { -26898, 0, -25200, 0, -25200, 3600 }
typeMap:bin { "0102010201020102010201" }
- links:intvector { 184, 545, 616 }
+ links:intvector { 184, 546, 617 }
} //Z#184
/* America/Port-au-Prince */ :table {
transPre32:intvector { -1, 1770463056 }
@@ -967,7 +964,7 @@ zoneinfo64:table(nofallback) {
trans:intvector { -873057600, -765399600 }
typeOffsets:intvector { -15865, 0, -14400, 0, -14400, 3600 }
typeMap:bin { "010201" }
- links:intvector { 189, 547 }
+ links:intvector { 189, 548 }
} //Z#189
/* America/Punta_Arenas */ :table {
transPre32:intvector { -1, 1770462716 }
@@ -1001,7 +998,7 @@ zoneinfo64:table(nofallback) {
trans:intvector { -2030202084, -1632063600, -1615132800, -1251651600, -1238349600, -1220202000, -1206900000, -1188752400, -1175450400, -1156698000, -1144000800, -1125248400, -1111946400, -1032714000, -1016992800, -1001264400, -986148000, -969814800, -954093600, -937760400, -922039200, -906310800, -890589600, -880210800, -765388800, -748450800, -732729600, -715791600, -702489600, -684342000, -671040000, -652892400, -639590400, -620838000, -608140800, -589388400, -576086400, -557938800, -544636800, -526489200, -513187200, -495039600, -481737600, -463590000, -450288000, -431535600, -418233600, -400086000, -386784000, -337186800, -321465600, -305737200 }
typeOffsets:intvector { -25116, 0, -25200, 0, -25200, 3600, -21600, 0 }
typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020103" }
- links:intvector { 194, 385, 390 }
+ links:intvector { 194, 386, 391 }
} //Z#194
/* America/Resolute */ :table {
trans:intvector { -704937600, -147895200, -131565600, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 }
@@ -1015,7 +1012,7 @@ zoneinfo64:table(nofallback) {
trans:intvector { -1767209328, -1206950400, -1191355200, -1175367600, -1159819200, -633812400, -622062000, -602276400, -591825600, -570740400, -560203200, -539118000, -531345600, -191358000, -184190400, -155156400, -150062400, -128890800, -121118400, -99946800, -89582400, -68410800, -57960000, 499755600, 511243200, 530600400, 540273600, 562136400, 571204800, 1214283600, 1384056000 }
typeOffsets:intvector { -16272, 0, -18000, 0, -18000, 3600, -14400, 0 }
typeMap:bin { "01020102010201020102010201020102010201020102010201020102010301" }
- links:intvector { 187, 196, 373 }
+ links:intvector { 187, 196, 374 }
} //Z#196
/* America/Rosario */ :int { 67 } //Z#197
/* America/Santa_Isabel */ :int { 216 } //Z#198
@@ -1025,13 +1022,13 @@ zoneinfo64:table(nofallback) {
typeMap:bin { "010201020102010201020102010201020102010201020102010201020103" }
} //Z#199
/* America/Santiago */ :table {
- trans:intvector { -1892661434, -1688410800, -1619205434, -1593806400, -1335986234, -1317585600, -1304362800, -1286049600, -1272826800, -1254513600, -1241290800, -1222977600, -1209754800, -1191355200, -1178132400, -870552000, -865278000, -740520000, -736376400, -718056000, -713649600, -36619200, -23922000, -3355200, 7527600, 24465600, 37767600, 55915200, 69217200, 87969600, 100666800, 118209600, 132116400, 150868800, 163566000, 182318400, 195620400, 213768000, 227070000, 245217600, 258519600, 277272000, 289969200, 308721600, 321418800, 340171200, 353473200, 371620800, 384922800, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200 }
+ trans:intvector { -1892661434, -1688410800, -1619205434, -1593806400, -1335986234, -1317585600, -1304362800, -1286049600, -1272826800, -1254513600, -1241290800, -1222977600, -1209754800, -1191355200, -1178132400, -870552000, -865278000, -740520000, -736376400, -718056000, -713649600, -36619200, -23922000, -3355200, 7527600, 24465600, 37767600, 55915200, 69217200, 87969600, 100666800, 118209600, 132116400, 150868800, 163566000, 182318400, 195620400, 213768000, 227070000, 245217600, 258519600, 277272000, 289969200, 308721600, 321418800, 340171200, 353473200, 371620800, 384922800, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200, 1494730800, 1502596800, 1526180400, 1534046400, 1554606000, 1567915200 }
typeOffsets:intvector { -16966, 0, -18000, 0, -18000, 3600, -14400, 0, -14400, 3600 }
- typeMap:bin { "0100030002010201020102010201030103040301030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304" }
+ typeMap:bin { "0100030002010201020102010201030103040301030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304" }
finalRule { "Chile" }
finalRaw:int { -14400 }
- finalYear:int { 2017 }
- links:intvector { 200, 392 }
+ finalYear:int { 2020 }
+ links:intvector { 200, 393 }
} //Z#200
/* America/Santo_Domingo */ :table {
transPre32:intvector { -1, 1770462472 }
@@ -1040,14 +1037,14 @@ zoneinfo64:table(nofallback) {
typeMap:bin { "0401030102010201020102010201050105" }
} //Z#201
/* America/Sao_Paulo */ :table {
- trans:intvector { -1767214412, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -195426000, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 656478000, 666756000, 687927600, 697600800, 719982000, 728445600, 750826800, 761709600, 782276400, 793159200, 813726000, 824004000, 844570800, 856058400, 876106800, 888717600, 908074800, 919562400, 938919600, 951616800, 970974000, 982461600, 1003028400, 1013911200, 1036292400, 1045360800, 1066532400, 1076810400, 1099364400, 1108864800, 1129431600, 1140314400, 1162695600, 1172368800, 1192330800, 1203213600, 1224385200, 1234663200, 1255834800, 1266717600, 1287284400, 1298167200, 1318734000, 1330221600, 1350788400, 1361066400, 1382238000, 1392516000, 1413687600, 1424570400, 1445137200, 1456020000, 1476586800, 1487469600, 1508036400, 1518919200, 1540090800, 1550368800, 1571540400, 1581818400, 1602990000, 1613872800, 1634439600, 1645322400, 1665889200, 1677376800, 1697338800, 1708221600, 1729393200, 1739671200, 1760842800, 1771725600, 1792292400, 1803175200, 1823742000, 1834624800, 1855191600, 1866074400, 1887246000, 1897524000, 1918695600, 1928973600, 1950145200, 1960423200, 1981594800, 1992477600, 2013044400, 2024532000, 2044494000, 2055376800, 2076548400, 2086826400, 2107998000, 2118880800, 2139447600 }
- transPost32:intvector { 0, -2144636896, 0, -2124070096 }
+ trans:intvector { -1767214412, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -195426000, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 656478000, 666756000, 687927600, 697600800, 719982000, 728445600, 750826800, 761709600, 782276400, 793159200, 813726000, 824004000, 844570800, 856058400, 876106800, 888717600, 908074800, 919562400, 938919600, 951616800, 970974000, 982461600, 1003028400, 1013911200, 1036292400, 1045360800, 1066532400, 1076810400, 1099364400, 1108864800, 1129431600, 1140314400, 1162695600, 1172368800, 1192330800, 1203213600, 1224385200, 1234663200, 1255834800, 1266717600, 1287284400, 1298167200, 1318734000, 1330221600, 1350788400, 1361066400, 1382238000, 1392516000, 1413687600, 1424570400, 1445137200, 1456020000, 1476586800, 1487469600, 1508036400, 1518919200, 1541300400, 1550368800, 1572750000, 1581818400, 1604199600, 1613872800, 1636254000, 1645322400, 1667703600, 1677376800, 1699153200, 1708221600, 1730602800, 1739671200, 1762052400, 1771725600, 1793502000, 1803175200, 1825556400, 1834624800, 1857006000, 1866074400, 1888455600, 1897524000, 1919905200, 1928973600, 1951354800, 1960423200, 1983409200, 1992477600, 2014858800, 2024532000, 2046308400, 2055376800, 2077758000, 2086826400, 2109207600, 2118880800, 2140657200 }
+ transPost32:intvector { 0, -2144636896, 0, -2122255696 }
typeOffsets:intvector { -11188, 0, -10800, 0, -10800, 3600 }
typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }
finalRule { "Brazil" }
finalRaw:int { -10800 }
finalYear:int { 2039 }
- links:intvector { 202, 371, 375 }
+ links:intvector { 202, 372, 376 }
} //Z#202
/* America/Scoresbysund */ :table {
trans:intvector { -1686090728, 323841600, 338961600, 354679200, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
@@ -1075,7 +1072,7 @@ zoneinfo64:table(nofallback) {
finalRule { "Canada" }
finalRaw:int { -12600 }
finalYear:int { 2013 }
- links:intvector { 207, 379, 388 }
+ links:intvector { 207, 380, 389 }
} //Z#207
/* America/St_Kitts */ :int { 186 } //Z#208
/* America/St_Lucia */ :int { 186 } //Z#209
@@ -1115,7 +1112,7 @@ zoneinfo64:table(nofallback) {
finalRule { "US" }
finalRaw:int { -28800 }
finalYear:int { 2011 }
- links:intvector { 115, 198, 216, 536 }
+ links:intvector { 115, 198, 216, 537 }
} //Z#216
/* America/Toronto */ :table {
transPre32:intvector { -1, 1928231148 }
@@ -1125,7 +1122,7 @@ zoneinfo64:table(nofallback) {
finalRule { "Canada" }
finalRaw:int { -18000 }
finalYear:int { 2008 }
- links:intvector { 170, 217, 386 }
+ links:intvector { 170, 217, 387 }
} //Z#217
/* America/Tortola */ :int { 186 } //Z#218
/* America/Vancouver */ :table {
@@ -1136,7 +1133,7 @@ zoneinfo64:table(nofallback) {
finalRule { "Canada" }
finalRaw:int { -28800 }
finalYear:int { 2008 }
- links:intvector { 219, 389 }
+ links:intvector { 219, 390 }
} //Z#219
/* America/Virgin */ :int { 186 } //Z#220
/* America/Whitehorse */ :table {
@@ -1147,7 +1144,7 @@ zoneinfo64:table(nofallback) {
finalRule { "Canada" }
finalRaw:int { -28800 }
finalYear:int { 2008 }
- links:intvector { 221, 391 }
+ links:intvector { 221, 392 }
} //Z#221
/* America/Winnipeg */ :table {
transPre32:intvector { -1, 1692709012 }
@@ -1157,7 +1154,7 @@ zoneinfo64:table(nofallback) {
finalRule { "Canada" }
finalRaw:int { -21600 }
finalYear:int { 2008 }
- links:intvector { 222, 384 }
+ links:intvector { 222, 385 }
} //Z#222
/* America/Yakutat */ :table {
transPre32:intvector { -1, 1069743569, -1, 2106013631 }
@@ -1177,9 +1174,9 @@ zoneinfo64:table(nofallback) {
finalYear:int { 2008 }
} //Z#224
/* Antarctica/Casey */ :table {
- trans:intvector { -31536000, 1255802400, 1267714800, 1319738400, 1329843600, 1477065600 }
+ trans:intvector { -31536000, 1255802400, 1267714800, 1319738400, 1329843600, 1477065600, 1520701200 }
typeOffsets:intvector { 0, 0, 28800, 0, 39600, 0 }
- typeMap:bin { "010201020102" }
+ typeMap:bin { "01020102010201" }
} //Z#225
/* Antarctica/Davis */ :table {
trans:intvector { -409190400, -163062000, -28857600, 1255806000, 1268251200, 1319742000, 1329854400 }
@@ -1202,7 +1199,7 @@ zoneinfo64:table(nofallback) {
typeOffsets:intvector { 0, 0, 18000, 0, 21600, 0 }
typeMap:bin { "0201" }
} //Z#229
- /* Antarctica/McMurdo */ :int { 551 } //Z#230
+ /* Antarctica/McMurdo */ :int { 552 } //Z#230
/* Antarctica/Palmer */ :table {
trans:intvector { -157766400, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 389070000, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200, 1480820400 }
typeOffsets:intvector { 0, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
@@ -1213,7 +1210,7 @@ zoneinfo64:table(nofallback) {
typeOffsets:intvector { 0, 0, -10800, 0 }
typeMap:bin { "01" }
} //Z#232
- /* Antarctica/South_Pole */ :int { 551 } //Z#233
+ /* Antarctica/South_Pole */ :int { 552 } //Z#233
/* Antarctica/Syowa */ :table {
trans:intvector { -407808000 }
typeOffsets:intvector { 0, 0, 10800, 0 }
@@ -1232,8 +1229,8 @@ zoneinfo64:table(nofallback) {
typeOffsets:intvector { 0, 0, 21600, 0 }
typeMap:bin { "01" }
} //Z#236
- /* Arctic/Longyearbyen */ :int { 473 } //Z#237
- /* Asia/Aden */ :int { 308 } //Z#238
+ /* Arctic/Longyearbyen */ :int { 474 } //Z#237
+ /* Asia/Aden */ :int { 309 } //Z#238
/* Asia/Almaty */ :table {
trans:intvector { -1441170468, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 686091600, 695768400, 701812800, 717537600, 733262400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400 }
typeOffsets:intvector { 18468, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }
@@ -1290,7 +1287,7 @@ zoneinfo64:table(nofallback) {
trans:intvector { -1570084924 }
typeOffsets:intvector { 24124, 0, 25200, 0 }
typeMap:bin { "01" }
- links:intvector { 250, 302, 330 }
+ links:intvector { 250, 302, 331 }
} //Z#250
/* Asia/Barnaul */ :table {
trans:intvector { -1579844100, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701809200, 717534000, 733258800, 748983600, 764708400, 780433200, 796158000, 801590400, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1111867200, 1130616000, 1143316800, 1162065600, 1174766400, 1193515200, 1206820800, 1224964800, 1238270400, 1256414400, 1269720000, 1288468800, 1301169600, 1414263600, 1459022400 }
@@ -1327,8 +1324,8 @@ zoneinfo64:table(nofallback) {
typeOffsets:intvector { 27480, 0, 25200, 0, 28800, 0, 28800, 3600, 32400, 0, 32400, 3600 }
typeMap:bin { "010205040504050405040504050405040504050405040504050405040504050405040504050405040504050405040203020302" }
} //Z#257
- /* Asia/Chongqing */ :int { 313 } //Z#258
- /* Asia/Chungking */ :int { 313 } //Z#259
+ /* Asia/Chongqing */ :int { 314 } //Z#258
+ /* Asia/Chungking */ :int { 314 } //Z#259
/* Asia/Colombo */ :table {
transPre32:intvector { -1, 1454807332 }
trans:intvector { -2019705572, -883287000, -862639200, -764051400, 832962600, 846266400, 1145039400 }
@@ -1349,7 +1346,7 @@ zoneinfo64:table(nofallback) {
trans:intvector { -891582800, -872058600, -862637400, -576138600, 1245430800, 1262278800 }
typeOffsets:intvector { 21700, 0, 19800, 0, 21200, 0, 21600, 0, 21600, 3600, 23400, 0 }
typeMap:bin { "02050105030403" }
- links:intvector { 261, 263, 372 }
+ links:intvector { 261, 263, 373 }
} //Z#263
/* Asia/Dili */ :table {
trans:intvector { -1830414140, -879152400, 199897200, 969120000 }
@@ -1377,19 +1374,19 @@ zoneinfo64:table(nofallback) {
} //Z#267
/* Asia/Gaza */ :table {
transPre32:intvector { -1, 2109557424 }
- trans:intvector { -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1219957200, 1238104800, 1252015200, 1269640860, 1281474000, 1301608860, 1312146000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445547600, 1458946800, 1477692000 }
+ trans:intvector { -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334015200, 337644000, 452556000, 462232800, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1219957200, 1238104800, 1252015200, 1269640860, 1281474000, 1301608860, 1312146000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445547600, 1458946800, 1477692000 }
typeOffsets:intvector { 8272, 0, 7200, 0, 7200, 3600 }
- typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
+ typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
finalRule { "Palestine" }
finalRaw:int { 7200 }
finalYear:int { 2017 }
} //Z#268
- /* Asia/Harbin */ :int { 313 } //Z#269
+ /* Asia/Harbin */ :int { 314 } //Z#269
/* Asia/Hebron */ :table {
transPre32:intvector { -1, 2109557273 }
- trans:intvector { -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1220216400, 1238104800, 1252015200, 1269554400, 1281474000, 1301608860, 1312146000, 1314655200, 1317330000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445547600, 1458946800, 1477692000 }
+ trans:intvector { -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334015200, 337644000, 452556000, 462232800, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1220216400, 1238104800, 1252015200, 1269554400, 1281474000, 1301608860, 1312146000, 1314655200, 1317330000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445547600, 1458946800, 1477692000 }
typeOffsets:intvector { 8423, 0, 7200, 0, 7200, 3600 }
- typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
+ typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
finalRule { "Palestine" }
finalRaw:int { 7200 }
finalYear:int { 2017 }
@@ -1398,13 +1395,13 @@ zoneinfo64:table(nofallback) {
trans:intvector { -2004073600, -1851577590, -852105600, -782643600, -767869200, -718095600, -457776000, -315648000, 171820800 }
typeOffsets:intvector { 25600, 0, 25200, 0, 25590, 0, 28800, 0, 32400, 0 }
typeMap:bin { "020103040103010301" }
- links:intvector { 271, 309, 629 }
+ links:intvector { 271, 310, 630 }
} //Z#271
/* Asia/Hong_Kong */ :table {
- trans:intvector { -2056693002, -907389000, -891667800, -884246400, -766746000, -747981000, -728544600, -717049800, -694503000, -683785800, -668064600, -654755400, -636615000, -623305800, -605165400, -591856200, -573715800, -559801800, -542352600, -528352200, -510211800, -498112200, -478762200, -466662600, -446707800, -435213000, -415258200, -403158600, -383808600, -371709000, -352359000, -340259400, -320909400, -308809800, -288855000, -277360200, -257405400, -245910600, -225955800, -213856200, -194506200, -182406600, -163056600, -148537800, -132816600, -117088200, -101367000, -85638600, -69312600, -53584200, -37863000, -22134600, -6413400, 9315000, 25036200, 40764600, 56485800, 72214200, 88540200, 104268600, 119989800, 126041400, 151439400, 167167800, 182889000, 198617400, 214338600, 295385400, 309292200 }
- typeOffsets:intvector { 27402, 0, 28800, 0, 28800, 3600, 32400, 0 }
- typeMap:bin { "010201030102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
- links:intvector { 272, 510 }
+ trans:intvector { -2056690800, -900909000, -891579600, -884248200, -766659600, -747981000, -728544600, -717049800, -694503000, -683785800, -668064600, -654755400, -636615000, -623305800, -605165400, -591856200, -573715800, -559801800, -541661400, -528352200, -510211800, -498112200, -478762200, -466662600, -446707800, -435213000, -415258200, -403158600, -383808600, -371709000, -352359000, -340259400, -320909400, -308809800, -288855000, -277360200, -257405400, -245910600, -225955800, -213856200, -194506200, -182406600, -163056600, -148537800, -132816600, -117088200, -101367000, -85638600, -69312600, -53584200, -37863000, -22134600, -6413400, 9315000, 25036200, 40764600, 56485800, 72214200, 88540200, 104268600, 119989800, 126041400, 151439400, 167167800, 182889000, 198617400, 214338600, 295385400, 309292200 }
+ typeOffsets:intvector { 27402, 0, 28800, 0, 28800, 3600, 30600, 0, 32400, 0 }
+ typeMap:bin { "010203040102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
+ links:intvector { 272, 511 }
} //Z#272
/* Asia/Hovd */ :table {
trans:intvector { -2032927596, 252439200, 417978000, 433785600, 449600400, 465321600, 481050000, 496771200, 512499600, 528220800, 543949200, 559670400, 575398800, 591120000, 606848400, 622569600, 638298000, 654624000, 670352400, 686073600, 701802000, 717523200, 733251600, 748972800, 764701200, 780422400, 796150800, 811872000, 828205200, 843926400, 859654800, 875376000, 891104400, 906825600, 988398000, 1001700000, 1017428400, 1033149600, 1048878000, 1064599200, 1080327600, 1096048800, 1111777200, 1127498400, 1143226800, 1159552800, 1427482800, 1443196800, 1458932400, 1474646400 }
@@ -1416,7 +1413,7 @@ zoneinfo64:table(nofallback) {
typeOffsets:intvector { 25025, 0, 25200, 0, 25200, 3600, 28800, 0, 28800, 3600, 32400, 0 }
typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" }
} //Z#274
- /* Asia/Istanbul */ :int { 457 } //Z#275
+ /* Asia/Istanbul */ :int { 458 } //Z#275
/* Asia/Jakarta */ :table {
trans:intvector { -1451719200, -1172906400, -876641400, -766054800, -683883000, -620812800, -189415800 }
typeOffsets:intvector { 25632, 0, 25200, 0, 26400, 0, 27000, 0, 28800, 0, 32400, 0 }
@@ -1429,13 +1426,13 @@ zoneinfo64:table(nofallback) {
} //Z#277
/* Asia/Jerusalem */ :table {
transPre32:intvector { -1, 1454818042 }
- trans:intvector { -1641003640, -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -681962400, -673243200, -667962000, -652327200, -636426000, -622087200, -608947200, -591847200, -572486400, -558576000, -542851200, -527731200, -514425600, -490845600, -482986800, -459475200, -451537200, -428551200, -418262400, -400032000, -387428400, 142380000, 150843600, 167176800, 178664400, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 826840800, 842821200, 858895200, 874184400, 890344800, 905029200, 923011200, 936313200, 955670400, 970783200, 986770800, 1001282400, 1017356400, 1033941600, 1048806000, 1065132000, 1081292400, 1095804000, 1112313600, 1128812400, 1143763200, 1159657200, 1175212800, 1189897200, 1206662400, 1223161200, 1238112000, 1254006000, 1269561600, 1284246000, 1301616000, 1317510000, 1333065600, 1348354800, 1364515200, 1382828400 }
+ trans:intvector { -1641003640, -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -681962400, -673243200, -667962000, -652327200, -636426000, -622087200, -608947200, -591847200, -572486400, -558576000, -542851200, -527731200, -514425600, -490845600, -482986800, -459475200, -451537200, -428551200, -418262400, -400032000, -387428400, 142380000, 150843600, 167176800, 178664400, 334015200, 337644000, 452556000, 462232800, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 826840800, 842821200, 858895200, 874184400, 890344800, 905029200, 923011200, 936313200, 955670400, 970783200, 986770800, 1001282400, 1017356400, 1033941600, 1048806000, 1065132000, 1081292400, 1095804000, 1112313600, 1128812400, 1143763200, 1159657200, 1175212800, 1189897200, 1206662400, 1223161200, 1238112000, 1254006000, 1269561600, 1284246000, 1301616000, 1317510000, 1333065600, 1348354800, 1364515200, 1382828400 }
typeOffsets:intvector { 8454, 0, 7200, 0, 7200, 3600, 7200, 7200, 8440, 0 }
- typeMap:bin { "0401020102010201020102010302010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
+ typeMap:bin { "040102010201020102010201030201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
finalRule { "Zion" }
finalRaw:int { 7200 }
finalYear:int { 2014 }
- links:intvector { 278, 320, 526 }
+ links:intvector { 278, 321, 527 }
} //Z#278
/* Asia/Kabul */ :table {
transPre32:intvector { -1, 1770429088 }
@@ -1452,9 +1449,9 @@ zoneinfo64:table(nofallback) {
trans:intvector { -1988166492, -862637400, -764145000, -576135000, 1018119600, 1033840800, 1212260400, 1225476000, 1239735600, 1257012000 }
typeOffsets:intvector { 16092, 0, 18000, 0, 18000, 3600, 19800, 0, 19800, 3600 }
typeMap:bin { "03040301020102010201" }
- links:intvector { 281, 544 }
+ links:intvector { 281, 545 }
} //Z#281
- /* Asia/Kashgar */ :int { 328 } //Z#282
+ /* Asia/Kashgar */ :int { 329 } //Z#282
/* Asia/Kathmandu */ :table {
trans:intvector { -1577943676, 504901800 }
typeOffsets:intvector { 20476, 0, 19800, 0, 20700, 0 }
@@ -1472,7 +1469,7 @@ zoneinfo64:table(nofallback) {
trans:intvector { -2019705670, -891581400, -872058600, -862637400, -764145000 }
typeOffsets:intvector { 21208, 0, 19270, 0, 19800, 0, 19800, 3600, 21200, 0 }
typeMap:bin { "04010203020302" }
- links:intvector { 255, 286, 512 }
+ links:intvector { 255, 286, 513 }
} //Z#286
/* Asia/Krasnoyarsk */ :table {
trans:intvector { -1577513486, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701809200, 717534000, 733258800, 748983600, 764708400, 780433200, 796158000, 811882800, 828212400, 846356400, 859662000, 877806000, 891111600, 909255600, 922561200, 941310000, 954010800, 972759600, 985460400, 1004209200, 1017514800, 1035658800, 1048964400, 1067108400, 1080414000, 1099162800, 1111863600, 1130612400, 1143313200, 1162062000, 1174762800, 1193511600, 1206817200, 1224961200, 1238266800, 1256410800, 1269716400, 1288465200, 1301166000, 1414260000 }
@@ -1490,12 +1487,12 @@ zoneinfo64:table(nofallback) {
typeOffsets:intvector { 26480, 0, 27000, 0, 28800, 0, 28800, 1200, 32400, 0 }
typeMap:bin { "010203020302030203020302030203020402" }
} //Z#289
- /* Asia/Kuwait */ :int { 308 } //Z#290
+ /* Asia/Kuwait */ :int { 309 } //Z#290
/* Asia/Macao */ :int { 292 } //Z#291
/* Asia/Macau */ :table {
- trans:intvector { -1830411260, -277360200, -257405400, -245910600, -225955800, -214473600, -194506200, -182406600, -163056600, -150969600, -131619600, -117088200, -101367000, -85638600, -69312600, -53584200, -37863000, -22134600, -6413400, 9315000, 25036200, 40764600, 56485800, 72201600, 87922800, 103651200, 119977200, 135705600, 151439400, 167167800, 182889000, 198617400, 214338600, 230067000, 245788200, 261504000, 277225200, 292953600, 309279600, 325008000, 340729200 }
- typeOffsets:intvector { 27260, 0, 28800, 0, 28800, 3600 }
- typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
+ trans:intvector { -2056692850, -884509200, -873280800, -855918000, -841744800, -828529200, -765363600, -747046800, -733827600, -716461200, -697021200, -683715600, -667990800, -654771600, -636627600, -623322000, -605178000, -591872400, -573642000, -559818000, -541674000, -528368400, -510224400, -498128400, -478774800, -466678800, -446720400, -435229200, -415258200, -403158600, -383808600, -371709000, -352359000, -340259400, -320909400, -308809800, -288855000, -277360200, -257405400, -245910600, -225955800, -213856200, -194506200, -182406600, -163056600, -148537800, -132820200, -117088200, -101370600, -85638600, -69312600, -53584200, -37863000, -22134600, -6413400, 9315000, 25036200, 40764600, 56485800, 72214200, 88540200, 104268600, 119989800, 126041400, 151439400, 167167800, 182889000, 198617400, 214338600, 295385400, 309292200 }
+ typeOffsets:intvector { 27250, 0, 28800, 0, 28800, 3600, 32400, 0, 32400, 3600 }
+ typeMap:bin { "0103040304030102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
links:intvector { 291, 292 }
} //Z#292
/* Asia/Magadan */ :table {
@@ -1507,7 +1504,7 @@ zoneinfo64:table(nofallback) {
trans:intvector { -1172908656, -880272000, -766054800 }
typeOffsets:intvector { 28656, 0, 28800, 0, 32400, 0 }
typeMap:bin { "010201" }
- links:intvector { 294, 325 }
+ links:intvector { 294, 326 }
} //Z#294
/* Asia/Manila */ :table {
transPre32:intvector { -1, 350346256, -1, 2065645456 }
@@ -1523,7 +1520,7 @@ zoneinfo64:table(nofallback) {
finalRule { "EUAsia" }
finalRaw:int { 7200 }
finalYear:int { 2000 }
- links:intvector { 297, 472 }
+ links:intvector { 297, 473 }
} //Z#297
/* Asia/Novokuznetsk */ :table {
trans:intvector { -1441259328, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701809200, 717534000, 733258800, 748983600, 764708400, 780433200, 796158000, 811882800, 828212400, 846356400, 859662000, 877806000, 891111600, 909255600, 922561200, 941310000, 954010800, 972759600, 985460400, 1004209200, 1017514800, 1035658800, 1048964400, 1067108400, 1080414000, 1099162800, 1111863600, 1130612400, 1143313200, 1162062000, 1174762800, 1193511600, 1206817200, 1224961200, 1238266800, 1256410800, 1269716400, 1288468800, 1301169600 }
@@ -1552,9 +1549,9 @@ zoneinfo64:table(nofallback) {
typeMap:bin { "02040203020301" }
} //Z#303
/* Asia/Pyongyang */ :table {
- trans:intvector { -1948782180, -1830414600, 1439564400 }
+ trans:intvector { -1948782180, -1830414600, 1439564400, 1525446000 }
typeOffsets:intvector { 30180, 0, 30600, 0, 32400, 0 }
- typeMap:bin { "010201" }
+ typeMap:bin { "01020102" }
} //Z#304
/* Asia/Qatar */ :table {
trans:intvector { -1577935568, 76190400 }
@@ -1562,155 +1559,161 @@ zoneinfo64:table(nofallback) {
typeMap:bin { "0201" }
links:intvector { 248, 305 }
} //Z#305
+ /* Asia/Qostanay */ :table {
+ trans:intvector { -1441167268, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000 }
+ typeOffsets:intvector { 15268, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }
+ typeMap:bin { "010304050403040304030403040304030403040304030201030403040304030403040304030403040304030403040304030405" }
+ } //Z#306
/* Asia/Qyzylorda */ :table {
- trans:intvector { -1441167712, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695768400, 701812800, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000 }
+ trans:intvector { -1441167712, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695768400, 701812800, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000, 1545328800 }
typeOffsets:intvector { 15712, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }
- typeMap:bin { "010304050403040304030403040304030403040304030203050403040304030403040304030403040304030403040304030405" }
- } //Z#306
- /* Asia/Rangoon */ :int { 333 } //Z#307
+ typeMap:bin { "01030405040304030403040304030403040304030403020305040304030403040304030403040304030403040304030403040503" }
+ } //Z#307
+ /* Asia/Rangoon */ :int { 334 } //Z#308
/* Asia/Riyadh */ :table {
trans:intvector { -719636812 }
typeOffsets:intvector { 11212, 0, 10800, 0 }
typeMap:bin { "01" }
- links:intvector { 238, 290, 308 }
- } //Z#308
- /* Asia/Saigon */ :int { 271 } //Z#309
+ links:intvector { 238, 290, 309 }
+ } //Z#309
+ /* Asia/Saigon */ :int { 271 } //Z#310
/* Asia/Sakhalin */ :table {
trans:intvector { -2031039048, -768560400, 354891600, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701794800, 717519600, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400, 828198000, 846342000, 859647600, 877795200, 891100800, 909244800, 922550400, 941299200, 954000000, 972748800, 985449600, 1004198400, 1017504000, 1035648000, 1048953600, 1067097600, 1080403200, 1099152000, 1111852800, 1130601600, 1143302400, 1162051200, 1174752000, 1193500800, 1206806400, 1224950400, 1238256000, 1256400000, 1269705600, 1288454400, 1301155200, 1414249200, 1459008000 }
typeOffsets:intvector { 34248, 0, 32400, 0, 36000, 0, 36000, 3600, 39600, 0, 39600, 3600 }
typeMap:bin { "010405040504050405040504050405040504050405040302040504050405040504050403020302030203020302030203020302030203020302030203020302040204" }
- } //Z#310
+ } //Z#311
/* Asia/Samarkand */ :table {
trans:intvector { -1441168073, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686091600 }
typeOffsets:intvector { 16073, 0, 14400, 0, 18000, 0, 18000, 3600, 21600, 0 }
typeMap:bin { "010203040302030203020302030203020302030203020302" }
- } //Z#311
+ } //Z#312
/* Asia/Seoul */ :table {
trans:intvector { -1948782472, -1830414600, -498128400, -462702600, -451733400, -429784200, -418296600, -399544200, -387451800, -368094600, -356002200, -336645000, -324552600, -305195400, -293103000, -264933000, 547578000, 560883600, 579027600, 592333200 }
typeOffsets:intvector { 30472, 0, 30600, 0, 30600, 3600, 32400, 0, 32400, 3600 }
typeMap:bin { "0103010201020102010201020102010304030403" }
- links:intvector { 312, 596 }
- } //Z#312
+ links:intvector { 313, 597 }
+ } //Z#313
/* Asia/Shanghai */ :table {
transPre32:intvector { -1, 2117485353 }
- trans:intvector { -933494400, -923130000, -908784000, -891594000, 515520000, 527007600, 545155200, 558457200, 576604800, 589906800, 608659200, 621961200, 640108800, 653410800, 671558400, 684860400 }
+ trans:intvector { -933667200, -922093200, -908870400, -888829200, -881049600, -767869200, -745833600, -733827600, -716889600, -699613200, -683884800, -670669200, -652348800, -650019600, 515527200, 527014800, 545162400, 558464400, 577216800, 589914000, 608666400, 621968400, 640116000, 653418000, 671565600, 684867600 }
typeOffsets:intvector { 29143, 0, 28800, 0, 28800, 3600 }
- typeMap:bin { "0102010201020102010201020102010201" }
- links:intvector { 258, 259, 269, 313, 382, 546 }
- } //Z#313
+ typeMap:bin { "010201020102010201020102010201020102010201020102010201" }
+ links:intvector { 258, 259, 269, 314, 383, 547 }
+ } //Z#314
/* Asia/Singapore */ :table {
trans:intvector { -2038200925, -1167634800, -1073028000, -894180000, -879665400, -767005200, 378664200 }
typeOffsets:intvector { 24925, 0, 25200, 0, 25200, 1200, 26400, 0, 27000, 0, 28800, 0, 32400, 0 }
typeMap:bin { "01020304060405" }
- links:intvector { 314, 598 }
- } //Z#314
+ links:intvector { 315, 599 }
+ } //Z#315
/* Asia/Srednekolymsk */ :table {
trans:intvector { -1441188892, -1247565600, 354891600, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701794800, 717519600, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400, 828198000, 846342000, 859647600, 877791600, 891097200, 909241200, 922546800, 941295600, 953996400, 972745200, 985446000, 1004194800, 1017500400, 1035644400, 1048950000, 1067094000, 1080399600, 1099148400, 1111849200, 1130598000, 1143298800, 1162047600, 1174748400, 1193497200, 1206802800, 1224946800, 1238252400, 1256396400, 1269702000, 1288450800, 1301151600, 1414245600 }
typeOffsets:intvector { 36892, 0, 36000, 0, 36000, 3600, 39600, 0, 39600, 3600, 43200, 0 }
typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" }
- } //Z#315
+ } //Z#316
/* Asia/Taipei */ :table {
transPre32:intvector { -1, 1959718936 }
trans:intvector { -1017820800, -766224000, -745833600, -733827600, -716889600, -699613200, -683884800, -670669200, -652348800, -639133200, -620812800, -607597200, -589276800, -576061200, -562924800, -541760400, -528710400, -510224400, -497174400, -478688400, -465638400, -449830800, -434016000, -418208400, -402480000, -386672400, -370944000, -355136400, -339408000, -323600400, -302515200, -291978000, -270979200, -260442000, 133977600, 149785200, 165513600, 181321200, 299606400, 307551600 }
typeOffsets:intvector { 29160, 0, 28800, 0, 28800, 3600, 32400, 0 }
typeMap:bin { "0103010201020102010201020102010201020102010201020102010201020102010201020102010201" }
- links:intvector { 316, 595 }
- } //Z#316
+ links:intvector { 317, 596 }
+ } //Z#317
/* Asia/Tashkent */ :table {
trans:intvector { -1441168631, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 686091600 }
typeOffsets:intvector { 16631, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }
typeMap:bin { "010304030403040304030403040304030403040304030201" }
- } //Z#317
+ } //Z#318
/* Asia/Tbilisi */ :table {
trans:intvector { -1441162751, -405140400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670370400, 686098800, 701816400, 717537600, 733266000, 748987200, 764715600, 780436800, 796161600, 811882800, 828216000, 877806000, 891115200, 909255600, 922564800, 941310000, 954014400, 972759600, 985464000, 1004209200, 1017518400, 1035658800, 1048968000, 1067108400, 1080417600, 1088276400, 1099177200, 1111878000 }
typeOffsets:intvector { 10751, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }
typeMap:bin { "0103040304030403040304030403040304030403040302010201020102030403040304030403040304030403040304020103" }
- } //Z#318
+ } //Z#319
/* Asia/Tehran */ :table {
- trans:intvector { -757394744, 247177800, 259272000, 277758000, 283982400, 290809800, 306531000, 322432200, 338499000, 673216200, 685481400, 701209800, 717103800, 732745800, 748639800, 764281800, 780175800, 795817800, 811711800, 827353800, 843247800, 858976200, 874870200, 890512200, 906406200, 922048200, 937942200, 953584200, 969478200, 985206600, 1001100600, 1016742600, 1032636600, 1048278600, 1064172600, 1079814600, 1095708600, 1111437000, 1127331000, 1206045000, 1221939000, 1237667400, 1253561400, 1269203400, 1285097400, 1300739400, 1316633400, 1332275400, 1348169400, 1363897800, 1379791800, 1395433800, 1411327800, 1426969800, 1442863800, 1458505800, 1474399800, 1490128200, 1506022200, 1521664200, 1537558200, 1553200200, 1569094200, 1584736200, 1600630200, 1616358600, 1632252600, 1647894600, 1663788600, 1679430600, 1695324600, 1710966600, 1726860600, 1742589000, 1758483000, 1774125000, 1790019000, 1805661000, 1821555000, 1837197000, 1853091000, 1868733000, 1884627000, 1900355400, 1916249400, 1931891400, 1947785400, 1963427400, 1979321400, 1994963400, 2010857400, 2026585800, 2042479800, 2058121800, 2074015800, 2089657800, 2105551800 }
+ trans:intvector { -757394744, 247177800, 259272000, 277758000, 283982400, 290809800, 306531000, 322432200, 338499000, 673216200, 685481400, 701209800, 717103800, 732745800, 748639800, 764281800, 780175800, 795817800, 811711800, 827353800, 843247800, 858976200, 874870200, 890512200, 906406200, 922048200, 937942200, 953584200, 969478200, 985206600, 1001100600, 1016742600, 1032636600, 1048278600, 1064172600, 1079814600, 1095708600, 1111437000, 1127331000, 1206045000, 1221939000, 1237667400, 1253561400, 1269203400, 1285097400, 1300739400, 1316633400, 1332275400, 1348169400, 1363897800, 1379791800, 1395433800, 1411327800, 1426969800, 1442863800, 1458505800, 1474399800, 1490128200, 1506022200, 1521664200, 1537558200, 1553200200, 1569094200, 1584736200, 1600630200, 1616358600, 1632252600, 1647894600, 1663788600, 1679430600, 1695324600, 1710966600, 1726860600, 1742589000, 1758483000, 1774125000, 1790019000, 1805661000, 1821555000, 1837197000, 1853091000, 1868733000, 1884627000, 1900355400, 1916249400, 1931891400, 1947785400, 1963427400, 1979321400, 1994963400, 2010857400, 2026585800, 2042479800, 2058121800, 2074015800, 2089657800, 2105551800, 2121193800, 2137087800 }
+ transPost32:intvector { 0, -2142151096, 0, -2126257096, 0, -2110615096, 0, -2094721096, 0, -2079079096, 0, -2063185096, 0, -2047543096, 0, -2031649096, 0, -2015920696, 0, -2000026696, 0, -1984384696, 0, -1968490696, 0, -1952848696, 0, -1936954696, 0, -1921312696, 0, -1905418696, 0, -1889690296, 0, -1873796296, 0, -1858154296, 0, -1842260296, 0, -1826618296, 0, -1810724296, 0, -1795082296, 0, -1779188296, 0, -1763459896, 0, -1747565896, 0, -1731923896, 0, -1716029896, 0, -1700387896, 0, -1684493896, 0, -1668851896, 0, -1652957896, 0, -1637229496, 0, -1621335496, 0, -1605693496, 0, -1589799496, 0, -1574157496, 0, -1558263496, 0, -1542621496, 0, -1526727496, 0, -1510999096, 0, -1495105096, 0, -1479463096, 0, -1463569096, 0, -1447927096, 0, -1432033096, 0, -1416391096, 0, -1400497096, 0, -1384855096, 0, -1368961096, 0, -1353232696, 0, -1337338696, 0, -1321696696, 0, -1305802696, 0, -1290160696, 0, -1274266696, 0, -1258624696, 0, -1242730696, 0, -1227002296, 0, -1211108296, 0, -1195466296, 0, -1179572296, 0, -1163930296, 0, -1148036296, 0, -1132394296, 0, -1116500296, 0, -1100771896, 0, -1084877896, 0, -1069235896, 0, -1053341896, 0, -1037699896, 0, -1021805896, 0, -1006163896, 0, -990269896, 0, -974541496, 0, -958647496, 0, -943005496, 0, -927111496, 0, -911469496, 0, -895575496, 0, -879933496, 0, -864039496, 0, -848311096, 0, -832417096, 0, -816775096, 0, -800881096, 0, -785239096, 0, -769345096, 0, -753703096, 0, -737809096, 0, -722080696, 0, -706186696, 0, -690544696, 0, -674650696, 0, -659008696, 0, -643114696, 0, -627472696, 0, -611578696, 0, -595850296, 0, -579956296, 0, -564314296, 0, -548420296 }
typeOffsets:intvector { 12344, 0, 12600, 0, 12600, 3600, 14400, 0, 14400, 3600 }
- typeMap:bin { "01030403010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
+ typeMap:bin { "010304030102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
finalRule { "Iran" }
finalRaw:int { 12600 }
- finalYear:int { 2037 }
- links:intvector { 319, 525 }
- } //Z#319
- /* Asia/Tel_Aviv */ :int { 278 } //Z#320
- /* Asia/Thimbu */ :int { 322 } //Z#321
+ finalYear:int { 2089 }
+ links:intvector { 320, 526 }
+ } //Z#320
+ /* Asia/Tel_Aviv */ :int { 278 } //Z#321
+ /* Asia/Thimbu */ :int { 323 } //Z#322
/* Asia/Thimphu */ :table {
trans:intvector { -706341516, 560025000 }
typeOffsets:intvector { 21516, 0, 19800, 0, 21600, 0 }
typeMap:bin { "0102" }
- links:intvector { 321, 322 }
- } //Z#322
+ links:intvector { 322, 323 }
+ } //Z#323
/* Asia/Tokyo */ :table {
transPre32:intvector { -1, 1707254896 }
- trans:intvector { -683794800, -672393600, -654764400, -640944000, -620290800, -609494400, -588841200, -578044800 }
+ trans:intvector { -683802000, -672310800, -654771600, -640861200, -620298000, -609411600, -588848400, -577962000 }
typeOffsets:intvector { 33539, 0, 32400, 0, 32400, 3600 }
typeMap:bin { "010201020102010201" }
- links:intvector { 323, 527, 529 }
- } //Z#323
+ links:intvector { 324, 528, 530 }
+ } //Z#324
/* Asia/Tomsk */ :table {
trans:intvector { -1578807591, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701809200, 717534000, 733258800, 748983600, 764708400, 780433200, 796158000, 811882800, 828212400, 846356400, 859662000, 877806000, 891111600, 909255600, 922561200, 941310000, 954010800, 972759600, 985460400, 1004209200, 1017514800, 1020193200, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1111867200, 1130616000, 1143316800, 1162065600, 1174766400, 1193515200, 1206820800, 1224964800, 1238270400, 1256414400, 1269720000, 1288468800, 1301169600, 1414263600, 1464465600 }
typeOffsets:intvector { 20391, 0, 21600, 0, 21600, 3600, 25200, 0, 25200, 3600 }
typeMap:bin { "01030403040304030403040304030403040304030403020103040304030403040304030403040304030403040304020102010201020102010201020102010201030103" }
- } //Z#324
- /* Asia/Ujung_Pandang */ :int { 294 } //Z#325
+ } //Z#325
+ /* Asia/Ujung_Pandang */ :int { 294 } //Z#326
/* Asia/Ulaanbaatar */ :table {
trans:intvector { -2032931252, 252435600, 417974400, 433782000, 449596800, 465318000, 481046400, 496767600, 512496000, 528217200, 543945600, 559666800, 575395200, 591116400, 606844800, 622566000, 638294400, 654620400, 670348800, 686070000, 701798400, 717519600, 733248000, 748969200, 764697600, 780418800, 796147200, 811868400, 828201600, 843922800, 859651200, 875372400, 891100800, 906822000, 988394400, 1001696400, 1017424800, 1033146000, 1048874400, 1064595600, 1080324000, 1096045200, 1111773600, 1127494800, 1143223200, 1159549200, 1427479200, 1443193200, 1458928800, 1474642800 }
typeOffsets:intvector { 25652, 0, 25200, 0, 28800, 0, 28800, 3600 }
typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
- links:intvector { 326, 327 }
- } //Z#326
- /* Asia/Ulan_Bator */ :int { 326 } //Z#327
+ links:intvector { 327, 328 }
+ } //Z#327
+ /* Asia/Ulan_Bator */ :int { 327 } //Z#328
/* Asia/Urumqi */ :table {
trans:intvector { -1325483420 }
typeOffsets:intvector { 21020, 0, 21600, 0 }
typeMap:bin { "01" }
- links:intvector { 282, 328 }
- } //Z#328
+ links:intvector { 282, 329 }
+ } //Z#329
/* Asia/Ust-Nera */ :table {
trans:intvector { -1579426374, -1247558400, 354898800, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701794800, 717519600, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400, 828198000, 846342000, 859647600, 877791600, 891097200, 909241200, 922546800, 941295600, 953996400, 972745200, 985446000, 1004194800, 1017500400, 1035644400, 1048950000, 1067094000, 1080399600, 1099148400, 1111849200, 1130598000, 1143298800, 1162047600, 1174748400, 1193497200, 1206802800, 1224946800, 1238252400, 1256396400, 1269702000, 1288450800, 1301151600, 1315828800, 1414249200 }
typeOffsets:intvector { 34374, 0, 28800, 0, 32400, 0, 36000, 0, 36000, 3600, 39600, 0, 39600, 3600, 43200, 0 }
typeMap:bin { "010206050605060506050605060506050605060506050403050605060506050605060506050605060506050605060506050605060506050605060506050605070503" }
- } //Z#329
- /* Asia/Vientiane */ :int { 250 } //Z#330
+ } //Z#330
+ /* Asia/Vientiane */ :int { 250 } //Z#331
/* Asia/Vladivostok */ :table {
trans:intvector { -1487321251, -1247562000, 354895200, 370702800, 386431200, 402238800, 417967200, 433774800, 449589600, 465321600, 481046400, 496771200, 512496000, 528220800, 543945600, 559670400, 575395200, 591120000, 606844800, 622569600, 638294400, 654624000, 670348800, 686077200, 695754000, 701798400, 717523200, 733248000, 748972800, 764697600, 780422400, 796147200, 811872000, 828201600, 846345600, 859651200, 877795200, 891100800, 909244800, 922550400, 941299200, 954000000, 972748800, 985449600, 1004198400, 1017504000, 1035648000, 1048953600, 1067097600, 1080403200, 1099152000, 1111852800, 1130601600, 1143302400, 1162051200, 1174752000, 1193500800, 1206806400, 1224950400, 1238256000, 1256400000, 1269705600, 1288454400, 1301155200, 1414249200 }
typeOffsets:intvector { 31651, 0, 32400, 0, 32400, 3600, 36000, 0, 36000, 3600, 39600, 0 }
typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" }
- } //Z#331
+ } //Z#332
/* Asia/Yakutsk */ :table {
trans:intvector { -1579423138, -1247558400, 354898800, 370706400, 386434800, 402242400, 417970800, 433778400, 449593200, 465325200, 481050000, 496774800, 512499600, 528224400, 543949200, 559674000, 575398800, 591123600, 606848400, 622573200, 638298000, 654627600, 670352400, 686080800, 695757600, 701802000, 717526800, 733251600, 748976400, 764701200, 780426000, 796150800, 811875600, 828205200, 846349200, 859654800, 877798800, 891104400, 909248400, 922554000, 941302800, 954003600, 972752400, 985453200, 1004202000, 1017507600, 1035651600, 1048957200, 1067101200, 1080406800, 1099155600, 1111856400, 1130605200, 1143306000, 1162054800, 1174755600, 1193504400, 1206810000, 1224954000, 1238259600, 1256403600, 1269709200, 1288458000, 1301158800, 1414252800 }
typeOffsets:intvector { 31138, 0, 28800, 0, 28800, 3600, 32400, 0, 32400, 3600, 36000, 0 }
typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" }
- } //Z#332
+ } //Z#333
/* Asia/Yangon */ :table {
trans:intvector { -1577946287, -873268200, -778410000 }
typeOffsets:intvector { 23087, 0, 23400, 0, 32400, 0 }
typeMap:bin { "010201" }
- links:intvector { 307, 333 }
- } //Z#333
+ links:intvector { 308, 334 }
+ } //Z#334
/* Asia/Yekaterinburg */ :table {
trans:intvector { -1688270553, -1592610305, -1247544000, 354913200, 370720800, 386449200, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000, 1111870800, 1130619600, 1143320400, 1162069200, 1174770000, 1193518800, 1206824400, 1224968400, 1238274000, 1256418000, 1269723600, 1288472400, 1301173200, 1414267200 }
typeOffsets:intvector { 14553, 0, 13505, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }
typeMap:bin { "010204050405040504050405040504050405040504050403020405040504050405040504050405040504050405040504050405040504050405040504050405040604" }
- } //Z#334
+ } //Z#335
/* Asia/Yerevan */ :table {
trans:intvector { -1441162680, -405140400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670370400, 686098800, 701823600, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 859672800, 877816800, 891122400, 909266400, 922572000, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600, 1111874400, 1130623200, 1143324000, 1162072800, 1174773600, 1193522400, 1206828000, 1224972000, 1238277600, 1256421600, 1269727200, 1288476000, 1301176800, 1319925600 }
typeOffsets:intvector { 10680, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }
typeMap:bin { "0103040304030403040304030403040304030403040302010201020102010203040304030403040304030403040304030403040304030403040304030403" }
- links:intvector { 335, 539 }
- } //Z#335
+ links:intvector { 336, 540 }
+ } //Z#336
/* Atlantic/Azores */ :table {
transPre32:intvector { -1, 1581063056 }
- trans:intvector { -1830377128, -1689548400, -1677794400, -1667430000, -1647730800, -1635807600, -1616194800, -1604358000, -1584658800, -1572735600, -1553036400, -1541199600, -1521500400, -1442444400, -1426806000, -1379286000, -1364770800, -1348441200, -1333321200, -1316386800, -1301266800, -1284332400, -1269817200, -1221433200, -1206918000, -1191193200, -1175468400, -1127689200, -1111964400, -1096844400, -1080514800, -1063580400, -1049065200, -1033340400, -1017615600, -1002495600, -986166000, -969231600, -950482800, -942015600, -922662000, -906937200, -891126000, -877302000, -873676800, -864000000, -857948400, -845852400, -842832000, -831340800, -825894000, -814402800, -810777600, -799891200, -794444400, -782953200, -779328000, -768441600, -762994800, -749084400, -733359600, -717624000, -701899200, -686174400, -670449600, -654724800, -639000000, -591825600, -575496000, -559771200, -544046400, -528321600, -512596800, -496872000, -481147200, -465422400, -449697600, -433972800, -417643200, -401918400, -386193600, -370468800, -354744000, -339019200, -323294400, -307569600, -291844800, -276120000, -260395200, -244670400, -228340800, -212616000, -196891200, -181166400, -165441600, -149716800, -133992000, -118267200, 228272400, 243997200, 260326800, 276051600, 291776400, 307504800, 323226000, 338954400, 354679200, 370404000, 386128800, 401853600, 417582000, 433303200, 449028000, 465357600, 481082400, 496807200, 512532000, 528256800, 543981600, 559706400, 575431200, 591156000, 606880800, 622605600, 638330400, 654660000, 670384800, 686109600, 701834400, 717559200, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
+ trans:intvector { -1830376800, -1689548400, -1677794400, -1667430000, -1647730800, -1635807600, -1616194800, -1604358000, -1584658800, -1572735600, -1553036400, -1541199600, -1521500400, -1442444400, -1426806000, -1379286000, -1364770800, -1348441200, -1333321200, -1316386800, -1301266800, -1284332400, -1269817200, -1221433200, -1206918000, -1191193200, -1175468400, -1127689200, -1111964400, -1096844400, -1080514800, -1063580400, -1049065200, -1033340400, -1017615600, -1002495600, -986166000, -969231600, -950482800, -942015600, -922662000, -906937200, -891126000, -877302000, -873676800, -864000000, -857948400, -845852400, -842832000, -831340800, -825894000, -814402800, -810777600, -799891200, -794444400, -782953200, -779328000, -768441600, -762994800, -749084400, -733359600, -717624000, -701899200, -686174400, -670449600, -654724800, -639000000, -591825600, -575496000, -559771200, -544046400, -528321600, -512596800, -496872000, -481147200, -465422400, -449697600, -433972800, -417643200, -401918400, -386193600, -370468800, -354744000, -339019200, -323294400, -307569600, -291844800, -276120000, -260395200, -244670400, -228340800, -212616000, -196891200, -181166400, -165441600, -149716800, -133992000, -118267200, 228272400, 243997200, 260326800, 276051600, 291776400, 307504800, 323226000, 338954400, 354679200, 370404000, 386128800, 401853600, 417582000, 433303200, 449028000, 465357600, 481082400, 496807200, 512532000, 528256800, 543981600, 559706400, 575431200, 591156000, 606880800, 622605600, 638330400, 654660000, 670384800, 686109600, 701834400, 717559200, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
typeOffsets:intvector { -6160, 0, -7200, 0, -7200, 3600, -7200, 7200, -6872, 0, -3600, 0, -3600, 3600, 0, 0 }
typeMap:bin { "04010201020102010201020102010201020102010201020102010201020102010201020102010201020102010203020102030201020302010203020102010201020102010201020102010201020102010201020102010201020102010201020102010506050605060506050605060506050605060506050605060506050605060506070605060506050605" }
finalRule { "EU" }
finalRaw:int { -3600 }
finalYear:int { 1997 }
- } //Z#336
+ } //Z#337
/* Atlantic/Bermuda */ :table {
trans:intvector { -1262281242, 136360800, 152082000, 167810400, 183531600, 199260000, 215586000, 230709600, 247035600, 262764000, 278485200, 294213600, 309934800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544600800, 562136400, 576050400, 594190800, 607500000, 625640400, 638949600, 657090000, 671004000, 688539600, 702453600, 719989200, 733903200, 752043600, 765352800, 783493200, 796802400, 814942800, 828856800, 846392400, 860306400, 877842000, 891756000, 909291600, 923205600, 941346000, 954655200, 972795600, 986104800, 1004245200, 1018159200, 1035694800, 1049608800, 1067144400, 1081058400, 1099198800, 1112508000, 1130648400, 1143957600, 1162098000, 1173592800, 1194152400 }
typeOffsets:intvector { -15558, 0, -14400, 0, -14400, 3600 }
@@ -1718,7 +1721,7 @@ zoneinfo64:table(nofallback) {
finalRule { "US" }
finalRaw:int { -14400 }
finalYear:int { 2008 }
- } //Z#337
+ } //Z#338
/* Atlantic/Canary */ :table {
trans:intvector { -1509663504, -733874400, 323827200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
typeOffsets:intvector { -3696, 0, -3600, 0, 0, 0, 0, 3600 }
@@ -1726,13 +1729,13 @@ zoneinfo64:table(nofallback) {
finalRule { "EU" }
finalRaw:int { 0 }
finalYear:int { 1997 }
- } //Z#338
+ } //Z#339
/* Atlantic/Cape_Verde */ :table {
- trans:intvector { -1988144756, -862610400, -764118000, 186120000 }
+ trans:intvector { -1830376800, -862610400, -764118000, 186120000 }
typeOffsets:intvector { -5644, 0, -7200, 0, -7200, 3600, -3600, 0 }
typeMap:bin { "01020103" }
- } //Z#339
- /* Atlantic/Faeroe */ :int { 341 } //Z#340
+ } //Z#340
+ /* Atlantic/Faeroe */ :int { 342 } //Z#341
/* Atlantic/Faroe */ :table {
trans:intvector { -1955748776, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
typeOffsets:intvector { -1624, 0, 0, 0, 0, 3600 }
@@ -1740,35 +1743,35 @@ zoneinfo64:table(nofallback) {
finalRule { "EU" }
finalRaw:int { 0 }
finalYear:int { 1997 }
- links:intvector { 340, 341 }
- } //Z#341
- /* Atlantic/Jan_Mayen */ :int { 473 } //Z#342
+ links:intvector { 341, 342 }
+ } //Z#342
+ /* Atlantic/Jan_Mayen */ :int { 474 } //Z#343
/* Atlantic/Madeira */ :table {
- trans:intvector { -1830379944, -1689552000, -1677798000, -1667433600, -1647734400, -1635811200, -1616198400, -1604361600, -1584662400, -1572739200, -1553040000, -1541203200, -1521504000, -1442448000, -1426809600, -1379289600, -1364774400, -1348444800, -1333324800, -1316390400, -1301270400, -1284336000, -1269820800, -1221436800, -1206921600, -1191196800, -1175472000, -1127692800, -1111968000, -1096848000, -1080518400, -1063584000, -1049068800, -1033344000, -1017619200, -1002499200, -986169600, -969235200, -950486400, -942019200, -922665600, -906940800, -891129600, -877305600, -873680400, -864003600, -857952000, -845856000, -842835600, -831344400, -825897600, -814406400, -810781200, -799894800, -794448000, -782956800, -779331600, -768445200, -762998400, -749088000, -733363200, -717627600, -701902800, -686178000, -670453200, -654728400, -639003600, -591829200, -575499600, -559774800, -544050000, -528325200, -512600400, -496875600, -481150800, -465426000, -449701200, -433976400, -417646800, -401922000, -386197200, -370472400, -354747600, -339022800, -323298000, -307573200, -291848400, -276123600, -260398800, -244674000, -228344400, -212619600, -196894800, -181170000, -165445200, -149720400, -133995600, -118270800, 228268800, 243993600, 260323200, 276048000, 291772800, 307501200, 323222400, 338950800, 354675600, 370400400, 386125200, 401850000, 417578400, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
+ trans:intvector { -1830380400, -1689552000, -1677798000, -1667433600, -1647734400, -1635811200, -1616198400, -1604361600, -1584662400, -1572739200, -1553040000, -1541203200, -1521504000, -1442448000, -1426809600, -1379289600, -1364774400, -1348444800, -1333324800, -1316390400, -1301270400, -1284336000, -1269820800, -1221436800, -1206921600, -1191196800, -1175472000, -1127692800, -1111968000, -1096848000, -1080518400, -1063584000, -1049068800, -1033344000, -1017619200, -1002499200, -986169600, -969235200, -950486400, -942019200, -922665600, -906940800, -891129600, -877305600, -873680400, -864003600, -857952000, -845856000, -842835600, -831344400, -825897600, -814406400, -810781200, -799894800, -794448000, -782956800, -779331600, -768445200, -762998400, -749088000, -733363200, -717627600, -701902800, -686178000, -670453200, -654728400, -639003600, -591829200, -575499600, -559774800, -544050000, -528325200, -512600400, -496875600, -481150800, -465426000, -449701200, -433976400, -417646800, -401922000, -386197200, -370472400, -354747600, -339022800, -323298000, -307573200, -291848400, -276123600, -260398800, -244674000, -228344400, -212619600, -196894800, -181170000, -165445200, -149720400, -133995600, -118270800, 228268800, 243993600, 260323200, 276048000, 291772800, 307501200, 323222400, 338950800, 354675600, 370400400, 386125200, 401850000, 417578400, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
typeOffsets:intvector { -4056, 0, -3600, 0, -3600, 3600, -3600, 7200, 0, 0, 0, 3600 }
typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010203020102030201020302010203020102010201020102010201020102010201020102010201020102010201020102010201020102010405040504050405040504050405040504050405040504050405040504050405040504050405040504" }
finalRule { "EU" }
finalRaw:int { 0 }
finalYear:int { 1997 }
- } //Z#343
+ } //Z#344
/* Atlantic/Reykjavik */ :table {
trans:intvector { -1956609120, -1668211200, -1647212400, -1636675200, -1613430000, -1605139200, -1581894000, -1539561600, -1531350000, -968025600, -952293600, -942008400, -920239200, -909957600, -888789600, -877903200, -857944800, -846453600, -826495200, -815004000, -795045600, -783554400, -762991200, -752104800, -731541600, -717631200, -700092000, -686181600, -668642400, -654732000, -636588000, -623282400, -605743200, -591832800, -573688800, -559778400, -542239200, -528328800, -510789600, -496879200, -479340000, -465429600, -447890400, -433980000, -415836000, -401925600, -384386400, -370476000, -352936800, -339026400, -321487200, -307576800, -290037600, -276127200, -258588000, -244677600, -226533600, -212623200, -195084000, -181173600, -163634400, -149724000, -132184800, -118274400, -100735200, -86824800, -68680800, -54770400 }
typeOffsets:intvector { -5280, 0, -3600, 0, -3600, 3600, 0, 0 }
typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020103" }
- links:intvector { 344, 513 }
- } //Z#344
+ links:intvector { 345, 514 }
+ } //Z#345
/* Atlantic/South_Georgia */ :table {
transPre32:intvector { -1, 1770454464 }
typeOffsets:intvector { -8768, 0, -7200, 0 }
typeMap:bin { "01" }
- } //Z#345
- /* Atlantic/St_Helena */ :int { 5 } //Z#346
+ } //Z#346
+ /* Atlantic/St_Helena */ :int { 5 } //Z#347
/* Atlantic/Stanley */ :table {
trans:intvector { -1824235716, -1018209600, -1003093200, -986760000, -971643600, -954705600, -939589200, -923256000, -908139600, -891806400, -876690000, -860356800, -852066000, 420609600, 433306800, 452052000, 464151600, 483501600, 495601200, 514350000, 527054400, 545799600, 558504000, 577249200, 589953600, 608698800, 621403200, 640753200, 652852800, 672202800, 684907200, 703652400, 716356800, 735102000, 747806400, 766551600, 779256000, 798001200, 810705600, 830055600, 842760000, 861505200, 874209600, 892954800, 905659200, 924404400, 937108800, 955854000, 968558400, 987310800, 999410400, 1019365200, 1030860000, 1050814800, 1062914400, 1082264400, 1094364000, 1113714000, 1125813600, 1145163600, 1157263200, 1176613200, 1188712800, 1208667600, 1220767200, 1240117200, 1252216800, 1271566800, 1283666400 }
typeOffsets:intvector { -13884, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
typeMap:bin { "010201020102010201020102010304030403020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020103" }
- } //Z#347
- /* Australia/ACT */ :int { 366 } //Z#348
+ } //Z#348
+ /* Australia/ACT */ :int { 367 } //Z#349
/* Australia/Adelaide */ :table {
transPre32:intvector { -1, 1930857236, -1, 2064778096 }
trans:intvector { -1672565340, -1665390600, -883639800, -876126600, -860398200, -844677000, -828343800, -813227400, 57688200, 67969800, 89137800, 100024200, 120587400, 131473800, 152037000, 162923400, 183486600, 194977800, 215541000, 226427400, 246990600, 257877000, 278440200, 289326600, 309889800, 320776200, 341339400, 352225800, 372789000, 384280200, 404843400, 415729800, 436293000, 447179400, 467742600, 478629000, 499192200, 511288200, 530037000, 542737800, 562091400, 574792200, 594145800, 606241800, 625595400, 637691400, 657045000, 667931400, 688494600, 701195400, 719944200, 731435400, 751998600, 764094600, 783448200, 796149000, 814897800, 828203400, 846347400, 859653000, 877797000, 891102600, 909246600, 922552200, 941301000, 954001800, 972750600, 985451400, 1004200200, 1017505800, 1035649800, 1048955400, 1067099400, 1080405000, 1099153800, 1111854600, 1130603400, 1143909000, 1162053000, 1174753800, 1193502600, 1207413000, 1223137800 }
@@ -1777,15 +1780,15 @@ zoneinfo64:table(nofallback) {
finalRule { "AS" }
finalRaw:int { 34200 }
finalYear:int { 2009 }
- links:intvector { 349, 365 }
- } //Z#349
+ links:intvector { 350, 366 }
+ } //Z#350
/* Australia/Brisbane */ :table {
transPre32:intvector { -1, 1928175368 }
trans:intvector { -1672567140, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 625593600, 636480000, 657043200, 667929600, 688492800, 699379200 }
typeOffsets:intvector { 36728, 0, 36000, 0, 36000, 3600 }
typeMap:bin { "0102010201020102010201020102010201" }
- links:intvector { 350, 364 }
- } //Z#350
+ links:intvector { 351, 365 }
+ } //Z#351
/* Australia/Broken_Hill */ :table {
transPre32:intvector { -1, 1930856548, -1, 1980016096, -1, 2064778096 }
trans:intvector { -1672565340, -1665390600, -883639800, -876126600, -860398200, -844677000, -828343800, -813227400, 57688200, 67969800, 89137800, 100024200, 120587400, 131473800, 152037000, 162923400, 183486600, 194977800, 215541000, 226427400, 246990600, 257877000, 278440200, 289326600, 309889800, 320776200, 341339400, 352225800, 372789000, 386699400, 404843400, 415729800, 436293000, 447179400, 467742600, 478629000, 499192200, 511288200, 530037000, 542737800, 562091400, 574792200, 594145800, 606241800, 625595400, 636481800, 657045000, 667931400, 688494600, 699381000, 719944200, 731435400, 751998600, 762885000, 783448200, 794334600, 814897800, 828203400, 846347400, 859653000, 877797000, 891102600, 909246600, 922552200, 941301000, 954001800, 972750600, 985451400, 1004200200, 1017505800, 1035649800, 1048955400, 1067099400, 1080405000, 1099153800, 1111854600, 1130603400, 1143909000, 1162053000, 1174753800, 1193502600, 1207413000, 1223137800 }
@@ -1794,9 +1797,9 @@ zoneinfo64:table(nofallback) {
finalRule { "AS" }
finalRaw:int { 34200 }
finalYear:int { 2009 }
- links:intvector { 351, 370 }
- } //Z#351
- /* Australia/Canberra */ :int { 366 } //Z#352
+ links:intvector { 352, 371 }
+ } //Z#352
+ /* Australia/Canberra */ :int { 367 } //Z#353
/* Australia/Currie */ :table {
transPre32:intvector { -1, 1949172768 }
trans:intvector { -1680508800, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386092800, 404841600, 417542400, 436291200, 447177600, 467740800, 478627200, 499190400, 510076800, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 670348800, 686678400, 701798400, 718128000, 733248000, 749577600, 764697600, 781027200, 796147200, 812476800, 828201600, 844531200, 859651200, 875980800, 891100800, 907430400, 922550400, 938880000, 954000000, 967305600, 985449600, 1002384000, 1017504000, 1033833600, 1048953600, 1065283200, 1080403200, 1096732800, 1111852800, 1128182400, 1143907200, 1159632000, 1174752000, 1191686400, 1207411200, 1223136000 }
@@ -1805,20 +1808,20 @@ zoneinfo64:table(nofallback) {
finalRule { "AT" }
finalRaw:int { 36000 }
finalYear:int { 2009 }
- } //Z#353
+ } //Z#354
/* Australia/Darwin */ :table {
transPre32:intvector { -1, 1930859096, -1, 2064778096 }
trans:intvector { -1672565340, -1665390600, -883639800, -876126600, -860398200, -844677000, -828343800, -813227400 }
typeOffsets:intvector { 31400, 0, 32400, 0, 34200, 0, 34200, 3600 }
typeMap:bin { "01020302030203020302" }
- links:intvector { 0, 354, 362 }
- } //Z#354
+ links:intvector { 0, 355, 363 }
+ } //Z#355
/* Australia/Eucla */ :table {
transPre32:intvector { -1, 1957038768 }
trans:intvector { -1672562640, -1665387900, -883637100, -876123900, -860395500, -844674300, 152039700, 162926100, 436295700, 447182100, 690311700, 699383700, 1165079700, 1174756500, 1193505300, 1206810900, 1224954900, 1238260500 }
typeOffsets:intvector { 30928, 0, 31500, 0, 31500, 3600 }
typeMap:bin { "01020102010201020102010201020102010201" }
- } //Z#355
+ } //Z#356
/* Australia/Hobart */ :table {
transPre32:intvector { -1, 1949171940 }
trans:intvector { -1680508800, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, -71136000, -55411200, -37267200, -25776000, -5817600, 5673600, 25632000, 37728000, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386092800, 404841600, 417542400, 436291200, 447177600, 467740800, 478627200, 499190400, 510076800, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 670348800, 686678400, 701798400, 718128000, 733248000, 749577600, 764697600, 781027200, 796147200, 812476800, 828201600, 844531200, 859651200, 875980800, 891100800, 907430400, 922550400, 938880000, 954000000, 967305600, 985449600, 1002384000, 1017504000, 1033833600, 1048953600, 1065283200, 1080403200, 1096732800, 1111852800, 1128182400, 1143907200, 1159632000, 1174752000, 1191686400, 1207411200, 1223136000 }
@@ -1827,15 +1830,15 @@ zoneinfo64:table(nofallback) {
finalRule { "AT" }
finalRaw:int { 36000 }
finalYear:int { 2009 }
- links:intvector { 356, 367 }
- } //Z#356
- /* Australia/LHI */ :int { 359 } //Z#357
+ links:intvector { 357, 368 }
+ } //Z#357
+ /* Australia/LHI */ :int { 360 } //Z#358
/* Australia/Lindeman */ :table {
transPre32:intvector { -1, 1928176340 }
trans:intvector { -1672567140, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 625593600, 636480000, 657043200, 667929600, 688492800, 699379200, 719942400, 731433600, 751996800, 762883200 }
typeOffsets:intvector { 35756, 0, 36000, 0, 36000, 3600 }
typeMap:bin { "010201020102010201020102010201020102010201" }
- } //Z#358
+ } //Z#359
/* Australia/Lord_Howe */ :table {
transPre32:intvector { -1, 1930852316 }
trans:intvector { 352216800, 372785400, 384273000, 404839800, 415722600, 436289400, 447172200, 467739000, 478621800, 499188600, 511282800, 530033400, 542732400, 562087800, 574786800, 594142200, 606236400, 625591800, 636476400, 657041400, 667926000, 688491000, 699375600, 719940600, 731430000, 751995000, 762879600, 783444600, 794329200, 814894200, 828198000, 846343800, 859647600, 877793400, 891097200, 909243000, 922546800, 941297400, 953996400, 967303800, 985446000, 1004196600, 1017500400, 1035646200, 1048950000, 1067095800, 1080399600, 1099150200, 1111849200, 1130599800, 1143903600, 1162049400, 1174748400, 1193499000, 1207407600, 1223134200 }
@@ -1844,8 +1847,8 @@ zoneinfo64:table(nofallback) {
finalRule { "LH" }
finalRaw:int { 37800 }
finalYear:int { 2009 }
- links:intvector { 357, 359 }
- } //Z#359
+ links:intvector { 358, 360 }
+ } //Z#360
/* Australia/Melbourne */ :table {
transPre32:intvector { -1, 1930855704 }
trans:intvector { -1672567140, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 384278400, 404841600, 415728000, 436291200, 447177600, 467740800, 478627200, 499190400, 511286400, 530035200, 542736000, 561484800, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 667929600, 688492800, 699379200, 719942400, 731433600, 751996800, 762883200, 783446400, 796147200, 814896000, 828201600, 846345600, 859651200, 877795200, 891100800, 909244800, 922550400, 941299200, 954000000, 967305600, 985449600, 1004198400, 1017504000, 1035648000, 1048953600, 1067097600, 1080403200, 1099152000, 1111852800, 1130601600, 1143907200, 1162051200, 1174752000, 1193500800, 1207411200, 1223136000 }
@@ -1854,19 +1857,19 @@ zoneinfo64:table(nofallback) {
finalRule { "AV" }
finalRaw:int { 36000 }
finalYear:int { 2009 }
- links:intvector { 360, 368 }
- } //Z#360
- /* Australia/NSW */ :int { 366 } //Z#361
- /* Australia/North */ :int { 354 } //Z#362
+ links:intvector { 361, 369 }
+ } //Z#361
+ /* Australia/NSW */ :int { 367 } //Z#362
+ /* Australia/North */ :int { 355 } //Z#363
/* Australia/Perth */ :table {
transPre32:intvector { -1, 1957041892 }
trans:intvector { -1672559940, -1665385200, -883634400, -876121200, -860392800, -844671600, 152042400, 162928800, 436298400, 447184800, 690314400, 699386400, 1165082400, 1174759200, 1193508000, 1206813600, 1224957600, 1238263200 }
typeOffsets:intvector { 27804, 0, 28800, 0, 28800, 3600 }
typeMap:bin { "01020102010201020102010201020102010201" }
- links:intvector { 363, 369 }
- } //Z#363
- /* Australia/Queensland */ :int { 350 } //Z#364
- /* Australia/South */ :int { 349 } //Z#365
+ links:intvector { 364, 370 }
+ } //Z#364
+ /* Australia/Queensland */ :int { 351 } //Z#365
+ /* Australia/South */ :int { 350 } //Z#366
/* Australia/Sydney */ :table {
transPre32:intvector { -1, 1930854204 }
trans:intvector { -1672567140, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386697600, 404841600, 415728000, 436291200, 447177600, 467740800, 478627200, 499190400, 511286400, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 636480000, 657043200, 667929600, 688492800, 699379200, 719942400, 731433600, 751996800, 762883200, 783446400, 794332800, 814896000, 828201600, 846345600, 859651200, 877795200, 891100800, 909244800, 922550400, 941299200, 954000000, 967305600, 985449600, 1004198400, 1017504000, 1035648000, 1048953600, 1067097600, 1080403200, 1099152000, 1111852800, 1130601600, 1143907200, 1162051200, 1174752000, 1193500800, 1207411200, 1223136000 }
@@ -1875,19 +1878,19 @@ zoneinfo64:table(nofallback) {
finalRule { "AN" }
finalRaw:int { 36000 }
finalYear:int { 2009 }
- links:intvector { 1, 348, 352, 361, 366 }
- } //Z#366
- /* Australia/Tasmania */ :int { 356 } //Z#367
- /* Australia/Victoria */ :int { 360 } //Z#368
- /* Australia/West */ :int { 363 } //Z#369
- /* Australia/Yancowinna */ :int { 351 } //Z#370
- /* BET */ :int { 202 } //Z#371
- /* BST */ :int { 263 } //Z#372
- /* Brazil/Acre */ :int { 196 } //Z#373
- /* Brazil/DeNoronha */ :int { 176 } //Z#374
- /* Brazil/East */ :int { 202 } //Z#375
- /* Brazil/West */ :int { 156 } //Z#376
- /* CAT */ :int { 43 } //Z#377
+ links:intvector { 1, 349, 353, 362, 367 }
+ } //Z#367
+ /* Australia/Tasmania */ :int { 357 } //Z#368
+ /* Australia/Victoria */ :int { 361 } //Z#369
+ /* Australia/West */ :int { 364 } //Z#370
+ /* Australia/Yancowinna */ :int { 352 } //Z#371
+ /* BET */ :int { 202 } //Z#372
+ /* BST */ :int { 263 } //Z#373
+ /* Brazil/Acre */ :int { 196 } //Z#374
+ /* Brazil/DeNoronha */ :int { 176 } //Z#375
+ /* Brazil/East */ :int { 202 } //Z#376
+ /* Brazil/West */ :int { 156 } //Z#377
+ /* CAT */ :int { 43 } //Z#378
/* CET */ :table {
trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -766623600, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
typeOffsets:intvector { 3600, 0, 3600, 3600 }
@@ -1895,9 +1898,9 @@ zoneinfo64:table(nofallback) {
finalRule { "C-Eur" }
finalRaw:int { 3600 }
finalYear:int { 1997 }
- } //Z#378
- /* CNT */ :int { 207 } //Z#379
- /* CST */ :int { 98 } //Z#380
+ } //Z#379
+ /* CNT */ :int { 207 } //Z#380
+ /* CST */ :int { 98 } //Z#381
/* CST6CDT */ :table {
trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -765392400, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 }
typeOffsets:intvector { -21600, 0, -21600, 3600 }
@@ -1905,22 +1908,22 @@ zoneinfo64:table(nofallback) {
finalRule { "US" }
finalRaw:int { -21600 }
finalYear:int { 2008 }
- } //Z#381
- /* CTT */ :int { 313 } //Z#382
- /* Canada/Atlantic */ :int { 128 } //Z#383
- /* Canada/Central */ :int { 222 } //Z#384
- /* Canada/East-Saskatchewan */ :int { 194 } //Z#385
- /* Canada/Eastern */ :int { 217 } //Z#386
- /* Canada/Mountain */ :int { 112 } //Z#387
- /* Canada/Newfoundland */ :int { 207 } //Z#388
- /* Canada/Pacific */ :int { 219 } //Z#389
- /* Canada/Saskatchewan */ :int { 194 } //Z#390
- /* Canada/Yukon */ :int { 221 } //Z#391
- /* Chile/Continental */ :int { 200 } //Z#392
- /* Chile/EasterIsland */ :int { 555 } //Z#393
- /* Cuba */ :int { 129 } //Z#394
- /* EAT */ :int { 48 } //Z#395
- /* ECT */ :int { 474 } //Z#396
+ } //Z#382
+ /* CTT */ :int { 314 } //Z#383
+ /* Canada/Atlantic */ :int { 128 } //Z#384
+ /* Canada/Central */ :int { 222 } //Z#385
+ /* Canada/East-Saskatchewan */ :int { 194 } //Z#386
+ /* Canada/Eastern */ :int { 217 } //Z#387
+ /* Canada/Mountain */ :int { 112 } //Z#388
+ /* Canada/Newfoundland */ :int { 207 } //Z#389
+ /* Canada/Pacific */ :int { 219 } //Z#390
+ /* Canada/Saskatchewan */ :int { 194 } //Z#391
+ /* Canada/Yukon */ :int { 221 } //Z#392
+ /* Chile/Continental */ :int { 200 } //Z#393
+ /* Chile/EasterIsland */ :int { 556 } //Z#394
+ /* Cuba */ :int { 129 } //Z#395
+ /* EAT */ :int { 48 } //Z#396
+ /* ECT */ :int { 475 } //Z#397
/* EET */ :table {
trans:intvector { 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
typeOffsets:intvector { 7200, 0, 7200, 3600 }
@@ -1928,10 +1931,10 @@ zoneinfo64:table(nofallback) {
finalRule { "EU" }
finalRaw:int { 7200 }
finalYear:int { 1997 }
- } //Z#397
+ } //Z#398
/* EST */ :table {
typeOffsets:intvector { -18000, 0 }
- } //Z#398
+ } //Z#399
/* EST5EDT */ :table {
trans:intvector { -1633280400, -1615140000, -1601830800, -1583690400, -880218000, -765396000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 152085600, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }
typeOffsets:intvector { -18000, 0, -18000, 3600 }
@@ -1939,108 +1942,105 @@ zoneinfo64:table(nofallback) {
finalRule { "US" }
finalRaw:int { -18000 }
finalYear:int { 2008 }
- } //Z#399
- /* Egypt */ :int { 18 } //Z#400
- /* Eire */ :int { 452 } //Z#401
+ } //Z#400
+ /* Egypt */ :int { 18 } //Z#401
+ /* Eire */ :int { 453 } //Z#402
/* Etc/GMT */ :table {
typeOffsets:intvector { 0, 0 }
- links:intvector { 402, 403, 416, 431, 432, 504, 505, 506, 507, 508 }
- } //Z#402
- /* Etc/GMT+0 */ :int { 402 } //Z#403
+ links:intvector { 403, 404, 417, 432, 433, 505, 506, 507, 508, 509 }
+ } //Z#403
+ /* Etc/GMT+0 */ :int { 403 } //Z#404
/* Etc/GMT+1 */ :table {
typeOffsets:intvector { -3600, 0 }
- } //Z#404
+ } //Z#405
/* Etc/GMT+10 */ :table {
typeOffsets:intvector { -36000, 0 }
- } //Z#405
+ } //Z#406
/* Etc/GMT+11 */ :table {
typeOffsets:intvector { -39600, 0 }
- } //Z#406
+ } //Z#407
/* Etc/GMT+12 */ :table {
typeOffsets:intvector { -43200, 0 }
- } //Z#407
+ } //Z#408
/* Etc/GMT+2 */ :table {
typeOffsets:intvector { -7200, 0 }
- } //Z#408
+ } //Z#409
/* Etc/GMT+3 */ :table {
typeOffsets:intvector { -10800, 0 }
- } //Z#409
+ } //Z#410
/* Etc/GMT+4 */ :table {
typeOffsets:intvector { -14400, 0 }
- } //Z#410
+ } //Z#411
/* Etc/GMT+5 */ :table {
typeOffsets:intvector { -18000, 0 }
- } //Z#411
+ } //Z#412
/* Etc/GMT+6 */ :table {
typeOffsets:intvector { -21600, 0 }
- } //Z#412
+ } //Z#413
/* Etc/GMT+7 */ :table {
typeOffsets:intvector { -25200, 0 }
- } //Z#413
+ } //Z#414
/* Etc/GMT+8 */ :table {
typeOffsets:intvector { -28800, 0 }
- } //Z#414
+ } //Z#415
/* Etc/GMT+9 */ :table {
typeOffsets:intvector { -32400, 0 }
- } //Z#415
- /* Etc/GMT-0 */ :int { 402 } //Z#416
+ } //Z#416
+ /* Etc/GMT-0 */ :int { 403 } //Z#417
/* Etc/GMT-1 */ :table {
typeOffsets:intvector { 3600, 0 }
- } //Z#417
+ } //Z#418
/* Etc/GMT-10 */ :table {
typeOffsets:intvector { 36000, 0 }
- } //Z#418
+ } //Z#419
/* Etc/GMT-11 */ :table {
typeOffsets:intvector { 39600, 0 }
- } //Z#419
+ } //Z#420
/* Etc/GMT-12 */ :table {
typeOffsets:intvector { 43200, 0 }
- } //Z#420
+ } //Z#421
/* Etc/GMT-13 */ :table {
typeOffsets:intvector { 46800, 0 }
- } //Z#421
+ } //Z#422
/* Etc/GMT-14 */ :table {
typeOffsets:intvector { 50400, 0 }
- } //Z#422
+ } //Z#423
/* Etc/GMT-2 */ :table {
typeOffsets:intvector { 7200, 0 }
- } //Z#423
+ } //Z#424
/* Etc/GMT-3 */ :table {
typeOffsets:intvector { 10800, 0 }
- } //Z#424
+ } //Z#425
/* Etc/GMT-4 */ :table {
typeOffsets:intvector { 14400, 0 }
- } //Z#425
+ } //Z#426
/* Etc/GMT-5 */ :table {
typeOffsets:intvector { 18000, 0 }
- } //Z#426
+ } //Z#427
/* Etc/GMT-6 */ :table {
typeOffsets:intvector { 21600, 0 }
- } //Z#427
+ } //Z#428
/* Etc/GMT-7 */ :table {
typeOffsets:intvector { 25200, 0 }
- } //Z#428
+ } //Z#429
/* Etc/GMT-8 */ :table {
typeOffsets:intvector { 28800, 0 }
- } //Z#429
+ } //Z#430
/* Etc/GMT-9 */ :table {
typeOffsets:intvector { 32400, 0 }
- } //Z#430
- /* Etc/GMT0 */ :int { 402 } //Z#431
- /* Etc/Greenwich */ :int { 402 } //Z#432
- /* Etc/UCT */ :table {
- typeOffsets:intvector { 0, 0 }
- links:intvector { 433, 613 }
- } //Z#433
+ } //Z#431
+ /* Etc/GMT0 */ :int { 403 } //Z#432
+ /* Etc/Greenwich */ :int { 403 } //Z#433
+ /* Etc/UCT */ :int { 435 } //Z#434
/* Etc/UTC */ :table {
typeOffsets:intvector { 0, 0 }
- links:intvector { 434, 435, 437, 627, 628, 632 }
- } //Z#434
- /* Etc/Universal */ :int { 434 } //Z#435
+ links:intvector { 434, 435, 436, 438, 614, 628, 629, 633 }
+ } //Z#435
+ /* Etc/Universal */ :int { 435 } //Z#436
/* Etc/Unknown */ :table {
typeOffsets:intvector { 0, 0 }
- } //Z#436
- /* Etc/Zulu */ :int { 434 } //Z#437
+ } //Z#437
+ /* Etc/Zulu */ :int { 435 } //Z#438
/* Europe/Amsterdam */ :table {
trans:intvector { -1693700372, -1680484772, -1663453172, -1650147572, -1633213172, -1617488372, -1601158772, -1586038772, -1569709172, -1554589172, -1538259572, -1523139572, -1507501172, -1490566772, -1470176372, -1459117172, -1443997172, -1427667572, -1406672372, -1396217972, -1376950772, -1364768372, -1345414772, -1333318772, -1313792372, -1301264372, -1282256372, -1269814772, -1250720372, -1238365172, -1219184372, -1206915572, -1186957172, -1175465972, -1156025972, -1143411572, -1124489972, -1111961972, -1092953972, -1080512372, -1061331572, -1049062772, -1029190772, -1025745572, -1017613200, -998259600, -986163600, -966723600, -954109200, -935022000, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -766623600, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
typeOffsets:intvector { 1172, 0, 1172, 3600, 1200, 0, 1200, 3600, 3600, 0, 3600, 3600 }
@@ -2048,7 +2048,7 @@ zoneinfo64:table(nofallback) {
finalRule { "EU" }
finalRaw:int { 3600 }
finalYear:int { 1997 }
- } //Z#438
+ } //Z#439
/* Europe/Andorra */ :table {
transPre32:intvector { -1, 2117514132 }
trans:intvector { -733881600, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
@@ -2057,12 +2057,12 @@ zoneinfo64:table(nofallback) {
finalRule { "EU" }
finalRaw:int { 3600 }
finalYear:int { 1997 }
- } //Z#439
+ } //Z#440
/* Europe/Astrakhan */ :table {
trans:intvector { -1441249932, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622594800, 638319600, 654649200, 670374000, 701820000, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174777200, 1193526000, 1206831600, 1224975600, 1238281200, 1256425200, 1269730800, 1288479600, 1301180400, 1414274400, 1459033200 }
typeOffsets:intvector { 11532, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }
typeMap:bin { "01030403040304030403040304030403040302010201030201020102010201020102010201020102010201020102010201020102010201020102010201030103" }
- } //Z#440
+ } //Z#441
/* Europe/Athens */ :table {
trans:intvector { -16861016