Merge m-c to autoland. a=merge
authorRyan VanderMeulen <ryanvm@gmail.com>
Tue, 13 Sep 2016 20:46:39 -0400
changeset 355152 d8f95b350aa20d96a572fa0ff94a6eb08e2c1a61
parent 355151 c6edbdd09f304b3c092cc58ee16e7d1901837434 (current diff)
parent 355012 82d0a583a9a39bf0b0000bccbf6d5c9ec2596bcc (diff)
child 355153 e1c46f438bbf82526fe56f8eb88de9992b5d0332
push id6570
push userraliiev@mozilla.com
push dateMon, 14 Nov 2016 12:26:13 +0000
treeherdermozilla-beta@f455459b2ae5 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone51.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge m-c to autoland. a=merge
browser/themes/linux/browser.css
browser/themes/linux/menuPanel-small.png
browser/themes/linux/menuPanel-small@2x.png
browser/themes/linux/menuPanel.png
browser/themes/linux/menuPanel@2x.png
browser/themes/osx/browser.css
browser/themes/osx/menuPanel-small-yosemite.png
browser/themes/osx/menuPanel-small-yosemite@2x.png
browser/themes/osx/menuPanel-small.png
browser/themes/osx/menuPanel-small@2x.png
browser/themes/osx/menuPanel-yosemite.png
browser/themes/osx/menuPanel-yosemite@2x.png
browser/themes/osx/menuPanel.png
browser/themes/osx/menuPanel@2x.png
browser/themes/windows/browser.css
browser/themes/windows/menuPanel-aero.png
browser/themes/windows/menuPanel-aero@2x.png
browser/themes/windows/menuPanel-small-aero.png
browser/themes/windows/menuPanel-small-aero@2x.png
browser/themes/windows/menuPanel-small.png
browser/themes/windows/menuPanel-small@2x.png
browser/themes/windows/menuPanel.png
browser/themes/windows/menuPanel@2x.png
build/mach_bootstrap.py
media/libcubeb/bug1278612.patch
taskcluster/ci/legacy/kind.yml
taskcluster/ci/legacy/routes.json
taskcluster/ci/legacy/tasks/branches/alder/job_flags.yml
taskcluster/ci/legacy/tasks/branches/ash/job_flags.yml
taskcluster/ci/legacy/tasks/branches/autoland/job_flags.yml
taskcluster/ci/legacy/tasks/branches/base_job_flags.yml
taskcluster/ci/legacy/tasks/branches/base_jobs.yml
taskcluster/ci/legacy/tasks/branches/mozilla-central/job_flags.yml
taskcluster/ci/legacy/tasks/branches/mozilla-inbound/job_flags.yml
taskcluster/ci/legacy/tasks/branches/stylo-try/job_flags.yml
taskcluster/ci/legacy/tasks/branches/stylo/job_flags.yml
taskcluster/ci/legacy/tasks/branches/try/job_flags.yml
taskcluster/ci/legacy/tasks/build.yml
taskcluster/ci/legacy/tasks/builds/android_api_15.yml
taskcluster/ci/legacy/tasks/builds/android_api_15_debug.yml
taskcluster/ci/legacy/tasks/builds/android_api_15_gradle.yml
taskcluster/ci/legacy/tasks/builds/android_api_15_gradle_dependencies.yml
taskcluster/ci/legacy/tasks/builds/android_api_15_partner_sample1.yml
taskcluster/ci/legacy/tasks/builds/android_checkstyle.yml
taskcluster/ci/legacy/tasks/builds/android_lint.yml
taskcluster/ci/legacy/tasks/builds/android_test.yml
taskcluster/ci/legacy/tasks/builds/android_x86.yml
taskcluster/ci/legacy/tasks/builds/b2g_aries_debug.yml
taskcluster/ci/legacy/tasks/builds/b2g_aries_eng.yml
taskcluster/ci/legacy/tasks/builds/b2g_base.yml
taskcluster/ci/legacy/tasks/builds/b2g_nexus_5l_debug.yml
taskcluster/ci/legacy/tasks/builds/b2g_nexus_5l_eng.yml
taskcluster/ci/legacy/tasks/builds/b2g_phone_base.yml
taskcluster/ci/legacy/tasks/builds/b2g_phone_eng_base.yml
taskcluster/ci/legacy/tasks/builds/base_linux32.yml
taskcluster/ci/legacy/tasks/builds/base_linux64.yml
taskcluster/ci/legacy/tasks/builds/base_macosx64.yml
taskcluster/ci/legacy/tasks/builds/base_win32.yml
taskcluster/ci/legacy/tasks/builds/base_win64.yml
taskcluster/ci/legacy/tasks/builds/dbg_linux32.yml
taskcluster/ci/legacy/tasks/builds/dbg_linux64.yml
taskcluster/ci/legacy/tasks/builds/dbg_linux64_asan.yml
taskcluster/ci/legacy/tasks/builds/dbg_macosx64.yml
taskcluster/ci/legacy/tasks/builds/dbg_win32.yml
taskcluster/ci/legacy/tasks/builds/dbg_win64.yml
taskcluster/ci/legacy/tasks/builds/firefox_docker_base.yml
taskcluster/ci/legacy/tasks/builds/firefox_l10n_base.yml
taskcluster/ci/legacy/tasks/builds/firefox_l10n_linux32.yml
taskcluster/ci/legacy/tasks/builds/firefox_l10n_linux64.yml
taskcluster/ci/legacy/tasks/builds/firefox_windows_base.yml
taskcluster/ci/legacy/tasks/builds/haz_linux.yml
taskcluster/ci/legacy/tasks/builds/haz_shell_linux.yml
taskcluster/ci/legacy/tasks/builds/linux64_clang.yml
taskcluster/ci/legacy/tasks/builds/linux64_gcc.yml
taskcluster/ci/legacy/tasks/builds/mobile_base.yml
taskcluster/ci/legacy/tasks/builds/mulet_haz_linux.yml
taskcluster/ci/legacy/tasks/builds/mulet_linux.yml
taskcluster/ci/legacy/tasks/builds/mulet_linux_dbg.yml
taskcluster/ci/legacy/tasks/builds/opt_linux32.yml
taskcluster/ci/legacy/tasks/builds/opt_linux64.yml
taskcluster/ci/legacy/tasks/builds/opt_linux64_artifact.yml
taskcluster/ci/legacy/tasks/builds/opt_linux64_asan.yml
taskcluster/ci/legacy/tasks/builds/opt_linux64_pgo.yml
taskcluster/ci/legacy/tasks/builds/opt_linux64_st-an.yml
taskcluster/ci/legacy/tasks/builds/opt_linux64_valgrind.yml
taskcluster/ci/legacy/tasks/builds/opt_macosx64.yml
taskcluster/ci/legacy/tasks/builds/opt_macosx64_st-an.yml
taskcluster/ci/legacy/tasks/builds/opt_win32.yml
taskcluster/ci/legacy/tasks/builds/opt_win64.yml
taskcluster/ci/legacy/tasks/builds/sm_arm64_sim.yml
taskcluster/ci/legacy/tasks/builds/sm_arm_sim.yml
taskcluster/ci/legacy/tasks/builds/sm_arm_sim_osx.yml
taskcluster/ci/legacy/tasks/builds/sm_asan.yml
taskcluster/ci/legacy/tasks/builds/sm_base.yml
taskcluster/ci/legacy/tasks/builds/sm_compacting.yml
taskcluster/ci/legacy/tasks/builds/sm_msan.yml
taskcluster/ci/legacy/tasks/builds/sm_nonunified.yml
taskcluster/ci/legacy/tasks/builds/sm_package.yml
taskcluster/ci/legacy/tasks/builds/sm_plain.yml
taskcluster/ci/legacy/tasks/builds/sm_plaindebug.yml
taskcluster/ci/legacy/tasks/builds/sm_rootanalysis.yml
taskcluster/ci/legacy/tasks/builds/sm_tsan.yml
taskcluster/ci/legacy/tasks/builds/sm_variant_base.yml
taskcluster/ci/legacy/tasks/docker_build.yml
taskcluster/ci/legacy/tasks/docker_test.yml
taskcluster/ci/legacy/tasks/harness_test.yml
taskcluster/ci/legacy/tasks/image.yml
taskcluster/ci/legacy/tasks/l10n.yml
taskcluster/ci/legacy/tasks/lint.yml
taskcluster/ci/legacy/tasks/phone_build.yml
taskcluster/ci/legacy/tasks/post-builds/mulet_simulator.yml
taskcluster/ci/legacy/tasks/post-builds/upload_symbols.yml
taskcluster/ci/legacy/tasks/test.yml
taskcluster/ci/legacy/tasks/tests/harness_marionette.yml
taskcluster/ci/legacy/tasks/tests/mozharness-gecko.yml
taskcluster/ci/legacy/tasks/tests/mozlint-eslint.yml
taskcluster/ci/legacy/tasks/tests/mozlint-flake8.yml
taskcluster/ci/legacy/tasks/tests/mozlint-wpt.yml
taskcluster/ci/legacy/tasks/tests/sphinx.yml
taskcluster/ci/legacy/tasks/tests/taskgraph-tests.yml
taskcluster/ci/legacy/tasks/windows_build.yml
taskcluster/ci/legacy/tasks/windows_test.yml
taskcluster/taskgraph/task/nightly_fennec.py
taskcluster/taskgraph/test/test_task_legacy.py
taskcluster/taskgraph/test/test_util_legacy_commit_parser.py
taskcluster/taskgraph/transforms/make_task.py
taskcluster/taskgraph/util/legacy_commit_parser.py
testing/web-platform/meta/custom-elements/custom-elements-registry/define.html.ini
testing/web-platform/meta/dom/events/Event-initEvent.html.ini
testing/web-platform/meta/dom/events/Event-propagation.html.ini
testing/web-platform/meta/dom/nodes/Document-getElementsByTagName-xhtml.xhtml.ini
testing/web-platform/meta/dom/nodes/Document-getElementsByTagName.html.ini
testing/web-platform/meta/dom/nodes/Element-getElementsByTagName.html.ini
testing/web-platform/meta/dom/nodes/Node-properties.html.ini
testing/web-platform/meta/encrypted-media/clearkey-check-initdata-type.html.ini
testing/web-platform/meta/encrypted-media/clearkey-events.html.ini
testing/web-platform/meta/encrypted-media/clearkey-generate-request-disallowed-input.html.ini
testing/web-platform/meta/encrypted-media/clearkey-keystatuses-multiple-sessions.html.ini
testing/web-platform/meta/encrypted-media/clearkey-not-callable-after-createsession.html.ini
testing/web-platform/meta/encrypted-media/drm-check-initdata-type.html.ini
testing/web-platform/meta/encrypted-media/drm-generate-request-disallowed-input.html.ini
testing/web-platform/meta/fetch/api/cors/cors-cookies-worker.html.ini
testing/web-platform/meta/fetch/api/cors/cors-cookies.html.ini
testing/web-platform/meta/html/browsers/history/the-history-interface/008.html.ini
testing/web-platform/meta/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.no-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.no-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.keep-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.keep-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.no-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html.ini
testing/web-platform/meta/referrer-policy/same-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html.ini
testing/web-platform/tests/IndexedDB/idbcursor-continuePrimaryKey.htm
testing/web-platform/tests/IndexedDB/idbobjectstore_getKey.htm
testing/web-platform/tests/IndexedDB/idbobjectstore_getKey_exception_order.htm
testing/web-platform/tests/annotation-model/examples/example1-manual.html
testing/web-platform/tests/annotation-model/examples/example2-manual.html
testing/web-platform/tests/annotation-model/tools/template
testing/web-platform/tests/conformance-checkers/html/elements/base/href/port-999999-isvalid.html
testing/web-platform/tests/conformance-checkers/html/elements/html/manifest/port-999999-isvalid.html
testing/web-platform/tests/css-shapes/basic-shape-circle-ellipse-serialization.html
testing/web-platform/tests/custom-elements/custom-elements-registry/define.html
testing/web-platform/tests/domparsing/insert_adjacent_html.xhtml
testing/web-platform/tests/encrypted-media/content/audio_aac-lc_128k_2keys_bis.mp4
testing/web-platform/tests/encrypted-media/content/drmconfig.json
testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_enc_2keys_bis.mp4
testing/web-platform/tests/encrypted-media/util/drmtoday-messagehandler.js
testing/web-platform/tests/html/semantics/forms/the-form-element/form-submission-sandbox.html
testing/web-platform/tests/html/semantics/forms/the-form-element/support/form-submission-sandbox-iframe.html
testing/web-platform/tests/html/semantics/grouping-content/the-ol-element/reversed-1d.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.no-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.no-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.no-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.no-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html
testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html
testing/web-platform/tests/tools/setup.cfg
testing/web-platform/tests/web-animations/interfaces/Animation/id.html
--- a/browser/themes/linux/browser.css
+++ b/browser/themes/linux/browser.css
@@ -28,19 +28,19 @@
 
   --toolbarbutton-active-background: rgba(154,154,154,.5) linear-gradient(rgba(255,255,255,.7), rgba(255,255,255,.4));
   --toolbarbutton-active-bordercolor: rgba(0,0,0,.3);
   --toolbarbutton-active-boxshadow: 0 1px 1px rgba(0,0,0,.1) inset, 0 0 1px rgba(0,0,0,.3) inset;
 
   --toolbarbutton-checkedhover-backgroundcolor: rgba(200,200,200,.5);
 
   --panel-separator-color: ThreeDShadow;
-  --arrowpanel-dimmed: hsla(210,4%,10%,.07);
-  --arrowpanel-dimmed-further: hsla(210,4%,10%,.12);
-  --arrowpanel-dimmed-even-further: hsla(210,4%,10%,.17);
+  --arrowpanel-dimmed: hsla(0,0%,80%,.3);
+  --arrowpanel-dimmed-further: hsla(0,0%,80%,.45);
+  --arrowpanel-dimmed-even-further: hsla(0,0%,80%,.8);
 
   --urlbar-separator-color: ThreeDShadow;
 }
 
 #menubar-items {
   -moz-box-orient: vertical; /* for flex hack */
 }
 
@@ -808,25 +808,16 @@ menuitem:not([type]):not(.menuitem-toolt
 #main-window:not([customizing]) .toolbarbutton-1[disabled=true] > .toolbarbutton-icon,
 #main-window:not([customizing]) .toolbarbutton-1[disabled=true] > .toolbarbutton-menu-dropmarker,
 #main-window:not([customizing]) .toolbarbutton-1[disabled=true] > .toolbarbutton-menubutton-dropmarker,
 #main-window:not([customizing]) .toolbarbutton-1[disabled=true] > .toolbarbutton-menubutton-button > .toolbarbutton-icon,
 #main-window:not([customizing]) .toolbarbutton-1 > .toolbarbutton-menubutton-button[disabled=true] > .toolbarbutton-icon {
   opacity: 0.4;
 }
 
-:-moz-any(@primaryToolbarButtons@)[cui-areatype="menu-panel"] > .toolbarbutton-icon,
-:-moz-any(@primaryToolbarButtons@)[cui-areatype="menu-panel"] > .toolbarbutton-badge-stack > .toolbarbutton-icon,
-:-moz-any(@primaryToolbarButtons@)[cui-areatype="menu-panel"] > .toolbarbutton-menubutton-button > .toolbarbutton-icon,
-toolbaritem[cui-areatype="menu-panel"] > :-moz-any(@nestedButtons@) > .toolbarbutton-icon {
-  filter: url(chrome://browser/skin/filters.svg#fill);
-  fill: currentColor;
-  opacity: 0.7 !important; /* !important overrides .toolbarbutton-1[disabled=true] rule */
-}
-
 /* Fullscreen window controls */
 #window-controls {
   -moz-box-align: start;
   margin-inline-start: 10px;
 }
 
 #minimize-button {
   list-style-image: url("chrome://global/skin/icons/Minimize.gif");
--- a/browser/themes/linux/jar.mn
+++ b/browser/themes/linux/jar.mn
@@ -11,26 +11,22 @@ browser.jar:
   skin/classic/browser/aboutSyncTabs.css
 * skin/classic/browser/syncedtabs/sidebar.css     (syncedtabs/sidebar.css)
   skin/classic/browser/actionicon-tab.png
 * skin/classic/browser/browser.css
 * skin/classic/browser/devedition.css
 * skin/classic/browser/browser-lightweightTheme.css
   skin/classic/browser/click-to-play-warning-stripes.png
   skin/classic/browser/Info.png
-  skin/classic/browser/menuPanel.png
-  skin/classic/browser/menuPanel@2x.png
   skin/classic/browser/menuPanel-customize.png
   skin/classic/browser/menuPanel-customize@2x.png
   skin/classic/browser/menuPanel-exit.png
   skin/classic/browser/menuPanel-exit@2x.png
   skin/classic/browser/menuPanel-help.png
   skin/classic/browser/menuPanel-help@2x.png
-  skin/classic/browser/menuPanel-small.png
-  skin/classic/browser/menuPanel-small@2x.png
   skin/classic/browser/monitor.png
   skin/classic/browser/monitor_16-10.png
 * skin/classic/browser/pageInfo.css
   skin/classic/browser/pageInfo.png
   skin/classic/browser/page-livemarks.png
   skin/classic/browser/Privacy-16.png
   skin/classic/browser/privatebrowsing-mask.png
   skin/classic/browser/reload-stop-go.png
deleted file mode 100644
index 4cd3e52b13d26ae5c4d85cb3ed3c00cd6c70f2ab..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index f3eb362267138163c3abceaf3028b7940954ee31..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 2cf39ab66f74738da2548ddcd0b77ea7f9ff3898..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 2270d645de5966c2df0e979bc273c71664d17ce2..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
--- a/browser/themes/osx/browser.css
+++ b/browser/themes/osx/browser.css
@@ -748,23 +748,16 @@ toolbar .toolbarbutton-1 > .toolbarbutto
   padding-bottom: 1px;
   margin-inline-start: 7px;
   margin-inline-end: 7px;
 }
 
 %include ../shared/toolbarbuttons.inc.css
 %include ../shared/menupanel.inc.css
 
-:-moz-any(@primaryToolbarButtons@)[cui-areatype="menu-panel"][panel-multiview-anchor=true] > .toolbarbutton-icon,
-:-moz-any(@primaryToolbarButtons@)[cui-areatype="menu-panel"][panel-multiview-anchor=true] > .toolbarbutton-badge-stack > .toolbarbutton-icon,
-:-moz-any(@primaryToolbarButtons@)[cui-areatype="menu-panel"][panel-multiview-anchor=true] > .toolbarbutton-menubutton-button > .toolbarbutton-icon {
-  filter: url(chrome://browser/skin/filters.svg#fill);
-  fill: currentColor;
-}
-
 @media not all and (min-resolution: 1.1dppx) {
   #back-button:hover:active:not([disabled="true"]) {
     -moz-image-region: rect(18px, 36px, 36px, 18px);
   }
 
   #forward-button:hover:active:not([disabled="true"]) {
     -moz-image-region: rect(18px, 72px, 36px, 54px);
   }
--- a/browser/themes/osx/jar.mn
+++ b/browser/themes/osx/jar.mn
@@ -16,26 +16,22 @@ browser.jar:
 * skin/classic/browser/browser-lightweightTheme.css
   skin/classic/browser/click-to-play-warning-stripes.png
   skin/classic/browser/Info.png
   skin/classic/browser/keyhole-circle.png
   skin/classic/browser/keyhole-circle@2x.png
   skin/classic/browser/subtle-pattern.png
   skin/classic/browser/menu-back.png
   skin/classic/browser/menu-forward.png
-  skin/classic/browser/menuPanel.png
-  skin/classic/browser/menuPanel@2x.png
   skin/classic/browser/menuPanel-customize.png
   skin/classic/browser/menuPanel-customize@2x.png
   skin/classic/browser/menuPanel-exit.png
   skin/classic/browser/menuPanel-exit@2x.png
   skin/classic/browser/menuPanel-help.png
   skin/classic/browser/menuPanel-help@2x.png
-  skin/classic/browser/menuPanel-small.png
-  skin/classic/browser/menuPanel-small@2x.png
   skin/classic/browser/panel-expander-closed.png
   skin/classic/browser/panel-expander-closed@2x.png
   skin/classic/browser/panel-expander-open.png
   skin/classic/browser/panel-expander-open@2x.png
   skin/classic/browser/panel-plus-sign.png
   skin/classic/browser/page-livemarks.png
   skin/classic/browser/page-livemarks@2x.png
   skin/classic/browser/pageInfo.css
@@ -192,26 +188,22 @@ browser.jar:
   skin/classic/browser/Toolbar-background-noise.png         (Toolbar-background-noise.png)
   skin/classic/browser/lion/toolbarbutton-dropmarker.png    (toolbarbutton-dropmarker-lion.png)
   skin/classic/browser/toolbarbutton-dropmarker@2x.png      (toolbarbutton-dropmarker-lion@2x.png)
   skin/classic/browser/lion/tabbrowser/alltabs-box-bkgnd-icon.png      (tabbrowser/alltabs-box-bkgnd-icon-lion.png)
   skin/classic/browser/tabbrowser/alltabs-box-bkgnd-icon@2x.png        (tabbrowser/alltabs-box-bkgnd-icon-lion@2x.png)
   skin/classic/browser/lion/places/toolbar.png                         (places/toolbar-lion.png)
   skin/classic/browser/yosemite/Toolbar.png                            (Toolbar-yosemite.png)
   skin/classic/browser/yosemite/Toolbar@2x.png                         (Toolbar-yosemite@2x.png)
-  skin/classic/browser/yosemite/menuPanel.png                          (menuPanel-yosemite.png)
-  skin/classic/browser/yosemite/menuPanel@2x.png                       (menuPanel-yosemite@2x.png)
   skin/classic/browser/yosemite/menuPanel-customize.png                (menuPanel-customize-yosemite.png)
   skin/classic/browser/yosemite/menuPanel-customize@2x.png             (menuPanel-customize-yosemite@2x.png)
   skin/classic/browser/yosemite/menuPanel-exit.png                     (menuPanel-exit-yosemite.png)
   skin/classic/browser/yosemite/menuPanel-exit@2x.png                  (menuPanel-exit-yosemite@2x.png)
   skin/classic/browser/yosemite/menuPanel-help.png                     (menuPanel-help-yosemite.png)
   skin/classic/browser/yosemite/menuPanel-help@2x.png                  (menuPanel-help-yosemite@2x.png)
-  skin/classic/browser/yosemite/menuPanel-small.png                    (menuPanel-small-yosemite.png)
-  skin/classic/browser/yosemite/menuPanel-small@2x.png                 (menuPanel-small-yosemite@2x.png)
   skin/classic/browser/yosemite/reload-stop-go.png                     (reload-stop-go-yosemite.png)
   skin/classic/browser/yosemite/reload-stop-go@2x.png                  (reload-stop-go-yosemite@2x.png)
   skin/classic/browser/yosemite/sync-horizontalbar.png                 (sync-horizontalbar-yosemite.png)
   skin/classic/browser/yosemite/sync-horizontalbar@2x.png              (sync-horizontalbar-yosemite@2x.png)
   skin/classic/browser/yosemite/tab-selected-end-inactive.svg          (tabbrowser/tab-selected-end-yosemite-inactive.svg)
   skin/classic/browser/yosemite/tab-selected-start-inactive.svg        (tabbrowser/tab-selected-start-yosemite-inactive.svg)
   skin/classic/browser/yosemite/tab-active-middle-inactive.png         (tabbrowser/tab-active-middle-yosemite-inactive.png)
   skin/classic/browser/yosemite/tab-active-middle-inactive@2x.png      (tabbrowser/tab-active-middle-yosemite-inactive@2x.png)
@@ -228,22 +220,18 @@ browser.jar:
 % override chrome://browser/skin/feeds/audioFeedIcon16.png                 chrome://browser/skin/feeds/feedIcon16.png
 % override chrome://browser/skin/feeds/videoFeedIcon.png                   chrome://browser/skin/feeds/feedIcon.png
 % override chrome://browser/skin/feeds/videoFeedIcon16.png                 chrome://browser/skin/feeds/feedIcon16.png
 % override chrome://browser/skin/toolbarbutton-dropmarker.png              chrome://browser/skin/lion/toolbarbutton-dropmarker.png                 os=Darwin osversion>=10.7
 % override chrome://browser/skin/tabbrowser/alltabs-box-bkgnd-icon.png     chrome://browser/skin/lion/tabbrowser/alltabs-box-bkgnd-icon.png        os=Darwin osversion>=10.7
 % override chrome://browser/skin/places/toolbar.png                        chrome://browser/skin/lion/places/toolbar.png                           os=Darwin osversion>=10.7
 % override chrome://browser/skin/Toolbar.png                               chrome://browser/skin/yosemite/Toolbar.png                              os=Darwin osversion>=10.10
 % override chrome://browser/skin/Toolbar@2x.png                            chrome://browser/skin/yosemite/Toolbar@2x.png                           os=Darwin osversion>=10.10
-% override chrome://browser/skin/menuPanel.png                             chrome://browser/skin/yosemite/menuPanel.png                            os=Darwin osversion>=10.10
-% override chrome://browser/skin/menuPanel@2x.png                          chrome://browser/skin/yosemite/menuPanel@2x.png                         os=Darwin osversion>=10.10
 % override chrome://browser/skin/menuPanel-customize.png                   chrome://browser/skin/yosemite/menuPanel-customize.png                  os=Darwin osversion>=10.10
 % override chrome://browser/skin/menuPanel-customize@2x.png                chrome://browser/skin/yosemite/menuPanel-customize@2x.png               os=Darwin osversion>=10.10
 % override chrome://browser/skin/menuPanel-exit.png                        chrome://browser/skin/yosemite/menuPanel-exit.png                       os=Darwin osversion>=10.10
 % override chrome://browser/skin/menuPanel-exit@2x.png                     chrome://browser/skin/yosemite/menuPanel-exit@2x.png                    os=Darwin osversion>=10.10
 % override chrome://browser/skin/menuPanel-help.png                        chrome://browser/skin/yosemite/menuPanel-help.png                       os=Darwin osversion>=10.10
 % override chrome://browser/skin/menuPanel-help@2x.png                     chrome://browser/skin/yosemite/menuPanel-help@2x.png                    os=Darwin osversion>=10.10
-% override chrome://browser/skin/menuPanel-small.png                       chrome://browser/skin/yosemite/menuPanel-small.png                      os=Darwin osversion>=10.10
-% override chrome://browser/skin/menuPanel-small@2x.png                    chrome://browser/skin/yosemite/menuPanel-small@2x.png                   os=Darwin osversion>=10.10
 % override chrome://browser/skin/reload-stop-go.png                        chrome://browser/skin/yosemite/reload-stop-go.png                       os=Darwin osversion>=10.10
 % override chrome://browser/skin/reload-stop-go@2x.png                     chrome://browser/skin/yosemite/reload-stop-go@2x.png                    os=Darwin osversion>=10.10
 % override chrome://browser/skin/sync-horizontalbar.png                    chrome://browser/skin/yosemite/sync-horizontalbar.png               os=Darwin osversion>=10.10
 % override chrome://browser/skin/sync-horizontalbar@2x.png                 chrome://browser/skin/yosemite/sync-horizontalbar@2x.png            os=Darwin osversion>=10.10
deleted file mode 100644
index 2c36c267869fd56dff976151050e254b10019a37..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index c009af9a48c81eeff2331540fa581b8d47d43d93..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index ecd3b7f08aa58358ae1f8b44c124582c1bea3ecd..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index e41e6f499df1ae2b5cb02ec5c42eaa9042211ce0..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 867a25d0d6c4d551ba252e020e7de6b0dbfdef7e..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index ad2cadb8bad46b4d153a2f23fbce18e80deefca6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 2dc09b997e0ed069dee62eb3cf6ec27c8f8e9e5a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 6e34e8b06903922d02e3df89dc396b138f1b28aa..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
index 0251ed7470879fc6f3a2214a51fb28e41ea49689..07be6a76a86efd878a2476d39f68c84b4ad4e2bc
GIT binary patch
literal 337
zc$@)I0j~auP)<h;3K|Lk000e1NJLTq001xm000mO1ONa4`lmEH00002VoOIv0RM-N
z%)bBt010qNS#tmY3ljhU3ljkVnw%H_000McNliru;0O%{Ix_Kj(RBa-0OCnRK~y-)
z-PAD(!Y~xZ@qjvc1TW$hRJ=rIN9|F(g@<^wATENlI6QCQpqqR?Ln$w5@;Vj4SLpJC
z{GmzX-0*`6xvAh_Iy*L<oFfNoz5!!=z?dHep4j1L1e7NO%F}^T7F`&Dl3Py(N@_h7
zxL|@2PT4@<i9q1pz#DT}a+BQyaaP_5h?8<1xMGDf_Ojp%k3^tx4qOEqr@(cfkfp|$
z%KMN!MFo53z*V3i?-aNWys(vT=djKkQ|}zP3V5f;<2^WHiM#P1bUfOFj{nP_oWHE<
jp3AQ8x$J5m820%9@O{4`?|}uj00000NkvXXu0mjfGaQL2
index 593e1df43d30e2c0361902824a2c93c6b43989e5..7562e138c3d7db91dc7828c01d2277bcb8990ce2
GIT binary patch
literal 625
zc$@)o0*?KOP)<h;3K|Lk000e1NJLTq003YB001Be1ONa4N6EF{00002VoOIv0RM-N
z%)bBt010qNS#tmY3ljhU3ljkVnw%H_000McNliru;0O%{J0Kg|k$eCE0s=`yK~z}7
z?U=Dj13?gmR|^qLrJcQ%g^yri<)!ff@&w5n1VI~{q_s_*BBV%fb70{Um?~;Oa$skr
zpky5P{@ajbFWH#`F>rez*L?DQ#qLhdm~#DtMdvgj>6$QQ@F@AQNgpjAo7kA&KMFkk
z7g>OkcL7R%7NA{OfO5G2<thWpfIkfw(zsB7hZhBScuByJc4>#M=u;Ws<plv=K0IJb
zr%-LG0+@$tQx(8`oSHUu0Uf8>R|RyOYF`!5N%i9eJ~ZHs4j>w-_5kw`jZ}MpdFV&F
zJy3(@9zCl9YS3Kb0|RQ%U*f|8?q~~|E!8Q+JTzOXQ;2y4v^1yC2OUB3guWC3%tO+{
z2Lvz=eGi`(@J%;vvs^-Pn;wEMvN;}#UOp#aj)%UN&kLwqsS8Tzk<Z>#u_3sL>sAUp
z6dQt@xNe=mBcKs}6Azr$J{{xjklup>22P84yyfuTfPp(Qna5iW?+>`=-EJ11o?sSY
zJ`;0-J;5x*e3sx+da_w)<nG<{sS1a=QFiY_uPPkoM%ld!{i=MJo6;>+AXlLm@ic0A
z$gSXWPa(@ge+9q#7=5BME7w+z)684BwsM?i-nzB*<MfoebnQ9)L+^pL{F-}UEnog3
zD+9`aVjs4Wf*-b$f*-b$SwO@x()G%eaX)laybDnBE?|?NjSu(%szCGmPuH$?00000
LNkvXXu0mjfMG*`K
--- a/browser/themes/shared/customizableui/panelUI.inc.css
+++ b/browser/themes/shared/customizableui/panelUI.inc.css
@@ -979,28 +979,31 @@ toolbarpaletteitem[place="palette"] > to
 
 #PanelUI-quit:not([disabled]):hover:active {
   background-color: #ad3434;
   outline-color: #992e2e;
 }
 
 #customization-panelHolder #PanelUI-customize {
   color: white;
-  background-color: rgb(116,191,67);
+  background-color: hsl(108,66%,30%);
   text-shadow: none;
   margin-top: -1px;
 }
 
 #customization-panelHolder #PanelUI-customize + toolbarseparator {
   display: none;
 }
 
-#customization-panelHolder #PanelUI-customize:hover,
+#customization-panelHolder #PanelUI-customize:hover {
+  background-color: hsl(109,65%,26%);
+}
+
 #customization-panelHolder #PanelUI-customize:hover:active {
-  background-color: rgb(105,173,61);
+  background-color: hsl(109,65%,22%);
 }
 
 #customization-palette .toolbarbutton-multiline-text,
 #customization-palette .toolbarbutton-text {
   display: none;
 }
 
 panelview .toolbarbutton-1,
--- a/browser/themes/shared/jar.inc.mn
+++ b/browser/themes/shared/jar.inc.mn
@@ -64,16 +64,18 @@
   skin/classic/browser/heartbeat-star-lit.svg                  (../shared/heartbeat-star-lit.svg)
   skin/classic/browser/heartbeat-star-off.svg                  (../shared/heartbeat-star-off.svg)
   skin/classic/browser/identity-icon.svg                       (../shared/identity-block/identity-icon.svg)
   skin/classic/browser/identity-not-secure.svg                 (../shared/identity-block/identity-not-secure.svg)
   skin/classic/browser/identity-secure.svg                     (../shared/identity-block/identity-secure.svg)
   skin/classic/browser/identity-mixed-passive-loaded.svg       (../shared/identity-block/identity-mixed-passive-loaded.svg)
   skin/classic/browser/identity-mixed-active-loaded.svg        (../shared/identity-block/identity-mixed-active-loaded.svg)
   skin/classic/browser/info.svg                                (../shared/info.svg)
+  skin/classic/browser/menuPanel.svg                           (../shared/menuPanel.svg)
+  skin/classic/browser/menuPanel-small.svg                     (../shared/menuPanel-small.svg)
   skin/classic/browser/notification-icons.svg                  (../shared/notification-icons.svg)
   skin/classic/browser/tracking-protection-16.svg              (../shared/identity-block/tracking-protection-16.svg)
   skin/classic/browser/tracking-protection-disabled-16.svg     (../shared/identity-block/tracking-protection-disabled-16.svg)
   skin/classic/browser/newtab/close.png                        (../shared/newtab/close.png)
   skin/classic/browser/newtab/controls.svg                     (../shared/newtab/controls.svg)
   skin/classic/browser/newtab/whimsycorn.png                   (../shared/newtab/whimsycorn.png)
   skin/classic/browser/panel-icons.svg                         (../shared/panel-icons.svg)
   skin/classic/browser/preferences/in-content/favicon.ico      (../shared/incontentprefs/favicon.ico)
new file mode 100644
--- /dev/null
+++ b/browser/themes/shared/menuPanel-small.svg
@@ -0,0 +1,20 @@
+<?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/. -->
+<svg xmlns="http://www.w3.org/2000/svg" width="96" height="16" viewBox="0 0 96 16">
+  <style>
+    path,
+    rect {
+      fill: -moz-fieldText;
+      fill-opacity: .5;
+    }
+  </style>
+
+  <path id="placeholder" d="M8,16a8,8,0,1,1,8-8A8,8,0,0,1,8,16ZM12,4H4v8h8V4ZM5,9.939V6.061L6.939,8ZM9.939,11H6.061L8,9.061ZM11,11h0Zm0-4.939V9.939L9.061,8ZM11,5h0ZM6.061,5H9.939L8,6.939Z"/>
+  <path id="cut" d="M29.63,15a2.426,2.426,0,0,1-2.282-1.277c-0.761-1.109-1.694-2.488-1.694-2.488S25,10.329,24.549,9.623a1.05,1.05,0,0,0-1.106-.538S20.6,4.437,20.124,3.706C19.465,2.689,20.7,1,20.7,1l4.4,7.044a19.333,19.333,0,0,0,1.867,2.286c0.519,0.4,1.382-.373,2.8.908C31.7,12.984,31.048,15,29.63,15ZM29.423,12.11c-0.933-1.042-1.728-.908-1.936-0.639a2.093,2.093,0,0,0,.38,1.748,1.612,1.612,0,0,0,1.383.74C29.838,13.959,30.356,13.153,29.423,12.11ZM25.582,7.372L24.4,5.6,27.276,1s1.233,1.69.575,2.708C27.568,4.142,26.445,5.967,25.582,7.372Zm-4.576,2.956A12.482,12.482,0,0,0,22.43,8.645l0.826,1.239c-0.428.65-.937,1.352-0.937,1.352s-0.933,1.378-1.694,2.488A2.426,2.426,0,0,1,18.344,15c-1.417,0-2.074-2.017-.138-3.765C19.624,9.956,20.487,10.732,21.006,10.329ZM18.551,12.11c-0.933,1.042-.415,1.849.173,1.849a1.612,1.612,0,0,0,1.383-.74,2.093,2.093,0,0,0,.38-1.748C20.28,11.2,19.485,11.068,18.551,12.11Z"/>
+  <path id="copy" d="M46,15H40a1,1,0,0,1-1-1V6a1,1,0,0,1,1-1h4.953C45,5,47,6.984,47,7.047V14A1,1,0,0,1,46,15ZM44,6V8h2ZM38,4.886V11H34a1,1,0,0,1-1-1V2a1,1,0,0,1,1-1h4.953C39,1,41,2.985,41,3.047v1.34H38.5A0.5,0.5,0,0,0,38,4.886ZM38,2V4h2Z"/>
+  <path id="paste" d="M59.5,15h-7A1.5,1.5,0,0,1,51,13.5v-9A1.5,1.5,0,0,1,52.5,3H54a2,2,0,1,1,4,0h1.5A1.5,1.5,0,0,1,61,4.5v9A1.5,1.5,0,0,1,59.5,15ZM58.682,4L57.61,3.5a1.613,1.613,0,0,0-3.219,0L53.318,4,52.781,5h6.437ZM58.82,5.688H54.074L51.059,7.428l2.849,4.935,6.574-3.8Z"/>
+  <rect id="zoomOut" x="67" y="7" width="10" height="2"/>
+  <path id="zoomIn" d="M93,9H89v4H87V9H83V7h4V3h2V7h4V9Z"/>
+</svg>
new file mode 100644
--- /dev/null
+++ b/browser/themes/shared/menuPanel.svg
@@ -0,0 +1,46 @@
+<?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/. -->
+<svg xmlns="http://www.w3.org/2000/svg" width="1056" height="32" viewBox="0 0 1056 32">
+  <style>
+    path {
+      fill: -moz-fieldText;
+      fill-opacity: .5;
+    }
+  </style>
+
+  <path id="containers" d="M1050,30h-20a2,2,0,0,1-2-2V4.414a1.03,1.03,0,0,1,.29-0.707L1030,2h20l1.71,1.707a1.03,1.03,0,0,1,.29.707V28A2,2,0,0,1,1050,30Zm0-24h-20V28h20V6Zm-2,10h-16V8h16v8Zm-4-4.5a0.5,0.5,0,0,0-1,0V13h-6V11.5a0.5,0.5,0,0,0-1,0v2a0.5,0.5,0,0,0,.5.5h7a0.5,0.5,0,0,0,.5-0.5v-2Zm4,14.5h-16V18h16v8Zm-4-4.5a0.5,0.5,0,0,0-1,0V23h-6V21.5a0.5,0.5,0,0,0-1,0v2a0.5,0.5,0,0,0,.5.5h7a0.5,0.5,0,0,0,.5-0.5v-2Z"/>
+  <path id="tabs" d="M1021.98,28h-28a2,2,0,0,1-2-2V22a2,2,0,0,1,2-2H994c4.591,0,4-3,4.009-8,0.009-4.686.166-8,6.261-8h7.41c6.13,0,6.27,3.314,6.3,8,0.02,5-.59,8,4.02,8h-0.02a2,2,0,0,1,2,2v4A2,2,0,0,1,1021.98,28Z"/>
+  <path id="pocket" d="M975.969,29.969A13.969,13.969,0,0,1,962,16V8.333A4.333,4.333,0,0,1,966.333,4H985.6a4.333,4.333,0,0,1,4.333,4.333V16A13.969,13.969,0,0,1,975.969,29.969Zm7.507-19.035a2.009,2.009,0,0,0-1.424.59l-0.007-.007-6.095,6.015-5.479-5.422a2,2,0,1,0-2.917,2.727l-0.01.01,5.555,5.5h0l1.518,1.5a1.9,1.9,0,0,0,2.661,0l7.558-7.459a1.979,1.979,0,0,0,.649-1.46A2,2,0,0,0,983.476,10.933Z"/>
+  <path id="webIDE" d="M951.947,10a24.679,24.679,0,0,1,.362,2.691L949,16h-4v4l-2,2h-4.393a14.261,14.261,0,0,0,1.358,3.076l-1.716,3.777A15,15,0,1,1,957.175,7.825L955,10h-3.053ZM938.292,26.023A17.1,17.1,0,0,1,936.54,22h-2.819A12.445,12.445,0,0,0,938.292,26.023ZM932.616,20h3.437a25.331,25.331,0,0,1-.462-4h-3.978A12.38,12.38,0,0,0,932.616,20Zm0-10a12.38,12.38,0,0,0-1,4h3.978a25.331,25.331,0,0,1,.462-4h-3.437Zm1.105-2h2.819a17.093,17.093,0,0,1,1.752-4.023A12.444,12.444,0,0,0,933.721,8ZM943,2.613c-0.393.031-.777,0.093-1.158,0.16A10.229,10.229,0,0,0,938.607,8H943V2.613ZM943,10h-4.914a24.566,24.566,0,0,0-.467,4H943V10Zm0,6h-5.381a24.566,24.566,0,0,0,.467,4H943V16Zm2-2h5.381a24.566,24.566,0,0,0-.467-4H945v4Zm1.158-11.227c-0.381-.067-0.765-0.128-1.158-0.16V8h4.393A10.229,10.229,0,0,0,946.158,2.773Zm3.55,1.2A17.093,17.093,0,0,1,951.46,8h2.819A12.444,12.444,0,0,0,949.708,3.977ZM947.068,28.3L939,32l3.726-8.047ZM944,23l13-13,4,4L948,27Zm3.4,6.6,11.2-11.2A15,15,0,0,1,947.4,29.6Z"/>
+  <path id="app" d="M920.044,27.006l-4.354-4.863c-0.39.4-1.028,2.507-1.49,2.769h-4.4c-0.459-.262-1.094-2.375-1.484-2.769l-4.153,4.863H901V16.067l4.353-4.271C906.443,5.26,910.259,1,912,1s5.7,4.26,6.515,10.8L923,16.135V27.006h-2.956Zm-8.036-19.48c-0.61,0-1.819,2.268-2.484,4.251a14.406,14.406,0,0,1,2.535-.224,14.627,14.627,0,0,1,2.423.2C913.818,9.782,912.613,7.526,912.008,7.526Zm-0.762,18.23a4.106,4.106,0,0,0-.165,1.17,1.493,1.493,0,0,0,.858,1.466,1.535,1.535,0,0,0,.957-1.466,4.071,4.071,0,0,0-.165-1.17h1.079a9.949,9.949,0,0,1,.544,1.973A3.6,3.6,0,0,1,912,31.014a3.686,3.686,0,0,1-2.352-3.337,9.384,9.384,0,0,1,.544-1.921h1.051Z"/>
+  <path id="forget" d="M880,31a15,15,0,1,1,15-15A15,15,0,0,1,880,31ZM879.963,8.208V4.159l-6.328,5.2,6.328,5.524v-4.27A5.279,5.279,0,0,1,885.391,16,5.233,5.233,0,0,1,880,21.391a5.406,5.406,0,0,1-5.28-3.516h-2.189A7.773,7.773,0,0,0,887.852,16,8.115,8.115,0,0,0,879.963,8.208Z"/>
+  <path id="sidebars" d="M862,29H834a1,1,0,0,1-1-1V4a1,1,0,0,1,1-1h28a1,1,0,0,1,1,1V28A1,1,0,0,1,862,29ZM840,9h-3a1,1,0,0,0-1,1V25a1,1,0,0,0,1,1h3V9Zm3,17h16a1,1,0,0,0,1-1V10a1,1,0,0,0-1-1H843V26Zm8-20.986a0.991,0.991,0,1,0,1,.99A0.995,0.995,0,0,0,851,5.015Zm3,0a0.991,0.991,0,1,0,1,.99A0.995,0.995,0,0,0,854,5.015ZM859,5h-2a1,1,0,0,0,0,2h2A1,1,0,0,0,859,5Z"/>
+  <path id="addon-generic" d="M815.988,2.013a13.987,13.987,0,1,1-13.975,14A14,14,0,0,1,815.988,2.013ZM814.923,4.4a2.112,2.112,0,0,0-2.371,2,2.064,2.064,0,0,0,.547,1.585,0.884,0.884,0,0,1,.285.717,1.458,1.458,0,0,1-1.706,1.329h-3.2a0.581,0.581,0,0,0-.552.584c-0.011.061,0,2.462,0,2.462a2.445,2.445,0,0,0,.289,1.489,0.8,0.8,0,0,0,.841.411,2.8,2.8,0,0,0,1.6-.487,1.632,1.632,0,0,1,1.221-.428c1.108,0,1.293.45,1.293,1.856,0,1.013-.469,1.931-1.262,1.931a1.054,1.054,0,0,1-.969-0.384,2.6,2.6,0,0,0-1.718-.63,0.99,0.99,0,0,0-1,.485c-0.339.544-.3,1.255-0.3,2.768,0,2.015,0,3.248,0,3.285a0.591,0.591,0,0,0,.552.668h3.2c1.072,0,2.874.361,2.874-1.05a1.611,1.611,0,0,0-.458-1.111,1.685,1.685,0,0,1-.377-1.149c0-.285-0.068-1.283,1.668-1.283,0.071,0,1.634.148,1.634,1.346a1.388,1.388,0,0,1-.245,1.04A1.4,1.4,0,0,0,816.185,23c0,1.5,1.683,1.039,2.213,1.039,1.884,0,2.763.017,3.031,0a0.628,0.628,0,0,0,.585-0.634C822,22.875,822,22.735,822,19.861a6.582,6.582,0,0,1,.172-2.259,0.642,0.642,0,0,1,.657-0.231,1.869,1.869,0,0,1,1.047.384,2.142,2.142,0,0,0,1.625,1.006c1.386,0,2.125-1.622,2.125-2.779,0-1.232-.628-2.754-2.158-2.754a2.029,2.029,0,0,0-1.516.723,1.384,1.384,0,0,1-.876.584,1.131,1.131,0,0,1-1.067-.877V10.738a0.734,0.734,0,0,0-.56-0.709c-0.012,0-1.881,0-3.34,0a1.407,1.407,0,0,1-1.541-1.389,1.292,1.292,0,0,1,.279-0.984,1.8,1.8,0,0,0,.548-1.283C817.392,5.666,817.042,4.4,814.923,4.4Z"/>
+  <path id="mail" d="M787.333,16a4.507,4.507,0,0,1-6.666,0L769.39,6.7A3.349,3.349,0,0,1,772.333,5h23.334a3.348,3.348,0,0,1,2.943,1.7Zm-6.666,3.143a4.507,4.507,0,0,0,6.666,0L799,9.243V23.857A3.242,3.242,0,0,1,795.667,27H772.333A3.243,3.243,0,0,1,769,23.857V9.243Z"/>
+  <path id="settings" d="M763.005,16c0,1.307.425,2.516,1.03,2.728L765,19.068a13.308,13.308,0,0,1-1.644,3.956l-0.921-.443c-0.578-.278-1.733.276-2.657,1.2s-1.478,2.079-1.2,2.657l0.444,0.923a13.357,13.357,0,0,1-3.964,1.622l-0.333-.949c-0.212-.6-1.421-1.03-2.728-1.03s-2.516.425-2.728,1.03l-0.34.969a13.322,13.322,0,0,1-3.956-1.644l0.443-.921c0.278-.578-0.276-1.733-1.2-2.657s-2.08-1.478-2.658-1.2l-0.923.444a13.366,13.366,0,0,1-1.622-3.964l0.949-.333C740.57,18.516,741,17.308,741,16s-0.425-2.516-1.03-2.728l-0.971-.341a13.255,13.255,0,0,1,1.667-3.946l0.9,0.433c0.578,0.278,1.733-.276,2.658-1.2s1.478-2.08,1.2-2.657l-0.433-.9A13.261,13.261,0,0,1,748.932,3l0.34,0.969C749.484,4.57,750.693,5,752,5s2.516-.425,2.728-1.03L755.068,3a13.321,13.321,0,0,1,3.956,1.644l-0.443.921c-0.277.577,0.276,1.733,1.2,2.657s2.079,1.478,2.657,1.2l0.923-.444a13.337,13.337,0,0,1,1.622,3.964l-0.949.333C763.43,13.485,763.005,14.693,763.005,16ZM752,8.946A7.054,7.054,0,1,0,759.054,16,7.054,7.054,0,0,0,752,8.946Z"/>
+  <path id="developer" d="M724.986,11.177a2.978,2.978,0,0,1,.246.367,2.361,2.361,0,0,0,2.835-.346l4.975-4.932A7.808,7.808,0,0,1,734,9.952a7.969,7.969,0,0,1-10.791,7.435L711.4,29.075a3.192,3.192,0,0,1-4.486,0,3.125,3.125,0,0,1,0-4.447l11.675-11.563a7.863,7.863,0,0,1-.64-3.113,7.974,7.974,0,0,1,11.725-7.014l-4.972,4.929a2.307,2.307,0,0,0-.246,2.964A3.066,3.066,0,0,1,724.986,11.177ZM709.25,25A1.747,1.747,0,1,0,711,26.748,1.746,1.746,0,0,0,709.25,25Z"/>
+  <path id="fullscreen" d="M696,22V10l6,6Zm-14,2h12l-6,6Zm11-2H683a1,1,0,0,1-1-1V11a1,1,0,0,1,1-1h10a1,1,0,0,1,1,1V21A1,1,0,0,1,693,22Zm-1-7a1,1,0,0,0-1-1h-6a1,1,0,0,0-1,1v4a1,1,0,0,0,1,1h6a1,1,0,0,0,1-1V15ZM688,2l6,6H681.982Zm-8,8V22l-6-6Z"/>
+  <path id="print" d="M670,26h-4V24h-1l3,6H644l2-4h-4a2,2,0,0,1-2-2V14a2,2,0,0,1,2-2h2V10a2,2,0,0,1,2-2V3a1,1,0,0,1,1-1h18a1,1,0,0,1,1,1V8a2,2,0,0,1,2,2v2h2a2,2,0,0,1,2,2V24A2,2,0,0,1,670,26Zm-24,0,1-2h-1v2Zm1-10h-2a1,1,0,0,0,0,2h2A1,1,0,0,0,647,16ZM664,4.5a0.5,0.5,0,0,0-.5-0.5h-15a0.5,0.5,0,0,0-.5.5v9a0.5,0.5,0,0,0,.5.5h15a0.5,0.5,0,0,0,.5-0.5v-9ZM662.222,24H649.778L648,28h16Z"/>
+  <path id="search" d="M626.853,23.318a10.074,10.074,0,0,1-5.361-1.545l-6.611,6.619a2.028,2.028,0,0,1-2.87,0l-0.4-.4a2.033,2.033,0,0,1,0-2.873l6.618-6.627A10.137,10.137,0,1,1,626.853,23.318Zm0-16.254a6.1,6.1,0,1,0,6.088,6.1A6.092,6.092,0,0,0,626.853,7.064Z"/>
+  <path id="tabGroups" d="M603,28H591a1,1,0,0,1-1-1V17a1,1,0,0,1,1-1h12a1,1,0,0,1,1,1V27A1,1,0,0,1,603,28Zm0-14h-4a1,1,0,0,1-1-1V5a1,1,0,0,1,1-1h4a1,1,0,0,1,1,1v8A1,1,0,0,1,603,14Zm-8,0H581a1,1,0,0,1-1-1V5a1,1,0,0,1,1-1h14a1,1,0,0,1,1,1v8A1,1,0,0,1,595,14Zm-14,2h6a1,1,0,0,1,1,1V27a1,1,0,0,1-1,1h-6a1,1,0,0,1-1-1V17A1,1,0,0,1,581,16Z"/>
+  <path id="privateBrowsing" d="M574.273,11.973c-0.122,2.136.37,4.688-2.4,8.367-2.953,3.926-5.886,3.626-6.44,3.685-3.322.354-3.76-2.62-5.7-2.62-1.7,0-3.083,2.955-5.578,2.62-0.552-.074-3.487.241-6.44-3.685-2.768-3.679-2.276-6.231-2.4-8.367a41.419,41.419,0,0,0-.553-4.451,5.372,5.372,0,0,0,3.056,1.484c1.722,0.119,2.044-.61,5.678-1.662,3.929-1.137,6.3,3.522,6.3,3.522s2.668-4.591,6.3-3.522,3.78,1.78,5.5,1.662a6.249,6.249,0,0,0,3.232-1.484A41.574,41.574,0,0,0,574.273,11.973Zm-20.315.895c-2.148-.479-3.049.339-3.969,0.688a7.615,7.615,0,0,1-1.534.4s0.123,1.246,2.276,2.314,6.569,0.517,6.569.517S557.769,13.718,553.958,12.868ZM569.6,13.557c-0.92-.349-1.821-1.167-3.969-0.688-3.811.85-3.342,3.918-3.342,3.918s4.416,0.551,6.569-.517,2.276-2.314,2.276-2.314A7.615,7.615,0,0,1,569.6,13.557Z"/>
+  <path id="new-tab" d="M541.977,28h-28a2,2,0,0,1-2-2V22a2,2,0,0,1,2-2H514c4.591,0,4-3,4.009-8,0.009-4.686.166-8,6.26-8h7.415c6.126,0,6.271,3.314,6.293,8,0.023,5-.592,8,4.023,8h-0.023a2,2,0,0,1,2,2v4A2,2,0,0,1,541.977,28ZM533,14h-4V10h-2v4h-4v2h4v4h2V16h4V14Z"/>
+  <path id="new-window" d="M510,29H482a1,1,0,0,1-1-1V4a1,1,0,0,1,1-1h28a1,1,0,0,1,1,1V28A1,1,0,0,1,510,29ZM499,5.015a0.991,0.991,0,1,0,1,.99A0.995,0.995,0,0,0,499,5.015Zm3,0a0.991,0.991,0,1,0,1,.99A0.995,0.995,0,0,0,502,5.015ZM507,5h-2a1,1,0,0,0,0,2h2A1,1,0,0,0,507,5Zm1,5a1,1,0,0,0-1-1H485a1,1,0,0,0-1,1V25a1,1,0,0,0,1,1h22a1,1,0,0,0,1-1V10Z"/>
+  <path id="encoding" d="M474,30H454a4,4,0,0,1-4-4V6a4,4,0,0,1,4-4h20a4,4,0,0,1,4,4V26A4,4,0,0,1,474,30Zm-1-19a6,6,0,0,0-6-6h-8a6,6,0,0,0-6,6v8a6,6,0,0,0,6,6h8c3.314,0,6-.686,6-4V11Zm-5.953,6.863a7.6,7.6,0,0,0,1.655-.171,7.822,7.822,0,0,0,1.587-.552v1.445a8.416,8.416,0,0,1-1.567.532,8.014,8.014,0,0,1-1.714.161A4.231,4.231,0,0,1,462.964,17a4.931,4.931,0,0,1-1.753,1.758,4.724,4.724,0,0,1-2.271.518,3.547,3.547,0,0,1-2.5-.83,3,3,0,0,1-.9-2.325,2.846,2.846,0,0,1,1.211-2.447,6.7,6.7,0,0,1,3.692-.952l1.8-.059V12a2.632,2.632,0,0,0-.566-1.86,2.271,2.271,0,0,0-1.729-.6,6.575,6.575,0,0,0-3,.82l-0.508-1.24a7.934,7.934,0,0,1,3.623-.918,4.438,4.438,0,0,1,2.076.425,2.656,2.656,0,0,1,1.206,1.353A3.647,3.647,0,0,1,464.7,8.653a3.833,3.833,0,0,1,1.909-.469,3.787,3.787,0,0,1,3.008,1.3,5.1,5.1,0,0,1,1.133,3.472V14H463.9Q463.98,17.863,467.047,17.863ZM462.2,13.819l-1.543.068a5.31,5.31,0,0,0-2.617.611,1.837,1.837,0,0,0-.8,1.646,1.673,1.673,0,0,0,.522,1.363,2.092,2.092,0,0,0,1.382.435,3.013,3.013,0,0,0,2.237-.825,3.16,3.16,0,0,0,.82-2.329V13.819Zm6.808-1.114a3.81,3.81,0,0,0-.625-2.344,2.124,2.124,0,0,0-1.8-.82,2.3,2.3,0,0,0-1.861.811,4.028,4.028,0,0,0-.786,2.354h5.069Z"/>
+  <path id="share" d="M433.425,19.753l-0.658.08,0-.08L443.07,4.742l-13.5,15.01,0.154,0.45-0.494.06,0.547,0.094,3.651,10.653L426.77,20.562l-8.777,1.067L445,1V25.188Zm0,1.231,4.938,2.986-4.938,7.04-0.6-10.129Z"/>
+  <path id="feed" d="M412.68,29.958l-3.1.031a1.516,1.516,0,0,1-1.538-1.516s0.687-7.114-6.308-14.356c-5.1-6.065-14.151-6.358-14.151-6.358a1.517,1.517,0,0,1-1.6-1.451l0.031-2.833a1.463,1.463,0,0,1,1.538-1.451s12.628,0.807,19.264,8.856c6.554,6.143,7.213,17.593,7.213,17.593A1.337,1.337,0,0,1,412.68,29.958Zm-25.159-18s7.416,0.88,11.585,4.753c4.264,3.961,4.9,11.794,4.9,11.794,0,0.832-.112,1.474-0.952,1.474l-2.852-.031a1.321,1.321,0,0,1-1.235-1.537,12.715,12.715,0,0,0-3.786-8.6c-2.877-2.641-7.694-2.8-7.694-2.8a1.437,1.437,0,0,1-1.521-1.412L386,13.371A1.436,1.436,0,0,1,387.521,11.96Zm2.488,10.03a4.012,4.012,0,1,1-4,4.012A4,4,0,0,1,390.009,21.989Z"/>
+  <path id="sync" d="M381.914,17.518a13.937,13.937,0,0,1-.8,3.367,10.892,10.892,0,0,1-5.084,6.587,23.381,23.381,0,0,0,2.531,1.884,51.867,51.867,0,0,1-8.176.671c-0.073.012-.145-0.233-0.218-0.221l-0.009.219a19.383,19.383,0,0,1-5.989-1.271,10.818,10.818,0,0,0,3.225-4.19,16.7,16.7,0,0,0,1.216-6.063,36.351,36.351,0,0,0,2.73,4.119,8.152,8.152,0,0,0,4.263-6.1,7.53,7.53,0,0,0-1.165-4.689,7.645,7.645,0,0,0-3.463-2.839c0.461-.872,1-1.847,1.513-2.674a7.385,7.385,0,0,1,2.559-2.383A13.959,13.959,0,0,1,381.914,17.518ZM367.96,13.509s-2.271-2.971-3.244-4.054a8.006,8.006,0,0,0-4.306,7.011,7.6,7.6,0,0,0,4.837,6.526,11.93,11.93,0,0,1-1.982,2.818,21.3,21.3,0,0,1-2.45,2.158,13.955,13.955,0,0,1-5.641-17.528,10.883,10.883,0,0,1,4.232-5.453c0.189-.147.382-0.287,0.577-0.424-0.8-.739-3.667-1.049-3.667-1.049s5.431-2.093,13.959-1.16C367.87,6.295,367.96,13.509,367.96,13.509Z"/>
+  <path id="save" d="M346.25,30h-20.5A1.755,1.755,0,0,1,324,28.25V3.75A1.755,1.755,0,0,1,325.75,2h13.5a5.164,5.164,0,0,1,3.033,1.19L346.717,7.3A4.6,4.6,0,0,1,348,10.241V28.25A1.755,1.755,0,0,1,346.25,30ZM345.774,9.293l-5-4.586C340.347,4.318,340,4.45,340,5v5h5.455C346.055,10,346.2,9.682,345.774,9.293Z"/>
+  <path id="open" d="M319.749,13.924a67.491,67.491,0,0,0-1.34,7.977,37.552,37.552,0,0,0-.4,6.4,0.708,0.708,0,0,1-.714.7H290.679a0.709,0.709,0,0,1-.715-0.7,37.552,37.552,0,0,0-.4-6.4,67.491,67.491,0,0,0-1.34-7.977C287.973,12.779,288.606,12,289,12h29.974C319.368,12,320,12.779,319.749,13.924Zm-29.682-6.9h-0.076V5.019a1.987,1.987,0,0,1,1.968-2.006h8.105c1.087,0,2.276,1.755,2.276,1.755l1.635,2.222,13-.009a1.012,1.012,0,0,1,1.025,1V11H290.048Z"/>
+  <path id="addOns" d="M277.051,30.97a1.987,1.987,0,0,0,1.977-2V21.86s0.3-1.829,1.515-1.829,1.088,1.934,3.356,1.934c1.133,0,3.085-.581,3.085-4.082s-1.952-3.924-3.085-3.924c-2.268,0-2.138,1.828-3.356,1.828s-1.515-1.881-1.515-1.881V10.994a1.988,1.988,0,0,0-1.977-2h-5.2s-1.725-.3-1.725-1.515,1.882-1.3,1.882-3.565c0-1.131-.632-2.926-4.135-2.926s-3.977,1.8-3.977,2.926c0,2.268,1.724,2.349,1.724,3.565S263.9,8.993,263.9,8.993h-4.951a1.989,1.989,0,0,0-1.976,2l0,3.906s-0.211,3.015,2.213,3.015c1.528,0,1.732-2.057,3.742-2.057,1,0,2.019.941,2.019,3.02S263.932,22,262.932,22c-2.01,0-2.214-2.055-3.742-2.055-2.424,0-2.213,2.909-2.213,2.909l0,6.115a1.988,1.988,0,0,0,1.976,2h6.638s3.154,0.212,3.154-2.214c0-1.528-1.991-1.824-1.991-3.835,0-1,1.109-2.238,3.19-2.238s3.314,1.238,3.314,2.238c0,2.012-1.928,2.307-1.928,3.835,0,2.425,3.154,2.214,3.154,2.214h2.572Z"/>
+  <path id="downloads" d="M253.285,18.118L242.09,29.126a3.008,3.008,0,0,1-4.242,0L226.59,18.118c-1.166-1.166-.772-2.121.879-2.121h6.5l0.062-12a2.027,2.027,0,0,1,2.032-2H244a2,2,0,0,1,2,2V16h6.406C254.057,16,254.451,16.952,253.285,18.118Z"/>
+  <path id="history" d="M208.007,30.007a14,14,0,1,1,14-14A14,14,0,0,1,208.007,30.007Zm0-24.007a10.008,10.008,0,1,0,10,10.008A10,10,0,0,0,208.007,6ZM206.1,15.9V10.412a1.829,1.829,0,0,1,1.829-1.829,1.951,1.951,0,0,1,1.965,1.829v5.032a22.977,22.977,0,0,1,3.52,5.939s-4.106-1.8-6.059-3.773A1.811,1.811,0,0,1,206.1,15.9Z"/>
+  <path id="bookmark-filled" d="M188.4,11.546l-2.241-.371-5.3-.872-1.354-2.728v0l-1.09-2.192-1.088-2.2c-0.743-1.5-1.96-1.5-2.7,0l-1.089,2.2-1.088,2.192v0L171.1,10.3l-5.295.872-2.242.371c-1.677.275-2.093,1.49-.928,2.7l5.452,5.634-0.834,5.464L166.879,27.8c-0.253,1.643.766,2.348,2.264,1.576L171.2,28.3l2.051-1.071a0.007,0.007,0,0,0,.005,0l2.726-1.427,2.725,1.427a0.016,0.016,0,0,0,.007,0l2.048,1.071,2.06,1.082c1.5,0.772,2.514.068,2.266-1.576l-0.376-2.461-0.828-5.464,5.444-5.628C190.5,13.037,190.08,11.821,188.4,11.546Z"/>
+  <path id="Bookmark-hollow" d="M144,8.365l1.725,3.526,0.79,1.616,1.773,0.3,4.069,0.681-3.007,3.153-1.182,1.24,0.254,1.7,0.63,4.207-3.426-1.821-1.639-.871-1.639.871-3.423,1.819,0.632-4.2,0.255-1.7-1.184-1.241-3-3.15,4.111-.683,1.79-.3,0.787-1.636L144,8.365M143.984,2a1.671,1.671,0,0,0-1.351,1.139l-3.472,7.213-7.582,1.259c-1.675.279-2.091,1.509-.926,2.735l5.445,5.709-1.207,8.031c-0.183,1.207.3,1.914,1.151,1.914a2.448,2.448,0,0,0,1.111-.317l6.832-3.631,6.832,3.631a2.447,2.447,0,0,0,1.11.317c0.85,0,1.333-.707,1.152-1.914l-1.2-8.031,5.438-5.7c1.165-1.229.749-2.461-.926-2.74l-7.527-1.259-3.527-7.213A1.668,1.668,0,0,0,143.984,2h0Z"/>
+  <path id="home" d="M124,16L112,6,100,16H96L112,2l16,14h-4Zm-2,0v13.96h-8V20h-4v9.96h-8V16l10-8Z"/>
+  <path id="stop" d="M93.121,24.879l-4.243,4.243-8.9-8.9L71.206,29l-4.2-4.2,8.774-8.774-8.9-8.9,4.243-4.243,8.9,8.9L88.794,3l4.2,4.2L84.222,15.98Z"/>
+  <path id="reload" d="M62,14a2,2,0,0,1-2,2H48l5.833-5.833a8.993,8.993,0,1,0,1,12.686l3.035,2.6A13,13,0,1,1,56.669,7.331L62,2V14Z"/>
+  <path id="placeholder" fill-rule="evenodd" d="M16,0A16,16,0,1,1,0,16,16,16,0,0,1,16,0ZM8,24V8H24V24H8Zm14-2h0Zm-2.121,0L16,18.121,12.121,22h7.757Zm-6-6L10,12.121v7.757Zm-1.757-6L16,13.879,19.879,10H12.121Zm6,6L22,19.879V12.121Z"/>
+</svg>
--- a/browser/themes/shared/menupanel.inc.css
+++ b/browser/themes/shared/menupanel.inc.css
@@ -1,363 +1,183 @@
 /* Menu panel and palette styles */
 
-@media not all and (min-resolution: 1.1dppx) {
-
-  toolbaritem[sdkstylewidget="true"] > toolbarbutton,
-  :-moz-any(@primaryToolbarButtons@)[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > :-moz-any(@primaryToolbarButtons@) {
-    list-style-image: url(chrome://browser/skin/menuPanel.png);
-  }
-
-  #home-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #home-button {
-    -moz-image-region: rect(0px, 128px, 32px, 96px);
-  }
-
-  #bookmarks-menu-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #bookmarks-menu-button {
-    -moz-image-region: rect(0px, 192px, 32px, 160px);
-  }
+toolbaritem[sdkstylewidget="true"] > toolbarbutton,
+:-moz-any(@primaryToolbarButtons@)[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > :-moz-any(@primaryToolbarButtons@) {
+  list-style-image: url(chrome://browser/skin/menuPanel.svg);
+}
 
-  #history-panelmenu[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #history-panelmenu {
-    -moz-image-region: rect(0px, 224px, 32px, 192px);
-  }
-
-  #downloads-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #downloads-button {
-    -moz-image-region: rect(0px, 256px, 32px, 224px);
-  }
+:-moz-any(@primaryToolbarButtons@)[cui-areatype="menu-panel"][panel-multiview-anchor=true] > .toolbarbutton-icon,
+:-moz-any(@primaryToolbarButtons@)[cui-areatype="menu-panel"][panel-multiview-anchor=true] > .toolbarbutton-badge-stack > .toolbarbutton-icon,
+:-moz-any(@primaryToolbarButtons@)[cui-areatype="menu-panel"][panel-multiview-anchor=true] > .toolbarbutton-menubutton-button > .toolbarbutton-icon {
+  filter: url(chrome://browser/skin/filters.svg#fill);
+  fill: currentColor;
+}
 
-  #add-ons-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #add-ons-button {
-    -moz-image-region: rect(0px, 288px, 32px, 256px);
-  }
-
-  #open-file-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #open-file-button {
-    -moz-image-region: rect(0px, 320px, 32px, 288px);
-  }
-
-  #save-page-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #save-page-button {
-    -moz-image-region: rect(0px, 352px, 32px, 320px);
-  }
+#home-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #home-button {
+  -moz-image-region: rect(0px, 128px, 32px, 96px);
+}
 
-  #sync-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #sync-button {
-    -moz-image-region: rect(0px, 1024px, 32px, 992px);
-  }
-
-  #containers-panelmenu[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #containers-panelmenu {
-    -moz-image-region: rect(0px, 1056px, 32px, 1024px);
-  }
+#bookmarks-menu-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #bookmarks-menu-button {
+  -moz-image-region: rect(0px, 192px, 32px, 160px);
+}
 
-  #feed-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #feed-button {
-    -moz-image-region: rect(0px, 416px, 32px, 384px);
-  }
-
-  #social-share-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #social-share-button {
-    -moz-image-region: rect(0px, 448px, 32px, 416px);
-  }
+#history-panelmenu[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #history-panelmenu {
+  -moz-image-region: rect(0px, 224px, 32px, 192px);
+}
 
-  #characterencoding-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #characterencoding-button {
-    -moz-image-region: rect(0px, 480px, 32px, 448px);
-  }
-
-  #new-window-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #new-window-button {
-    -moz-image-region: rect(0px, 512px, 32px, 480px);
-  }
+#downloads-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #downloads-button {
+  -moz-image-region: rect(0px, 256px, 32px, 224px);
+}
 
-  #e10s-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #e10s-button {
-    -moz-image-region: rect(0px, 512px, 32px, 480px);
-  }
+#add-ons-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #add-ons-button {
+  -moz-image-region: rect(0px, 288px, 32px, 256px);
+}
 
-  #new-tab-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #new-tab-button {
-    -moz-image-region: rect(0px, 544px, 32px, 512px);
-  }
-
-  #privatebrowsing-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #privatebrowsing-button {
-    -moz-image-region: rect(0px, 576px, 32px, 544px);
-  }
+#open-file-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #open-file-button {
+  -moz-image-region: rect(0px, 320px, 32px, 288px);
+}
 
-  #find-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #find-button {
-    -moz-image-region: rect(0px, 640px, 32px, 608px);
-  }
-
-  #print-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #print-button {
-    -moz-image-region: rect(0px, 672px, 32px, 640px);
-  }
+#save-page-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #save-page-button {
+  -moz-image-region: rect(0px, 352px, 32px, 320px);
+}
 
-  #fullscreen-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #fullscreen-button {
-    -moz-image-region: rect(0px, 704px, 32px, 672px);
-  }
-
-  #developer-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #developer-button {
-    -moz-image-region: rect(0px, 736px, 32px, 704px);
-  }
+#sync-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #sync-button {
+  -moz-image-region: rect(0px, 1024px, 32px, 992px);
+}
 
-  #preferences-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #preferences-button {
-    -moz-image-region: rect(0px, 768px, 32px, 736px);
-  }
-
-  #email-link-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #email-link-button {
-    -moz-image-region: rect(0, 800px, 32px, 768px);
-  }
+#containers-panelmenu[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #containers-panelmenu {
+  -moz-image-region: rect(0px, 1056px, 32px, 1024px);
+}
 
-  #sidebar-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #sidebar-button {
-    -moz-image-region: rect(0, 864px, 32px, 832px);
-  }
-
-  #panic-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #panic-button {
-    -moz-image-region: rect(0, 896px, 32px, 864px);
-  }
+#feed-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #feed-button {
+  -moz-image-region: rect(0px, 416px, 32px, 384px);
+}
 
-  #webide-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #webide-button {
-    -moz-image-region: rect(0px, 960px, 32px, 928px);
-  }
-
-  toolbaritem[sdkstylewidget="true"] > toolbarbutton {
-    -moz-image-region: rect(0, 832px, 32px, 800px);
-  }
-
-  /* Wide panel control icons */
+#social-share-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #social-share-button {
+  -moz-image-region: rect(0px, 448px, 32px, 416px);
+}
 
-  #edit-controls@inAnyPanel@ > toolbarbutton,
-  #zoom-controls@inAnyPanel@ > toolbarbutton,
-  toolbarpaletteitem[place="palette"] > #edit-controls > toolbarbutton,
-  toolbarpaletteitem[place="palette"] > #zoom-controls > toolbarbutton {
-    list-style-image: url(chrome://browser/skin/menuPanel-small.png);
-  }
-
-  #edit-controls@inAnyPanel@ > #cut-button,
-  toolbarpaletteitem[place="palette"] > #edit-controls > #cut-button {
-    -moz-image-region: rect(0px, 32px, 16px, 16px);
-  }
+#characterencoding-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #characterencoding-button {
+  -moz-image-region: rect(0px, 480px, 32px, 448px);
+}
 
-  #edit-controls@inAnyPanel@ > #copy-button,
-  toolbarpaletteitem[place="palette"] > #edit-controls > #copy-button {
-    -moz-image-region: rect(0px, 48px, 16px, 32px);
-  }
-
-  #edit-controls@inAnyPanel@ > #paste-button,
-  toolbarpaletteitem[place="palette"] > #edit-controls > #paste-button {
-    -moz-image-region: rect(0px, 64px, 16px, 48px);
-  }
+#new-window-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #new-window-button {
+  -moz-image-region: rect(0px, 512px, 32px, 480px);
+}
 
-  #zoom-controls@inAnyPanel@ > #zoom-out-button,
-  toolbarpaletteitem[place="palette"] > #zoom-controls > #zoom-out-button {
-    -moz-image-region: rect(0px, 80px, 16px, 64px);
-  }
+#e10s-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #e10s-button {
+  -moz-image-region: rect(0px, 512px, 32px, 480px);
+}
 
-  #zoom-controls@inAnyPanel@ > #zoom-in-button,
-  toolbarpaletteitem[place="palette"] > #zoom-controls > #zoom-in-button {
-    -moz-image-region: rect(0px, 96px, 16px, 80px);
-  }
-
-  #add-share-provider {
-    list-style-image: url(chrome://browser/skin/menuPanel-small.png);
-    -moz-image-region: rect(0px, 96px, 16px, 80px);
-  }
+#new-tab-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #new-tab-button {
+  -moz-image-region: rect(0px, 544px, 32px, 512px);
 }
 
-/* Menu panel and palette styles */
-@media (min-resolution: 1.1dppx) {
-  toolbaritem[sdkstylewidget="true"] > toolbarbutton,
-  :-moz-any(@primaryToolbarButtons@)[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > :-moz-any(@primaryToolbarButtons@) {
-    list-style-image: url(chrome://browser/skin/menuPanel@2x.png);
-  }
+#privatebrowsing-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #privatebrowsing-button {
+  -moz-image-region: rect(0px, 576px, 32px, 544px);
+}
 
-  #home-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #home-button {
-    -moz-image-region: rect(0px, 256px, 64px, 192px);
-  }
-
-  #bookmarks-menu-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #bookmarks-menu-button {
-    -moz-image-region: rect(0px, 384px, 64px, 320px);
-  }
+#find-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #find-button {
+  -moz-image-region: rect(0px, 640px, 32px, 608px);
+}
 
-  #history-panelmenu[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #history-panelmenu {
-    -moz-image-region: rect(0px, 448px, 64px, 384px);
-  }
-
-  #downloads-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #downloads-button {
-    -moz-image-region: rect(0px, 512px, 64px, 448px);
-  }
+#print-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #print-button {
+  -moz-image-region: rect(0px, 672px, 32px, 640px);
+}
 
-  #add-ons-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #add-ons-button {
-    -moz-image-region: rect(0px, 576px, 64px, 512px);
-  }
-
-  #open-file-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #open-file-button {
-    -moz-image-region: rect(0px, 640px, 64px, 576px);
-  }
-
-  #save-page-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #save-page-button {
-    -moz-image-region: rect(0px, 704px, 64px, 640px);
-  }
+#fullscreen-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #fullscreen-button {
+  -moz-image-region: rect(0px, 704px, 32px, 672px);
+}
 
-  #sync-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #sync-button {
-    -moz-image-region: rect(0px, 2048px, 64px, 1984px);
-  }
-
-  #containers-panelmenu[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #containers-panelmenu {
-    -moz-image-region: rect(0px, 2112px, 64px, 2048px);
-  }
+#developer-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #developer-button {
+  -moz-image-region: rect(0px, 736px, 32px, 704px);
+}
 
-  #feed-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #feed-button {
-    -moz-image-region: rect(0px, 832px, 64px, 768px);
-  }
-
-  #social-share-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #social-share-button {
-    -moz-image-region: rect(0px, 896px, 64px, 832px);
-  }
+#preferences-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #preferences-button {
+  -moz-image-region: rect(0px, 768px, 32px, 736px);
+}
 
-  #characterencoding-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #characterencoding-button {
-    -moz-image-region: rect(0, 960px, 64px, 896px);
-  }
-
-  #new-window-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #new-window-button {
-    -moz-image-region: rect(0px, 1024px, 64px, 960px);
-  }
+#email-link-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #email-link-button {
+  -moz-image-region: rect(0, 800px, 32px, 768px);
+}
 
-  #e10s-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #e10s-button {
-    -moz-image-region: rect(0px, 1024px, 64px, 960px);
-  }
+#sidebar-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #sidebar-button {
+  -moz-image-region: rect(0, 864px, 32px, 832px);
+}
 
-  #webide-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #webide-button {
-    -moz-image-region: rect(0px, 1920px, 64px, 1856px);
-  }
-
-  #new-tab-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #new-tab-button {
-    -moz-image-region: rect(0px, 1088px, 64px, 1024px);
-  }
+#panic-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #panic-button {
+  -moz-image-region: rect(0, 896px, 32px, 864px);
+}
 
-  #privatebrowsing-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #privatebrowsing-button {
-    -moz-image-region: rect(0px, 1152px, 64px, 1088px);
-  }
-
-  #find-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #find-button {
-    -moz-image-region: rect(0px, 1280px, 64px, 1216px);
-  }
+#webide-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #webide-button {
+  -moz-image-region: rect(0px, 960px, 32px, 928px);
+}
 
-  #print-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #print-button {
-    -moz-image-region: rect(0px, 1344px, 64px, 1280px);
-  }
+toolbaritem[sdkstylewidget="true"] > toolbarbutton {
+  -moz-image-region: rect(0, 832px, 32px, 800px);
+}
 
-  #fullscreen-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #fullscreen-button {
-    -moz-image-region: rect(0px, 1408px, 64px, 1344px);
-  }
+/* Wide panel control icons */
 
-  #developer-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #developer-button {
-    -moz-image-region: rect(0px, 1472px, 64px, 1408px);
-  }
-
-  #preferences-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #preferences-button {
-    -moz-image-region: rect(0px, 1536px, 64px, 1472px);
-  }
+#edit-controls@inAnyPanel@ > toolbarbutton,
+#zoom-controls@inAnyPanel@ > toolbarbutton,
+toolbarpaletteitem[place="palette"] > #edit-controls > toolbarbutton,
+toolbarpaletteitem[place="palette"] > #zoom-controls > toolbarbutton {
+  list-style-image: url(chrome://browser/skin/menuPanel-small.svg);
+}
 
-  #email-link-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #email-link-button {
-    -moz-image-region: rect(0px, 1600px, 64px, 1536px);
-  }
-
-  #sidebar-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #sidebar-button {
-    -moz-image-region: rect(0px, 1728px, 64px, 1664px);
-  }
-
-  #panic-button[cui-areatype="menu-panel"],
-  toolbarpaletteitem[place="palette"] > #panic-button {
-    -moz-image-region: rect(0, 1792px, 64px, 1728px);
-  }
+#edit-controls@inAnyPanel@ > #cut-button,
+toolbarpaletteitem[place="palette"] > #edit-controls > #cut-button {
+  -moz-image-region: rect(0px, 32px, 16px, 16px);
+}
 
-  toolbaritem[sdkstylewidget="true"] > toolbarbutton {
-    -moz-image-region: rect(0, 1664px, 64px, 1600px);
-  }
-
-  #add-share-provider {
-    list-style-image: url(chrome://browser/skin/menuPanel-small@2x.png);
-    -moz-image-region: rect(0px, 192px, 32px, 160px);
-  }
+#edit-controls@inAnyPanel@ > #copy-button,
+toolbarpaletteitem[place="palette"] > #edit-controls > #copy-button {
+  -moz-image-region: rect(0px, 48px, 16px, 32px);
+}
 
-  /* Footer and wide panel control icons */
-  #edit-controls@inAnyPanel@ > toolbarbutton,
-  #zoom-controls@inAnyPanel@ > toolbarbutton,
-  toolbarpaletteitem[place="palette"] > #edit-controls > toolbarbutton,
-  toolbarpaletteitem[place="palette"] > #zoom-controls > toolbarbutton {
-    list-style-image: url(chrome://browser/skin/menuPanel-small@2x.png);
-  }
-
-  /* Wide items like the Cut/Copy/Paste and Zoom controls are special in that their icons
-     are 16x16 when in the panel, but 18x18 when in a toolbar. */
-  #edit-controls@inAnyPanel@ > toolbarbutton > .toolbarbutton-icon,
-  #zoom-controls@inAnyPanel@ > toolbarbutton > .toolbarbutton-icon,
-  toolbarpaletteitem[place="palette"] > #edit-controls > toolbarbutton > .toolbarbutton-icon,
-  toolbarpaletteitem[place="palette"] > #zoom-controls > toolbarbutton > .toolbarbutton-icon {
-    width: 16px;
-  }
+#edit-controls@inAnyPanel@ > #paste-button,
+toolbarpaletteitem[place="palette"] > #edit-controls > #paste-button {
+  -moz-image-region: rect(0px, 64px, 16px, 48px);
+}
 
-  #edit-controls@inAnyPanel@ > #cut-button,
-  toolbarpaletteitem[place="palette"] > #edit-controls > #cut-button {
-    -moz-image-region: rect(0px, 64px, 32px, 32px);
-  }
-
-  #edit-controls@inAnyPanel@ > #copy-button,
-  toolbarpaletteitem[place="palette"] > #edit-controls > #copy-button {
-    -moz-image-region: rect(0px, 96px, 32px, 64px);
-  }
+#zoom-controls@inAnyPanel@ > #zoom-out-button,
+toolbarpaletteitem[place="palette"] > #zoom-controls > #zoom-out-button {
+  -moz-image-region: rect(0px, 80px, 16px, 64px);
+}
 
-  #edit-controls@inAnyPanel@ > #paste-button,
-  toolbarpaletteitem[place="palette"] > #edit-controls > #paste-button {
-    -moz-image-region: rect(0px, 128px, 32px, 96px);
-  }
+#zoom-controls@inAnyPanel@ > #zoom-in-button,
+toolbarpaletteitem[place="palette"] > #zoom-controls > #zoom-in-button {
+  -moz-image-region: rect(0px, 96px, 16px, 80px);
+}
 
-  #zoom-controls@inAnyPanel@ > #zoom-out-button,
-  toolbarpaletteitem[place="palette"] > #zoom-controls > #zoom-out-button {
-    -moz-image-region: rect(0px, 160px, 32px, 128px);
-  }
+#add-share-provider {
+  list-style-image: url(chrome://browser/skin/menuPanel-small.svg);
+  -moz-image-region: rect(0px, 96px, 16px, 80px);
+}
 
-  #zoom-controls@inAnyPanel@ > #zoom-in-button,
-  toolbarpaletteitem[place="palette"] > #zoom-controls > #zoom-in-button {
-    -moz-image-region: rect(0px, 192px, 32px, 160px);
-  }
-}
--- a/browser/themes/shared/plugin-doorhanger.inc.css
+++ b/browser/themes/shared/plugin-doorhanger.inc.css
@@ -45,22 +45,25 @@
 }
 
 .click-to-play-plugins-notification-link,
 .center-item-link {
   margin: 0;
 }
 
 .messageImage[value="plugin-hidden"] {
-  list-style-image: url("chrome://browser/skin/notification-pluginNormal.png");
-  -moz-image-region: rect(0, 16px, 16px, 0);
+  list-style-image: url(chrome://browser/skin/notification-icons.svg#plugin);
+  filter: url(chrome://browser/skin/filters.svg#fill);
+  fill: currentColor;
 }
 
 /* Keep any changes to this style in sync with pluginProblem.css */
 notification.pluginVulnerable {
   background-color: rgb(72,72,72);
   background-image: url(chrome://mozapps/skin/plugins/contentPluginStripe.png);
   color: white;
 }
 
 notification.pluginVulnerable .messageImage {
-  list-style-image: url("chrome://browser/skin/notification-pluginBlocked.png");
+  list-style-image: url(chrome://browser/skin/notification-icons.svg#plugin-blocked);
+  filter: url(chrome://browser/skin/filters.svg#fill);
+  fill: #d92215;
 }
--- a/browser/themes/windows/browser.css
+++ b/browser/themes/windows/browser.css
@@ -41,19 +41,19 @@
   --urlbar-dropmarker-hover-region: rect(0px, 22px, 14px, 11px);
   --urlbar-dropmarker-active-region: rect(0px, 33px, 14px, 22px);
   --urlbar-dropmarker-2x-url: url("chrome://browser/skin/urlbar-history-dropmarker@2x.png");
   --urlbar-dropmarker-2x-region: rect(0, 22px, 28px, 0);
   --urlbar-dropmarker-hover-2x-region: rect(0, 44px, 28px, 22px);
   --urlbar-dropmarker-active-2x-region: rect(0, 66px, 28px, 44px);
 
   --panel-separator-color: ThreeDLightShadow;
-  --arrowpanel-dimmed: hsla(210,4%,10%,.07);
-  --arrowpanel-dimmed-further: hsla(210,4%,10%,.12);
-  --arrowpanel-dimmed-even-further: hsla(210,4%,10%,.17);
+  --arrowpanel-dimmed: hsla(0,0%,80%,.3);
+  --arrowpanel-dimmed-further: hsla(0,0%,80%,.45);
+  --arrowpanel-dimmed-even-further: hsla(0,0%,80%,.8);
 
   --urlbar-separator-color: ThreeDLightShadow;
 }
 
 @media (-moz-windows-default-theme) {
   :root {
     --panel-separator-color: hsla(210,4%,10%,.14);
   }
@@ -707,36 +707,16 @@ toolbar[brighttext] .toolbarbutton-1 > .
 :-moz-any(toolbar, .widget-overflow-list) .toolbarbutton-1:-moz-any(@primaryToolbarButtons@, .toolbarbutton-legacy-addon) > .toolbarbutton-icon,
 :-moz-any(toolbar, .widget-overflow-list) .toolbarbutton-1:-moz-any(@primaryToolbarButtons@, .toolbarbutton-legacy-addon) > :-moz-any(.toolbarbutton-menubutton-button, .toolbarbutton-badge-stack) > .toolbarbutton-icon,
 #bookmarks-menu-button[cui-areatype="toolbar"] > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon {
   max-width: 18px;
 }
 
 %include ../shared/menupanel.inc.css
 
-@media (-moz-windows-default-theme) {
-  :-moz-any(@primaryToolbarButtons@)[cui-areatype="menu-panel"][panel-multiview-anchor=true] > .toolbarbutton-icon,
-  :-moz-any(@primaryToolbarButtons@)[cui-areatype="menu-panel"][panel-multiview-anchor=true] > .toolbarbutton-badge-stack > .toolbarbutton-icon,
-  :-moz-any(@primaryToolbarButtons@)[cui-areatype="menu-panel"][panel-multiview-anchor=true] > .toolbarbutton-menubutton-button > .toolbarbutton-icon {
-    filter: url(chrome://browser/skin/filters.svg#fill);
-    fill: currentColor;
-  }
-}
-
-@media not all and (-moz-windows-default-theme) {
-  :-moz-any(@primaryToolbarButtons@)[cui-areatype="menu-panel"] > .toolbarbutton-icon,
-  :-moz-any(@primaryToolbarButtons@)[cui-areatype="menu-panel"] > .toolbarbutton-badge-stack > .toolbarbutton-icon,
-  :-moz-any(@primaryToolbarButtons@)[cui-areatype="menu-panel"] > .toolbarbutton-menubutton-button > .toolbarbutton-icon,
-  toolbaritem[cui-areatype="menu-panel"] > :-moz-any(@nestedButtons@) > .toolbarbutton-icon {
-    filter: url(chrome://browser/skin/filters.svg#fill);
-    fill: currentColor;
-    opacity: 0.7 !important; /* !important overrides .toolbarbutton-1[disabled=true] rule */
-  }
-}
-
 .findbar-button,
 #nav-bar .toolbarbutton-1,
 #nav-bar .toolbarbutton-1 > .toolbarbutton-menubutton-button {
   -moz-appearance: none;
   border: none;
   padding: 0;
   background: none;
 }
--- a/browser/themes/windows/customizableui/panelUI.css
+++ b/browser/themes/windows/customizableui/panelUI.css
@@ -143,104 +143,8 @@ menu.subviewbutton > .menu-right:-moz-lo
       #edit-controls@inAnyPanel@ > toolbarbutton,
       #zoom-controls@inAnyPanel@ > toolbarbutton {
         border-radius: 0;
       }
     }
   }
 }
 
-@media not all and (-moz-windows-default-theme) {
-  #edit-controls@inAnyPanel@ > #copy-button,
-  #zoom-controls@inAnyPanel@ > #zoom-reset-button,
-  .toolbaritem-combined-buttons@inAnyPanel@ > toolbarbutton {
-    border: 1px solid transparent;
-  }
-
-  panelview .toolbarbutton-1@buttonStateHover@,
-  .widget-overflow-list .toolbarbutton-1@buttonStateHover@,
-  .toolbaritem-combined-buttons@inAnyPanel@ > toolbarbutton@buttonStateHover@ {
-    border-color: ThreeDLightShadow !important;
-  }
-
-  toolbarbutton.subviewbutton@buttonStateHover@,
-  menu.subviewbutton@menuStateHover@,
-  menuitem.subviewbutton@menuStateHover@ {
-    border-color: Highlight;
-  }
-
-  panelview:not(#PanelUI-mainView) .toolbarbutton-1@buttonStateHover@,
-  toolbarbutton.subviewbutton@buttonStateHover@,
-  menu.subviewbutton@menuStateHover@,
-  menuitem.subviewbutton@menuStateHover@,
-  .widget-overflow-list .toolbarbutton-1@buttonStateHover@ {
-    background-color: Highlight;
-    color: highlighttext;
-  }
-
-  panelview .toolbarbutton-1:-moz-any(@buttonStateActive@,[checked=true]),
-  toolbarbutton.subviewbutton@buttonStateActive@,
-  menu.subviewbutton@menuStateActive@,
-  menuitem.subviewbutton@menuStateActive@,
-  .widget-overflow-list .toolbarbutton-1@buttonStateActive@,
-  .toolbaritem-combined-buttons@inAnyPanel@ > toolbarbutton@buttonStateActive@ {
-    background-color: Highlight;
-    border-color: ThreeDLightShadow;
-    color: highlighttext;
-    box-shadow: none;
-  }
-
-  panelview .toolbarbutton-1[disabled],
-  toolbarbutton.subviewbutton[disabled],
-  menu.subviewbutton[disabled],
-  menuitem.subviewbutton[disabled],
-  .widget-overflow-list .toolbarbutton-1[disabled],
-  .toolbaritem-combined-buttons@inAnyPanel@ > toolbarbutton[disabled] {
-    text-shadow: none;
-  }
-
-  #PanelUI-fxa-label,
-  #PanelUI-help,
-  #PanelUI-customize {
-    border: 1px solid transparent;
-  }
-
-  #PanelUI-fxa-label:not([disabled]):hover,
-  #PanelUI-help:not([disabled]):hover,
-  #PanelUI-customize:hover,
-  #PanelUI-fxa-label:not([disabled]):hover:active,
-  #PanelUI-help:not([disabled]):hover:active,
-  #PanelUI-customize:hover:active {
-    border-color: ThreeDLightShadow;
-    box-shadow: none;
-  }
-
-  #BMB_bookmarksPopup .menu-text,
-  #BMB_bookmarksPopup menupopup {
-    color: -moz-FieldText;
-  }
-
-  #BMB_bookmarksPopup .subviewbutton[disabled=true] > .menu-text {
-    color: GrayText;
-  }
-
-  #BMB_bookmarksPopup menupopup[placespopup=true] > hbox {
-    box-shadow: none;
-    background: -moz-field;
-    border: 1px solid ThreeDShadow;
-  }
-
-  .subviewbutton.panel-subview-footer,
-  #BMB_bookmarksPopup .subviewbutton.panel-subview-footer {
-    color: ButtonText;
-  }
-
-  .subviewbutton@menuStateMenuActive@,
-  menuitem.panel-subview-footer@menuStateHover@,
-  .subviewbutton.panel-subview-footer@buttonStateHover@,
-  .subviewbutton.panel-subview-footer@buttonStateActive@,
-  .subviewbutton@menuStateHover@ > .menu-accel-container,
-  .PanelUI-subView .subviewbutton[shortcut]@buttonStateHover@::after,
-  #BMB_bookmarksPopup .panel-subview-footer@menuStateMenuActive@ > .menu-text {
-    background-color: Highlight;
-    color: highlighttext !important;
-  }
-}
--- a/browser/themes/windows/jar.mn
+++ b/browser/themes/windows/jar.mn
@@ -21,30 +21,22 @@ browser.jar:
   skin/classic/browser/Info-XP.png
   skin/classic/browser/keyhole-forward-mask.svg
   skin/classic/browser/livemark-folder.png
   skin/classic/browser/livemark-folder-XP.png
   skin/classic/browser/menu-back.png
   skin/classic/browser/menu-back-XP.png
   skin/classic/browser/menu-forward.png
   skin/classic/browser/menu-forward-XP.png
-  skin/classic/browser/menuPanel.png
-  skin/classic/browser/menuPanel@2x.png
-  skin/classic/browser/menuPanel-aero.png
-  skin/classic/browser/menuPanel-aero@2x.png
   skin/classic/browser/menuPanel-customize.png
   skin/classic/browser/menuPanel-customize@2x.png
   skin/classic/browser/menuPanel-exit.png
   skin/classic/browser/menuPanel-exit@2x.png
   skin/classic/browser/menuPanel-help.png
   skin/classic/browser/menuPanel-help@2x.png
-  skin/classic/browser/menuPanel-small.png
-  skin/classic/browser/menuPanel-small@2x.png
-  skin/classic/browser/menuPanel-small-aero.png
-  skin/classic/browser/menuPanel-small-aero@2x.png
   skin/classic/browser/monitor.png
   skin/classic/browser/monitor_16-10.png
   skin/classic/browser/pageInfo.css
   skin/classic/browser/pageInfo.png
   skin/classic/browser/pageInfo-XP.png
   skin/classic/browser/privatebrowsing-mask-tabstrip.png
   skin/classic/browser/privatebrowsing-mask-tabstrip-XPVista7.png
   skin/classic/browser/privatebrowsing-mask-titlebar.png
@@ -257,24 +249,16 @@ browser.jar:
 % override chrome://browser/skin/urlbar-history-dropmarker.png        chrome://browser/skin/urlbar-history-dropmarker-XPVista7.png      os=WINNT osversion<=6.1
 % override chrome://browser/skin/urlbar-history-dropmarker@2x.png     chrome://browser/skin/urlbar-history-dropmarker-XPVista7@2x.png   os=WINNT osversion<=6.1
 % override chrome://browser/skin/downloads/download-glow-menuPanel.png  chrome://browser/skin/downloads/download-glow-menuPanel-XPVista7.png os=WINNT osversion<=6.1
 % override chrome://browser/skin/places/autocomplete-star.png         chrome://browser/skin/places/autocomplete-star-XPVista7.png       os=WINNT osversion<=6.1
 % override chrome://browser/skin/tabbrowser/newtab.svg                chrome://browser/skin/tabbrowser/newtab-XPVista7.svg              os=WINNT osversion<=6.1
 % override chrome://browser/skin/tabbrowser/newtab-inverted.svg       chrome://browser/skin/tabbrowser/newtab-inverted-XPVista7.svg     os=WINNT osversion<=6.1
 % override chrome://browser/skin/tabbrowser/tab-arrow-left.svg        chrome://browser/skin/tabbrowser/tab-arrow-left-XPVista7.svg      os=WINNT osversion<=6.1
 
-% override chrome://browser/skin/menuPanel.png                        chrome://browser/skin/menuPanel-aero.png                          os=WINNT osversion=6
-% override chrome://browser/skin/menuPanel.png                        chrome://browser/skin/menuPanel-aero.png                          os=WINNT osversion=6.1
-% override chrome://browser/skin/menuPanel@2x.png                     chrome://browser/skin/menuPanel-aero@2x.png                       os=WINNT osversion=6
-% override chrome://browser/skin/menuPanel@2x.png                     chrome://browser/skin/menuPanel-aero@2x.png                       os=WINNT osversion=6.1
-% override chrome://browser/skin/menuPanel-small.png                  chrome://browser/skin/menuPanel-small-aero.png                    os=WINNT osversion=6
-% override chrome://browser/skin/menuPanel-small.png                  chrome://browser/skin/menuPanel-small-aero.png                    os=WINNT osversion=6.1
-% override chrome://browser/skin/menuPanel-small@2x.png               chrome://browser/skin/menuPanel-small-aero@2x.png                 os=WINNT osversion=6
-% override chrome://browser/skin/menuPanel-small@2x.png               chrome://browser/skin/menuPanel-small-aero@2x.png                 os=WINNT osversion=6.1
 % override chrome://browser/skin/Toolbar@2x.png                       chrome://browser/skin/Toolbar-aero@2x.png                         os=WINNT osversion=6
 % override chrome://browser/skin/Toolbar@2x.png                       chrome://browser/skin/Toolbar-aero@2x.png                         os=WINNT osversion=6.1
 % override chrome://browser/skin/Toolbar@2x.png                       chrome://browser/skin/Toolbar-win8@2x.png                         os=WINNT osversion=6.2
 % override chrome://browser/skin/Toolbar@2x.png                       chrome://browser/skin/Toolbar-win8@2x.png                         os=WINNT osversion=6.3
 % override chrome://browser/skin/Toolbar.png                          chrome://browser/skin/Toolbar-XP.png                              os=WINNT osversion<6
 % override chrome://browser/skin/Toolbar.png                          chrome://browser/skin/Toolbar-aero.png                            os=WINNT osversion=6
 % override chrome://browser/skin/Toolbar.png                          chrome://browser/skin/Toolbar-aero.png                            os=WINNT osversion=6.1
 % override chrome://browser/skin/Toolbar.png                          chrome://browser/skin/Toolbar-win8.png                            os=WINNT osversion=6.2
deleted file mode 100644
index b1db058ff0cf93d69e8e12bbcb8c7417f17f3a29..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 664cbf5af737bc3bf5451a18ab150e90208ee095..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 65b7340554d7437b195d1059564f13ce849c2e8b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index a09afd753f11eb6c036b6bd1b6154d3c0492bcae..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 7bd8960a6fe92c404a152b8127f38c2d49e8367b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index f3eb362267138163c3abceaf3028b7940954ee31..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 2cf39ab66f74738da2548ddcd0b77ea7f9ff3898..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 2270d645de5966c2df0e979bc273c71664d17ce2..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
--- a/build/mach_bootstrap.py
+++ b/build/mach_bootstrap.py
@@ -48,16 +48,17 @@ SEARCH_PATHS = [
     'python/pylru',
     'python/which',
     'python/pystache',
     'python/pyyaml/lib',
     'python/requests',
     'python/slugid',
     'python/py',
     'python/pytest',
+    'python/redo',
     'python/voluptuous',
     'build',
     'build/pymake',
     'config',
     'dom/bindings',
     'dom/bindings/parser',
     'dom/media/test/external',
     'layout/tools/reftest',
--- a/gfx/thebes/gfxDrawable.cpp
+++ b/gfx/thebes/gfxDrawable.cpp
@@ -154,17 +154,18 @@ IsRepeatingExtendMode(ExtendMode aExtend
 bool
 gfxCallbackDrawable::Draw(gfxContext* aContext,
                           const gfxRect& aFillRect,
                           ExtendMode aExtendMode,
                           const SamplingFilter aSamplingFilter,
                           gfxFloat aOpacity,
                           const gfxMatrix& aTransform)
 {
-    if ((IsRepeatingExtendMode(aExtendMode) || aOpacity != 1.0) && !mSurfaceDrawable) {
+    if ((IsRepeatingExtendMode(aExtendMode) || aOpacity != 1.0 || aContext->CurrentOp() != CompositionOp::OP_OVER) &&
+        !mSurfaceDrawable) {
         mSurfaceDrawable = MakeSurfaceDrawable(aSamplingFilter);
     }
 
     if (mSurfaceDrawable)
         return mSurfaceDrawable->Draw(aContext, aFillRect, aExtendMode,
                                       aSamplingFilter,
                                       aOpacity, aTransform);
 
--- a/gfx/thebes/gfxUtils.cpp
+++ b/gfx/thebes/gfxUtils.cpp
@@ -7,16 +7,17 @@
 
 #include "cairo.h"
 #include "gfxContext.h"
 #include "gfxEnv.h"
 #include "gfxImageSurface.h"
 #include "gfxPlatform.h"
 #include "gfxDrawable.h"
 #include "imgIEncoder.h"
+#include "libyuv.h"
 #include "mozilla/Base64.h"
 #include "mozilla/dom/ImageEncoder.h"
 #include "mozilla/dom/WorkerPrivate.h"
 #include "mozilla/dom/WorkerRunnable.h"
 #include "mozilla/gfx/2D.h"
 #include "mozilla/gfx/DataSurfaceHelpers.h"
 #include "mozilla/gfx/Logging.h"
 #include "mozilla/Maybe.h"
@@ -368,30 +369,17 @@ gfxUtils::CreateUnpremultipliedDataSurfa
     UnmapSrcDest(srcSurf, destSurf);
     return destSurf.forget();
 }
 
 void
 gfxUtils::ConvertBGRAtoRGBA(uint8_t* aData, uint32_t aLength)
 {
     MOZ_ASSERT((aLength % 4) == 0, "Loop below will pass srcEnd!");
-
-    uint8_t *src = aData;
-    uint8_t *srcEnd = src + aLength;
-
-    uint8_t buffer[4];
-    for (; src != srcEnd; src += 4) {
-        buffer[0] = src[2];
-        buffer[1] = src[1];
-        buffer[2] = src[0];
-
-        src[0] = buffer[0];
-        src[1] = buffer[1];
-        src[2] = buffer[2];
-    }
+    libyuv::ABGRToARGB(aData, aLength, aData, aLength, aLength / 4, 1);
 }
 
 #if !defined(MOZ_GFX_OPTIMIZE_MOBILE)
 /**
  * This returns the fastest operator to use for solid surfaces which have no
  * alpha channel or their alpha channel is uniformly opaque.
  * This differs per render mode.
  */
--- a/gfx/thebes/moz.build
+++ b/gfx/thebes/moz.build
@@ -279,14 +279,15 @@ CFLAGS += CONFIG['TK_CFLAGS']
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gonk'):
     CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS']
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'):
     CXXFLAGS += CONFIG['MOZ_PANGO_CFLAGS']
 
 LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES']
+LOCAL_INCLUDES += ['/media/libyuv/include']
 
 DEFINES['GRAPHITE2_STATIC'] = True
 
 if CONFIG['CLANG_CXX']:
     # Suppress warnings from Skia header files.
     SOURCES['gfxPlatform.cpp'].flags += ['-Wno-implicit-fallthrough']
--- a/js/public/ProfilingStack.h
+++ b/js/public/ProfilingStack.h
@@ -38,17 +38,17 @@ class ProfileEntry
 
     // Descriptive string of this entry.
     const char * volatile string;
 
     // Stack pointer for non-JS entries, the script pointer otherwise.
     void * volatile spOrScript;
 
     // Line number for non-JS entries, the bytecode offset otherwise.
-    int32_t volatile lineOrPc;
+    int32_t volatile lineOrPcOffset;
 
     // General purpose storage describing this frame.
     uint32_t volatile flags_;
 
   public:
     // These traits are bit masks. Make sure they're powers of 2.
     enum Flags : uint32_t {
         // Indicate whether a profile entry represents a CPP frame. If not set,
@@ -111,17 +111,17 @@ class ProfileEntry
     void initJsFrame(JSScript* aScript, jsbytecode* aPc) volatile {
         flags_ = 0;
         spOrScript = aScript;
         setPC(aPc);
     }
     void initCppFrame(void* aSp, uint32_t aLine) volatile {
         flags_ = IS_CPP_ENTRY;
         spOrScript = aSp;
-        lineOrPc = static_cast<int32_t>(aLine);
+        lineOrPcOffset = static_cast<int32_t>(aLine);
     }
 
     void setFlag(uint32_t flag) volatile {
         MOZ_ASSERT(flag != IS_CPP_ENTRY);
         flags_ |= flag;
     }
     void unsetFlag(uint32_t flag) volatile {
         MOZ_ASSERT(flag != IS_CPP_ENTRY);
@@ -156,39 +156,42 @@ class ProfileEntry
     bool isOSR() const volatile {
         return hasFlag(OSR);
     }
 
     void* stackAddress() const volatile {
         MOZ_ASSERT(!isJs());
         return spOrScript;
     }
-    JSScript* script() const volatile {
+    JSScript* script() const volatile;
+    uint32_t line() const volatile {
+        MOZ_ASSERT(!isJs());
+        return static_cast<uint32_t>(lineOrPcOffset);
+    }
+
+    // Note that the pointer returned might be invalid.
+    JSScript* rawScript() const volatile {
         MOZ_ASSERT(isJs());
         return (JSScript*)spOrScript;
     }
-    uint32_t line() const volatile {
-        MOZ_ASSERT(!isJs());
-        return static_cast<uint32_t>(lineOrPc);
-    }
 
     // We can't know the layout of JSScript, so look in vm/SPSProfiler.cpp.
     JS_FRIEND_API(jsbytecode*) pc() const volatile;
     JS_FRIEND_API(void) setPC(jsbytecode* pc) volatile;
 
     void trace(JSTracer* trc);
 
     // The offset of a pc into a script's code can actually be 0, so to
     // signify a nullptr pc, use a -1 index. This is checked against in
     // pc() and setPC() to set/get the right pc.
     static const int32_t NullPCOffset = -1;
 
     static size_t offsetOfLabel() { return offsetof(ProfileEntry, string); }
     static size_t offsetOfSpOrScript() { return offsetof(ProfileEntry, spOrScript); }
-    static size_t offsetOfLineOrPc() { return offsetof(ProfileEntry, lineOrPc); }
+    static size_t offsetOfLineOrPcOffset() { return offsetof(ProfileEntry, lineOrPcOffset); }
     static size_t offsetOfFlags() { return offsetof(ProfileEntry, flags_); }
 };
 
 JS_FRIEND_API(void)
 SetContextProfilingStack(JSContext* cx, ProfileEntry* stack, uint32_t* size,
                          uint32_t max);
 
 JS_FRIEND_API(void)
--- a/js/src/frontend/Parser.cpp
+++ b/js/src/frontend/Parser.cpp
@@ -465,16 +465,18 @@ FunctionBox::FunctionBox(ExclusiveContex
 
 void
 FunctionBox::initFromLazyFunction()
 {
     JSFunction* fun = function();
     length = fun->nargs() - fun->hasRest();
     if (fun->lazyScript()->isDerivedClassConstructor())
         setDerivedClassConstructor();
+    if (fun->lazyScript()->needsHomeObject())
+        setNeedsHomeObject();
     enclosingScope_ = fun->lazyScript()->enclosingScope();
     initWithEnclosingScope(enclosingScope_);
 }
 
 void
 FunctionBox::initStandaloneFunction(Scope* enclosingScope)
 {
     // Standalone functions are Function or Generator constructors and are
@@ -2820,24 +2822,17 @@ Parser<ParseHandler>::checkFunctionDefin
                 return false;
 
             // Body-level functions in modules are always closed over.
             if (pc->atModuleLevel())
                 pc->varScope().lookupDeclaredName(funName)->value()->setClosedOver();
         }
     } else {
         // A function expression does not introduce any binding.
-        if (kind == Arrow) {
-            /* Arrow functions cannot yet be parsed lazily. */
-            if (!abortIfSyntaxParser())
-                return false;
-            handler.setOp(pn, JSOP_LAMBDA_ARROW);
-        } else {
-            handler.setOp(pn, JSOP_LAMBDA);
-        }
+        handler.setOp(pn, kind == Arrow ? JSOP_LAMBDA_ARROW : JSOP_LAMBDA);
     }
 
     return true;
 }
 
 template <>
 bool
 Parser<FullParseHandler>::skipLazyInnerFunction(ParseNode* pn, bool tryAnnexB)
@@ -3183,43 +3178,50 @@ Parser<FullParseHandler>::standaloneLazy
                                                  GeneratorKind generatorKind)
 {
     MOZ_ASSERT(checkOptionsCalled);
 
     Node pn = handler.newFunctionDefinition();
     if (!pn)
         return null();
 
-    // Our tokenStream has no current token, so pn's position is garbage.
-    // Substitute the position of the first token in our source.
-    if (!tokenStream.peekTokenPos(&pn->pn_pos))
-        return null();
-
     Directives directives(strict);
     FunctionBox* funbox = newFunctionBox(pn, fun, directives, generatorKind,
                                          /* tryAnnexB = */ false);
     if (!funbox)
         return null();
     funbox->initFromLazyFunction();
 
     Directives newDirectives = directives;
     ParseContext funpc(this, funbox, &newDirectives);
     if (!funpc.init())
         return null();
 
+    // Our tokenStream has no current token, so pn's position is garbage.
+    // Substitute the position of the first token in our source. If the function
+    // is an arrow, use TokenStream::Operand to keep verifyConsistentModifier
+    // from complaining (we will use TokenStream::Operand in functionArguments).
+    if (!tokenStream.peekTokenPos(&pn->pn_pos,
+                                  fun->isArrow() ? TokenStream::Operand : TokenStream::None))
+    {
+        return null();
+    }
+
     YieldHandling yieldHandling = generatorKind != NotGenerator ? YieldIsKeyword : YieldIsName;
     FunctionSyntaxKind syntaxKind = Statement;
     if (fun->isClassConstructor())
         syntaxKind = ClassConstructor;
     else if (fun->isMethod())
         syntaxKind = Method;
     else if (fun->isGetter())
         syntaxKind = Getter;
     else if (fun->isSetter())
         syntaxKind = Setter;
+    else if (fun->isArrow())
+        syntaxKind = Arrow;
 
     if (!functionFormalParametersAndBody(InAllowed, yieldHandling, pn, syntaxKind)) {
         MOZ_ASSERT(directives == newDirectives);
         return null();
     }
 
     if (!FoldConstants(context, &pn, this))
         return null();
@@ -7298,18 +7300,16 @@ Parser<ParseHandler>::assignExpr(InHandl
 
         bool isBlock = false;
         if (!tokenStream.peekToken(&next, TokenStream::Operand))
             return null();
         if (next == TOK_LC)
             isBlock = true;
 
         tokenStream.seek(start);
-        if (!abortIfSyntaxParser())
-            return null();
 
         TokenKind ignored;
         if (!tokenStream.peekToken(&ignored, TokenStream::Operand))
             return null();
 
         Node arrowFunc = functionDefinition(inHandling, yieldHandling, nullptr,
                                             Arrow, NotGenerator);
         if (!arrowFunc)
--- a/js/src/jsgc.cpp
+++ b/js/src/jsgc.cpp
@@ -5462,40 +5462,41 @@ GCRuntime::compactPhase(JS::gcreason::Re
                         AutoLockForExclusiveAccess& lock)
 {
     MOZ_ASSERT(rt->gc.nursery.isEmpty());
     assertBackgroundSweepingFinished();
     MOZ_ASSERT(startedCompacting);
 
     gcstats::AutoPhase ap(stats, gcstats::PHASE_COMPACT);
 
-    // TODO: JSScripts can move. If the sampler interrupts the GC in the
-    // middle of relocating an arena, invalid JSScript pointers may be
-    // accessed. Suppress all sampling until a finer-grained solution can be
-    // found. See bug 1295775.
-    AutoSuppressProfilerSampling suppressSampling(rt);
-
+    Arena* relocatedArenas = nullptr;
     while (!zonesToMaybeCompact.isEmpty()) {
+        // TODO: JSScripts can move. If the sampler interrupts the GC in the
+        // middle of relocating an arena, invalid JSScript pointers may be
+        // accessed. Suppress all sampling until a finer-grained solution can be
+        // found. See bug 1295775.
+        AutoSuppressProfilerSampling suppressSampling(rt);
+
         Zone* zone = zonesToMaybeCompact.front();
         MOZ_ASSERT(zone->isGCFinished());
-        Arena* relocatedArenas = nullptr;
         if (relocateArenas(zone, reason, relocatedArenas, sliceBudget)) {
             zone->setGCState(Zone::Compact);
             updatePointersToRelocatedCells(zone, lock);
             zone->setGCState(Zone::Finished);
         }
-        if (ShouldProtectRelocatedArenas(reason))
-            protectAndHoldArenas(relocatedArenas);
-        else
-            releaseRelocatedArenas(relocatedArenas);
         zonesToMaybeCompact.removeFront();
         if (sliceBudget.isOverBudget())
             break;
     }
 
+    if (ShouldProtectRelocatedArenas(reason))
+        protectAndHoldArenas(relocatedArenas);
+    else
+        releaseRelocatedArenas(relocatedArenas);
+
     // Clear caches that can contain cell pointers.
     JSContext* cx = rt->contextFromMainThread();
     cx->caches.newObjectCache.purge();
     cx->caches.nativeIterCache.purge();
     if (cx->caches.evalCache.initialized())
         cx->caches.evalCache.clear();
 
 #ifdef DEBUG
--- a/js/src/vm/SPSProfiler.cpp
+++ b/js/src/vm/SPSProfiler.cpp
@@ -386,17 +386,17 @@ SPSProfiler::checkStringsMapAfterMovingG
     }
 }
 #endif
 
 void
 ProfileEntry::trace(JSTracer* trc)
 {
     if (isJs()) {
-        JSScript* s = script();
+        JSScript* s = rawScript();
         TraceNullableRoot(trc, &s, "ProfileEntry script");
         spOrScript = s;
     }
 }
 
 SPSEntryMarker::SPSEntryMarker(JSRuntime* rt,
                                JSScript* script
                                MOZ_GUARD_OBJECT_NOTIFIER_PARAM_IN_IMPL)
@@ -477,28 +477,53 @@ SPSBaselineOSRMarker::~SPSBaselineOSRMar
     if (profiler->size() == 0)
         return;
 
     ProfileEntry& entry = profiler->stack()[profiler->size() - 1];
     MOZ_ASSERT(entry.isJs());
     entry.unsetOSR();
 }
 
+JSScript*
+ProfileEntry::script() const volatile
+{
+    MOZ_ASSERT(isJs());
+    auto script = reinterpret_cast<JSScript*>(spOrScript);
+    if (!script)
+        return nullptr;
+
+    // If profiling is supressed then we can't trust the script pointers to be
+    // valid as they could be in the process of being moved by a compacting GC
+    // (although it's still OK to get the runtime from them).
+    JSRuntime* rt = script->zoneFromAnyThread()->runtimeFromAnyThread();
+    if (!rt->isProfilerSamplingEnabled())
+        return nullptr;
+
+    MOZ_ASSERT(!IsForwarded(script));
+    return script;
+}
+
 JS_FRIEND_API(jsbytecode*)
 ProfileEntry::pc() const volatile
 {
     MOZ_ASSERT(isJs());
-    return lineOrPc == NullPCOffset ? nullptr : script()->offsetToPC(lineOrPc);
+    if (lineOrPcOffset == NullPCOffset)
+        return nullptr;
+
+    JSScript* script = this->script();
+    return script ? script->offsetToPC(lineOrPcOffset) : nullptr;
 }
 
 JS_FRIEND_API(void)
 ProfileEntry::setPC(jsbytecode* pc) volatile
 {
     MOZ_ASSERT(isJs());
-    lineOrPc = pc == nullptr ? NullPCOffset : script()->pcToOffset(pc);
+    JSScript* script = this->script();
+    MOZ_ASSERT(script); // This should not be called while profiling is suppressed.
+    lineOrPcOffset = pc == nullptr ? NullPCOffset : script->pcToOffset(pc);
 }
 
 JS_FRIEND_API(void)
 js::SetContextProfilingStack(JSContext* cx, ProfileEntry* stack, uint32_t* size, uint32_t max)
 {
     cx->spsProfiler.setProfilingStack(stack, size, max);
 }
 
--- a/js/src/vm/SPSProfiler.h
+++ b/js/src/vm/SPSProfiler.h
@@ -177,17 +177,17 @@ class SPSProfiler
      *   - exit: this function has ceased execution, and no further
      *           entries/exits will be made
      */
     bool enter(JSContext* cx, JSScript* script, JSFunction* maybeFun);
     void exit(JSScript* script, JSFunction* maybeFun);
     void updatePC(JSScript* script, jsbytecode* pc) {
         if (enabled() && *size_ - 1 < max_) {
             MOZ_ASSERT(*size_ > 0);
-            MOZ_ASSERT(stack_[*size_ - 1].script() == script);
+            MOZ_ASSERT(stack_[*size_ - 1].rawScript() == script);
             stack_[*size_ - 1].setPC(pc);
         }
     }
 
     /* Enter asm.js code */
     void beginPseudoJS(const char* string, void* sp);
     void endPseudoJS() { pop(); }
 
--- a/js/xpconnect/src/XPCJSRuntime.cpp
+++ b/js/xpconnect/src/XPCJSRuntime.cpp
@@ -3488,20 +3488,16 @@ XPCJSRuntime::Initialize()
 #ifdef MOZ_ENABLE_PROFILER_SPS
     if (PseudoStack* stack = mozilla_get_pseudo_stack())
         stack->sampleContext(cx);
 #endif
     JS_SetAccumulateTelemetryCallback(cx, AccumulateTelemetryCallback);
     js::SetActivityCallback(cx, ActivityCallback, this);
     JS_SetInterruptCallback(cx, InterruptCallback);
     js::SetWindowProxyClass(cx, &OuterWindowProxyClass);
-#ifdef MOZ_CRASHREPORTER
-    js::AutoEnterOOMUnsafeRegion::setAnnotateOOMAllocationSizeCallback(
-            CrashReporter::AnnotateOOMAllocationSize);
-#endif
 
     // The JS engine needs to keep the source code around in order to implement
     // Function.prototype.toSource(). It'd be nice to not have to do this for
     // chrome code and simply stub out requests for source on it. Life is not so
     // easy, unfortunately. Nobody relies on chrome toSource() working in core
     // browser code, but chrome tests use it. The worst offenders are addons,
     // which like to monkeypatch chrome functions by calling toSource() on them
     // and using regular expressions to modify them. We avoid keeping most browser
--- a/layout/base/nsLayoutUtils.cpp
+++ b/layout/base/nsLayoutUtils.cpp
@@ -6697,62 +6697,28 @@ DrawImageInternal(gfxContext&           
     return result;
   }
 
   {
     gfxContextMatrixAutoSaveRestore contextMatrixRestorer(&aContext);
 
     RefPtr<gfxContext> destCtx = &aContext;
 
-    IntRect tmpDTRect;
-
-    if (destCtx->CurrentOp() == CompositionOp::OP_OVER) {
-      destCtx->SetMatrix(params.imageSpaceToDeviceSpace);
-    } else {
-      // We need a temporary DrawTarget to composite correctly
-      Rect imageRect = ToRect(params.imageSpaceToDeviceSpace.TransformBounds(params.region.Rect()));
-      imageRect.ToIntRect(&tmpDTRect);
-
-      RefPtr<DrawTarget> tempDT =
-        destCtx->GetDrawTarget()->CreateSimilarDrawTarget(tmpDTRect.Size(),
-                                                          SurfaceFormat::B8G8R8A8);
-      if (!tempDT || !tempDT->IsValid()) {
-        gfxDevCrash(LogReason::InvalidContext) << "NonOP_OVER context problem " << gfx::hexa(tempDT);
-        return DrawResult::TEMPORARY_ERROR;
-      }
-      tempDT->SetTransform(ToMatrix(params.imageSpaceToDeviceSpace).
-                             PostTranslate(-tmpDTRect.TopLeft()));
-      destCtx = gfxContext::CreatePreservingTransformOrNull(tempDT);
-      if (!destCtx) {
-        gfxDevCrash(LogReason::InvalidContext) << "NonOP_OVER context problem " << gfx::hexa(tempDT);
-        return result;
-      }
-    }
+    destCtx->SetMatrix(params.imageSpaceToDeviceSpace);
 
     Maybe<SVGImageContext> svgContext = ToMaybe(aSVGContext);
     if (!svgContext) {
       // Use the default viewport.
       svgContext = Some(SVGImageContext(params.svgViewportSize, Nothing()));
     }
 
     result = aImage->Draw(destCtx, params.size, params.region,
                           imgIContainer::FRAME_CURRENT, aSamplingFilter,
                           svgContext, aImageFlags);
 
-    if (!tmpDTRect.IsEmpty()) {
-      // Snapshot the temporary DrawTarget and composite the result
-      DrawTarget* dt = aContext.GetDrawTarget();
-      RefPtr<SourceSurface> surf = destCtx->GetDrawTarget()->Snapshot();
-
-      dt->SetTransform(Matrix::Translation(-aContext.GetDeviceOffset()));
-      dt->DrawSurface(surf, Rect(tmpDTRect.x, tmpDTRect.y, tmpDTRect.width, tmpDTRect.height),
-                      Rect(0, 0, tmpDTRect.width, tmpDTRect.height),
-                      DrawSurfaceOptions(SamplingFilter::POINT),
-                      DrawOptions(1.0f, aContext.CurrentOp()));
-    }
   }
 
   return result;
 }
 
 /* static */ DrawResult
 nsLayoutUtils::DrawSingleUnscaledImage(gfxContext&          aContext,
                                        nsPresContext*       aPresContext,
--- a/layout/base/nsRefreshDriver.cpp
+++ b/layout/base/nsRefreshDriver.cpp
@@ -1004,23 +1004,23 @@ nsRefreshDriver::nsRefreshDriver(nsPresC
     mThrottled(false),
     mNeedToRecomputeVisibility(false),
     mTestControllingRefreshes(false),
     mViewManagerFlushIsPending(false),
     mRequestedHighPrecision(false),
     mInRefresh(false),
     mWaitingForTransaction(false),
     mSkippedPaints(false),
-    mResizeSuppressed(false)
+    mResizeSuppressed(false),
+    mWarningThreshold(1)
 {
   MOZ_ASSERT(NS_IsMainThread());
   MOZ_ASSERT(mPresContext,
              "Need a pres context to tell us to call Disconnect() later "
              "and decrement sRefreshDriverCount.");
-
   mMostRecentRefreshEpochTime = JS_Now();
   mMostRecentRefresh = TimeStamp::Now();
   mMostRecentTick = mMostRecentRefresh;
   mNextThrottledFrameRequestTick = mMostRecentTick;
   mNextRecomputeVisibilityTick = mMostRecentTick;
 
   ++sRefreshDriverCount;
 }
@@ -1060,16 +1060,17 @@ nsRefreshDriver::AdvanceTimeAndRefresh(i
     mMostRecentRefreshEpochTime = JS_Now();
     mMostRecentRefresh = TimeStamp::Now();
 
     mTestControllingRefreshes = true;
     if (mWaitingForTransaction) {
       // Disable any refresh driver throttling when entering test mode
       mWaitingForTransaction = false;
       mSkippedPaints = false;
+      mWarningThreshold = 1;
     }
   }
 
   mMostRecentRefreshEpochTime += aMilliseconds * 1000;
   mMostRecentRefresh += TimeDuration::FromMilliseconds((double) aMilliseconds);
 
   mozilla::dom::AutoNoJSAPI nojsapi;
   DoTick();
@@ -1650,16 +1651,17 @@ nsRefreshDriver::Tick(int64_t aNowEpoch,
     return;
   }
   mMostRecentTick = aNowTime;
   if (mRootRefresh) {
     mRootRefresh->RemoveRefreshObserver(this, Flush_Style);
     mRootRefresh = nullptr;
   }
   mSkippedPaints = false;
+  mWarningThreshold = 1;
 
   nsCOMPtr<nsIPresShell> presShell = mPresContext->GetPresShell();
   if (!presShell || (ObserverCount() == 0 && ImageRequestCount() == 0)) {
     // Things are being destroyed, or we no longer have any observers.
     // We don't want to stop the timer when observers are initially
     // removed, because sometimes observers can be added and removed
     // often depending on what other things are going on and in that
     // situation we don't want to thrash our timer.  So instead we
@@ -1990,28 +1992,30 @@ nsRefreshDriver::FinishedWaitingForTrans
   if (mSkippedPaints &&
       !IsInRefresh() &&
       (ObserverCount() || ImageRequestCount())) {
     profiler_tracing("Paint", "RD", TRACING_INTERVAL_START);
     DoRefresh();
     profiler_tracing("Paint", "RD", TRACING_INTERVAL_END);
   }
   mSkippedPaints = false;
+  mWarningThreshold = 1;
 }
 
 uint64_t
 nsRefreshDriver::GetTransactionId()
 {
   ++mPendingTransaction;
 
   if (mPendingTransaction >= mCompletedTransaction + 2 &&
       !mWaitingForTransaction &&
       !mTestControllingRefreshes) {
     mWaitingForTransaction = true;
     mSkippedPaints = false;
+    mWarningThreshold = 1;
   }
 
   return mPendingTransaction;
 }
 
 uint64_t
 nsRefreshDriver::LastTransactionId() const
 {
@@ -2061,27 +2065,24 @@ nsRefreshDriver::WillRefresh(mozilla::Ti
 }
 
 bool
 nsRefreshDriver::IsWaitingForPaint(mozilla::TimeStamp aTime)
 {
   if (mTestControllingRefreshes) {
     return false;
   }
-  // If we've skipped too many ticks then it's possible
-  // that something went wrong and we're waiting on
-  // a notification that will never arrive.
-  if (aTime > (mMostRecentTick + TimeDuration::FromMilliseconds(200))) {
-    mSkippedPaints = false;
-    mWaitingForTransaction = false;
-    if (mRootRefresh) {
-      mRootRefresh->RemoveRefreshObserver(this, Flush_Style);
-    }
-    return false;
+
+  if (aTime > (mMostRecentTick + TimeDuration::FromMilliseconds(mWarningThreshold * 1000))) {
+    gfxCriticalNote << "Refresh driver waiting for the compositor for"
+                    << (aTime - mMostRecentTick).ToSeconds()
+                    << " seconds.";
+    mWarningThreshold *= 2;
   }
+
   if (mWaitingForTransaction) {
     mSkippedPaints = true;
     return true;
   }
 
   // Try find the 'root' refresh driver for the current window and check
   // if that is waiting for a paint.
   nsPresContext *rootContext = PresContext()->GetRootPresContext();
--- a/layout/base/nsRefreshDriver.h
+++ b/layout/base/nsRefreshDriver.h
@@ -419,16 +419,20 @@ private:
   bool mSkippedPaints;
 
   // True if view managers should delay any resize request until the
   // next tick by the refresh driver. This flag will be reset at the
   // start of every tick.
   bool mResizeSuppressed;
 
   int64_t mMostRecentRefreshEpochTime;
+  // Number of seconds that the refresh driver is blocked waiting for a compositor
+  // transaction to be completed before we append a note to the gfx critical log.
+  // The number is doubled every time the threshold is hit.
+  uint64_t mWarningThreshold;
   mozilla::TimeStamp mMostRecentRefresh;
   mozilla::TimeStamp mMostRecentTick;
   mozilla::TimeStamp mTickStart;
   mozilla::TimeStamp mNextThrottledFrameRequestTick;
   mozilla::TimeStamp mNextRecomputeVisibilityTick;
 
   // separate arrays for each flush type we support
   ObserverArray mObservers[3];
--- a/media/libcubeb/README_MOZILLA
+++ b/media/libcubeb/README_MOZILLA
@@ -1,8 +1,8 @@
 The source from this directory was copied from the cubeb 
 git repository using the update.sh script.  The only changes
 made were those applied by update.sh and the addition of
 Makefile.in build files for the Mozilla build system.
 
 The cubeb git repository is: git://github.com/kinetiknz/cubeb.git
 
-The git commit ID used was e4074131e4d422bfe260d29ab0a49fc368406ef4.
+The git commit ID used was 92b4afa6ae9f0969e77d59a8f9de9ab36acd7d7f.
deleted file mode 100644
--- a/media/libcubeb/bug1278612.patch
+++ /dev/null
@@ -1,136 +0,0 @@
-diff --git a/media/libcubeb/src/cubeb_audiounit.cpp b/media/libcubeb/src/cubeb_audiounit.cpp
---- a/media/libcubeb/src/cubeb_audiounit.cpp
-+++ b/media/libcubeb/src/cubeb_audiounit.cpp
-@@ -48,22 +48,16 @@
- typedef UInt32  AudioFormatFlags;
- #endif
- 
- #define CUBEB_STREAM_MAX 8
- 
- #define AU_OUT_BUS    0
- #define AU_IN_BUS     1
- 
--#if TARGET_OS_IPHONE
--#define CUBEB_AUDIOUNIT_SUBTYPE kAudioUnitSubType_RemoteIO
--#else
--#define CUBEB_AUDIOUNIT_SUBTYPE kAudioUnitSubType_HALOutput
--#endif
--
- //#define LOGGING_ENABLED
- #ifdef LOGGING_ENABLED
- #define LOG(...) do {                           \
-     fprintf(stderr, __VA_ARGS__);               \
-     fprintf(stderr, "(line: %d)\n", __LINE__);  \
-   } while(0)
- #else
- #define LOG(...)
-@@ -905,63 +899,79 @@ audiounit_create_unit(AudioUnit * unit,
- {
-   AudioComponentDescription desc;
-   AudioComponent comp;
-   UInt32 enable;
-   AudioDeviceID devid;
-   OSStatus rv;
- 
-   desc.componentType = kAudioUnitType_Output;
--  desc.componentSubType = CUBEB_AUDIOUNIT_SUBTYPE;
-+#if TARGET_OS_IPHONE
-+  bool use_default_output = false;
-+  desc.componentSubType = kAudioUnitSubType_RemoteIO;
-+#else
-+  // Use the DefaultOutputUnit for output when no device is specified
-+  // so we retain automatic output device switching when the default
-+  // changes.  Once we have complete support for device notifications
-+  // and switching, we can use the AUHAL for everything.
-+  bool use_default_output = device == NULL && !is_input;
-+  if (use_default_output) {
-+    desc.componentSubType = kAudioUnitSubType_DefaultOutput;
-+  } else {
-+    desc.componentSubType = kAudioUnitSubType_HALOutput;
-+  }
-+#endif
-   desc.componentManufacturer = kAudioUnitManufacturer_Apple;
-   desc.componentFlags = 0;
-   desc.componentFlagsMask = 0;
-   comp = AudioComponentFindNext(NULL, &desc);
-   if (comp == NULL) {
-     LOG("Could not find matching audio hardware.");
-     return CUBEB_ERROR;
-   }
- 
-   rv = AudioComponentInstanceNew(comp, unit);
-   if (rv != noErr) {
-     PRINT_ERROR_CODE("AudioComponentInstanceNew", rv);
-     return CUBEB_ERROR;
-   }
- 
--  enable = 1;
--  rv = AudioUnitSetProperty(*unit, kAudioOutputUnitProperty_EnableIO,
--           is_input ? kAudioUnitScope_Input : kAudioUnitScope_Output,
--           is_input ? AU_IN_BUS : AU_OUT_BUS, &enable, sizeof(UInt32));
--  if (rv != noErr) {
--    PRINT_ERROR_CODE("AudioUnitSetProperty/kAudioOutputUnitProperty_EnableIO", rv);
--    return CUBEB_ERROR;
--  }
-+  if (!use_default_output) {
-+    enable = 1;
-+    rv = AudioUnitSetProperty(*unit, kAudioOutputUnitProperty_EnableIO,
-+			      is_input ? kAudioUnitScope_Input : kAudioUnitScope_Output,
-+			      is_input ? AU_IN_BUS : AU_OUT_BUS, &enable, sizeof(UInt32));
-+    if (rv != noErr) {
-+      PRINT_ERROR_CODE("AudioUnitSetProperty/kAudioOutputUnitProperty_EnableIO", rv);
-+      return CUBEB_ERROR;
-+    }
- 
--  enable = 0;
--  rv = AudioUnitSetProperty(*unit, kAudioOutputUnitProperty_EnableIO,
--            is_input ? kAudioUnitScope_Output : kAudioUnitScope_Input,
--            is_input ? AU_OUT_BUS : AU_IN_BUS, &enable, sizeof(UInt32));
--  if (rv != noErr) {
--    PRINT_ERROR_CODE("AudioUnitSetProperty/kAudioOutputUnitProperty_EnableIO", rv);
--    return CUBEB_ERROR;
--  }
-+    enable = 0;
-+    rv = AudioUnitSetProperty(*unit, kAudioOutputUnitProperty_EnableIO,
-+			      is_input ? kAudioUnitScope_Output : kAudioUnitScope_Input,
-+			      is_input ? AU_OUT_BUS : AU_IN_BUS, &enable, sizeof(UInt32));
-+    if (rv != noErr) {
-+      PRINT_ERROR_CODE("AudioUnitSetProperty/kAudioOutputUnitProperty_EnableIO", rv);
-+      return CUBEB_ERROR;
-+    }
- 
--  if (device == NULL) {
--    devid = audiounit_get_default_device_id(is_input ? CUBEB_DEVICE_TYPE_INPUT
--                                                     : CUBEB_DEVICE_TYPE_OUTPUT);
--  } else {
--    devid = reinterpret_cast<intptr_t>(device);
--  }
--  int err = AudioUnitSetProperty(*unit, kAudioOutputUnitProperty_CurrentDevice,
--                                 kAudioUnitScope_Global,
--                                 is_input ? AU_IN_BUS : AU_OUT_BUS,
--                                 &devid, sizeof(AudioDeviceID));
--  if (err != noErr) {
--    PRINT_ERROR_CODE("AudioUnitSetProperty/kAudioOutputUnitProperty_CurrentDevice", rv);
--    return CUBEB_ERROR;
-+    if (device == NULL) {
-+      assert(is_input);
-+      devid = audiounit_get_default_device_id(CUBEB_DEVICE_TYPE_INPUT);
-+    } else {
-+      devid = reinterpret_cast<intptr_t>(device);
-+    }
-+    int err = AudioUnitSetProperty(*unit, kAudioOutputUnitProperty_CurrentDevice,
-+				   kAudioUnitScope_Global,
-+				   is_input ? AU_IN_BUS : AU_OUT_BUS,
-+				   &devid, sizeof(AudioDeviceID));
-+    if (err != noErr) {
-+      PRINT_ERROR_CODE("AudioUnitSetProperty/kAudioOutputUnitProperty_CurrentDevice", rv);
-+      return CUBEB_ERROR;
-+    }
-   }
- 
-   return CUBEB_OK;
- }
- 
- static int
- audiounit_init_input_linear_buffer(cubeb_stream * stream, uint32_t capacity)
- {
--- a/media/libcubeb/include/cubeb.h
+++ b/media/libcubeb/include/cubeb.h
@@ -391,27 +391,27 @@ int cubeb_get_preferred_sample_rate(cube
  *  been destroyed.
     @param context A pointer to the cubeb context.*/
 void cubeb_destroy(cubeb * context);
 
 /** Initialize a stream associated with the supplied application context.
     @param context A pointer to the cubeb context.
     @param stream An out parameter to be filled with the an opaque pointer to a
                   cubeb stream.
-    @param stream_name A name for this stream. 
+    @param stream_name A name for this stream.
     @param input_device Device for the input side of the stream. If NULL the
                         default input device is used.
     @param input_stream_params Parameters for the input side of the stream, or
                                NULL if this stream is output only.
     @param output_device Device for the output side of the stream. If NULL the
                          default output device is used.
     @param output_stream_params Parameters for the output side of the stream, or
                                 NULL if this stream is input only.
-    @param latency Stream latency in frames.  Valid range
-                   is [1, 96000].
+    @param latency_frames Stream latency in frames.  Valid range
+                          is [1, 96000].
     @param data_callback Will be called to preroll data before playback is
                          started by cubeb_stream_start.
     @param state_callback A pointer to a state callback.
     @param user_ptr A pointer that will be passed to the callbacks. This pointer
                     must outlive the life time of the stream.
     @retval CUBEB_OK
     @retval CUBEB_ERROR
     @retval CUBEB_ERROR_INVALID_FORMAT
--- a/media/libcubeb/src/cubeb-internal.h
+++ b/media/libcubeb/src/cubeb-internal.h
@@ -6,16 +6,39 @@
  */
 #if !defined(CUBEB_INTERNAL_0eb56756_4e20_4404_a76d_42bf88cd15a5)
 #define CUBEB_INTERNAL_0eb56756_4e20_4404_a76d_42bf88cd15a5
 
 #include "cubeb/cubeb.h"
 #include <stdio.h>
 #include <string.h>
 
+#ifdef __clang__
+#ifndef CLANG_ANALYZER_NORETURN
+#if __has_feature(attribute_analyzer_noreturn)
+#define CLANG_ANALYZER_NORETURN __attribute__((analyzer_noreturn))
+#else
+#define CLANG_ANALYZER_NORETURN
+#endif // ifndef CLANG_ANALYZER_NORETURN
+#endif // __has_feature(attribute_analyzer_noreturn)
+#else // __clang__
+#define CLANG_ANALYZER_NORETURN
+#endif
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/* Crash the caller.  */
+void cubeb_crash() CLANG_ANALYZER_NORETURN;
+
+#if defined(__cplusplus)
+}
+#endif
+
 struct cubeb_ops {
   int (* init)(cubeb ** context, char const * context_name);
   char const * (* get_backend_id)(cubeb * context);
   int (* get_max_channel_count)(cubeb * context, uint32_t * max_channels);
   int (* get_min_latency)(cubeb * context,
                           cubeb_stream_params params,
                           uint32_t * latency_ms);
   int (* get_preferred_sample_rate)(cubeb * context, uint32_t * rate);
@@ -47,17 +70,16 @@ struct cubeb_ops {
   int (* stream_register_device_changed_callback)(cubeb_stream * stream,
                                                   cubeb_device_changed_callback device_changed_callback);
   int (* register_device_collection_changed)(cubeb * context,
                                              cubeb_device_type devtype,
                                              cubeb_device_collection_changed_callback callback,
                                              void * user_ptr);
 };
 
-#define XASSERT(expr) do {                                              \
-    if (!(expr)) {                                                      \
+#define XASSERT(expr) do {                                                     \
+    if (!(expr)) {                                                             \
       fprintf(stderr, "%s:%d - fatal error: %s\n", __FILE__, __LINE__, #expr); \
-      *((volatile int *) NULL) = 0;                                     \
-      abort();                                                          \
-    }                                                                   \
+      cubeb_crash();                                                           \
+    }                                                                          \
   } while (0)
 
 #endif /* CUBEB_INTERNAL_0eb56756_4e20_4404_a76d_42bf88cd15a5 */
--- a/media/libcubeb/src/cubeb.c
+++ b/media/libcubeb/src/cubeb.c
@@ -28,25 +28,19 @@ struct cubeb_stream {
 int pulse_init(cubeb ** context, char const * context_name);
 #endif
 #if defined(USE_JACK)
 int jack_init (cubeb ** context, char const * context_name);
 #endif
 #if defined(USE_ALSA)
 int alsa_init(cubeb ** context, char const * context_name);
 #endif
-#if defined(USE_AUDIOQUEUE)
-int audioqueue_init(cubeb ** context, char const * context_name);
-#endif
 #if defined(USE_AUDIOUNIT)
 int audiounit_init(cubeb ** context, char const * context_name);
 #endif
-#if defined(USE_DIRECTSOUND)
-int directsound_init(cubeb ** context, char const * context_name);
-#endif
 #if defined(USE_WINMM)
 int winmm_init(cubeb ** context, char const * context_name);
 #endif
 #if defined(USE_WASAPI)
 int wasapi_init(cubeb ** context, char const * context_name);
 #endif
 #if defined(USE_SNDIO)
 int sndio_init(cubeb ** context, char const * context_name);
@@ -124,28 +118,22 @@ cubeb_init(cubeb ** context, char const 
     pulse_init,
 #endif
 #if defined(USE_ALSA)
     alsa_init,
 #endif
 #if defined(USE_AUDIOUNIT)
     audiounit_init,
 #endif
-#if defined(USE_AUDIOQUEUE)
-    audioqueue_init,
-#endif
 #if defined(USE_WASAPI)
     wasapi_init,
 #endif
 #if defined(USE_WINMM)
     winmm_init,
 #endif
-#if defined(USE_DIRECTSOUND)
-    directsound_init,
-#endif
 #if defined(USE_SNDIO)
     sndio_init,
 #endif
 #if defined(USE_OPENSL)
     opensl_init,
 #endif
 #if defined(USE_AUDIOTRACK)
     audiotrack_init,
@@ -449,8 +437,15 @@ int cubeb_register_device_collection_cha
 
   if (!context->ops->register_device_collection_changed) {
     return CUBEB_ERROR_NOT_SUPPORTED;
   }
 
   return context->ops->register_device_collection_changed(context, devtype, callback, user_ptr);
 }
 
+void cubeb_crash()
+{
+  abort();
+  *((volatile int *) NULL) = 0;
+}
+
+
--- a/media/libcubeb/src/cubeb_audiounit.cpp
+++ b/media/libcubeb/src/cubeb_audiounit.cpp
@@ -25,16 +25,17 @@
 #include "cubeb_panner.h"
 #if !TARGET_OS_IPHONE
 #include "cubeb_osx_run_loop.h"
 #endif
 #include "cubeb_resampler.h"
 #include "cubeb_ring_array.h"
 #include "cubeb_utils.h"
 #include <algorithm>
+#include <atomic>
 
 #if !defined(kCFCoreFoundationVersionNumber10_7)
 /* From CoreFoundation CFBase.h */
 #define kCFCoreFoundationVersionNumber10_7 635.00
 #endif
 
 #if !TARGET_OS_IPHONE && MAC_OS_X_VERSION_MIN_REQUIRED < 1060
 #define AudioComponent Component
@@ -175,17 +176,17 @@ struct cubeb_stream {
   /* Frame counters */
   uint64_t frames_played;
   uint64_t frames_queued;
   uint64_t frames_read;
   int shutdown;
   int draining;
   uint64_t current_latency_frames;
   uint64_t hw_latency_frames;
-  float panning;
+  std::atomic<float> panning;
   cubeb_resampler * resampler;
 };
 
 #if TARGET_OS_IPHONE
 typedef UInt32 AudioDeviceID;
 typedef UInt32 AudioObjectID;
 
 #define AudioGetCurrentHostTime mach_absolute_time
@@ -404,17 +405,18 @@ audiounit_output_callback(void * user_pt
   }
 
   size_t outbpf = stm->output_desc.mBytesPerFrame;
   stm->draining = outframes < output_frames;
   stm->frames_played = stm->frames_queued;
   stm->frames_queued += outframes;
 
   AudioFormatFlags outaff = stm->output_desc.mFormatFlags;
-  float panning = (stm->output_desc.mChannelsPerFrame == 2) ? stm->panning : 0.0f;
+  float panning = (stm->output_desc.mChannelsPerFrame == 2) ?
+      stm->panning.load(std::memory_order_relaxed) : 0.0f;
 
   /* Post process output samples. */
   if (stm->draining) {
     /* Clear missing frames (silence) */
     memset((uint8_t*)output_buffer + outframes * outbpf, 0, (output_frames - outframes) * outbpf);
   }
   /* Pan stereo. */
   if (panning != 0.0f) {
@@ -1608,21 +1610,17 @@ int audiounit_stream_set_volume(cubeb_st
 }
 
 int audiounit_stream_set_panning(cubeb_stream * stm, float panning)
 {
   if (stm->output_desc.mChannelsPerFrame > 2) {
     return CUBEB_ERROR_INVALID_PARAMETER;
   }
 
-  {
-    auto_lock lock(stm->mutex);
-    stm->panning = panning;
-  }
-
+  stm->panning.store(panning, std::memory_order_relaxed);
   return CUBEB_OK;
 }
 
 int audiounit_stream_get_current_device(cubeb_stream * stm,
                                         cubeb_device ** const  device)
 {
 #if TARGET_OS_IPHONE
   //TODO
--- a/media/libcubeb/src/cubeb_jack.cpp
+++ b/media/libcubeb/src/cubeb_jack.cpp
@@ -41,17 +41,19 @@
   X(jack_get_buffer_size)                       \
   X(jack_port_get_buffer)                       \
   X(jack_port_name)                             \
   X(jack_port_register)                         \
   X(jack_port_unregister)                       \
   X(jack_port_get_latency_range)                \
   X(jack_set_process_callback)                  \
   X(jack_set_xrun_callback)                     \
-  X(jack_set_graph_order_callback)
+  X(jack_set_graph_order_callback)              \
+  X(jack_set_error_function)                    \
+  X(jack_set_info_function)
 
 #define IMPORT_FUNC(x) static decltype(x) * api_##x;
 JACK_API_VISIT(IMPORT_FUNC);
 
 static const int MAX_STREAMS = 16;
 static const int MAX_CHANNELS  = 8;
 static const int FIFO_SIZE = 4096 * sizeof(float);
 
@@ -278,18 +280,16 @@ cbjack_xrun_callback(void * arg)
   return 0;
 }
 
 static int
 cbjack_graph_order_callback(void * arg)
 {
   cubeb * ctx = (cubeb *)arg;
   int i;
-  uint32_t rate;
-
   jack_latency_range_t latency_range;
   jack_nframes_t port_latency, max_latency = 0;
 
   for (int j = 0; j < MAX_STREAMS; j++) {
     cubeb_stream *stm = &ctx->streams[j];
 
     if (!stm->in_use)
       continue;
@@ -559,16 +559,21 @@ cbjack_interleave_capture(cubeb_stream *
   if (format_mismatch) {
     float_to_s16ne(stream->context->in_resampled_interleaved_buffer_s16ne, in_buffer, nframes * stream->in_params.channels);
   } else {
     memset(stream->context->in_resampled_interleaved_buffer_float, 0, (FIFO_SIZE * MAX_CHANNELS * 3) * sizeof(float));
     memcpy(stream->context->in_resampled_interleaved_buffer_float, in_buffer, (FIFO_SIZE * MAX_CHANNELS * 2) * sizeof(float));
   }
 }
 
+static void
+silent_jack_error_callback(char const * /*msg*/)
+{
+}
+
 /*static*/ int
 jack_init (cubeb ** context, char const * context_name)
 {
   int r;
 
   *context = NULL;
 
   cubeb * ctx = (cubeb *)calloc(1, sizeof(*ctx));
@@ -577,16 +582,19 @@ jack_init (cubeb ** context, char const 
   }
 
   r = load_jack_lib(ctx);
   if (r != 0) {
     cbjack_destroy(ctx);
     return CUBEB_ERROR;
   }
 
+  api_jack_set_error_function(silent_jack_error_callback);
+  api_jack_set_info_function(silent_jack_error_callback);
+
   ctx->ops = &cbjack_ops;
 
   ctx->mutex = PTHREAD_MUTEX_INITIALIZER;
   for (r = 0; r < MAX_STREAMS; r++) {
     ctx->streams[r].mutex = PTHREAD_MUTEX_INITIALIZER;
   }
 
   const char * jack_client_name = "cubeb";
@@ -618,37 +626,37 @@ jack_init (cubeb ** context, char const 
 
   ctx->active = true;
   *context = ctx;
 
   return CUBEB_OK;
 }
 
 static char const *
-cbjack_get_backend_id(cubeb * context)
+cbjack_get_backend_id(cubeb * /*context*/)
 {
   return "jack";
 }
 
 static int
-cbjack_get_max_channel_count(cubeb * ctx, uint32_t * max_channels)
+cbjack_get_max_channel_count(cubeb * /*ctx*/, uint32_t * max_channels)
 {
   *max_channels = MAX_CHANNELS;
   return CUBEB_OK;
 }
 
 static int
 cbjack_get_latency(cubeb_stream * stm, unsigned int * latency_ms)
 {
   *latency_ms = stm->context->jack_latency;
   return CUBEB_OK;
 }
 
 static int
-cbjack_get_min_latency(cubeb * ctx, cubeb_stream_params params, uint32_t * latency_ms)
+cbjack_get_min_latency(cubeb * ctx, cubeb_stream_params /*params*/, uint32_t * latency_ms)
 {
   *latency_ms = ctx->jack_latency;
   return CUBEB_OK;
 }
 
 static int
 cbjack_get_preferred_sample_rate(cubeb * ctx, uint32_t * rate)
 {
@@ -698,17 +706,17 @@ context_alloc_stream(cubeb * context, ch
 }
 
 static int
 cbjack_stream_init(cubeb * context, cubeb_stream ** stream, char const * stream_name,
                    cubeb_devid input_device,
                    cubeb_stream_params * input_stream_params,
                    cubeb_devid output_device,
                    cubeb_stream_params * output_stream_params,
-                   unsigned int latency_frames,
+                   unsigned int /*latency_frames*/,
                    cubeb_data_callback data_callback,
                    cubeb_state_callback state_callback,
                    void * user_ptr)
 {
   int stream_actual_rate = 0;
   int jack_rate = api_jack_get_sample_rate(context->jack_client);
 
   if (output_stream_params
@@ -720,16 +728,19 @@ cbjack_stream_init(cubeb * context, cube
 
   if (input_stream_params
      && (input_stream_params->format != CUBEB_SAMPLE_FLOAT32NE &&
          input_stream_params->format != CUBEB_SAMPLE_S16NE)
      ) {
     return CUBEB_ERROR_INVALID_FORMAT;
   }
 
+  if (input_device || output_device)
+    return CUBEB_ERROR_NOT_SUPPORTED;
+
   *stream = NULL;
 
   // Find a free stream.
   pthread_mutex_lock(&context->mutex);
   cubeb_stream * stm = context_alloc_stream(context, stream_name);
 
   // No free stream?
   if (stm == NULL) {
@@ -951,17 +962,17 @@ cbjack_stream_get_current_device(cubeb_s
     (*device)->input_name = strdup(empty);
     (*device)->output_name = strdup(j_out);
   }
 
   return CUBEB_OK;
 }
 
 static int
-cbjack_stream_device_destroy(cubeb_stream * stream,
+cbjack_stream_device_destroy(cubeb_stream * /*stream*/,
                              cubeb_device * device)
 {
   if (device->input_name)
     free(device->input_name);
   if (device->output_name)
     free(device->output_name);
   free(device);
   return CUBEB_OK;
--- a/media/libcubeb/src/cubeb_resampler.cpp
+++ b/media/libcubeb/src/cubeb_resampler.cpp
@@ -145,17 +145,17 @@ cubeb_resampler_speex<T, InputProcessor,
   * callback, drain the processors. */
   return output_processor->output(output_buffer, output_frames_needed);
 }
 
 template<typename T, typename InputProcessor, typename OutputProcessor>
 long
 cubeb_resampler_speex<T, InputProcessor, OutputProcessor>
 ::fill_internal_input(T * input_buffer, long * input_frames_count,
-                      T * output_buffer, long output_frames_needed)
+                      T * output_buffer, long /*output_frames_needed*/)
 {
   assert(input_buffer && input_frames_count && *input_frames_count &&
          !output_buffer);
 
   /* The input data, after eventual resampling. This is passed to the callback. */
   T * resampled_input = nullptr;
   uint32_t resampled_frame_count = input_processor->output_for_input(*input_frames_count);
 
--- a/media/libcubeb/src/cubeb_utils_unix.h
+++ b/media/libcubeb/src/cubeb_utils_unix.h
@@ -15,17 +15,21 @@
 /* This wraps a critical section to track the owner in debug mode. */
 class owned_critical_section
 {
 public:
   owned_critical_section()
   {
     pthread_mutexattr_t attr;
     pthread_mutexattr_init(&attr);
-    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
+#ifdef DEBUG
+    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK);
+#else
+    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_NORMAL);
+#endif
 
 #ifdef DEBUG
     int r =
 #endif
     pthread_mutex_init(&mutex, &attr);
 #ifdef DEBUG
     assert(r == 0);
 #endif
--- a/media/libcubeb/src/cubeb_wasapi.cpp
+++ b/media/libcubeb/src/cubeb_wasapi.cpp
@@ -755,18 +755,20 @@ refill_callback_output(cubeb_stream * st
     return true;
   }
 
   long got = refill(stm,
                     nullptr,
                     0,
                     output_buffer,
                     output_frames);
+  XASSERT(got >= 0);
+  XASSERT(got == output_frames || stm->draining);
 
-  hr = stm->render_client->ReleaseBuffer(output_frames, 0);
+  hr = stm->render_client->ReleaseBuffer(got, 0);
   if (FAILED(hr)) {
     LOG("failed to release buffer: %x\n", hr);
     return false;
   }
 
   return got == output_frames || stm->draining;
 }
 
@@ -1017,17 +1019,17 @@ current_stream_delay(cubeb_stream * stm)
   if (FAILED(hr)) {
     LOG("GetPosition failed: %x\n", hr);
     return 0;
   }
 
   double cur_pos = static_cast<double>(pos) / freq;
   double max_pos = static_cast<double>(stm->frames_written)  / stm->output_mix_params.rate;
   double delay = max_pos - cur_pos;
-  XASSERT(delay >= 0 || stm->draining);
+  XASSERT(delay >= 0);
 
   return delay;
 }
 
 int
 stream_set_volume(cubeb_stream * stm, float volume)
 {
   stm->stream_reset_lock.assert_current_thread_owns();
--- a/media/libcubeb/src/cubeb_winmm.c
+++ b/media/libcubeb/src/cubeb_winmm.c
@@ -305,16 +305,21 @@ static void winmm_destroy(cubeb * ctx);
 /*static*/ int
 winmm_init(cubeb ** context, char const * context_name)
 {
   cubeb * ctx;
 
   XASSERT(context);
   *context = NULL;
 
+  /* Don't initialize a context if there are no devices available. */
+  if (waveOutGetNumDevs() == 0) {
+    return CUBEB_ERROR;
+  }
+
   ctx = calloc(1, sizeof(*ctx));
   XASSERT(ctx);
 
   ctx->ops = &winmm_ops;
 
   ctx->work = _aligned_malloc(sizeof(*ctx->work), MEMORY_ALLOCATION_ALIGNMENT);
   XASSERT(ctx->work);
   InitializeSListHead(ctx->work);
@@ -528,33 +533,42 @@ winmm_stream_init(cubeb * context, cubeb
   *stream = stm;
 
   return CUBEB_OK;
 }
 
 static void
 winmm_stream_destroy(cubeb_stream * stm)
 {
-  DWORD r;
   int i;
-  int enqueued;
 
   if (stm->waveout) {
+    MMTIME time;
+    MMRESULT r;
+    int device_valid;
+    int enqueued;
+
     EnterCriticalSection(&stm->lock);
     stm->shutdown = 1;
 
     waveOutReset(stm->waveout);
 
+    /* Don't need this value, we just want the result to detect invalid
+       handle/no device errors than waveOutReset doesn't seem to report. */
+    time.wType = TIME_SAMPLES;
+    r = waveOutGetPosition(stm->waveout, &time, sizeof(time));
+    device_valid = !(r == MMSYSERR_INVALHANDLE || r == MMSYSERR_NODRIVER);
+
     enqueued = NBUFS - stm->free_buffers;
     LeaveCriticalSection(&stm->lock);
 
     /* Wait for all blocks to complete. */
-    while (enqueued > 0) {
-      r = WaitForSingleObject(stm->event, INFINITE);
-      XASSERT(r == WAIT_OBJECT_0);
+    while (device_valid && enqueued > 0) {
+      DWORD rv = WaitForSingleObject(stm->event, INFINITE);
+      XASSERT(rv == WAIT_OBJECT_0);
 
       EnterCriticalSection(&stm->lock);
       enqueued = NBUFS - stm->free_buffers;
       LeaveCriticalSection(&stm->lock);
     }
 
     EnterCriticalSection(&stm->lock);
 
--- a/media/libcubeb/tests/test_audio.cpp
+++ b/media/libcubeb/tests/test_audio.cpp
@@ -68,17 +68,17 @@ void synth_run_float(synth_state* synth,
     float phase_inc = 2.0 * M_PI * freq / synth->sample_rate;
     for(long n=0;n < nframes;++n) {
       audiobuffer[n*synth->num_channels+c] = sin(synth->phase[c]) * VOLUME;
       synth->phase[c] += phase_inc;
     }
   }
 }
 
-long data_cb_float(cubeb_stream *stream, void *user, const void * inputbuffer, void *outputbuffer, long nframes)
+long data_cb_float(cubeb_stream * /*stream*/, void * user, const void * /*inputbuffer*/, void * outputbuffer, long nframes)
 {
   synth_state *synth = (synth_state *)user;
   synth_run_float(synth, (float*)outputbuffer, nframes);
   return nframes;
 }
 
 void synth_run_16bit(synth_state* synth, short* audiobuffer, long nframes)
 {
@@ -87,24 +87,24 @@ void synth_run_16bit(synth_state* synth,
     float phase_inc = 2.0 * M_PI * freq / synth->sample_rate;
     for(long n=0;n < nframes;++n) {
       audiobuffer[n*synth->num_channels+c] = sin(synth->phase[c]) * VOLUME * 32767.0f;
       synth->phase[c] += phase_inc;
     }
   }
 }
 
-long data_cb_short(cubeb_stream *stream, void *user, const void * inputbuffer, void *outputbuffer, long nframes)
+long data_cb_short(cubeb_stream * /*stream*/, void * user, const void * /*inputbuffer*/, void * outputbuffer, long nframes)
 {
   synth_state *synth = (synth_state *)user;
   synth_run_16bit(synth, (short*)outputbuffer, nframes);
   return nframes;
 }
 
-void state_cb(cubeb_stream *stream, void *user, cubeb_state state)
+void state_cb(cubeb_stream * /*stream*/, void * /*user*/, cubeb_state /*state*/)
 {
 }
 
 /* Our android backends don't support float, only int16. */
 int supports_float32(const char* backend_id)
 {
   return (strcmp(backend_id, "opensl") != 0 &&
           strcmp(backend_id, "audiotrack") != 0);
@@ -275,17 +275,17 @@ void run_channel_rate_test()
       fprintf(stderr, "--------------------------\n");
       assert(run_test(channel_values[j], freq_values[i], 0) == CUBEB_OK);
       assert(run_test(channel_values[j], freq_values[i], 1) == CUBEB_OK);
     }
   }
 }
 
 
-int main(int argc, char *argv[])
+int main(int /*argc*/, char * /*argv*/[])
 {
 #ifdef CUBEB_GECKO_BUILD
   ScopedXPCOM xpcom("test_audio");
 #endif
 
   assert(run_panning_volume_test(0) == CUBEB_OK);
   assert(run_panning_volume_test(1) == CUBEB_OK);
   run_channel_rate_test();
--- a/media/libcubeb/tests/test_duplex.cpp
+++ b/media/libcubeb/tests/test_duplex.cpp
@@ -33,17 +33,17 @@
 
 struct user_state
 {
   bool seen_noise;
 };
 
 
 
-long data_cb(cubeb_stream *stream, void *user, const void * inputbuffer, void *outputbuffer, long nframes)
+long data_cb(cubeb_stream * stream, void * user, const void * inputbuffer, void * outputbuffer, long nframes)
 {
   user_state * u = reinterpret_cast<user_state*>(user);
 #if (defined(_WIN32) || defined(__WIN32__))
   float *ib = (float *)inputbuffer;
   float *ob = (float *)outputbuffer;
 #else
   short *ib = (short *)inputbuffer;
   short *ob = (short *)outputbuffer;
@@ -65,17 +65,17 @@ long data_cb(cubeb_stream *stream, void 
     output_index += 2;
   }
 
   u->seen_noise |= seen_noise;
 
   return nframes;
 }
 
-void state_cb(cubeb_stream *stream, void *user, cubeb_state state)
+void state_cb(cubeb_stream * stream, void * /*user*/, cubeb_state state)
 {
   if (stream == NULL)
     return;
 
   switch (state) {
   case CUBEB_STATE_STARTED:
     printf("stream started\n"); break;
   case CUBEB_STATE_STOPPED:
@@ -84,17 +84,17 @@ void state_cb(cubeb_stream *stream, void
     printf("stream drained\n"); break;
   default:
     printf("unknown stream state %d\n", state);
   }
 
   return;
 }
 
-int main(int argc, char *argv[])
+int main(int /*argc*/, char * /*argv*/[])
 {
 #ifdef CUBEB_GECKO_BUILD
   ScopedXPCOM xpcom("test_duplex");
 #endif
 
   cubeb *ctx;
   cubeb_stream *stream;
   cubeb_stream_params input_params;
--- a/media/libcubeb/tests/test_latency.cpp
+++ b/media/libcubeb/tests/test_latency.cpp
@@ -6,17 +6,17 @@
 #include <assert.h>
 #include <stdio.h>
 #ifdef CUBEB_GECKO_BUILD
 #include "TestHarness.h"
 #endif
 
 #define LOG(msg) fprintf(stderr, "%s\n", msg);
 
-int main(int argc, char * argv[])
+int main(int /*argc*/, char * /*argv*/[])
 {
 #ifdef CUBEB_GECKO_BUILD
   ScopedXPCOM xpcom("test_latency");
 #endif
 
   cubeb * ctx = NULL;
   int r;
   uint32_t max_channels;
--- a/media/libcubeb/tests/test_record.cpp
+++ b/media/libcubeb/tests/test_record.cpp
@@ -28,17 +28,17 @@
 #define STREAM_FORMAT CUBEB_SAMPLE_S16LE
 #endif
 
 struct user_state
 {
   bool seen_noise;
 };
 
-long data_cb(cubeb_stream *stream, void *user, const void * inputbuffer, void *outputbuffer, long nframes)
+long data_cb(cubeb_stream * stream, void * user, const void * inputbuffer, void * outputbuffer, long nframes)
 {
   user_state * u = reinterpret_cast<user_state*>(user);
 #if STREAM_FORMAT != CUBEB_SAMPLE_FLOAT32LE
   short *b = (short *)inputbuffer;
 #else
   float *b = (float *)inputbuffer;
 #endif
 
@@ -53,17 +53,17 @@ long data_cb(cubeb_stream *stream, void 
     }
   }
 
   u->seen_noise |= seen_noise;
 
   return nframes;
 }
 
-void state_cb(cubeb_stream *stream, void *user, cubeb_state state)
+void state_cb(cubeb_stream * stream, void * /*user*/, cubeb_state state)
 {
   if (stream == NULL)
     return;
 
   switch (state) {
   case CUBEB_STATE_STARTED:
     printf("stream started\n"); break;
   case CUBEB_STATE_STOPPED:
@@ -72,17 +72,17 @@ void state_cb(cubeb_stream *stream, void
     printf("stream drained\n"); break;
   default:
     printf("unknown stream state %d\n", state);
   }
 
   return;
 }
 
-int main(int argc, char *argv[])
+int main(int /*argc*/, char * /*argv*/[])
 {
 #ifdef CUBEB_GECKO_BUILD
   ScopedXPCOM xpcom("test_record");
 #endif
 
   cubeb *ctx;
   cubeb_stream *stream;
   cubeb_stream_params params;
--- a/media/libcubeb/tests/test_resampler.cpp
+++ b/media/libcubeb/tests/test_resampler.cpp
@@ -278,17 +278,17 @@ uint32_t fill_with_sine(float * buf, uin
     float  p = initial_phase++ / static_cast<float>(rate);
     for (uint32_t j = 0; j < channels; j++) {
       buf[offset++] = 0.5 * sin(440. * 2 * PI * p);
     }
   }
   return initial_phase;
 }
 
-long data_cb(cubeb_stream * stm, void * user_ptr,
+long data_cb(cubeb_stream * /*stm*/, void * user_ptr,
              const void * input_buffer, void * output_buffer, long frame_count)
 {
   osc_state * state = reinterpret_cast<osc_state*>(user_ptr);
   const float * in = reinterpret_cast<const float*>(input_buffer);
   float * out = reinterpret_cast<float*>(output_buffer);
 
 
   state->input.push(in, frame_count * state->input_channels);
@@ -459,17 +459,17 @@ void test_delay_line()
        printf("channel: %d, delay_frames: %d, chunk_size: %d\n",
               channel, delay_frames, chunk_size);
         test_delay_lines(delay_frames, channel, chunk_size);
       }
     }
   }
 }
 
-long test_output_only_noop_data_cb(cubeb_stream * stm, void * user_ptr,
+long test_output_only_noop_data_cb(cubeb_stream * /*stm*/, void * /*user_ptr*/,
                                    const void * input_buffer,
                                    void * output_buffer, long frame_count)
 {
   assert(output_buffer);
   assert(!input_buffer);
   return frame_count;
 }
 
@@ -495,17 +495,17 @@ void test_output_only_noop()
   got = cubeb_resampler_fill(resampler, nullptr, nullptr,
                              out_buffer, out_frames);
 
   assert(got == out_frames);
 
   cubeb_resampler_destroy(resampler);
 }
 
-long test_drain_data_cb(cubeb_stream * stm, void * user_ptr,
+long test_drain_data_cb(cubeb_stream * /*stm*/, void * /*user_ptr*/,
                         const void * input_buffer,
                         void * output_buffer, long frame_count)
 {
   assert(output_buffer);
   assert(!input_buffer);
   return frame_count - 10;
 }
 
--- a/media/libcubeb/tests/test_sanity.cpp
+++ b/media/libcubeb/tests/test_sanity.cpp
@@ -31,34 +31,34 @@
 #define STREAM_FORMAT CUBEB_SAMPLE_S16LE
 #endif
 
 static int dummy;
 static uint64_t total_frames_written;
 static int delay_callback;
 
 static long
-test_data_callback(cubeb_stream * stm, void * user_ptr, const void * inputbuffer, void * outputbuffer, long nframes)
+test_data_callback(cubeb_stream * stm, void * user_ptr, const void * /*inputbuffer*/, void * outputbuffer, long nframes)
 {
   assert(stm && user_ptr == &dummy && outputbuffer && nframes > 0);
 #if (defined(_WIN32) || defined(__WIN32__))
   memset(outputbuffer, 0, nframes * sizeof(float));
 #else
   memset(outputbuffer, 0, nframes * sizeof(short));
 #endif
 
   total_frames_written += nframes;
   if (delay_callback) {
     delay(10);
   }
   return nframes;
 }
 
 void
-test_state_callback(cubeb_stream * stm, void * user_ptr, cubeb_state state)
+test_state_callback(cubeb_stream * /*stm*/, void * /*user_ptr*/, cubeb_state /*state*/)
 {
 }
 
 static void
 test_init_destroy_context(void)
 {
   int r;
   cubeb * ctx;
@@ -489,17 +489,17 @@ test_stream_position(void)
 
   END_TEST;
 }
 
 static int do_drain;
 static int got_drain;
 
 static long
-test_drain_data_callback(cubeb_stream * stm, void * user_ptr, const void * inputbuffer, void * outputbuffer, long nframes)
+test_drain_data_callback(cubeb_stream * stm, void * user_ptr, const void * /*inputbuffer*/, void * outputbuffer, long nframes)
 {
   assert(stm && user_ptr == &dummy && outputbuffer && nframes > 0);
   if (do_drain == 1) {
     do_drain = 2;
     return 0;
   }
   /* once drain has started, callback must never be called again */
   assert(do_drain != 2);
@@ -508,17 +508,17 @@ test_drain_data_callback(cubeb_stream * 
 #else
   memset(outputbuffer, 0, nframes * sizeof(short));
 #endif
   total_frames_written += nframes;
   return nframes;
 }
 
 void
-test_drain_state_callback(cubeb_stream * stm, void * user_ptr, cubeb_state state)
+test_drain_state_callback(cubeb_stream * /*stm*/, void * /*user_ptr*/, cubeb_state state)
 {
   if (state == CUBEB_STATE_DRAINED) {
     assert(!got_drain);
     got_drain = 1;
   }
 }
 
 static void
@@ -603,17 +603,17 @@ int is_windows_7()
 
   return VerifyVersionInfo(&osvi, VER_MAJORVERSION | VER_MINORVERSION, condition_mask);
 #else
   return 0;
 #endif
 }
 
 int
-main(int argc, char * argv[])
+main(int /*argc*/, char * /*argv*/[])
 {
 #ifdef CUBEB_GECKO_BUILD
   ScopedXPCOM xpcom("test_sanity");
 #endif
 
   test_init_destroy_context();
   test_init_destroy_multiple_contexts();
   test_context_variables();
--- a/media/libcubeb/tests/test_tone.cpp
+++ b/media/libcubeb/tests/test_tone.cpp
@@ -29,17 +29,17 @@
 #define STREAM_FORMAT CUBEB_SAMPLE_S16LE
 #endif
 
 /* store the phase of the generated waveform */
 struct cb_user_data {
   long position;
 };
 
-long data_cb(cubeb_stream *stream, void *user, const void* inputbuffer, void *outputbuffer, long nframes)
+long data_cb(cubeb_stream *stream, void *user, const void* /*inputbuffer*/, void *outputbuffer, long nframes)
 {
   struct cb_user_data *u = (struct cb_user_data *)user;
 #if (defined(_WIN32) || defined(__WIN32__))
   float *b = (float *)outputbuffer;
 #else
   short *b = (short *)outputbuffer;
 #endif
   float t1, t2;
@@ -93,17 +93,17 @@ void state_cb(cubeb_stream *stream, void
     printf("stream drained\n"); break;
   default:
     printf("unknown stream state %d\n", state);
   }
 
   return;
 }
 
-int main(int argc, char *argv[])
+int main(int /*argc*/, char * /*argv*/[])
 {
 #ifdef CUBEB_GECKO_BUILD
   ScopedXPCOM xpcom("test_tone");
 #endif
 
   cubeb *ctx;
   cubeb_stream *stream;
   cubeb_stream_params params;
--- a/media/libcubeb/update.sh
+++ b/media/libcubeb/update.sh
@@ -52,10 +52,8 @@ if [ -n "$rev" ]; then
     echo "WARNING: updating from a dirty git repository."
   fi
   sed -i.bak -e "/The git commit ID used was/ s/[0-9a-f]\{40\}\(-dirty\)\{0,1\}\./$version./" README_MOZILLA
   rm README_MOZILLA.bak
 else
   echo "Remember to update README_MOZILLA with the version details."
 fi
 
-patch -p3 < bug1278612.patch
-
--- a/mozglue/android/APKOpen.cpp
+++ b/mozglue/android/APKOpen.cpp
@@ -78,17 +78,18 @@ enum StartupEvent {
 #define mozilla_StartupTimeline_Event(ev, z) ev,
 #include "StartupTimeline.h"
 #undef mozilla_StartupTimeline_Event
   MAX_STARTUP_EVENT_ID
 };
 
 using namespace mozilla;
 
-static struct mapping_info * lib_mapping = nullptr;
+static const int MAX_MAPPING_INFO = 32;
+static mapping_info lib_mapping[MAX_MAPPING_INFO];
 
 NS_EXPORT const struct mapping_info *
 getLibraryMapping()
 {
   return lib_mapping;
 }
 
 void
@@ -180,18 +181,16 @@ static void * nss_handle = nullptr;
 template <typename T> inline void
 xul_dlsym(const char *symbolName, T *value)
 {
   *value = (T) (uintptr_t) __wrap_dlsym(xul_handle, symbolName);
 }
 
 static int mapping_count = 0;
 
-#define MAX_MAPPING_INFO 32
-
 extern "C" void
 report_mapping(char *name, void *base, uint32_t len, uint32_t offset)
 {
   if (mapping_count >= MAX_MAPPING_INFO)
     return;
 
   struct mapping_info *info = &lib_mapping[mapping_count++];
   info->name = strdup(name);
@@ -260,19 +259,16 @@ loadSQLiteLibs(const char *apkName)
 {
   if (sqlite_handle)
     return SUCCESS;
 
 #ifdef MOZ_FOLD_LIBS
   if (loadNSSLibs(apkName) != SUCCESS)
     return FAILURE;
 #else
-  if (!lib_mapping) {
-    lib_mapping = (struct mapping_info *)calloc(MAX_MAPPING_INFO, sizeof(*lib_mapping));
-  }
 
   sqlite_handle = dlopenAPKLibrary(apkName, "libmozsqlite3.so");
   if (!sqlite_handle) {
     __android_log_print(ANDROID_LOG_ERROR, "GeckoLibLoad", "Couldn't get a handle to libmozsqlite3!");
     return FAILURE;
   }
 #endif
 
@@ -281,20 +277,16 @@ loadSQLiteLibs(const char *apkName)
 }
 
 static mozglueresult
 loadNSSLibs(const char *apkName)
 {
   if (nss_handle && nspr_handle && plc_handle)
     return SUCCESS;
 
-  if (!lib_mapping) {
-    lib_mapping = (struct mapping_info *)calloc(MAX_MAPPING_INFO, sizeof(*lib_mapping));
-  }
-
   nss_handle = dlopenAPKLibrary(apkName, "libnss3.so");
 
 #ifndef MOZ_FOLD_LIBS
   nspr_handle = dlopenAPKLibrary(apkName, "libnspr4.so");
 
   plc_handle = dlopenAPKLibrary(apkName, "libplc4.so");
 #endif
 
--- a/netwerk/base/nsIUDPSocket.idl
+++ b/netwerk/base/nsIUDPSocket.idl
@@ -52,16 +52,21 @@ interface nsIUDPSocket : nsISupports
      *        If true, the socket is allowed to be bound to an address that is
      *        already in use. Default is true.
      */
     [optional_argc] void init(in long aPort,
                               in boolean aLoopbackOnly,
                               in nsIPrincipal aPrincipal,
                               [optional] in boolean aAddressReuse);
 
+    [optional_argc] void init2(in AUTF8String aAddr,
+                               in long aPort,
+                               in nsIPrincipal aPrincipal,
+                               [optional] in boolean aAddressReuse);
+
     /**
      * initWithAddress
      *
      * This method initializes a UDP socket, and binds it to a particular
      * local address (and hence a particular local network interface).
      *
      * @param aAddr
      *        The address to which this UDP socket should be bound.
--- a/netwerk/base/nsUDPSocket.cpp
+++ b/netwerk/base/nsUDPSocket.cpp
@@ -568,16 +568,41 @@ nsUDPSocket::Init(int32_t aPort, bool aL
     addr.inet.ip = htonl(INADDR_LOOPBACK);
   else
     addr.inet.ip = htonl(INADDR_ANY);
 
   return InitWithAddress(&addr, aPrincipal, aAddressReuse, aOptionalArgc);
 }
 
 NS_IMETHODIMP
+nsUDPSocket::Init2(const nsACString& aAddr, int32_t aPort, nsIPrincipal *aPrincipal,
+                   bool aAddressReuse, uint8_t aOptionalArgc)
+{
+  if (NS_WARN_IF(aAddr.IsEmpty())) {
+    return NS_ERROR_INVALID_ARG;
+  }
+
+  PRNetAddr prAddr;
+  if (PR_StringToNetAddr(aAddr.BeginReading(), &prAddr) != PR_SUCCESS) {
+    return NS_ERROR_FAILURE;
+  }
+
+  NetAddr addr;
+
+  if (aPort < 0)
+    aPort = 0;
+
+  addr.raw.family = AF_INET;
+  addr.inet.port = htons(aPort);
+  addr.inet.ip = prAddr.inet.ip;
+
+  return InitWithAddress(&addr, aPrincipal, aAddressReuse, aOptionalArgc);
+}
+
+NS_IMETHODIMP
 nsUDPSocket::InitWithAddress(const NetAddr *aAddr, nsIPrincipal *aPrincipal,
                              bool aAddressReuse, uint8_t aOptionalArgc)
 {
   NS_ENSURE_TRUE(mFD == nullptr, NS_ERROR_ALREADY_INITIALIZED);
 
   if (gIOService->IsNetTearingDown()) {
     return NS_ERROR_FAILURE;
   }
new file mode 100644
--- /dev/null
+++ b/taskcluster/ci/android-stuff/kind.yml
@@ -0,0 +1,233 @@
+# 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/.
+
+# The name of this kind should suggest it's not meant to be permanent.  This is
+# a temporary place to generate these tasks in Bug 1286075 until they are
+# rewritten in a better way.
+
+implementation: taskgraph.task.transform:TransformTask
+
+transforms:
+   - taskgraph.transforms.android_stuff:transforms
+   - taskgraph.transforms.task:transforms
+
+jobs:
+    android-api-15-gradle-dependencies:
+        description: "Android armv7 API 15+ gradle dependencies"
+        attributes:
+            build_platform: android-api-15-gradle-dependencies
+            build_type: opt
+        index:
+            product: mobile
+            job-name: android-api-15-gradle-dependencies-opt
+        treeherder:
+            platform: android-4-0-armv7-api15/opt
+            kind: build
+            tier: 2
+            symbol: tc(Deps)
+        worker-type: aws-provisioner-v1/android-api-15
+        worker:
+            implementation: docker-worker
+            docker-image: {in-tree: android-gradle-build}
+            env:
+                GRADLE_USER_HOME: "/home/worker/workspace/build/src/dotgradle-online"
+                MH_BUILD_POOL: "taskcluster"
+                MH_CUSTOM_BUILD_VARIANT_CFG: "api-15-gradle-dependencies"
+                MOZHARNESS_ACTIONS: "get-secrets build multi-l10n update"
+                MOZHARNESS_CONFIG: >
+                    builds/releng_base_android_64_builds.py
+                    disable_signing.py
+                    platform_supports_post_upload_to_latest.py
+                MOZHARNESS_SCRIPT: "mozharness/scripts/fx_desktop_build.py"
+                TOOLTOOL_CACHE: "/home/worker/tooltool-cache"
+                TOOLTOOL_REPO: "https://github.com/mozilla/build-tooltool"
+                TOOLTOOL_REV: "master"
+            artifacts:
+              - name: public/build
+                path: /home/worker/artifacts/
+                type: directory
+            caches:
+              - name: tooltool-cache
+                mount-point: /home/worker/tooltool-cache
+                type: persistent
+            relengapi-proxy: true
+            command:
+              - "/bin/bash"
+              - "-c"
+              - "/home/worker/bin/before.sh && /home/worker/bin/build.sh && /home/worker/bin/after.sh && true\n"
+            max-run-time: 36000
+        scopes:
+          - docker-worker:relengapi-proxy:tooltool.download.internal
+          - docker-worker:relengapi-proxy:tooltool.download.public
+        when:
+            files-changed:
+              - "mobile/android/config/**"
+              - "testing/docker/android-gradle-build/**"
+              - "testing/mozharness/configs/builds/releng_sub_android_configs/*gradle_dependencies.py"
+              - "**/*.gradle"
+
+    android-test:
+        description: "Android armv7 unit tests"
+        attributes:
+            build_platform: android-test
+            build_type: opt
+        treeherder:
+            platform: android-4-0-armv7-api15/opt