Merge mozilla-central to mozilla-inbound. CLOSED TREE
authorCsoregi Natalia <ncsoregi@mozilla.com>
Mon, 14 Jan 2019 19:20:55 +0200
changeset 453775 b8baa741549c323261ff1dbfadcdf48c228acc80
parent 453774 1abbb5d43328bff63871664e4caac4563ed4c0c6 (current diff)
parent 453720 b8f96f4d584a2aab372db25e06ea1559193e4f40 (diff)
child 453776 9cc9822da7de89b2f24de19d85e1885fdb25a98c
push id35373
push usercbrindusan@mozilla.com
push dateMon, 14 Jan 2019 21:52:01 +0000
treeherdermozilla-central@8ec327de0ba7 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone66.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 mozilla-central to mozilla-inbound. CLOSED TREE
devtools/client/themes/images/search-clear-dark.svg
devtools/client/themes/images/search-clear-failed.svg
devtools/client/themes/images/search-clear-light.svg
--- a/browser/components/extensions/test/browser/browser_ext_optionsPage_popups.js
+++ b/browser/components/extensions/test/browser/browser_ext_optionsPage_popups.js
@@ -1,39 +1,40 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 "use strict";
 
 async function openContextMenuInOptionsPage(optionsBrowser) {
   let contentAreaContextMenu = document.getElementById("contentAreaContextMenu");
   let popupShownPromise = BrowserTestUtils.waitForEvent(contentAreaContextMenu, "popupshown");
 
-  await BrowserTestUtils.waitForCondition(async () => {
-    BrowserTestUtils.synthesizeMouseAtCenter("a", {type: "contextmenu"}, optionsBrowser);
+  info("Trigger context menu in the extension options page");
 
-    // It looks that syntesizeMouseAtCenter is sometimes able to trigger the mouse event on the
-    // HTML document instead of triggering it on the expected document element while running this
-    // test in --verify mode, and we are going to send the mouse event again if it didn't
-    // triggered the context menu yet.
-    return Promise.race([
-      popupShownPromise.then(() => true),
-      delay(500).then(() => false),
-    ]);
-  }, "Waiting the context menu to be shown");
+  // Instead of BrowserTestUtils.synthesizeMouseAtCenter, we are dispatching a contextmenu
+  // event directly on the target element to prevent intermittent failures on debug builds
+  // (especially linux32-debug), see Bug 1519808 for a rationale.
+  ContentTask.spawn(optionsBrowser, null, () => {
+    let el = content.document.querySelector("a");
+    el.dispatchEvent(new content.MouseEvent("contextmenu", {
+      bubbles: true,
+      cancelable: true,
+      view: el.ownerGlobal,
+    }));
+  });
+
+  info("Wait the context menu to be shown");
+  await popupShownPromise;
 
   return contentAreaContextMenu;
 }
 
-function contextMenuClosed(contextMenu) {
-  // Close the context menu and ensure that it is gone, otherwise there
-  // may be intermittent failures related to shutdown leaks.
-  return BrowserTestUtils.waitForCondition(async () => {
-    await closeContextMenu(contextMenu);
-    return contextMenu.state === "closed";
-  }, "Wait context menu popup to be closed");
+async function contextMenuClosed(contextMenu) {
+  info("Wait context menu popup to be closed");
+  await closeContextMenu(contextMenu);
+  is(contextMenu.state, "closed", "The context menu popup has been closed");
 }
 
 add_task(async function test_tab_options_popups() {
   async function backgroundScript() {
     browser.menus.onShown.addListener(info => {
       browser.test.sendMessage("extension-menus-onShown", info);
     });
 
--- a/devtools/client/inspector/extensions/test/browser_inspector_extension_sidebar.js
+++ b/devtools/client/inspector/extensions/test/browser_inspector_extension_sidebar.js
@@ -256,18 +256,16 @@ add_task(async function teardownExtensio
   ok(!inspector.sidebar.getTabPanel(SIDEBAR_ID),
      "The rendered extension sidebar has been removed");
 
   const inspectorStoreState = inspector.store.getState();
 
   Assert.deepEqual(inspectorStoreState.extensionsSidebar, {},
                    "The extensions sidebar Redux store data has been cleared");
 
-  await toolbox.destroy();
-
   await extension.unload();
 
   toolbox = null;
   inspector = null;
   extension = null;
 });
 
 add_task(async function testActiveTabOnNonExistingSidebar() {
--- a/devtools/client/inspector/inspector.js
+++ b/devtools/client/inspector/inspector.js
@@ -906,28 +906,28 @@ Inspector.prototype = {
         id: "layoutview",
         title: INSPECTOR_L10N.getStr("inspector.sidebar.layoutViewTitle2"),
       },
       {
         id: "computedview",
         title: INSPECTOR_L10N.getStr("inspector.sidebar.computedViewTitle"),
       },
       {
+        id: "fontinspector",
+        title: INSPECTOR_L10N.getStr("inspector.sidebar.fontInspectorTitle"),
+      },
+      {
         id: "animationinspector",
         title: INSPECTOR_L10N.getStr("inspector.sidebar.animationInspectorTitle"),
       },
-      {
-        id: "fontinspector",
-        title: INSPECTOR_L10N.getStr("inspector.sidebar.fontInspectorTitle"),
-      },
     ];
 
     if (this._supportsChangesPanel()) {
       // Insert Changes as third tab, right after Computed.
-      // TODO: move this inline to `sidebarPanels` above when addressing Bug 1491887.
+      // TODO: move this inline to `sidebarPanels` above when addressing Bug 1511877.
       sidebarPanels.splice(2, 0, {
         id: "changesview",
         title: INSPECTOR_L10N.getStr("inspector.sidebar.changesViewTitle"),
       });
     }
 
     if (Services.prefs.getBoolPref("devtools.inspector.new-rulesview.enabled")) {
       sidebarPanels.push({
--- a/devtools/client/jar.mn
+++ b/devtools/client/jar.mn
@@ -221,19 +221,17 @@ devtools.jar:
     skin/images/sort-ascending-arrow.svg (themes/images/sort-ascending-arrow.svg)
     skin/images/sort-descending-arrow.svg (themes/images/sort-descending-arrow.svg)
     skin/images/cubic-bezier-swatch.svg (themes/images/cubic-bezier-swatch.svg)
     skin/fonts.css (themes/fonts.css)
     skin/changes.css (themes/changes.css)
     skin/computed.css (themes/computed.css)
     skin/layout.css (themes/layout.css)
     skin/images/arrow-e.svg (themes/images/arrow-e.svg)
-    skin/images/search-clear-failed.svg (themes/images/search-clear-failed.svg)
-    skin/images/search-clear-light.svg (themes/images/search-clear-light.svg)
-    skin/images/search-clear-dark.svg (themes/images/search-clear-dark.svg)
+    skin/images/search-clear.svg (themes/images/search-clear.svg)
     skin/images/reload.svg (themes/images/reload.svg)
     skin/images/file-type-general.svg (netmonitor/src/assets/icons/file-type-general.svg)
     skin/images/file-type-image.svg (netmonitor/src/assets/icons/file-type-image.svg)
     skin/images/security-state-broken.svg (themes/images/security-state-broken.svg)
     skin/images/security-state-insecure.svg (themes/images/security-state-insecure.svg)
     skin/images/security-state-secure.svg (themes/images/security-state-secure.svg)
     skin/images/security-state-weak.svg (themes/images/security-state-weak.svg)
     skin/images/diff.svg (themes/images/diff.svg)
@@ -259,9 +257,8 @@ devtools.jar:
     content/netmonitor/src/assets/styles/variables.css (netmonitor/src/assets/styles/variables.css)
     content/netmonitor/src/assets/icons/play.svg (netmonitor/src/assets/icons/play.svg)
     content/netmonitor/src/assets/icons/shield.svg (netmonitor/src/assets/icons/shield.svg)
     content/netmonitor/index.html (netmonitor/index.html)
     content/netmonitor/src/assets/styles/StatusCode.css (netmonitor/src/assets/styles/StatusCode.css)
 
     # Application panel
     content/application/index.html (application/index.html)
-
--- a/devtools/client/themes/common.css
+++ b/devtools/client/themes/common.css
@@ -12,22 +12,32 @@
    * we're using the `font` shorthand. */
   font: message-box;
   font-size: var(--theme-body-font-size);
 
   --tab-line-hover-color: rgba(0,0,0,.2);
   --tab-line-selected-color: var(--blue-50);
   --toggle-thumb-color: white;
   --toggle-track-color: var(--grey-30);
+
+  --searchbox-background-color: var(--theme-highlight-yellow);
+  --searchbox-border-color: #ffbf00;
+  --searchbox-no-match-background-color: #ffe5e5;
+  --searchbox-no-match-stroke-color: var(--red-60);
 }
 
 :root.theme-dark {
   --tab-line-hover-color: rgba(255,255,255,.2);
   --toggle-thumb-color: var(--grey-40);
   --toggle-track-color: var(--grey-60);
+
+  --searchbox-background-color: #4d4222;
+  --searchbox-border-color: #d99f2b;
+  --searchbox-no-match-background-color: #402325;
+  --searchbox-no-match-stroke-color: var(--red-50);
 }
 
 :root[platform="mac"] {
   --monospace-font-family: Menlo, monospace;
 }
 
 :root[platform="win"] {
   --monospace-font-family: Consolas, monospace;
@@ -480,17 +490,17 @@ checkbox:-moz-focusring {
   padding-inline-end: 23px;
 }
 
 .devtools-searchinput {
   background-image: url(chrome://devtools/skin/images/search.svg);
 }
 
 .devtools-filterinput {
-  background-image: url(chrome://devtools/skin/images/filter.svg#filterinput);
+  background-image: url(chrome://devtools/skin/images/filter.svg);
 }
 
 .devtools-searchinput:-moz-locale-dir(rtl),
 .devtools-searchinput:dir(rtl),
 .devtools-filterinput:-moz-locale-dir(rtl),
 .devtools-filterinput:dir(rtl) {
   background-position: calc(100% - 8px) center;
 }
@@ -588,47 +598,41 @@ checkbox:-moz-focusring {
 }
 
 .devtools-filterinput:-moz-any([filled],.filled) {
   background-color: var(--searchbox-background-color);
   border-color: var(--searchbox-border-color);
 }
 
 .devtools-style-searchbox-no-match {
-  background-color: var(--searcbox-no-match-background-color) !important;
-  border-color: var(--searcbox-no-match-border-color) !important;
+  background-color: var(--searchbox-no-match-background-color) !important;
+  border-color: var(--searchbox-no-match-stroke-color) !important;
 }
 
 .devtools-searchinput-clear {
   position: absolute;
   top: calc(50% - 8px);
   inset-inline-end: 7px;
   padding: 0;
   border: 0;
   width: 16px;
   height: 16px;
-  background-position: 0 0;
-  background-repeat: no-repeat;
   background-color: transparent;
-}
-
-.theme-dark .devtools-searchinput-clear {
-  background-image: url("chrome://devtools/skin/images/search-clear-dark.svg");
-}
-
-.theme-light .devtools-searchinput-clear {
-  background-image: url("chrome://devtools/skin/images/search-clear-light.svg");
+  background-image: url("chrome://devtools/skin/images/search-clear.svg");
+  -moz-context-properties: fill, fill-opacity;
+  fill: var(--theme-toolbar-icon-color);
+  fill-opacity: 0.8;
 }
 
 .devtools-style-searchbox-no-match + .devtools-searchinput-clear {
-  background-image: url("chrome://devtools/skin/images/search-clear-failed.svg") !important;
+  fill: var(--searchbox-no-match-stroke-color);
 }
 
 .devtools-searchinput-clear:hover {
-  background-position: -16px 0;
+  fill-opacity: 1;
 }
 
 /* Twisty and checkbox controls */
 
 .theme-twisty {
   width: 14px;
   height: 14px;
   cursor: pointer;
--- a/devtools/client/themes/images/filter.svg
+++ b/devtools/client/themes/images/filter.svg
@@ -1,16 +1,7 @@
 <!-- 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="16" height="16" viewBox="0 0 16 16" fill="context-fill #0b0b0b">
-  <style>
-    /* Use a fill that's visible on both light and dark themes for filter inputs */
-    #filterinput:target + #icon {
-      fill: #aaa;
-    }
-  </style>
-  <g id="filterinput"/>
-  <g id="icon">
-    <path fill-opacity=".3" d="M6.6 8.4c0-.6-1.7.3-1.7-.3 0-.4-1.7-2.7-1.7-2.7H13s-1.8 2-1.8 2.7c0 .3-2.1-.1-2.1.3v6.1H7s-.4-4.1-.4-6.1z"/>
-    <path d="M2 2v2.3L4.7 9H6v5.4l2.1 1 1.8-.9V9h1.3L14 4.3V2H2zm11 2l-2.2 4H9v5.8l-.9.4-1.1-.5V8H5.2L3 4V3h10v1z"/>
-  </g>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="context-fill #aaa">
+  <path fill-opacity=".3" d="M6.6 8.4c0-.6-1.7.3-1.7-.3 0-.4-1.7-2.7-1.7-2.7H13s-1.8 2-1.8 2.7c0 .3-2.1-.1-2.1.3v6.1H7s-.4-4.1-.4-6.1z"/>
+  <path d="M2 2v2.3L4.7 9H6v5.4l2.1 1 1.8-.9V9h1.3L14 4.3V2H2zm11 2l-2.2 4H9v5.8l-.9.4-1.1-.5V8H5.2L3 4V3h10v1z"/>
 </svg>
deleted file mode 100644
--- a/devtools/client/themes/images/search-clear-dark.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
-   - License, v. 2.0. If a copy of the MPL was not distributed with this
-   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="16" viewBox="0 0 32 16">
-  <defs>
-    <path id="glyphShape-clear" d="M8,0C3.6,0,0,3.6,0,8c0,4.4,3.6,8,8,8s8-3.6,8-8C16,3.6,12.4,0,8,0 z M11.9,10.5l-1.4,1.4L8,9.4l-2.4,2.4l-1.4-1.4L6.6,8L4.2,5.6l1.4-1.4L8,6.6l2.4-2.4l1.4,1.4L9.4,8L11.9,10.5z"/>
-    <style>
-      .icon-state-default { fill: #f5f7fa; fill-opacity: .6; }
-      .icon-state-pressed { fill: #7d7e80; fill-opacity: .8; }
-    </style>
-  </defs>
-  <use xlink:href="#glyphShape-clear" class="icon-state-default"/>
-  <use xlink:href="#glyphShape-clear" class="icon-state-pressed" transform="translate(16)"/>
-</svg>
deleted file mode 100644
--- a/devtools/client/themes/images/search-clear-failed.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
-   - License, v. 2.0. If a copy of the MPL was not distributed with this
-   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="16" viewBox="0 0 32 16">
-  <defs>
-    <path id="glyphShape-clear" d="M8,0C3.6,0,0,3.6,0,8c0,4.4,3.6,8,8,8s8-3.6,8-8C16,3.6,12.4,0,8,0 z M11.9,10.5l-1.4,1.4L8,9.4l-2.4,2.4l-1.4-1.4L6.6,8L4.2,5.6l1.4-1.4L8,6.6l2.4-2.4l1.4,1.4L9.4,8L11.9,10.5z"/>
-    <style>
-      .icon-state-default { fill: #cc3d3d; fill-opacity: 1; }
-      .icon-state-pressed { fill: #802d2d; fill-opacity: 1; }
-    </style>
-  </defs>
-  <use xlink:href="#glyphShape-clear" class="icon-state-default"/>
-  <use xlink:href="#glyphShape-clear" class="icon-state-pressed" transform="translate(16)"/>
-</svg>
deleted file mode 100644
--- a/devtools/client/themes/images/search-clear-light.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
-   - License, v. 2.0. If a copy of the MPL was not distributed with this
-   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="16" viewBox="0 0 32 16">
-  <defs>
-    <path id="glyphShape-clear" d="M8,0C3.6,0,0,3.6,0,8c0,4.4,3.6,8,8,8s8-3.6,8-8C16,3.6,12.4,0,8,0 z M11.9,10.5l-1.4,1.4L8,9.4l-2.4,2.4l-1.4-1.4L6.6,8L4.2,5.6l1.4-1.4L8,6.6l2.4-2.4l1.4,1.4L9.4,8L11.9,10.5z"/>
-    <style>
-      .icon-state-default { fill: #1d2126; fill-opacity: .5; }
-      .icon-state-pressed { fill: #1d2126; fill-opacity: .8; }
-    </style>
-  </defs>
-  <use xlink:href="#glyphShape-clear" class="icon-state-default"/>
-  <use xlink:href="#glyphShape-clear" class="icon-state-pressed" transform="translate(16)"/>
-</svg>
new file mode 100644
--- /dev/null
+++ b/devtools/client/themes/images/search-clear.svg
@@ -0,0 +1,6 @@
+<!-- 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="16" height="16" viewBox="0 0 16 16" fill="context-fill" fill-opacity="context-fill-opacity">
+  <path d="M6.586 8l-2.293 2.293a1 1 0 0 0 1.414 1.414L8 9.414l2.293 2.293a1 1 0 0 0 1.414-1.414L9.414 8l2.293-2.293a1 1 0 1 0-1.414-1.414L8 6.586 5.707 4.293a1 1 0 0 0-1.414 1.414L6.586 8zM8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0z"/>
+</svg>
--- a/devtools/client/themes/toolbars.css
+++ b/devtools/client/themes/toolbars.css
@@ -5,28 +5,20 @@
 
 /* CSS Variables specific to the devtools toolbar that aren't defined by the themes */
 :root {
   --separator-block-margin: 4px;
   --separator-inline-margin: 1px;
 }
 
 .theme-light {
-  --searchbox-background-color: var(--theme-highlight-yellow);
-  --searchbox-border-color: #ffbf00;
-  --searcbox-no-match-background-color: #ffe5e5;
-  --searcbox-no-match-border-color: #e52e2e;
   --separator-border-color: rgba(0,0,0,.1);
 }
 
 .theme-dark {
-  --searchbox-background-color: #4d4222;
-  --searchbox-border-color: #d99f2b;
-  --searcbox-no-match-background-color: #402325;
-  --searcbox-no-match-border-color: #cc3d3d;
   --separator-border-color: rgba(100%,100%,100%,.2);
 }
 
 /* Toolbars */
 .devtools-toolbar,
 .devtools-sidebar-tabs tabs {
   -moz-appearance: none;
   padding: 0;
--- a/dom/ipc/URLClassifierParent.cpp
+++ b/dom/ipc/URLClassifierParent.cpp
@@ -156,23 +156,25 @@ mozilla::ipc::IPCResult URLClassifierLoc
   }
 
   return IPC_OK();
 }
 
 NS_IMETHODIMP
 URLClassifierLocalParent::OnClassifyComplete(
     const nsTArray<RefPtr<nsIUrlClassifierFeatureResult>>& aResults) {
-  nsTArray<URLClassifierLocalResult> ipcResults;
-  for (nsIUrlClassifierFeatureResult* result : aResults) {
-    URLClassifierLocalResult* ipcResult = ipcResults.AppendElement();
+  if (mIPCOpen) {
+    nsTArray<URLClassifierLocalResult> ipcResults;
+    for (nsIUrlClassifierFeatureResult* result : aResults) {
+      URLClassifierLocalResult* ipcResult = ipcResults.AppendElement();
 
-    net::UrlClassifierFeatureResult* r =
-        static_cast<net::UrlClassifierFeatureResult*>(result);
+      net::UrlClassifierFeatureResult* r =
+          static_cast<net::UrlClassifierFeatureResult*>(result);
 
-    ipcResult->uri() = r->URI();
-    r->Feature()->GetName(ipcResult->featureName());
-    ipcResult->matchingList() = r->List();
+      ipcResult->uri() = r->URI();
+      r->Feature()->GetName(ipcResult->featureName());
+      ipcResult->matchingList() = r->List();
+    }
+
+    Unused << Send__delete__(this, ipcResults);
   }
-
-  Unused << Send__delete__(this, ipcResults);
   return NS_OK;
 }
--- a/taskcluster/ci/test/raptor.yml
+++ b/taskcluster/ci/test/raptor.yml
@@ -294,16 +294,40 @@ raptor-tp6-8-chrome:
         by-test-platform:
             linux64.*: 3
             default: 2
     mozharness:
         extra-options:
             - --test=raptor-tp6-8
             - --app=chrome
 
+raptor-tp6-10-firefox:
+    description: "Raptor tp6-10 on Firefox"
+    try-name: raptor-tp6-10-firefox
+    treeherder-symbol: Rap(tp6-10)
+    run-on-projects: ['try', 'mozilla-central']
+    tier: 2
+    mozharness:
+        extra-options:
+            - --test=raptor-tp6-10
+
+raptor-tp6-10-chrome:
+    description: "Raptor tp6-10 on Chrome"
+    try-name: raptor-tp6-10-chrome
+    treeherder-symbol: Rap-C(tp6-10)
+    run-on-projects: ['try', 'mozilla-central']
+    tier:
+        by-test-platform:
+            linux64.*: 3
+            default: 2
+    mozharness:
+        extra-options:
+            - --test=raptor-tp6-10
+            - --app=chrome
+
 raptor-speedometer-firefox:
     description: "Raptor Speedometer on Firefox"
     try-name: raptor-speedometer-firefox
     treeherder-symbol: Rap(sp)
     run-on-projects:
         by-test-platform:
             windows10-64-ux: ['try', 'mozilla-central']
             default: built-projects
--- a/taskcluster/ci/test/test-sets.yml
+++ b/taskcluster/ci/test/test-sets.yml
@@ -83,16 +83,17 @@ raptor-firefox:
     - raptor-tp6-1-firefox
     - raptor-tp6-2-firefox
     - raptor-tp6-3-firefox
     - raptor-tp6-4-firefox
     - raptor-tp6-5-firefox
     - raptor-tp6-6-firefox
     - raptor-tp6-7-firefox
     - raptor-tp6-8-firefox
+    - raptor-tp6-10-firefox
     - raptor-speedometer-firefox
     - raptor-stylebench-firefox
     - raptor-motionmark-htmlsuite-firefox
     - raptor-motionmark-animometer-firefox
     - raptor-webaudio-firefox
     - raptor-sunspider-firefox
     - raptor-wasm-godot-firefox
 
@@ -115,16 +116,17 @@ raptor-chrome:
     - raptor-tp6-1-chrome
     - raptor-tp6-2-chrome
     - raptor-tp6-3-chrome
     - raptor-tp6-4-chrome
     - raptor-tp6-5-chrome
     - raptor-tp6-6-chrome
     - raptor-tp6-7-chrome
     - raptor-tp6-8-chrome
+    - raptor-tp6-10-chrome
     - raptor-speedometer-chrome
     - raptor-stylebench-chrome
     - raptor-motionmark-htmlsuite-chrome
     - raptor-motionmark-animometer-chrome
     - raptor-webaudio-chrome
     - raptor-sunspider-chrome
     - raptor-wasm-godot-chrome
 
new file mode 100644
--- /dev/null
+++ b/testing/raptor/raptor/playback/mitmproxy-recordings-raptor-paypal.manifest
@@ -0,0 +1,10 @@
+[
+  {
+    "size": 1037796,
+    "visibility": "public",
+    "digest": "913d7631cc2f1685310ea1d807cf4dc6a91298f6f24700393e46272128de9bb47ce44c9e88a771ff2169d0458c83b1df07b654456495b7d8fb6c6899fba0bc3a",
+    "algorithm": "sha512",
+    "filename": "mitmproxy-tp6-paypal.zip",
+    "unpack": true
+  }
+]
\ No newline at end of file
--- a/testing/raptor/raptor/raptor.ini
+++ b/testing/raptor/raptor/raptor.ini
@@ -2,16 +2,17 @@
 [include:tests/raptor-tp6-1.ini]
 [include:tests/raptor-tp6-2.ini]
 [include:tests/raptor-tp6-3.ini]
 [include:tests/raptor-tp6-4.ini]
 [include:tests/raptor-tp6-5.ini]
 [include:tests/raptor-tp6-6.ini]
 [include:tests/raptor-tp6-7.ini]
 [include:tests/raptor-tp6-8.ini]
+[include:tests/raptor-tp6-10.ini]
 
 # raptor benchmark tests
 [include:tests/raptor-assorted-dom.ini]
 [include:tests/raptor-motionmark-animometer.ini]
 [include:tests/raptor-motionmark-htmlsuite.ini]
 [include:tests/raptor-speedometer.ini]
 [include:tests/raptor-stylebench.ini]
 [include:tests/raptor-sunspider.ini]
new file mode 100644
--- /dev/null
+++ b/testing/raptor/raptor/tests/raptor-tp6-10.ini
@@ -0,0 +1,34 @@
+# 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/.
+
+# raptor tp6-10
+
+[DEFAULT]
+type =  pageload
+playback = mitmproxy
+playback_binary_manifest = mitmproxy-rel-bin-{platform}.manifest
+python3_win_manifest = python3{x64}.manifest
+page_cycles = 25
+unit = ms
+lower_is_better = true
+alert_threshold = 2.0
+# TTI/TTFI can take a while on some pages, and requires at least 5 seconds
+# beyond typical pageload time
+page_timeout = 60000
+gecko_profile_interval = 1
+gecko_profile_entries = 2000000
+
+[raptor-tp6-paypal-firefox]
+apps = firefox
+test_url = https://www.paypal.com/myaccount/summary/
+playback_pageset_manifest = mitmproxy-recordings-raptor-paypal.manifest
+playback_recordings = paypal.mp
+measure = fnbpaint, dcf, ttfi, loadtime
+
+[raptor-tp6-paypal-chrome]
+apps = chrome
+test_url = https://www.paypal.com/myaccount/summary/
+playback_pageset_manifest = mitmproxy-recordings-raptor-paypal.manifest
+playback_recordings = paypal.mp
+measure = fcp, loadtime
--- a/testing/raptor/webext/raptor/manifest.json
+++ b/testing/raptor/webext/raptor/manifest.json
@@ -19,16 +19,17 @@
                   "*://*.bing.com/*",
                   "*://*.ebay.com/*",
                   "*://*.facebook.com/*",
                   "*://*.google.com/*",
                   "*://*.imdb.com/*",
                   "*://*.imgur.com/*",
                   "*://*.instagram.com/*",
                   "*://*.microsoft.com/*",
+                  "*://*.paypal.com/*",
                   "*://*.reddit.com/*",
                   "*://*.twitter.com/*",
                   "*://*.vice.com/*",
                   "*://*.wikia.com/*",
                   "*://*.wikipedia.org/*",
                   "*://*.yahoo.com/*",
                   "*://*.youtube.com/*",
                   "*://*.yandex.ru/*"