diff --git a/.gn b/.gn
index 1220b32..e8b249b 100644
--- a/.gn
+++ b/.gn
@@ -286,6 +286,8 @@
 
   #"//jingle/*",
 
+  "//libassistant/communication/*",
+
   "//media/*",
   "//mojo/*",
 
diff --git a/DEPS b/DEPS
index 1e297ab..0616034 100644
--- a/DEPS
+++ b/DEPS
@@ -129,7 +129,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': '036503b07ea683d278e8aab09dc19d04b4aa6762',
+  'skia_revision': 'b3fd67ac36cf24d4be813067ff8b28f708dee21b',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
@@ -141,7 +141,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ANGLE
   # and whatever else without interference from each other.
-  'angle_revision': '310294adacdde08b26b7e387dfb6a6f19a97cbfc',
+  'angle_revision': '6cb0cff573768d72d06aef02926d0d92ffb02635',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
@@ -149,7 +149,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
-  'pdfium_revision': '010a4da72d171ad386d1475e4f2e9e1620ed765c',
+  'pdfium_revision': 'd5bcd378e5892bf6b0bac1e3b3a0982156e179a3',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling openmax_dl
   # and whatever else without interference from each other.
@@ -168,7 +168,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling googletest
   # and whatever else without interference from each other.
-  'googletest_revision': 'a18ac392d883ca88d1849b90071cea5608fd9293',
+  'googletest_revision': 'b617b277186e03b1065ac6d43912b1c4147c2982',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling lighttpd
   # and whatever else without interference from each other.
@@ -392,7 +392,7 @@
     'packages': [
       {
         'package': 'chromium/chrome/test/data/autofill/captured_sites',
-        'version': 'zh9Tqke-MCYlzcrTXhogU3H1dgx2YAZs9GG_PeemPsQC',
+        'version': '0E972Ept3ISfjsEXCfM6TEiCGv-Hsi9Zu-EvPF9UYY8C',
       }
     ],
     'condition': 'checkout_chromium_autofill_test_dependencies',
@@ -805,7 +805,7 @@
 
   # Build tools for Chrome OS. Note: This depends on third_party/pyelftools.
   'src/third_party/chromite': {
-      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '5677ecd6cbab923ebb6d733193a2ec270d4dbd2d',
+      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'eac9bbc95090ba5ec7ef2dfce84ffb5b59416af5',
       'condition': 'checkout_linux',
   },
 
@@ -830,7 +830,7 @@
   },
 
   'src/third_party/depot_tools':
-    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '8d3ba46327207c40e66b4ec818cec077f0ac08cf',
+    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '3c830222aedad072e0ee6c9feb55214cc24b36f1',
 
   'src/third_party/devtools-node-modules':
     Var('chromium_git') + '/external/github.com/ChromeDevTools/devtools-node-modules' + '@' + Var('devtools_node_modules_revision'),
@@ -1172,7 +1172,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' +  '21a33afeef568f72668acf77668a32307a363d6e',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' +  'cb851311e16f9d3238f301c5fc0cced12e7d3e23',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + 'ac0d98b5cee6c024b0cffeb4f8f45b6fc5ccdb78',
@@ -1343,7 +1343,7 @@
     Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + '688fbfe33779392aa210d67d4aa12cb012f112c2',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '6c072efe9f0ea1d4a286d71e85013f5c43ab919f',
+    Var('webrtc_git') + '/src.git' + '@' + '4f5975c99024fe253a342da06532b0ddf7de687a',
 
   'src/third_party/xdg-utils': {
       'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d',
@@ -1384,7 +1384,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@3bd0f72522dfe72200b978be62947bdeb5903fdf',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@bed354efaacc62d7f5a7eaaf895fc67b3b1ee1d0',
     'condition': 'checkout_src_internal',
   },
 
diff --git a/android_webview/browser/aw_web_contents_delegate.cc b/android_webview/browser/aw_web_contents_delegate.cc
index 594cbe0..67de4ea 100644
--- a/android_webview/browser/aw_web_contents_delegate.cc
+++ b/android_webview/browser/aw_web_contents_delegate.cc
@@ -4,6 +4,8 @@
 
 #include "android_webview/browser/aw_web_contents_delegate.h"
 
+#include <utility>
+
 #include "android_webview/browser/aw_contents.h"
 #include "android_webview/browser/aw_contents_io_thread_client.h"
 #include "android_webview/browser/aw_javascript_dialog_manager.h"
@@ -111,11 +113,11 @@
 void AwWebContentsDelegate::CanDownload(
     const GURL& url,
     const std::string& request_method,
-    const base::Callback<void(bool)>& callback) {
+    base::OnceCallback<void(bool)> callback) {
   // Android webview intercepts download in its resource dispatcher host
   // delegate, so should not reach here.
   NOTREACHED();
-  callback.Run(false);
+  std::move(callback).Run(false);
 }
 
 void AwWebContentsDelegate::RunFileChooser(
diff --git a/android_webview/browser/aw_web_contents_delegate.h b/android_webview/browser/aw_web_contents_delegate.h
index 25462538..3bd367d 100644
--- a/android_webview/browser/aw_web_contents_delegate.h
+++ b/android_webview/browser/aw_web_contents_delegate.h
@@ -37,7 +37,7 @@
                  bool final_update) override;
   void CanDownload(const GURL& url,
                    const std::string& request_method,
-                   const base::Callback<void(bool)>& callback) override;
+                   base::OnceCallback<void(bool)> callback) override;
   void RunFileChooser(content::RenderFrameHost* render_frame_host,
                       std::unique_ptr<content::FileSelectListener> listener,
                       const blink::mojom::FileChooserParams& params) override;
diff --git a/ash/system/accessibility/tray_accessibility.cc b/ash/system/accessibility/tray_accessibility.cc
index e2e8c4f..8c5d7f0 100644
--- a/ash/system/accessibility/tray_accessibility.cc
+++ b/ash/system/accessibility/tray_accessibility.cc
@@ -21,7 +21,9 @@
 #include "ash/system/tray/tray_popup_utils.h"
 #include "ash/system/tray/tray_utils.h"
 #include "ash/system/tray/tri_view.h"
+#include "base/command_line.h"
 #include "base/metrics/user_metrics.h"
+#include "ui/accessibility/accessibility_switches.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/gfx/image/image.h"
 #include "ui/views/controls/separator.h"
@@ -102,9 +104,11 @@
   TrayPopupUtils::UpdateCheckMarkVisibility(virtual_keyboard_view_,
                                             virtual_keyboard_enabled_);
 
-  switch_access_enabled_ = controller->switch_access_enabled();
-  TrayPopupUtils::UpdateCheckMarkVisibility(switch_access_view_,
-                                            switch_access_enabled_);
+  if (switch_access_view_) {
+    switch_access_enabled_ = controller->switch_access_enabled();
+    TrayPopupUtils::UpdateCheckMarkVisibility(switch_access_view_,
+                                              switch_access_enabled_);
+  }
 
   large_cursor_enabled_ = controller->large_cursor_enabled();
   TrayPopupUtils::UpdateCheckMarkVisibility(large_cursor_view_,
@@ -198,12 +202,15 @@
           IDS_ASH_STATUS_TRAY_ACCESSIBILITY_VIRTUAL_KEYBOARD),
       virtual_keyboard_enabled_);
 
-  switch_access_enabled_ = controller->switch_access_enabled();
-  switch_access_view_ = AddScrollListCheckableItem(
-      kSwitchAccessIcon,
-      l10n_util::GetStringUTF16(
-          IDS_ASH_STATUS_TRAY_ACCESSIBILITY_SWITCH_ACCESS),
-      switch_access_enabled_);
+  if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+          switches::kEnableExperimentalAccessibilitySwitchAccess)) {
+    switch_access_enabled_ = controller->switch_access_enabled();
+    switch_access_view_ = AddScrollListCheckableItem(
+        kSwitchAccessIcon,
+        l10n_util::GetStringUTF16(
+            IDS_ASH_STATUS_TRAY_ACCESSIBILITY_SWITCH_ACCESS),
+        switch_access_enabled_);
+  }
 
   scroll_content()->AddChildView(CreateListSubHeaderSeparator());
 
diff --git a/ash/wm/overview/overview_animation_type.h b/ash/wm/overview/overview_animation_type.h
index 232fb9c..618d9c6 100644
--- a/ash/wm/overview/overview_animation_type.h
+++ b/ash/wm/overview/overview_animation_type.h
@@ -39,8 +39,9 @@
   // Used to fade in the drop target when dragging an application to enter
   // overview mode.
   OVERVIEW_ANIMATION_DROP_TARGET_FADE_IN,
-  // Used to fade in the shield which covers the work area in and out.
-  OVERVIEW_ANIMATION_SHIELD_FADE,
+  // Used to fade in the label which tells users they are in overview mode with
+  // no window in and out.
+  OVERVIEW_ANIMATION_NO_RECENTS_FADE,
   // Used to animate the selection window which is activated by using tab or the
   // arrow keys.
   OVERVIEW_ANIMATION_SELECTION_WINDOW_SHADOW,
diff --git a/ash/wm/overview/overview_grid.cc b/ash/wm/overview/overview_grid.cc
index e2a4ebf..f953816 100644
--- a/ash/wm/overview/overview_grid.cc
+++ b/ash/wm/overview/overview_grid.cc
@@ -21,7 +21,6 @@
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_constants.h"
 #include "ash/shell.h"
-#include "ash/strings/grit/ash_strings.h"
 #include "ash/wm/desks/desks_bar_view.h"
 #include "ash/wm/overview/cleanup_animation_observer.h"
 #include "ash/wm/overview/drop_target_view.h"
@@ -45,15 +44,12 @@
 #include "base/strings/utf_string_conversions.h"
 #include "third_party/skia/include/core/SkColor.h"
 #include "ui/aura/client/aura_constants.h"
-#include "ui/base/l10n/l10n_util.h"
 #include "ui/compositor/layer_animation_observer.h"
 #include "ui/compositor/scoped_layer_animation_settings.h"
 #include "ui/compositor_extra/shadow.h"
 #include "ui/gfx/geometry/safe_integer_conversions.h"
 #include "ui/gfx/geometry/vector2d.h"
 #include "ui/views/background.h"
-#include "ui/views/controls/label.h"
-#include "ui/views/layout/box_layout.h"
 #include "ui/views/view.h"
 #include "ui/views/widget/widget.h"
 #include "ui/wm/core/coordinate_conversion.h"
@@ -78,16 +74,6 @@
 // Additional vertical inset reserved for windows in overview mode.
 constexpr float kOverviewVerticalInset = 0.1f;
 
-// Values for the no items indicator which appears when opening overview mode
-// with no opened windows.
-constexpr int kNoItemsIndicatorHeightDp = 32;
-constexpr int kNoItemsIndicatorHorizontalPaddingDp = 16;
-constexpr int kNoItemsIndicatorRoundingDp = 16;
-constexpr int kNoItemsIndicatorVerticalPaddingDp = 8;
-constexpr SkColor kNoItemsIndicatorBackgroundColor = SK_ColorBLACK;
-constexpr SkColor kNoItemsIndicatorTextColor = SK_ColorWHITE;
-constexpr float kNoItemsIndicatorBackgroundOpacity = 0.8f;
-
 // Histogram names for overview enter/exit smoothness in clamshell,
 // tablet mode and splitview.
 constexpr char kOverviewEnterClamshellHistogram[] =
@@ -270,70 +256,6 @@
 
 }  // namespace
 
-// ShieldView contains the background for overview mode. It also contains text
-// which is shown if there are no windows to be displayed.
-// This view also takes care of disabling overview mode on:
-//   - Gesture tap.
-//   - Mouse release.
-class OverviewGrid::ShieldView : public views::View {
- public:
-  ShieldView() {
-    label_ = new views::Label(
-        l10n_util::GetStringUTF16(IDS_ASH_OVERVIEW_NO_RECENT_ITEMS),
-        views::style::CONTEXT_LABEL);
-    label_->SetHorizontalAlignment(gfx::ALIGN_CENTER);
-    label_->SetEnabledColor(kNoItemsIndicatorTextColor);
-    label_->SetBackgroundColor(kNoItemsIndicatorBackgroundColor);
-
-    // |label_container_| is the parent of |label_| which allows the text to
-    // have padding and rounded edges.
-    label_container_ = new RoundedRectView(kNoItemsIndicatorRoundingDp,
-                                           kNoItemsIndicatorBackgroundColor);
-    label_container_->SetLayoutManager(std::make_unique<views::BoxLayout>(
-        views::BoxLayout::kVertical,
-        gfx::Insets(kNoItemsIndicatorVerticalPaddingDp,
-                    kNoItemsIndicatorHorizontalPaddingDp)));
-    label_container_->AddChildView(label_);
-    label_container_->SetPaintToLayer();
-    label_container_->layer()->SetFillsBoundsOpaquely(false);
-    label_container_->layer()->SetOpacity(kNoItemsIndicatorBackgroundOpacity);
-    label_container_->SetVisible(false);
-
-    AddChildView(label_container_);
-  }
-
-  ~ShieldView() override = default;
-
-  void SetLabelVisibility(bool visible) {
-    label_container_->SetVisible(visible);
-  }
-
-  gfx::Rect GetLabelBounds() const {
-    return label_container_->GetBoundsInScreen();
-  }
-
-  // ShieldView takes up the whole workspace since it changes opacity of the
-  // whole wallpaper. The bounds of the grid may be smaller in some cases of
-  // splitview. The label should be centered in the bounds of the grid.
-  void SetGridBounds(const gfx::Rect& bounds) {
-    const int label_width = label_->GetPreferredSize().width() +
-                            2 * kNoItemsIndicatorHorizontalPaddingDp;
-    gfx::Rect label_container_bounds = bounds;
-    label_container_bounds.ClampToCenteredSize(
-        gfx::Size(label_width, kNoItemsIndicatorHeightDp));
-    label_container_->SetBoundsRect(label_container_bounds);
-  }
-
-  bool IsLabelVisible() const { return label_container_->visible(); }
-
- private:
-  // Owned by views heirarchy.
-  RoundedRectView* label_container_ = nullptr;
-  views::Label* label_ = nullptr;
-
-  DISALLOW_COPY_AND_ASSIGN(ShieldView);
-};
-
 // The class to observe the overview window that the dragged tabs will merge
 // into. After the dragged tabs merge into the overview window, and if the
 // overview window represents a minimized window, we need to update the
@@ -513,7 +435,6 @@
     aura::Window* widget_window = shield_widget_->GetNativeWindow();
     const gfx::Rect bounds = widget_window->parent()->bounds();
     widget_window->SetBounds(bounds);
-    ShowNoRecentsWindowMessage(window_list_.empty());
   }
 
   if (window_list_.empty())
@@ -711,8 +632,6 @@
     const gfx::Rect& bounds,
     OverviewItem* ignored_item) {
   bounds_ = bounds;
-  if (shield_view_)
-    shield_view_->SetGridBounds(bounds_);
   if (desks_widget_) {
     desks_widget_->SetBounds(
         GetDesksWidgetBounds(root_window_, bounds_.width()));
@@ -730,15 +649,6 @@
     selection_widget_->Hide();
 }
 
-void OverviewGrid::ShowNoRecentsWindowMessage(bool visible) {
-  // Only show the warning on the grid associated with primary root.
-  if (root_window_ != Shell::GetPrimaryRootWindow())
-    return;
-
-  if (shield_view_)
-    shield_view_->SetLabelVisibility(visible);
-}
-
 void OverviewGrid::UpdateCannotSnapWarningVisibility() {
   for (auto& overview_mode_item : window_list_)
     overview_mode_item->UpdateCannotSnapWarningVisibility();
@@ -1046,10 +956,8 @@
   if (canceled)
     return;
 
-  if (!shield_widget_) {
+  if (!shield_widget_)
     InitShieldWidget(/*animate=*/true);
-    ShowNoRecentsWindowMessage(window_list_.empty());
-  }
 
   MaybeInitDesksWidget();
 
@@ -1073,17 +981,6 @@
   return true;
 }
 
-bool OverviewGrid::IsNoItemsIndicatorLabelVisibleForTesting() {
-  return shield_view_ && shield_view_->IsLabelVisible();
-}
-
-gfx::Rect OverviewGrid::GetNoItemsIndicatorLabelBoundsForTesting() const {
-  if (!shield_view_)
-    return gfx::Rect();
-
-  return shield_view_->GetLabelBounds();
-}
-
 void OverviewGrid::CalculateWindowListAnimationStates(
     OverviewItem* selected_item,
     OverviewSession::OverviewTransition transition) {
@@ -1383,17 +1280,12 @@
   widget_window->SetBounds(bounds);
   widget_window->SetName("OverviewModeShield");
 
-  // Create |shield_view_| and animate its background and label if needed.
-  shield_view_ = new ShieldView();
-  shield_widget_->SetContentsView(shield_view_);
-  shield_view_->SetGridBounds(bounds_);
-
   // TODO(sammiequon): The shield widget is not anymore in most cases. Remove
   // the shield widget and put the cannot snap widget and desks bar into their
   // own widgets.
   if (animate) {
     shield_widget_->SetOpacity(initial_opacity);
-    ScopedOverviewAnimationSettings settings(OVERVIEW_ANIMATION_SHIELD_FADE,
+    ScopedOverviewAnimationSettings settings(OVERVIEW_ANIMATION_NO_RECENTS_FADE,
                                              shield_widget_->GetNativeWindow());
     shield_widget_->SetOpacity(1.f);
   } else {
diff --git a/ash/wm/overview/overview_grid.h b/ash/wm/overview/overview_grid.h
index 9e5cd824..3c7eaabd 100644
--- a/ash/wm/overview/overview_grid.h
+++ b/ash/wm/overview/overview_grid.h
@@ -111,8 +111,6 @@
   // it is dragged.
   void SetSelectionWidgetVisibility(bool visible);
 
-  void ShowNoRecentsWindowMessage(bool visible);
-
   void UpdateCannotSnapWarningVisibility();
 
   // Called when any OverviewItem on any OverviewGrid has started/ended being
@@ -165,10 +163,6 @@
   // one of the grids windows covers the the entire workspace, true otherwise.
   bool ShouldAnimateWallpaper() const;
 
-  bool IsNoItemsIndicatorLabelVisibleForTesting();
-
-  gfx::Rect GetNoItemsIndicatorLabelBoundsForTesting() const;
-
   // Calculates |should_animate_when_entering_| and
   // |should_animate_when_exiting_| of the overview items based on where
   // the first MRU window covering the available workspace is found.
@@ -246,18 +240,17 @@
 
   views::Widget* shield_widget() { return shield_widget_.get(); }
 
+  void set_suspend_reposition(bool value) { suspend_reposition_ = value; }
+
   views::Widget* drop_target_widget_for_testing() {
     return drop_target_widget_.get();
   }
 
-  void set_suspend_reposition(bool value) { suspend_reposition_ = value; }
-
   const DesksBarView* GetDesksBarViewForTesting() const {
     return desks_bar_view_;
   }
 
  private:
-  class ShieldView;
   class TargetWindowObserver;
   friend class OverviewSessionTest;
 
@@ -346,12 +339,11 @@
   ScopedObserver<aura::Window, OverviewGrid> window_observer_;
   ScopedObserver<wm::WindowState, OverviewGrid> window_state_observer_;
 
-  // Widget that darkens the screen background.
+  // Unused legacy widget.
+  // TODO(sammiequon): Remove this, kept temporarily as there are some
+  // dependencies on it still.
   std::unique_ptr<views::Widget> shield_widget_;
 
-  // A pointer to |shield_widget_|'s content view.
-  ShieldView* shield_view_ = nullptr;
-
   // Widget that contains the DeskBarView contents when the Virtual Desks
   // feature is enabled.
   std::unique_ptr<views::Widget> desks_widget_;
diff --git a/ash/wm/overview/overview_session.cc b/ash/wm/overview/overview_session.cc
index 37fecf7..d015bd5 100644
--- a/ash/wm/overview/overview_session.cc
+++ b/ash/wm/overview/overview_session.cc
@@ -15,6 +15,7 @@
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_constants.h"
 #include "ash/shell.h"
+#include "ash/strings/grit/ash_strings.h"
 #include "ash/wm/mru_window_tracker.h"
 #include "ash/wm/overview/overview_controller.h"
 #include "ash/wm/overview/overview_delegate.h"
@@ -22,6 +23,8 @@
 #include "ash/wm/overview/overview_item.h"
 #include "ash/wm/overview/overview_utils.h"
 #include "ash/wm/overview/overview_window_drag_controller.h"
+#include "ash/wm/overview/scoped_overview_animation_settings.h"
+#include "ash/wm/splitview/split_view_controller.h"
 #include "ash/wm/splitview/split_view_drag_indicators.h"
 #include "ash/wm/splitview/split_view_utils.h"
 #include "ash/wm/switchable_windows.h"
@@ -32,10 +35,14 @@
 #include "base/metrics/user_metrics.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "ui/accessibility/ax_enums.mojom.h"
+#include "ui/base/hit_test.h"
+#include "ui/base/l10n/l10n_util.h"
 #include "ui/compositor/layer.h"
 #include "ui/compositor/scoped_layer_animation_settings.h"
 #include "ui/display/screen.h"
 #include "ui/events/event.h"
+#include "ui/views/controls/label.h"
+#include "ui/views/layout/box_layout.h"
 #include "ui/views/widget/widget.h"
 #include "ui/wm/core/coordinate_conversion.h"
 #include "ui/wm/core/window_util.h"
@@ -44,6 +51,16 @@
 
 namespace {
 
+// Values for the no items indicator which appears when opening overview mode
+// with no opened windows.
+constexpr int kNoItemsIndicatorHeightDp = 32;
+constexpr int kNoItemsIndicatorHorizontalPaddingDp = 16;
+constexpr int kNoItemsIndicatorRoundingDp = 16;
+constexpr int kNoItemsIndicatorVerticalPaddingDp = 8;
+constexpr SkColor kNoItemsIndicatorBackgroundColor =
+    SkColorSetA(SK_ColorBLACK, 204);
+constexpr SkColor kNoItemsIndicatorTextColor = SK_ColorWHITE;
+
 // Triggers a shelf visibility update on all root window controllers.
 void UpdateShelfVisibility() {
   for (aura::Window* root : Shell::GetAllRootWindows())
@@ -130,8 +147,64 @@
   return bounds;
 }
 
+bool IsWindowDragInProgress() {
+  auto windows = Shell::Get()->mru_window_tracker()->BuildMruWindowList();
+  for (auto* window : windows) {
+    wm::WindowState* window_state = wm::GetWindowState(window);
+    if (window_state && window_state->is_dragged() &&
+        (window_state->drag_details()->window_component == HTCLIENT ||
+         window_state->drag_details()->window_component == HTCAPTION)) {
+      return true;
+    }
+  }
+  return false;
+}
+
 }  // namespace
 
+// A label with rounded corners that is displayed when we enter overview with no
+// windows.
+class OverviewSession::NoWindowsView : public views::View {
+ public:
+  NoWindowsView() {
+    SetLayoutManager(std::make_unique<views::BoxLayout>(
+        views::BoxLayout::kVertical,
+        gfx::Insets(kNoItemsIndicatorVerticalPaddingDp,
+                    kNoItemsIndicatorHorizontalPaddingDp)));
+    SetPaintToLayer(ui::LAYER_SOLID_COLOR);
+    layer()->SetColor(kNoItemsIndicatorBackgroundColor);
+    layer()->SetFillsBoundsOpaquely(false);
+
+    const std::array<uint32_t, 4> kRadii = {
+        kNoItemsIndicatorRoundingDp, kNoItemsIndicatorRoundingDp,
+        kNoItemsIndicatorRoundingDp, kNoItemsIndicatorRoundingDp};
+    layer()->SetRoundedCornerRadius(kRadii);
+    layer()->SetIsFastRoundedCorner(true);
+
+    label_ = new views::Label(
+        l10n_util::GetStringUTF16(IDS_ASH_OVERVIEW_NO_RECENT_ITEMS),
+        views::style::CONTEXT_LABEL);
+    label_->SetHorizontalAlignment(gfx::ALIGN_CENTER);
+    label_->SetEnabledColor(kNoItemsIndicatorTextColor);
+    label_->SetBackgroundColor(kNoItemsIndicatorBackgroundColor);
+    label_->SetPaintToLayer();
+    label_->layer()->SetFillsBoundsOpaquely(false);
+    AddChildView(label_);
+  }
+  ~NoWindowsView() override = default;
+
+  // views::View:
+  gfx::Size GetPreferredSize() {
+    int width = label_->GetPreferredSize().width() +
+                2 * kNoItemsIndicatorHorizontalPaddingDp;
+    return gfx::Size(width, kNoItemsIndicatorHeightDp);
+  }
+
+ private:
+  views::Label* label_ = nullptr;  // Owned by views hierarchy.
+  DISALLOW_COPY_AND_ASSIGN(NoWindowsView);
+};
+
 OverviewSession::OverviewSession(OverviewDelegate* delegate)
     : delegate_(delegate),
       restore_focus_window_(wm::GetFocusedWindow()),
@@ -224,6 +297,8 @@
     }
   }
 
+  MaybeCreateAndPositionNoWindowsWidget();
+
   // Create the widget that will receive focus while in overview mode for
   // accessiblity purposes.
   overview_focus_widget_ = std::make_unique<views::Widget>();
@@ -304,6 +379,13 @@
 
   grid_list_.clear();
   UpdateShelfVisibility();
+
+  if (no_windows_widget_) {
+    // Fade out the no windows widget. This animation continues past the
+    // lifetime of |this|.
+    FadeOutWidgetAndMaybeSlideOnExit(std::move(no_windows_widget_),
+                                     OVERVIEW_ANIMATION_RESTORE_WINDOW);
+  }
 }
 
 void OverviewSession::CancelSelection() {
@@ -657,6 +739,14 @@
     grid->set_suspend_reposition(false);
 }
 
+bool OverviewSession::IsEmpty() const {
+  for (const auto& grid : grid_list_) {
+    if (!grid->empty())
+      return false;
+  }
+  return true;
+}
+
 void OverviewSession::OnDisplayRemoved(const display::Display& display) {
   // TODO(flackr): Keep window selection active on remaining displays.
   CancelSelection();
@@ -815,14 +905,6 @@
   PositionWindows(/*animate=*/false);
 }
 
-bool OverviewSession::IsEmpty() const {
-  for (const auto& grid : grid_list_) {
-    if (!grid->empty())
-      return false;
-  }
-  return true;
-}
-
 void OverviewSession::ResetFocusRestoreWindow(bool focus) {
   if (!restore_focus_window_)
     return;
@@ -882,8 +964,55 @@
                               /*divider_changed=*/false));
   }
   PositionWindows(/*animate=*/false);
+  MaybeCreateAndPositionNoWindowsWidget();
   if (split_view_drag_indicators_)
     split_view_drag_indicators_->OnDisplayBoundsChanged();
 }
 
+void OverviewSession::MaybeCreateAndPositionNoWindowsWidget() {
+  // Hide the widget if there is an item in overview or there are none but there
+  // is a window drag in progress. It is possible for a window drag to be in
+  // progress when we notify that split view has started so check for that case.
+  if (!IsEmpty() ||
+      (IsWindowDragInProgress() &&
+       !Shell::Get()->split_view_controller()->IsSplitViewModeActive())) {
+    no_windows_widget_.reset();
+    return;
+  }
+
+  if (!no_windows_widget_) {
+    // Create and fade in the widget.
+    no_windows_widget_ = CreateBackgroundWidget(
+        Shell::GetPrimaryRootWindow(), ui::LAYER_NOT_DRAWN, SK_ColorTRANSPARENT,
+        0, 0, SK_ColorTRANSPARENT, 0.f, nullptr, true, false);
+    aura::Window* widget_window = no_windows_widget_->GetNativeWindow();
+    widget_window->SetName("OverviewNoWindowsLabel");
+    no_windows_widget_->SetContentsView(new NoWindowsView());
+    ScopedOverviewAnimationSettings settings(OVERVIEW_ANIMATION_NO_RECENTS_FADE,
+                                             widget_window);
+    no_windows_widget_->SetOpacity(1.f);
+  }
+
+  // The widget is centered in the work area, unless we are in split view with
+  // one window snapped.
+  aura::Window* window = no_windows_widget_->GetNativeWindow();
+  gfx::Rect bounds =
+      display::Screen::GetScreen()->GetPrimaryDisplay().work_area();
+  auto* split_view_controller = Shell::Get()->split_view_controller();
+  if (split_view_controller->state() == SplitViewController::LEFT_SNAPPED) {
+    bounds = split_view_controller->GetSnappedWindowBoundsInScreen(
+        window, SplitViewController::RIGHT);
+  } else if (split_view_controller->state() ==
+             SplitViewController::RIGHT_SNAPPED) {
+    bounds = split_view_controller->GetSnappedWindowBoundsInScreen(
+        window, SplitViewController::LEFT);
+  }
+
+  NoWindowsView* content_view =
+      static_cast<NoWindowsView*>(no_windows_widget_->GetContentsView());
+  DCHECK(content_view);
+  bounds.ClampToCenteredSize(content_view->GetPreferredSize());
+  window->SetBounds(bounds);
+}
+
 }  // namespace ash
diff --git a/ash/wm/overview/overview_session.h b/ash/wm/overview/overview_session.h
index 0690d8d6..c299fa4 100644
--- a/ash/wm/overview/overview_session.h
+++ b/ash/wm/overview/overview_session.h
@@ -225,6 +225,9 @@
   void SuspendReposition();
   void ResumeReposition();
 
+  // Returns true if all its window grids don't have any window item.
+  bool IsEmpty() const;
+
   OverviewDelegate* delegate() { return delegate_; }
 
   SplitViewDragIndicators* split_view_drag_indicators() {
@@ -249,6 +252,10 @@
 
   size_t num_items_for_testing() const { return num_items_; }
 
+  views::Widget* no_windows_widget_for_testing() {
+    return no_windows_widget_.get();
+  }
+
   // display::DisplayObserver:
   void OnDisplayRemoved(const display::Display& display) override;
   void OnDisplayMetricsChanged(const display::Display& display,
@@ -266,10 +273,8 @@
                                SplitViewController::State state) override;
   void OnSplitViewDividerPositionChanged() override;
 
-  // Returns true if all its window grids don't have any window item.
-  bool IsEmpty() const;
-
  private:
+  class NoWindowsView;
   friend class OverviewSessionTest;
 
   // |focus|, restores focus to the stored window.
@@ -286,6 +291,8 @@
   // Called when the display area for the overview window grids changed.
   void OnDisplayBoundsChanged();
 
+  void MaybeCreateAndPositionNoWindowsWidget();
+
   // Tracks observed windows.
   base::flat_set<aura::Window*> observed_windows_;
 
@@ -308,6 +315,9 @@
   // mechanism to trigger accessibility events without a focused window.
   std::unique_ptr<views::Widget> overview_focus_widget_;
 
+  // A widget that is shown if we entered overview without any windows opened.
+  std::unique_ptr<views::Widget> no_windows_widget_;
+
   // True when performing operations that may cause window activations. This is
   // used to prevent handling the resulting expected activation. This is
   // initially true until this is initialized.
diff --git a/ash/wm/overview/overview_session_unittest.cc b/ash/wm/overview/overview_session_unittest.cc
index 15fffcc..3c1967e 100644
--- a/ash/wm/overview/overview_session_unittest.cc
+++ b/ash/wm/overview/overview_session_unittest.cc
@@ -1636,51 +1636,30 @@
 
 // Verify that the overview no windows indicator appears when entering overview
 // mode with no windows.
-TEST_F(OverviewSessionTest, OverviewNoWindowsIndicator) {
+TEST_F(OverviewSessionTest, NoWindowsIndicator) {
   // Verify that by entering overview mode without windows, the no items
   // indicator appears.
   ToggleOverview();
   ASSERT_TRUE(overview_session());
-  EXPECT_EQ(0u, GetWindowItemsForRoot(0).size());
-  EXPECT_TRUE(overview_session()
-                  ->grid_list_for_testing()[0]
-                  ->IsNoItemsIndicatorLabelVisibleForTesting());
+  ASSERT_EQ(0u, GetWindowItemsForRoot(0).size());
+  EXPECT_TRUE(overview_session()->no_windows_widget_for_testing());
 }
 
 // Verify that the overview no windows indicator position is as expected.
-TEST_F(OverviewSessionTest, OverviewNoWindowsIndicatorPosition) {
+TEST_F(OverviewSessionTest, NoWindowsIndicatorPosition) {
   UpdateDisplay("400x300");
-  // Midpoint of height minus shelf.
-  const int expected_y = (300 - ShelfConstants::shelf_size()) / 2;
-
-  // Helper to check points. Uses EXPECT_NEAR on each coordinate to account for
-  // rounding.
-  auto check_point = [](const gfx::Point& expected, const gfx::Point& actual) {
-    EXPECT_NEAR(expected.x(), actual.x(), 1);
-    EXPECT_NEAR(expected.y(), actual.y(), 1);
-  };
 
   ToggleOverview();
   ASSERT_TRUE(overview_session());
+  views::Widget* no_windows_widget =
+      overview_session()->no_windows_widget_for_testing();
+  ASSERT_TRUE(no_windows_widget);
 
   // Verify that originally the label is in the center of the workspace.
-  OverviewGrid* grid = overview_session()->grid_list_for_testing()[0].get();
-  check_point(gfx::Point(200, expected_y),
-              grid->GetNoItemsIndicatorLabelBoundsForTesting().CenterPoint());
-
-  // Verify that when grid bounds are on the left, the label is centered on the
-  // left side of the workspace.
-  grid->SetBoundsAndUpdatePositions(
-      gfx::Rect(0, 0, 200, 300 - ShelfConstants::shelf_size()));
-  check_point(gfx::Point(100, expected_y),
-              grid->GetNoItemsIndicatorLabelBoundsForTesting().CenterPoint());
-
-  // Verify that when grid bounds are on the right, the label is centered on the
-  // right side of the workspace.
-  grid->SetBoundsAndUpdatePositions(
-      gfx::Rect(200, 0, 200, 300 - ShelfConstants::shelf_size()));
-  check_point(gfx::Point(300, expected_y),
-              grid->GetNoItemsIndicatorLabelBoundsForTesting().CenterPoint());
+  // Midpoint of height minus shelf.
+  int expected_y = (300 - ShelfConstants::shelf_size()) / 2;
+  EXPECT_EQ(gfx::Point(200, expected_y),
+            no_windows_widget->GetWindowBoundsInScreen().CenterPoint());
 
   // Verify that after rotating the display, the label is centered in the
   // workspace 300x(400-shelf).
@@ -1689,33 +1668,63 @@
   display_manager()->SetDisplayRotation(
       display.id(), display::Display::ROTATE_90,
       display::Display::RotationSource::ACTIVE);
-  check_point(gfx::Point(150, (400 - ShelfConstants::shelf_size()) / 2),
-              grid->GetNoItemsIndicatorLabelBoundsForTesting().CenterPoint());
+  expected_y = (400 - ShelfConstants::shelf_size()) / 2;
+  EXPECT_EQ(gfx::Point(150, (400 - ShelfConstants::shelf_size()) / 2),
+            no_windows_widget->GetWindowBoundsInScreen().CenterPoint());
+}
+
+TEST_F(OverviewSessionTest, NoWindowsIndicatorPositionSplitview) {
+  UpdateDisplay("400x300");
+  std::unique_ptr<aura::Window> window(CreateTestWindow());
+
+  ToggleOverview();
+  ASSERT_TRUE(overview_session());
+  views::Widget* no_windows_widget =
+      overview_session()->no_windows_widget_for_testing();
+  EXPECT_FALSE(no_windows_widget);
+
+  // Tests that when snapping a window to the left in splitview, the no windows
+  // indicator shows up in the middle of the right side of the screen.
+  auto* split_view_controller = Shell::Get()->split_view_controller();
+  split_view_controller->SnapWindow(window.get(), SplitViewController::LEFT);
+  no_windows_widget = overview_session()->no_windows_widget_for_testing();
+  ASSERT_TRUE(no_windows_widget);
+
+  // There is a 8dp divider in splitview, the indicator should take that into
+  // account.
+  const int bounds_left = 200 + 4;
+  int expected_x = bounds_left + (400 - (bounds_left)) / 2;
+  const int expected_y = (300 - ShelfConstants::shelf_size()) / 2;
+  EXPECT_EQ(gfx::Point(expected_x, expected_y),
+            no_windows_widget->GetWindowBoundsInScreen().CenterPoint());
+
+  // Tests that when snapping a window to the right in splitview, the no windows
+  // indicator shows up in the middle of the left side of the screen.
+  split_view_controller->SnapWindow(window.get(), SplitViewController::RIGHT);
+  expected_x = /*bounds_right=*/(200 - 4) / 2;
+  EXPECT_EQ(gfx::Point(expected_x, expected_y),
+            no_windows_widget->GetWindowBoundsInScreen().CenterPoint());
 }
 
 // Verify that when opening overview mode with multiple displays, the no items
-// indicator on the primary grid if there are no windows. Also verify that
-// we do not exit overview mode until all the grids are empty.
-TEST_F(OverviewSessionTest, OverviewNoWindowsIndicatorMultiDisplay) {
-  // Helper function to help reduce lines of code. Returns the list of grids
-  // in overview mode.
-  auto grids = [this]() -> const std::vector<std::unique_ptr<OverviewGrid>>& {
-    EXPECT_TRUE(overview_session());
-    return overview_session()->grid_list_for_testing();
-  };
-
+// indicator on the primary grid if there are no windows.
+TEST_F(OverviewSessionTest, NoWindowsIndicatorPositionMultiDisplay) {
   UpdateDisplay("400x400,400x400,400x400");
 
-  // Enter overview mode. Verify that the no windows indicator is visible on the
-  // primary display but not on the other two.
+  // Enter overview mode. Verify that the no windows indicator is located on the
+  // primary display.
   ToggleOverview();
-  base::RunLoop().RunUntilIdle();
   ASSERT_TRUE(overview_session());
-  ASSERT_EQ(3u, grids().size());
-  EXPECT_TRUE(grids()[0]->IsNoItemsIndicatorLabelVisibleForTesting());
-  EXPECT_FALSE(grids()[1]->IsNoItemsIndicatorLabelVisibleForTesting());
-  EXPECT_FALSE(grids()[2]->IsNoItemsIndicatorLabelVisibleForTesting());
-  ToggleOverview();
+  views::Widget* no_windows_widget =
+      overview_session()->no_windows_widget_for_testing();
+  const int expected_y = (400 - ShelfConstants::shelf_size()) / 2;
+  EXPECT_EQ(gfx::Point(200, expected_y),
+            no_windows_widget->GetWindowBoundsInScreen().CenterPoint());
+}
+
+// Tests that we do not exit overview mode until all the grids are empty.
+TEST_F(OverviewSessionTest, ExitOverviewWhenAllGridsEmpty) {
+  UpdateDisplay("400x400,400x400,400x400");
 
   // Create two windows with widgets (widgets are needed to close the windows
   // later in the test), one each on the first two monitors.
@@ -1731,15 +1740,10 @@
   // Enter overview mode. Verify that the no windows indicator is not visible on
   // any display.
   ToggleOverview();
-  base::RunLoop().RunUntilIdle();
+  auto& grids = overview_session()->grid_list_for_testing();
   ASSERT_TRUE(overview_session());
-  ASSERT_EQ(3u, grids().size());
-  EXPECT_FALSE(grids()[0]->IsNoItemsIndicatorLabelVisibleForTesting());
-  EXPECT_FALSE(grids()[1]->IsNoItemsIndicatorLabelVisibleForTesting());
-  EXPECT_FALSE(grids()[2]->IsNoItemsIndicatorLabelVisibleForTesting());
-  EXPECT_FALSE(grids()[0]->empty());
-  EXPECT_FALSE(grids()[1]->empty());
-  EXPECT_TRUE(grids()[2]->empty());
+  ASSERT_EQ(3u, grids.size());
+  EXPECT_FALSE(overview_session()->no_windows_widget_for_testing());
 
   OverviewItem* item1 = GetWindowItemForWindow(0, window1);
   OverviewItem* item2 = GetWindowItemForWindow(1, window2);
@@ -1750,13 +1754,11 @@
   item2->CloseWindow();
   base::RunLoop().RunUntilIdle();
   ASSERT_TRUE(overview_session());
-  ASSERT_EQ(3u, grids().size());
-  EXPECT_FALSE(grids()[0]->IsNoItemsIndicatorLabelVisibleForTesting());
-  EXPECT_FALSE(grids()[1]->IsNoItemsIndicatorLabelVisibleForTesting());
-  EXPECT_FALSE(grids()[2]->IsNoItemsIndicatorLabelVisibleForTesting());
-  EXPECT_FALSE(grids()[0]->empty());
-  EXPECT_TRUE(grids()[1]->empty());
-  EXPECT_TRUE(grids()[2]->empty());
+  ASSERT_EQ(3u, grids.size());
+  EXPECT_FALSE(grids[0]->empty());
+  EXPECT_TRUE(grids[1]->empty());
+  EXPECT_TRUE(grids[2]->empty());
+  EXPECT_FALSE(overview_session()->no_windows_widget_for_testing());
 
   // Close |item1|. Verify that since no windows are open, we exit overview
   // mode.
diff --git a/ash/wm/overview/scoped_overview_animation_settings.cc b/ash/wm/overview/scoped_overview_animation_settings.cc
index 203b97e..1b7417f 100644
--- a/ash/wm/overview/scoped_overview_animation_settings.cc
+++ b/ash/wm/overview/scoped_overview_animation_settings.cc
@@ -75,7 +75,7 @@
       return kHomeLauncherTransition;
     case OVERVIEW_ANIMATION_DROP_TARGET_FADE_IN:
       return kDropTargetFadeIn;
-    case OVERVIEW_ANIMATION_SHIELD_FADE:
+    case OVERVIEW_ANIMATION_NO_RECENTS_FADE:
     case OVERVIEW_ANIMATION_SELECTION_WINDOW_SHADOW:
     case OVERVIEW_ANIMATION_SELECTION_WINDOW:
       return kOverviewSelectorTransition;
@@ -146,7 +146,7 @@
     case OVERVIEW_ANIMATION_NONE:
     case OVERVIEW_ANIMATION_LAYOUT_OVERVIEW_ITEMS_IN_OVERVIEW:
     case OVERVIEW_ANIMATION_DROP_TARGET_FADE_IN:
-    case OVERVIEW_ANIMATION_SHIELD_FADE:
+    case OVERVIEW_ANIMATION_NO_RECENTS_FADE:
     case OVERVIEW_ANIMATION_SELECTION_WINDOW_SHADOW:
     case OVERVIEW_ANIMATION_SELECTION_WINDOW:
     case OVERVIEW_ANIMATION_OVERVIEW_TITLE_FADE_IN:
@@ -237,7 +237,7 @@
       animation_settings_->SetPreemptionStrategy(
           ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET);
       break;
-    case OVERVIEW_ANIMATION_SHIELD_FADE:
+    case OVERVIEW_ANIMATION_NO_RECENTS_FADE:
     case OVERVIEW_ANIMATION_SELECTION_WINDOW_SHADOW:
       animation_settings_->SetTweenType(gfx::Tween::EASE_IN_OUT);
       animation_settings_->SetPreemptionStrategy(
diff --git a/ash/wm/splitview/split_view_controller.h b/ash/wm/splitview/split_view_controller.h
index dce0b7c..5b6ecdcd 100644
--- a/ash/wm/splitview/split_view_controller.h
+++ b/ash/wm/splitview/split_view_controller.h
@@ -112,6 +112,8 @@
   // are adjusted to its minimum size if the desired bounds are smaller than
   // its minumum bounds. Note: the snapped window bounds can't be pushed
   // outside of the workspace area.
+  // TODO(xdai): Investigate if we need to pass in |window| as splitview windows
+  // should always be parented to the primary root window.
   gfx::Rect GetSnappedWindowBoundsInParent(aura::Window* window,
                                            SnapPosition snap_position);
   gfx::Rect GetSnappedWindowBoundsInScreen(aura::Window* window,
diff --git a/base/containers/span.h b/base/containers/span.h
index dec35136..c22d51f 100644
--- a/base/containers/span.h
+++ b/base/containers/span.h
@@ -10,17 +10,19 @@
 #include <algorithm>
 #include <array>
 #include <iterator>
+#include <limits>
 #include <type_traits>
 #include <utility>
 
 #include "base/containers/checked_iterators.h"
 #include "base/logging.h"
+#include "base/macros.h"
 #include "base/stl_util.h"
 
 namespace base {
 
 // [views.constants]
-constexpr size_t dynamic_extent = static_cast<size_t>(-1);
+constexpr size_t dynamic_extent = std::numeric_limits<size_t>::max();
 
 template <typename T, size_t Extent = dynamic_extent>
 class span;
@@ -106,6 +108,7 @@
  public:
   constexpr explicit ExtentStorage(size_t size) noexcept {}
   constexpr size_t size() const noexcept { return Extent; }
+  constexpr void swap(ExtentStorage& other) noexcept {}
 };
 
 // Specialization of ExtentStorage for dynamic extents, which do require
@@ -114,6 +117,12 @@
 struct ExtentStorage<dynamic_extent> {
   constexpr explicit ExtentStorage(size_t size) noexcept : size_(size) {}
   constexpr size_t size() const noexcept { return size_; }
+  constexpr void swap(ExtentStorage& other) noexcept {
+    // Note: Can't use std::swap here, as it's not constexpr prior to C++20.
+    size_t size = size_;
+    size_ = other.size_;
+    other.size_ = size;
+  }
 
  private:
   size_t size_;
@@ -176,32 +185,25 @@
 //   std::vector<const int*>        =>  base::span<const int*>
 //   const std::vector<const int*>  =>  base::span<const int* const>
 //
-// Differences from the working group proposal
-// -------------------------------------------
+// Differences from the C++20 draft
+// --------------------------------
 //
-// https://wg21.link/P0122 is the latest working group proposal, Chromium
-// currently implements R7. Differences between the proposal and the
-// implementation are documented in subsections below.
+// http://eel.is/c++draft/views contains the latest C++20 draft of std::span.
+// Chromium tries to follow the draft as close as possible. Differences between
+// the draft and the implementation are documented in subsections below.
 //
 // Differences from [span.objectrep]:
 // - as_bytes() and as_writable_bytes() return spans of uint8_t instead of
-//   std::byte
-//
-// Differences in constants and types:
-// - index_type is aliased to size_t
+//   std::byte (std::byte is a C++17 feature)
 //
 // Differences from [span.cons]:
 // - Constructing a static span (i.e. Extent != dynamic_extent) from a dynamic
-//   sized container (e.g. std::vector) requires an explicit conversion.
-//
-// Differences from [span.sub]:
-// - using size_t instead of ptrdiff_t for indexing
+//   sized container (e.g. std::vector) requires an explicit conversion (in the
+//   C++20 draft this is simply UB)
 //
 // Differences from [span.obs]:
-// - using size_t instead of ptrdiff_t to represent size()
-//
-// Differences from [span.elem]:
-// - using size_t instead of ptrdiff_t for indexing
+// - empty() is marked with WARN_UNUSED_RESULT instead of [[nodiscard]]
+//   ([[nodiscard]] is a C++17 feature)
 //
 // Furthermore, all constructors and methods are marked noexcept due to the lack
 // of exceptions in Chromium.
@@ -375,7 +377,9 @@
   // [span.obs], span observers
   constexpr size_t size() const noexcept { return ExtentStorage::size(); }
   constexpr size_t size_bytes() const noexcept { return size() * sizeof(T); }
-  constexpr bool empty() const noexcept { return size() == 0; }
+  constexpr bool empty() const noexcept WARN_UNUSED_RESULT {
+    return size() == 0;
+  }
 
   // [span.elem], span element access
   constexpr T& operator[](size_t idx) const noexcept {
@@ -384,10 +388,18 @@
     return *(data() + idx);
   }
 
-  constexpr T& operator()(size_t idx) const noexcept {
-    // Note: CHECK_LT is not constexpr, hence regular CHECK must be used.
-    CHECK(idx < size());
-    return *(data() + idx);
+  constexpr T& front() const noexcept {
+    static_assert(Extent == dynamic_extent || Extent > 0,
+                  "Extent must not be 0");
+    CHECK(Extent != dynamic_extent || !empty());
+    return *data();
+  }
+
+  constexpr T& back() const noexcept {
+    static_assert(Extent == dynamic_extent || Extent > 0,
+                  "Extent must not be 0");
+    CHECK(Extent != dynamic_extent || !empty());
+    return *(data() + size() - 1);
   }
 
   constexpr T* data() const noexcept { return data_; }
@@ -415,6 +427,15 @@
     return const_reverse_iterator(cbegin());
   }
 
+  constexpr void swap(span& other) noexcept {
+    // Note: Can't use std::swap here, as it's not constexpr prior to C++20.
+    T* data = data_;
+    data_ = other.data_;
+    other.data_ = data;
+
+    ExtentStorage::swap(other);
+  }
+
  private:
   T* data_;
 };
@@ -439,6 +460,11 @@
   return {reinterpret_cast<uint8_t*>(s.data()), s.size_bytes()};
 }
 
+template <typename T, size_t X>
+constexpr void swap(span<T, X>& lhs, span<T, X>& rhs) noexcept {
+  lhs.swap(rhs);
+}
+
 // Type-deducing helpers for constructing a span.
 template <typename T>
 constexpr span<T> make_span(T* data, size_t size) noexcept {
@@ -504,4 +530,51 @@
 
 }  // namespace base
 
+// Note: std::tuple_size, std::tuple_element and std::get are specialized for
+// static spans, so that they can be used in C++17's structured bindings. While
+// we don't support C++17 yet, there is no harm in providing these
+// specializations already.
+namespace std {
+
+// [span.tuple], tuple interface
+#if defined(__clang__)
+// Due to https://llvm.org/PR39871 and https://llvm.org/PR41331 and their
+// respective fixes different versions of libc++ declare std::tuple_size and
+// std::tuple_element either as classes or structs. In order to be able to
+// specialize std::tuple_size and std::tuple_element for custom base types we
+// thus need to disable -Wmismatched-tags in order to support all build
+// configurations. Note that this is blessed by the standard in
+// https://timsong-cpp.github.io/cppwp/n4140/dcl.type.elab#3.
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wmismatched-tags"
+#endif
+template <typename T, size_t X>
+struct tuple_size<base::span<T, X>> : public integral_constant<size_t, X> {};
+
+template <typename T>
+struct tuple_size<base::span<T, base::dynamic_extent>>;  // not defined
+
+template <size_t I, typename T, size_t X>
+struct tuple_element<I, base::span<T, X>> {
+  static_assert(
+      base::dynamic_extent != X,
+      "std::tuple_element<> not supported for base::span<T, dynamic_extent>");
+  static_assert(I < X,
+                "Index out of bounds in std::tuple_element<> (base::span)");
+  using type = T;
+};
+#if defined(__clang__)
+#pragma clang diagnostic pop  // -Wmismatched-tags
+#endif
+
+template <size_t I, typename T, size_t X>
+constexpr T& get(base::span<T, X> s) noexcept {
+  static_assert(base::dynamic_extent != X,
+                "std::get<> not supported for base::span<T, dynamic_extent>");
+  static_assert(I < X, "Index out of bounds in std::get<> (base::span)");
+  return s[I];
+}
+
+}  // namespace std
+
 #endif  // BASE_CONTAINERS_SPAN_H_
diff --git a/base/containers/span_unittest.cc b/base/containers/span_unittest.cc
index 1af0d3b3..0705a97 100644
--- a/base/containers/span_unittest.cc
+++ b/base/containers/span_unittest.cc
@@ -876,17 +876,68 @@
   static constexpr int kArray[] = {1, 6, 1, 8, 0};
   constexpr span<const int> span(kArray);
 
-  static_assert(kArray[0] == span[0], "span[0] does not equal kArray[0]");
-  static_assert(kArray[1] == span[1], "span[1] does not equal kArray[1]");
-  static_assert(kArray[2] == span[2], "span[2] does not equal kArray[2]");
-  static_assert(kArray[3] == span[3], "span[3] does not equal kArray[3]");
-  static_assert(kArray[4] == span[4], "span[4] does not equal kArray[4]");
+  static_assert(&kArray[0] == &span[0],
+                "span[0] does not refer to the same element as kArray[0]");
+  static_assert(&kArray[1] == &span[1],
+                "span[1] does not refer to the same element as kArray[1]");
+  static_assert(&kArray[2] == &span[2],
+                "span[2] does not refer to the same element as kArray[2]");
+  static_assert(&kArray[3] == &span[3],
+                "span[3] does not refer to the same element as kArray[3]");
+  static_assert(&kArray[4] == &span[4],
+                "span[4] does not refer to the same element as kArray[4]");
+}
 
-  static_assert(kArray[0] == span(0), "span(0) does not equal kArray[0]");
-  static_assert(kArray[1] == span(1), "span(1) does not equal kArray[1]");
-  static_assert(kArray[2] == span(2), "span(2) does not equal kArray[2]");
-  static_assert(kArray[3] == span(3), "span(3) does not equal kArray[3]");
-  static_assert(kArray[4] == span(4), "span(4) does not equal kArray[4]");
+TEST(SpanTest, Front) {
+  static constexpr int kArray[] = {1, 6, 1, 8, 0};
+  constexpr span<const int> span(kArray);
+  static_assert(&kArray[0] == &span.front(),
+                "span.front() does not refer to the same element as kArray[0]");
+}
+
+TEST(SpanTest, Back) {
+  static constexpr int kArray[] = {1, 6, 1, 8, 0};
+  constexpr span<const int> span(kArray);
+  static_assert(&kArray[4] == &span.back(),
+                "span.back() does not refer to the same element as kArray[4]");
+}
+
+TEST(SpanTest, Swap) {
+  {
+    static int kArray1[] = {1, 1};
+    static int kArray2[] = {1, 2};
+    span<const int, 2> static_span1(kArray1);
+    span<const int, 2> static_span2(kArray2);
+
+    EXPECT_EQ(kArray1, static_span1.data());
+    EXPECT_EQ(kArray2, static_span2.data());
+
+    swap(static_span1, static_span2);
+
+    EXPECT_EQ(kArray2, static_span1.data());
+    EXPECT_EQ(kArray1, static_span2.data());
+  }
+
+  {
+    static int kArray1[] = {1};
+    static int kArray2[] = {1, 2};
+    span<const int> dynamic_span1(kArray1);
+    span<const int> dynamic_span2(kArray2);
+
+    EXPECT_EQ(kArray1, dynamic_span1.data());
+    EXPECT_EQ(1u, dynamic_span1.size());
+
+    EXPECT_EQ(kArray2, dynamic_span2.data());
+    EXPECT_EQ(2u, dynamic_span2.size());
+
+    swap(dynamic_span1, dynamic_span2);
+
+    EXPECT_EQ(kArray2, dynamic_span1.data());
+    EXPECT_EQ(2u, dynamic_span1.size());
+
+    EXPECT_EQ(kArray1, dynamic_span2.data());
+    EXPECT_EQ(1u, dynamic_span2.size());
+  }
 }
 
 TEST(SpanTest, Iterator) {
@@ -1053,6 +1104,46 @@
                 "make_span(span) should have the same extent as span");
 }
 
+TEST(SpanTest, StdTupleSize) {
+  static_assert(std::tuple_size<span<int, 0>>::value == 0, "");
+  static_assert(std::tuple_size<span<int, 1>>::value == 1, "");
+  static_assert(std::tuple_size<span<int, 2>>::value == 2, "");
+}
+
+TEST(SpanTest, StdTupleElement) {
+  static_assert(std::is_same<int, std::tuple_element_t<0, span<int, 1>>>::value,
+                "");
+  static_assert(
+      std::is_same<const int,
+                   std::tuple_element_t<0, span<const int, 2>>>::value,
+      "");
+  static_assert(
+      std::is_same<const int*,
+                   std::tuple_element_t<1, span<const int*, 2>>>::value,
+      "");
+}
+
+TEST(SpanTest, StdGet) {
+  static constexpr int kArray[] = {1, 6, 1, 8, 0};
+  constexpr span<const int, 5> span(kArray);
+
+  static_assert(
+      &kArray[0] == &std::get<0>(span),
+      "std::get<0>(span) does not refer to the same element as kArray[0]");
+  static_assert(
+      &kArray[1] == &std::get<1>(span),
+      "std::get<1>(span) does not refer to the same element as kArray[1]");
+  static_assert(
+      &kArray[2] == &std::get<2>(span),
+      "std::get<2>(span) does not refer to the same element as kArray[2]");
+  static_assert(
+      &kArray[3] == &std::get<3>(span),
+      "std::get<3>(span) does not refer to the same element as kArray[3]");
+  static_assert(
+      &kArray[4] == &std::get<4>(span),
+      "std::get<4>(span) does not refer to the same element as kArray[4]");
+}
+
 TEST(SpanTest, EnsureConstexprGoodness) {
   static constexpr int kArray[] = {5, 4, 3, 2, 1};
   constexpr span<const int> constexpr_span(kArray);
@@ -1083,13 +1174,15 @@
 
   ASSERT_DEATH_IF_SUPPORTED(kEmptySpan[0], "");
 
-  ASSERT_DEATH_IF_SUPPORTED(kEmptySpan(0), "");
-
   ASSERT_DEATH_IF_SUPPORTED(kEmptySpan.first(1), "");
 
   ASSERT_DEATH_IF_SUPPORTED(kEmptySpan.last(1), "");
 
   ASSERT_DEATH_IF_SUPPORTED(kEmptySpan.subspan(1), "");
+
+  constexpr span<int> kEmptyDynamicSpan;
+  ASSERT_DEATH_IF_SUPPORTED(kEmptyDynamicSpan.front(), "");
+  ASSERT_DEATH_IF_SUPPORTED(kEmptyDynamicSpan.back(), "");
 }
 
 TEST(SpanTest, IteratorIsRangeMoveSafe) {
diff --git a/base/containers/span_unittest.nc b/base/containers/span_unittest.nc
index a37ad5d..9859495 100644
--- a/base/containers/span_unittest.nc
+++ b/base/containers/span_unittest.nc
@@ -162,6 +162,40 @@
   auto subspan = span.subspan<0, 4>();
 }
 
+#elif defined(NCTEST_DISCARD_RETURN_OF_EMPTY_DISALLOWED) // [r"ignoring return value of function"]
+
+// Discarding the return value of empty() is not allowed.
+void WontCompile() {
+  span<int> s;
+  s.empty();
+}
+
+#elif defined(NCTEST_FRONT_ON_EMPTY_STATIC_SPAN_DISALLOWED) // [r"Extent must not be 0"]
+
+// Front called on an empty span with static extent is not allowed.
+void WontCompile() {
+  span<int, 0> s;
+  s.front();
+}
+
+#elif defined(NCTEST_BACK_ON_EMPTY_STATIC_SPAN_DISALLOWED) // [r"Extent must not be 0"]
+
+// Back called on an empty span with static extent is not allowed.
+void WontCompile() {
+  span<int, 0> s;
+  s.back();
+}
+
+#elif defined(NCTEST_SWAP_WITH_DIFFERENT_EXTENTS_DISALLOWED)  // [r"no matching function for call to 'swap'"]
+
+// Calling swap on spans with different extents is not allowed.
+void WontCompile() {
+  std::array<int, 3> array = {1, 2, 3};
+  span<int, 3> static_span(array);
+  span<int> dynamic_span(array);
+  std::swap(static_span, dynamic_span);
+}
+
 #elif defined(NCTEST_AS_WRITABLE_BYTES_WITH_CONST_CONTAINER_DISALLOWED)  // [r"fatal error: no matching function for call to 'as_writable_bytes'"]
 
 // as_writable_bytes should not be possible for a const container.
@@ -178,6 +212,43 @@
   auto span = make_span(set);
 }
 
+#elif defined(NCTEST_TUPLE_SIZE_WITH_DYNAMIC_SPAN_DISALLOWED)  // [r"implicit instantiation of undefined template"]
+
+// Invoking std::tuple_size on a dynamically sized span is not allowed.
+size_t WontCompile() {
+  return std::tuple_size<span<int>>::value;
+}
+
+#elif defined(NCTEST_TUPLE_ELEMENT_WITH_DYNAMIC_SPAN_DISALLOWED)  // [r"std::tuple_element<> not supported for base::span<T, dynamic_extent>"]
+
+// Invoking std::tuple_element on a dynamically elementd span is not allowed.
+void WontCompile() {
+  std::tuple_element<0, span<int>>::type value;
+}
+
+#elif defined(NCTEST_TUPLE_ELEMENT_WITH_INDEX_OUT_OF_BOUNDS_DISALLOWED)  // [r"Index out of bounds in std::tuple_element<> \(base::span\)"]
+
+// Invoking std::tuple_element with an out of bound index is not allowed.
+void WontCompile() {
+  std::tuple_element<0, span<int, 0>>::type value;
+}
+
+#elif defined(NCTEST_GET_WITH_DYNAMIC_SPAN_DISALLOWED)  // [r"std::get<> not supported for base::span<T, dynamic_extent>"]
+
+// Invoking std::get on a dynamically elementd span is not allowed.
+int WontCompile() {
+  span<int> s;
+  return std::get<0>(s);
+}
+
+#elif defined(NCTEST_GET_WITH_INDEX_OUT_OF_BOUNDS_DISALLOWED)  // [r"Index out of bounds in std::get<> \(base::span\)"]
+
+// Invoking std::get with an out of bound index is not allowed.
+int WontCompile() {
+  span<int, 0> s;
+  return std::get<0>(s);
+}
+
 #endif
 
 }  // namespace base
diff --git a/base/strings/string_number_conversions.h b/base/strings/string_number_conversions.h
index 057b60ab..e6fb1828 100644
--- a/base/strings/string_number_conversions.h
+++ b/base/strings/string_number_conversions.h
@@ -56,29 +56,6 @@
 BASE_EXPORT std::string NumberToString(double value);
 BASE_EXPORT string16 NumberToString16(double value);
 
-// Type-specific naming for backwards compatibility.
-//
-// TODO(brettw) these should be removed and callers converted to the overloaded
-// "NumberToString" variant.
-inline std::string IntToString(int value) {
-  return NumberToString(value);
-}
-inline string16 IntToString16(int value) {
-  return NumberToString16(value);
-}
-inline std::string UintToString(unsigned value) {
-  return NumberToString(value);
-}
-inline string16 UintToString16(unsigned value) {
-  return NumberToString16(value);
-}
-inline std::string Int64ToString(int64_t value) {
-  return NumberToString(value);
-}
-inline string16 Int64ToString16(int64_t value) {
-  return NumberToString16(value);
-}
-
 // String -> number conversions ------------------------------------------------
 
 // Perform a best-effort conversion of the input string to a numeric type,
diff --git a/base/threading/thread_restrictions.h b/base/threading/thread_restrictions.h
index c83afdf..48dad766 100644
--- a/base/threading/thread_restrictions.h
+++ b/base/threading/thread_restrictions.h
@@ -168,6 +168,9 @@
 namespace functions {
 class ExecScriptScopedAllowBaseSyncPrimitives;
 }
+namespace history_report {
+class HistoryReportJniBridge;
+}
 namespace gpu {
 class GpuChannelHost;
 }
@@ -390,6 +393,7 @@
   friend class content::ServiceWorkerContextClient;
   friend class content::SessionStorageDatabase;
   friend class functions::ExecScriptScopedAllowBaseSyncPrimitives;
+  friend class history_report::HistoryReportJniBridge;
   friend class internal::TaskTracker;
   friend class leveldb::LevelDBMojoProxy;
   friend class leveldb_env::DBTracker;
diff --git a/base/trace_event/trace_config.cc b/base/trace_event/trace_config.cc
index e5bc3a58..826fff2e9 100644
--- a/base/trace_event/trace_config.cc
+++ b/base/trace_event/trace_config.cc
@@ -335,8 +335,6 @@
   }
   DCHECK_EQ(trace_buffer_size_in_events_, config.trace_buffer_size_in_events_)
       << "Cannot change trace buffer size";
-  DCHECK_EQ(trace_buffer_size_in_kb_, config.trace_buffer_size_in_kb_)
-      << "Cannot change trace buffer size";
 
   category_filter_.Merge(config.category_filter_);
   memory_dump_config_.Merge(config.memory_dump_config_);
diff --git a/base/util/OWNERS b/base/util/OWNERS
new file mode 100644
index 0000000..9e117aef
--- /dev/null
+++ b/base/util/OWNERS
@@ -0,0 +1 @@
+ajwong@chromium.org
diff --git a/base/util/README.md b/base/util/README.md
new file mode 100644
index 0000000..dc224b10
--- /dev/null
+++ b/base/util/README.md
@@ -0,0 +1,118 @@
+# What is this
+Contains a written down set of principles and other information on //base/util.
+Please add to it!
+
+## About //base/util:
+
+This directory is meant to house common utilities that can be shared across the
+whole Chromium codebase. //base is similar, but due to the way //base grew over
+time, it has not been well organized to allow for fine-grained ownership. Also,
+there is a mixture of commonly useful utility code and extremely subtle code
+with performance and security implications. The combination of the two lead to
+a small number of //base OWNERS enforcing a very high quality bar over a
+diverse bag of code. The goal of //base/util is to avoid both these issues.
+Over time, functionality in //base proper will sorted into //base/util and
+one of two things will occur:
+
+   1. //base becomes empty and subdirs in //base/util get moved up to //base
+   2. A distinct "core" //base module is distilled out.
+
+We will iterate on this purpose as we add more functionality into this
+directory.
+
+## Structure of //base/util:
+
+  * No files other than README.md, and OWNERS are allowed in the top-level
+    directory.
+  * Subdirectories should be named for a class of functionality; it should
+    be relatively easy to browse the directory and find a utility.
+  * There is no top-level BUILD.gn. Subdirectories will have their own and
+    are allowed to reference other subdirectories.
+
+## Responsibilities of //base/util/OWNERS
+
+  * Creating new categories.
+  * Helping dedupe and organize code being added.
+  * Ensuring the directory is somewhat browseable.
+
+It is specifically NOT the OWNERS job to gatekeep what is a "good pattern"
+for Chromium code. Obviously they can still object, but the objection
+should be considered similar to any other Chromium dev objection.
+
+There will be cases when a utility is deemed to be more negative than
+positive after it has been landed. The //base/util/OWNERS may aide in
+coordinating and tracking removal, but responsibility for actually
+deleting the code and its uses falls to the *category* OWNERS.
+
+## Guidelines for adding code to //base/util/{category}
+
+  * You will be added to an OWNERS file under //base/util/category and be
+    responsible for maintaining your addition.
+  * A //base/util/OWNER must approve of the location of your code.
+  * Code must be needed in at least 2 places in Chrome and have no "higher
+    layered" directory (eg "//ui/base, //media/base, etc.), that could
+    facilitate sharing.
+  * Code must have unittests, and coverage should be > 95%.
+  * Code must have clear usage documentation for all the APIs.
+  * Public APIs must be in `::util` namespace. All implementation details
+    should be in `::util::internal`. Macros, which are not namespaceable,
+    are permitted but should be used sparingly and cause a small pang of guilt.
+  * Implementation and expected usage must be understandable by another OWNER
+    in your subdirectory; if creating a new subdirectory you must find a
+    co-OWNER.
+  * New subdirectories should have their own BUILD.gn files.
+
+
+## Why not just put new utilities in //base/FooDir?
+
+At some point, //base/util directories could get moved back into //base.
+Until then, //base/util will
+
+  1. make a distinct separation between "common useful utility code" from the
+     "extremely subtle code with performance and security implications" that //base
+     also houses.
+  2. remove //base/OWNERS as a bottleneck.
+
+The boundary is still a work-in-progress, but should clear itself up with time
+after some of the more obviously "utility-esque" classes are moved.
+
+
+## How does this differ from //components
+First, //base/util is a layer lower than //components so some code just cannot fit
+in components.
+
+Second, //components contains things are closer to full features or subsystems
+(eg autofill, heap profiler, cloud devices, visited link tracker) that are not
+really intended for large scale reuse.
+
+There is some overlap and at some point it will become a judgment call, but
+in general, //components are a better fit if the code in question is a feature,
+module, or subsystem.  //base/util is better if it is a more narrow construct
+such as a data structure, coding primitive, etc.
+
+
+## Why not the "Rule-of-3?"
+
+The [Rule-of-3](https://en.wikipedia.org/wiki/Rule_of_three_%28computer_programming%29)
+is a simple guidance on when it makes sense to extract common functionality out
+versus duplicating it. It has commonly been used in //base as a way of measuring
+"how general" is this functionality.
+
+Unfortunately, there are reasons for wanting to share code beyond just
+cleanliness. For example, if you need to guarantee exact behavior across
+two modules, duplication is not proper even if there will ever only be 2
+users.
+
+Furthermore, there is a chicken-and-egg problem that prevents incremental
+adoption of a utility. For example, someone introduces ThingerDoer in
+//foo/bar. Later, ThingerDoer is wanted in //foo/qux, but this still fails
+the rule-of-3 test, MyDoer is created. When //foo/waldo wants it, it's
+completely a game of chance whether or not the CL author manages to find
+both classes, wants to spend the time to determine if they've diverged,
+and then tries to abstract it.
+
+As such, the rule-of-3 runs contrary to the goal of sharing that
+//base/util is designed to facilitate.
+
+## Tips
+  * if doing a mass-move of code, look at `//tools/git/mass-rename.py`
diff --git a/build/android/gyp/write_build_config.py b/build/android/gyp/write_build_config.py
index ec273c63c..72bcec92 100755
--- a/build/android/gyp/write_build_config.py
+++ b/build/android/gyp/write_build_config.py
@@ -939,6 +939,11 @@
                     help='Dump the Markdown .build_config format documentation '
                     'then exit immediately.')
 
+  parser.add_option(
+      '--base-module-build-config',
+      help='Path to the base module\'s build config '
+      'if this is a feature module.')
+
   options, args = parser.parse_args(argv)
 
   if args:
@@ -1049,6 +1054,11 @@
   all_resources_deps = deps.All('android_resources')
   all_classpath_library_deps = classpath_deps.All('java_library')
 
+  base_module_build_config = None
+  if options.base_module_build_config:
+    with open(options.base_module_build_config, 'r') as f:
+      base_module_build_config = json.load(f)
+
   # Initialize some common config.
   # Any value that needs to be queryable by dependents must go within deps_info.
   config = {
@@ -1233,16 +1243,36 @@
       'android_resources', 'android_apk', 'junit_binary', 'resource_rewriter',
       'dist_aar', 'android_app_bundle_module'):
     config['resources'] = {}
-    config['resources']['dependency_zips'] = [
-        c['resources_zip'] for c in all_resources_deps]
+
+    dependency_zips = [
+        c['resources_zip'] for c in all_resources_deps if c['resources_zip']
+    ]
     extra_package_names = []
     extra_r_text_files = []
+
     if options.type != 'android_resources':
       extra_package_names = [
           c['package_name'] for c in all_resources_deps if 'package_name' in c]
       extra_r_text_files = [
           c['r_text'] for c in all_resources_deps if 'r_text' in c]
 
+    # For feature modules, remove any resources that already exist in the base
+    # module.
+    if base_module_build_config:
+      dependency_zips = [
+          c for c in dependency_zips
+          if c not in base_module_build_config['resources']['dependency_zips']
+      ]
+      extra_package_names = [
+          c for c in extra_package_names if c not in
+          base_module_build_config['resources']['extra_package_names']
+      ]
+      extra_r_text_files = [
+          c for c in extra_r_text_files if c not in
+          base_module_build_config['resources']['extra_r_text_files']
+      ]
+
+    config['resources']['dependency_zips'] = dependency_zips
     config['resources']['extra_package_names'] = extra_package_names
     config['resources']['extra_r_text_files'] = extra_r_text_files
 
diff --git a/build/android/pylib/gtest/filter/content_browsertests_disabled b/build/android/pylib/gtest/filter/content_browsertests_disabled
index bc7992d..974f131 100644
--- a/build/android/pylib/gtest/filter/content_browsertests_disabled
+++ b/build/android/pylib/gtest/filter/content_browsertests_disabled
@@ -15,14 +15,14 @@
 CrossPlatformAccessibilityBrowserTest.SelectedEditableTextAccessibility
 
 # http://crbug.com/297230
-DumpAccessibilityTreeTest.AccessibilityAriaLevel
-DumpAccessibilityTreeTest.AccessibilityAriaProgressbar
-DumpAccessibilityTreeTest.AccessibilityListMarkers
-DumpAccessibilityTreeTest.AccessibilityUl
-DumpAccessibilityTreeTest.AccessibilityCanvas
-DumpAccessibilityTreeTest.AccessibilityDialog
-DumpAccessibilityTreeTest.AccessibilityModalDialogClosed
-DumpAccessibilityTreeTest.AccessibilityModalDialogInIframeOpened
+DumpAccessibilityTreeTest.AccessibilityAriaLevel/*
+DumpAccessibilityTreeTest.AccessibilityAriaProgressbar/*
+DumpAccessibilityTreeTest.AccessibilityListMarkers/*
+DumpAccessibilityTreeTest.AccessibilityUl/*
+DumpAccessibilityTreeTest.AccessibilityCanvas/*
+DumpAccessibilityTreeTest.AccessibilityDialog/*
+DumpAccessibilityTreeTest.AccessibilityModalDialogClosed/*
+DumpAccessibilityTreeTest.AccessibilityModalDialogInIframeOpened/*
 RenderAccessibilityImplTest.DetachAccessibilityObject
 
 # http://crbug.com/187500
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni
index 4a93841..d8701eb 100644
--- a/build/config/android/internal_rules.gni
+++ b/build/config/android/internal_rules.gni
@@ -143,6 +143,9 @@
     if (defined(invoker.android_manifest_dep)) {
       deps += [ invoker.android_manifest_dep ]
     }
+    if (defined(invoker.base_module_build_config_target)) {
+      deps += [ invoker.base_module_build_config_target ]
+    }
 
     script = "//build/android/gyp/write_build_config.py"
     depfile = "$target_gen_dir/$target_name.d"
@@ -477,6 +480,12 @@
         invoker.main_class,
       ]
     }
+    if (defined(invoker.base_module_build_config)) {
+      _rebased_base_module_build_config =
+          rebase_path(invoker.base_module_build_config, root_build_dir)
+      args +=
+          [ "--base-module-build-config=$_rebased_base_module_build_config" ]
+    }
     if (current_toolchain != default_toolchain) {
       # This has to be a built-time error rather than a GN assert because many
       # packages have a mix of java and non-java targets. For example, the
@@ -3346,8 +3355,10 @@
       if (type == "android_app_bundle_module") {
         forward_variables_from(invoker,
                                [
-                                 "proto_resources_path",
+                                 "base_module_build_config",
+                                 "base_module_build_config_target",
                                  "module_rtxt_path",
+                                 "proto_resources_path",
                                ])
       }
       build_config = _build_config
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni
index 0334c9e..dc13739 100644
--- a/build/config/android/rules.gni
+++ b/build/config/android/rules.gni
@@ -2587,6 +2587,8 @@
                                "android_manifest",
                                "android_manifest_dep",
                                "apk_under_test",
+                               "base_module_build_config",
+                               "base_module_build_config_target",
                                "chromium_code",
                                "classpath_deps",
                                "emma_never_instrument",
@@ -3294,10 +3296,15 @@
         _base_module_target_gen_dir =
             get_label_info(_base_module_target, "target_gen_dir")
         _base_module_target_name = get_label_info(_base_module_target, "name")
+
         base_module_arsc_resource =
             "$_base_module_target_gen_dir/$_base_module_target_name.arsc.ap_"
         base_module_arsc_resource_target =
             "${_base_module_target}__compile_arsc_resources"
+        base_module_build_config = "$_base_module_target_gen_dir/" +
+                                   "$_base_module_target_name.build_config"
+        base_module_build_config_target =
+            "${_base_module_target}$build_config_target_suffix"
       }
     }
   }
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1
index 135afd4..8eb4bd9 100644
--- a/build/fuchsia/linux.sdk.sha1
+++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@
-8917360298180921408
\ No newline at end of file
+8917340288433684704
\ No newline at end of file
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1
index eb04e63a..f6581a13 100644
--- a/build/fuchsia/mac.sdk.sha1
+++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@
-8917359526395057648
\ No newline at end of file
+8917337664716354304
\ No newline at end of file
diff --git a/build/fuchsia/symbolizer.py b/build/fuchsia/symbolizer.py
index e239945..83ba73e1 100644
--- a/build/fuchsia/symbolizer.py
+++ b/build/fuchsia/symbolizer.py
@@ -32,7 +32,10 @@
       stdin=input_fd,
       close_fds=True)
 
-  for line in symbolizer_proc.stdout:
+  while True:
+    line = symbolizer_proc.stdout.readline()
+    if not line:
+      break
     yield line
 
   symbolizer_proc.wait()
diff --git a/build/sanitizers/tsan_suppressions.cc b/build/sanitizers/tsan_suppressions.cc
index f845013e..6d59a29 100644
--- a/build/sanitizers/tsan_suppressions.cc
+++ b/build/sanitizers/tsan_suppressions.cc
@@ -204,9 +204,6 @@
     // http://crbug.com/797998
     "race:content::SandboxIPCHandler::HandleLocaltime\n"
 
-    // https://crbug.com/946481
-    "race:content::DumpAccessibilityTestBase::RunTestForPlatform\n"
-
     // End of suppressions.
     ;  // Please keep this semicolon.
 
diff --git a/build/util/android_chrome_version.py b/build/util/android_chrome_version.py
index 75b22da..f9d91fc1b 100644
--- a/build/util/android_chrome_version.py
+++ b/build/util/android_chrome_version.py
@@ -67,6 +67,7 @@
 ARCH_CHOICES = ARCH_VERSION_CODE_DIFF.keys()
 
 """ "Next" builds get +5 last version code digit.
+
 We choose 5 because it won't conflict with values in
 ANDROID_CHROME_APK_VERSION_CODE_DIFFS
 
@@ -78,6 +79,29 @@
 """
 NEXT_BUILD_VERSION_CODE_DIFF = 100005
 
+"""For 64-bit architectures, some packages have multiple targets with version
+codes that differ by the second-to-last digit (the architecture digit). This is
+for various combinations of 32-bit vs 64-bit chrome and webview. The
+default/traditional configuration is 32-bit chrome with 64-bit webview, but we
+are adding:
++ 64-bit chrome with 32-bit webview
++ 64-bit combined Chrome and Webview (only one library)
++ (maybe someday 32-bit chrome with 32-bit webview)
+
+The naming scheme followed here is <chrome>_<webview>,
+e.g. 64_32 is 64-bit chrome with 32-bit webview.
+"""
+ARCH64_APK_VARIANTS = {
+    '64_32': {
+        'PACKAGES': frozenset(['MONOCHROME']),
+        'MODIFIER': 10
+    },
+    '64': {
+        'PACKAGES': frozenset(['MONOCHROME']),
+        'MODIFIER': 20
+    }
+}
+
 
 def GenerateVersionCodes(version_values, arch, is_next_build):
   """Get dict of version codes for chrome-for-android-related targets
@@ -114,6 +138,16 @@
 
   version_codes = {}
   for apk, diff in ANDROID_CHROME_APK_VERSION_CODE_DIFFS.iteritems():
-    version_codes[apk + '_VERSION_CODE'] = str(new_version_code + diff)
+    version_code_name = apk + '_VERSION_CODE'
+    version_code_val = new_version_code + diff
+    version_codes[version_code_name] = str(version_code_val)
+
+    if arch == 'arm64' or arch == 'x64':
+      for variant, config in ARCH64_APK_VARIANTS.iteritems():
+        if apk in config['PACKAGES']:
+          variant_name = apk + '_' + variant + '_VERSION_CODE'
+          variant_val = version_code_val + config['MODIFIER']
+          version_codes[variant_name] = str(variant_val)
+
 
   return version_codes
diff --git a/build/util/android_chrome_version_test.py b/build/util/android_chrome_version_test.py
index 0377c45..69091af1 100644
--- a/build/util/android_chrome_version_test.py
+++ b/build/util/android_chrome_version_test.py
@@ -144,6 +144,20 @@
 
     self.assertEqual(arch_chrome_version_code, '372000030')
 
+  def testGenerateVersionCodesAndroidArchArm64Variants(self):
+    """Assert it handles 64-bit-specific additional version codes correctly.
+
+    Some additional version codes are generated for 64-bit architectures.
+    See docstring on android_chrome_version.ARCH64_APK_VARIANTS for more info.
+    """
+    output = GenerateVersionCodes(
+        self.EXAMPLE_VERSION_VALUES, arch='arm64', is_next_build=False)
+    arch_monochrome_64_32_version_code = output['MONOCHROME_64_32_VERSION_CODE']
+    arch_monochrome_64_version_code = output['MONOCHROME_64_VERSION_CODE']
+
+    self.assertEqual(arch_monochrome_64_32_version_code, '372000042')
+    self.assertEqual(arch_monochrome_64_version_code, '372000052')
+
   def testGenerateVersionCodesAndroidArchX64(self):
     """Assert it handles different architectures correctly.
 
@@ -158,6 +172,20 @@
 
     self.assertEqual(arch_chrome_version_code, '372000060')
 
+  def testGenerateVersionCodesAndroidArchX64Variants(self):
+    """Assert it handles 64-bit-specific additional version codes correctly.
+
+    Some additional version codes are generated for 64-bit architectures.
+    See docstring on android_chrome_version.ARCH64_APK_VARIANTS for more info.
+    """
+    output = GenerateVersionCodes(
+        self.EXAMPLE_VERSION_VALUES, arch='x64', is_next_build=False)
+    arch_monochrome_64_32_version_code = output['MONOCHROME_64_32_VERSION_CODE']
+    arch_monochrome_64_version_code = output['MONOCHROME_64_VERSION_CODE']
+
+    self.assertEqual(arch_monochrome_64_32_version_code, '372000072')
+    self.assertEqual(arch_monochrome_64_version_code, '372000082')
+
   def testGenerateVersionCodesAndroidArchOrderArm(self):
     """Assert it handles different architectures correctly.
 
diff --git a/build/util/version.gni b/build/util/version.gni
index 70cc6b8..2d958c6 100644
--- a/build/util/version.gni
+++ b/build/util/version.gni
@@ -46,6 +46,12 @@
       "notouch_chrome_version_code = \"@NOTOUCH_CHROME_VERSION_CODE@\" " +
       "webview_version_code = \"@WEBVIEW_VERSION_CODE@\" "
 
+  if (target_cpu == "arm64" || target_cpu == "x64") {
+    _version_dictionary_template +=
+        "monochrome_64_32_version_code = \"@MONOCHROME_64_32_VERSION_CODE@\" " +
+        "monochrome_64_version_code = \"@MONOCHROME_64_VERSION_CODE@\" "
+  }
+
   _script_arguments += [
     "-a",
     target_cpu,
@@ -94,18 +100,28 @@
                            "trichrome_version_code",
                            "notouch_chrome_version_code",
                            "webview_version_code",
+                           "monochrome_64_32_version_code",
+                           "monochrome_64_version_code",
                          ])
 
   chrome_version_name = chrome_version_full
 
-  write_file("$root_out_dir/chrome_versions.txt",
-             [
-               "VersionName=$chrome_version_name",
-               "Chrome=$chrome_version_code",
-               "ChromeModern=$chrome_modern_version_code",
-               "Monochrome=$monochrome_version_code",
-               "TrichromeChrome=$trichrome_version_code",
-               "NoTouchChrome=$notouch_chrome_version_code",
-               "Webview=$webview_version_code",
-             ])
+  lines_to_write = [
+    "VersionName=$chrome_version_name",
+    "Chrome=$chrome_version_code",
+    "ChromeModern=$chrome_modern_version_code",
+    "Monochrome=$monochrome_version_code",
+    "TrichromeChrome=$trichrome_version_code",
+    "NoTouchChrome=$notouch_chrome_version_code",
+    "Webview=$webview_version_code",
+  ]
+
+  if (target_cpu == "arm64" || target_cpu == "x64") {
+    lines_to_write += [
+      "Monochrome_64_32=$monochrome_64_32_version_code",
+      "Monochrome_64=$monochrome_64_version_code",
+    ]
+  }
+
+  write_file("$root_out_dir/chrome_versions.txt", lines_to_write)
 }
diff --git a/build/util/version_test.py b/build/util/version_test.py
index 02a7a1ab..ea15c488 100644
--- a/build/util/version_test.py
+++ b/build/util/version_test.py
@@ -110,6 +110,40 @@
     self.assertRegexpMatches(contents, r'\btrichrome_version_code = "\d+"\s')
     self.assertRegexpMatches(contents, r'\bwebview_version_code = "\d+"\s')
 
+  def testBuildOutputAndroidArchVariantsArm64(self):
+    """Assert 64-bit-specific version codes"""
+    new_template = (
+        self._EXAMPLE_ANDROID_TEMPLATE +
+        "monochrome_64_32_version_code = \"@MONOCHROME_64_32_VERSION_CODE@\" "
+        "monochrome_64_version_code = \"@MONOCHROME_64_VERSION_CODE@\" ")
+    args_with_template = _ReplaceArgs(self._EXAMPLE_ANDROID_ARGS,
+                                      ['-t', new_template])
+    new_args = _ReplaceArgs(args_with_template, ['-a', 'arm64'])
+    output = self._RunBuildOutput(get_new_args=lambda args: new_args)
+    contents = output['contents']
+
+    self.assertRegexpMatches(contents,
+                             r'\bmonochrome_64_32_version_code = "\d+"\s')
+    self.assertRegexpMatches(contents,
+                             r'\bmonochrome_64_version_code = "\d+"\s')
+
+  def testBuildOutputAndroidArchVariantsX64(self):
+    """Assert 64-bit-specific version codes"""
+    new_template = (
+        self._EXAMPLE_ANDROID_TEMPLATE +
+        "monochrome_64_32_version_code = \"@MONOCHROME_64_32_VERSION_CODE@\" "
+        "monochrome_64_version_code = \"@MONOCHROME_64_VERSION_CODE@\" ")
+    args_with_template = _ReplaceArgs(self._EXAMPLE_ANDROID_ARGS,
+                                      ['-t', new_template])
+    new_args = _ReplaceArgs(args_with_template, ['-a', 'x64'])
+    output = self._RunBuildOutput(get_new_args=lambda args: new_args)
+    contents = output['contents']
+
+    self.assertRegexpMatches(contents,
+                             r'\bmonochrome_64_32_version_code = "\d+"\s')
+    self.assertRegexpMatches(contents,
+                             r'\bmonochrome_64_version_code = "\d+"\s')
+
   def testBuildOutputAndroidChromeArchInput(self):
     """Assert it raises an exception when using an invalid architecture input"""
     new_args = _ReplaceArgs(self._EXAMPLE_ANDROID_ARGS, ['-a', 'foobar'])
diff --git a/chrome/VERSION b/chrome/VERSION
index e0f316c9..02da247 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=75
 MINOR=0
-BUILD=3754
+BUILD=3755
 PATCH=0
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
index b968a96..04b692b 100644
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -1732,6 +1732,8 @@
                              "resource_ids_provider_dep",
                              "target_type",
                              "use_trichrome_library",
+                             "version_code",
+                             "version_name",
                            ])
     android_manifest = _android_manifest
     android_manifest_dep = ":${target_name}__android_manifest"
@@ -1761,12 +1763,12 @@
     add_unwind_tables_in_apk =
         _add_unwind_tables_in_chrome_32bit_apk && _needs_arm32_lib &&
         (!defined(use_trichrome_library) || !use_trichrome_library)
-
-    version_name = chrome_version_name
   }
 }
 
 monochrome_public_apk_or_module_tmpl("monochrome_public_apk") {
+  version_code = monochrome_version_code
+  version_name = chrome_version_name
   apk_name = "MonochromePublic"
   target_type = "android_apk"
 
@@ -1799,6 +1801,8 @@
 }
 
 monochrome_public_apk_or_module_tmpl("trichrome_chrome_apk") {
+  version_code = trichrome_version_code
+  version_name = chrome_version_name
   apk_name = "TrichromeChrome"
   target_type = "android_apk"
   use_trichrome_library = true
@@ -2071,6 +2075,19 @@
     _min_sdk_version = 24
   }
 
+  if (_is_trichrome) {
+    _version_code = trichrome_version_code
+  } else if (defined(invoker.is_64_bit_browser) && invoker.is_64_bit_browser) {
+    if (invoker.build_apk_secondary_abi && invoker.include_32_bit_webview) {
+      _version_code = monochrome_64_32_version_code
+    } else {
+      _version_code = monochrome_64_version_code
+    }
+  } else {
+    _version_code = monochrome_version_code
+  }
+  _version_name = chrome_version_name
+
   monochrome_public_apk_or_module_tmpl(_base_module_target_name) {
     forward_variables_from(invoker,
                            [
@@ -2081,6 +2098,8 @@
     module_name = _bundle_name + "Base"
     target_type = "android_app_bundle_module"
     is_base_module = true
+    version_code = _version_code
+    version_name = _version_name
   }
 
   if (modularize_ar) {
@@ -2098,12 +2117,8 @@
       module_name = "Ar" + _bundle_name
       base_module_target = ":$_base_module_target_name"
       native_switches = _native_switches
-      if (_is_trichrome) {
-        version_code = trichrome_version_code
-      } else {
-        version_code = monochrome_version_code
-      }
-      version_name = chrome_version_name
+      version_code = _version_code
+      version_name = _version_name
     }
   }
 
@@ -2112,13 +2127,9 @@
       manifest_package = manifest_package
       module_name = "Vr" + _bundle_name
       base_module_target = ":$_base_module_target_name"
-      if (_is_trichrome) {
-        version_code = trichrome_version_code
-      } else {
-        version_code = monochrome_version_code
-      }
-      version_name = chrome_version_name
       uncompress_shared_libraries = true
+      version_code = _version_code
+      version_name = _version_name
     }
   }
 
@@ -2126,13 +2137,9 @@
     manifest_package = manifest_package
     module_name = "TabUiMonochromePublic"
     base_module_target = ":$_base_module_target_name"
-    if (_is_trichrome) {
-      version_code = trichrome_version_code
-    } else {
-      version_code = monochrome_version_code
-    }
-    version_name = chrome_version_name
     uncompress_shared_libraries = true
+    version_code = _version_code
+    version_name = _version_name
   }
 
   android_app_bundle(target_name) {
diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni
index d7eb73b..a244711c 100644
--- a/chrome/android/chrome_public_apk_tmpl.gni
+++ b/chrome/android/chrome_public_apk_tmpl.gni
@@ -291,6 +291,7 @@
     _enable_multidex = is_java_debug || multidex_in_release
   }
   chrome_public_common_apk_or_module_tmpl(target_name) {
+    forward_variables_from(invoker, [ "version_code" ])
     is_trichrome =
         defined(invoker.use_trichrome_library) && invoker.use_trichrome_library
     is_monochrome = !is_trichrome
diff --git a/chrome/android/features/ar/ar_module_tmpl.gni b/chrome/android/features/ar/ar_module_tmpl.gni
index 7c6715b..c347dbf 100644
--- a/chrome/android/features/ar/ar_module_tmpl.gni
+++ b/chrome/android/features/ar/ar_module_tmpl.gni
@@ -11,6 +11,8 @@
 assert(modularize_ar)
 
 template("ar_module_tmpl") {
+  assert(defined(invoker.version_code))
+  assert(defined(invoker.version_name))
   assert(defined(invoker.manifest_package))
   assert(defined(invoker.module_name))
   assert(defined(invoker.base_module_target))
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/SilenceLintErrors.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/SilenceLintErrors.java
index 80a927e..3e30519 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/SilenceLintErrors.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/SilenceLintErrors.java
@@ -11,25 +11,25 @@
  */
 /* package */ class SilenceLintErrors {
     // TODO(yusufo): Add these resources to the DFM
-    private int[] mRes =
-            new int[] {R.dimen.tab_grid_favicon_size, R.string.tab_management_module_title,
-                    R.string.iph_tab_groups_quickly_compare_pages_text,
-                    R.string.iph_tab_groups_tap_to_see_another_tab_text,
-                    R.string.iph_tab_groups_your_tabs_together_text,
-                    R.string.bottom_tab_grid_description, R.string.bottom_tab_grid_opened_half,
-                    R.string.bottom_tab_grid_opened_full, R.string.bottom_tab_grid_closed,
-                    R.dimen.tab_list_selected_inset, R.layout.tab_strip_item,
-                    R.drawable.selected_tab_background, R.drawable.tab_grid_card_background,
-                    R.layout.tab_grid_card_item, R.layout.tab_list_recycler_view_layout,
-                    R.layout.bottom_tab_grid_toolbar, R.string.bottom_tab_grid_new_tab,
-                    R.string.bottom_tab_grid_new_tab, R.plurals.bottom_tab_grid_title_placeholder,
-                    R.string.iph_tab_groups_tap_to_see_another_tab_accessibility_text,
-                    R.string.accessibility_bottom_tab_strip_expand_tab_sheet,
-                    R.layout.bottom_tab_strip_toolbar, R.drawable.tabstrip_selected,
-                    R.dimen.tab_list_card_padding, R.dimen.tab_list_mini_card_text_size,
-                    R.dimen.tab_list_mini_card_frame_size, R.dimen.tab_list_mini_card_radius,
-                    R.drawable.tabstrip_favicon_background, R.dimen.swipe_to_dismiss_threshold,
-                    R.dimen.tab_grid_thumbnail_card_default_size};
+    private int[] mRes = new int[] {R.dimen.tab_grid_favicon_size,
+            R.string.tab_management_module_title,
+            R.string.iph_tab_groups_quickly_compare_pages_text,
+            R.string.iph_tab_groups_tap_to_see_another_tab_text,
+            R.string.iph_tab_groups_your_tabs_together_text, R.string.bottom_tab_grid_description,
+            R.string.bottom_tab_grid_opened_half, R.string.bottom_tab_grid_opened_full,
+            R.string.bottom_tab_grid_closed, R.dimen.tab_list_selected_inset,
+            R.layout.tab_strip_item, R.drawable.selected_tab_background,
+            R.drawable.tab_grid_card_background, R.layout.tab_grid_card_item,
+            R.layout.tab_list_recycler_view_layout, R.layout.bottom_tab_grid_toolbar,
+            R.string.bottom_tab_grid_new_tab, R.string.bottom_tab_grid_new_tab,
+            R.plurals.bottom_tab_grid_title_placeholder,
+            R.string.iph_tab_groups_tap_to_see_another_tab_accessibility_text,
+            R.string.accessibility_bottom_tab_strip_expand_tab_sheet,
+            R.layout.bottom_tab_strip_toolbar, R.drawable.tabstrip_selected,
+            R.dimen.tab_list_card_padding, R.dimen.tab_list_mini_card_text_size,
+            R.dimen.tab_list_mini_card_frame_size, R.dimen.tab_list_mini_card_radius,
+            R.drawable.tabstrip_favicon_background, R.dimen.swipe_to_dismiss_threshold,
+            R.dimen.tab_grid_thumbnail_card_default_size, R.dimen.tab_list_selected_inset_kitkat};
 
     private SilenceLintErrors() {}
 }
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java
index 9c72df3..0d4499a 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java
@@ -8,11 +8,11 @@
 import android.graphics.Bitmap;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.InsetDrawable;
+import android.os.Build;
 import android.support.annotation.Nullable;
 import android.support.v4.content.res.ResourcesCompat;
 import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.view.View;
-import android.widget.FrameLayout;
 
 import org.chromium.base.Callback;
 import org.chromium.chrome.R;
@@ -44,12 +44,23 @@
                     R.string.accessibility_tabstrip_btn_close_tab, title));
         } else if (TabProperties.IS_SELECTED == propertyKey) {
             Resources res = holder.itemView.getResources();
-            Drawable drawable = new InsetDrawable(
-                    ResourcesCompat.getDrawable(res, R.drawable.selected_tab_background,
-                            holder.itemView.getContext().getTheme()),
-                    (int) res.getDimension(R.dimen.tab_list_selected_inset));
-            ((FrameLayout) holder.itemView)
-                    .setForeground(item.get(TabProperties.IS_SELECTED) ? drawable : null);
+            Resources.Theme theme = holder.itemView.getContext().getTheme();
+            if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) {
+                Drawable selectedDrawable = new InsetDrawable(
+                        ResourcesCompat.getDrawable(res, R.drawable.selected_tab_background, theme),
+                        (int) res.getDimension(R.dimen.tab_list_selected_inset_kitkat));
+                Drawable elevationDrawable =
+                        ResourcesCompat.getDrawable(res, R.drawable.popup_bg, theme);
+                holder.backgroundView.setVisibility(View.VISIBLE);
+                holder.backgroundView.setBackground(
+                        item.get(TabProperties.IS_SELECTED) ? selectedDrawable : elevationDrawable);
+            } else {
+                Drawable drawable = new InsetDrawable(
+                        ResourcesCompat.getDrawable(res, R.drawable.selected_tab_background, theme),
+                        (int) res.getDimension(R.dimen.tab_list_selected_inset));
+                holder.itemView.setForeground(
+                        item.get(TabProperties.IS_SELECTED) ? drawable : null);
+            }
         } else if (TabProperties.TAB_SELECTED_LISTENER == propertyKey) {
             holder.itemView.setOnClickListener(view -> {
                 item.get(TabProperties.TAB_SELECTED_LISTENER).run(holder.getTabId());
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewHolder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewHolder.java
index b92ca55e..18a89e2 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewHolder.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewHolder.java
@@ -26,6 +26,7 @@
     public final ImageView thumbnail;
     public final ImageView closeButton;
     public final ButtonCompat createGroupButton;
+    public final View backgroundView;
     private int mTabId;
 
     private TabGridViewHolder(View itemView) {
@@ -37,6 +38,7 @@
         DrawableCompat.setTint(this.closeButton.getDrawable(),
                 ApiCompatibilityUtils.getColor(itemView.getResources(), R.color.light_icon_color));
         this.createGroupButton = itemView.findViewById(R.id.create_group_button);
+        this.backgroundView = itemView.findViewById(R.id.background_view);
     }
 
     public static TabGridViewHolder create(ViewGroup parent, int itemViewType) {
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java
index a3d64188..3e4c594 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java
@@ -315,7 +315,8 @@
                 super.onChildDraw(
                         c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
                 if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
-                    float alpha = 1f - Math.max(0, 0.8f * Math.abs(dX) / swipeToDismissThreshold);
+                    float alpha =
+                            Math.max(0.2f, 1f - 0.8f * Math.abs(dX) / swipeToDismissThreshold);
                     int index = mModel.indexFromId(((TabGridViewHolder) viewHolder).getTabId());
                     if (index == -1) return;
 
diff --git a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabListViewHolderTest.java b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabListViewHolderTest.java
index 9447bdd..30e8700 100644
--- a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabListViewHolderTest.java
+++ b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabListViewHolderTest.java
@@ -10,6 +10,7 @@
 import android.graphics.Bitmap;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
 import android.os.Build;
 import android.support.test.annotation.UiThreadTest;
 import android.support.test.filters.MediumTest;
@@ -22,6 +23,7 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.base.Callback;
+import org.chromium.chrome.R;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.chrome.test.ui.DummyUiActivityTestCase;
@@ -111,11 +113,24 @@
     @MediumTest
     @UiThreadTest
     public void testSelected() throws Exception {
-        mGridModel.set(TabProperties.IS_SELECTED, true);
-        Assert.assertTrue(((FrameLayout) (mTabGridViewHolder.itemView)).getForeground() != null);
-        mGridModel.set(TabProperties.IS_SELECTED, false);
-        Assert.assertFalse(((FrameLayout) (mTabGridViewHolder.itemView)).getForeground() != null);
-
+        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
+            mGridModel.set(TabProperties.IS_SELECTED, true);
+            Assert.assertTrue(
+                    ((FrameLayout) (mTabGridViewHolder.itemView)).getForeground() != null);
+            mGridModel.set(TabProperties.IS_SELECTED, false);
+            Assert.assertFalse(
+                    ((FrameLayout) (mTabGridViewHolder.itemView)).getForeground() != null);
+        } else {
+            mGridModel.set(TabProperties.IS_SELECTED, true);
+            Drawable selectedDrawable =
+                    mTabGridViewHolder.itemView.findViewById(R.id.background_view).getBackground();
+            Assert.assertTrue(selectedDrawable != null);
+            mGridModel.set(TabProperties.IS_SELECTED, false);
+            Drawable elevationDrawable =
+                    mTabGridViewHolder.itemView.findViewById(R.id.background_view).getBackground();
+            Assert.assertTrue(elevationDrawable != null);
+            Assert.assertNotSame(selectedDrawable, elevationDrawable);
+        }
         mStripModel.set(TabProperties.IS_SELECTED, true);
         Assert.assertTrue(((FrameLayout) (mTabStripViewHolder.itemView)).getForeground() != null);
         mStripModel.set(TabProperties.IS_SELECTED, false);
diff --git a/chrome/android/features/tab_ui/tab_ui_module_tmpl.gni b/chrome/android/features/tab_ui/tab_ui_module_tmpl.gni
index 99b3b57..b85d55f 100644
--- a/chrome/android/features/tab_ui/tab_ui_module_tmpl.gni
+++ b/chrome/android/features/tab_ui/tab_ui_module_tmpl.gni
@@ -7,6 +7,9 @@
 import("//chrome/android/features/module_names_to_package_ids.gni")
 
 template("tab_ui_module_tmpl") {
+  assert(defined(invoker.version_code))
+  assert(defined(invoker.version_name))
+
   _manifest = "$target_gen_dir/$target_name/AndroidManifest.xml"
   _manifest_target = "${target_name}__manifest"
   jinja_template(_manifest_target) {
diff --git a/chrome/android/features/vr/vr_module_tmpl.gni b/chrome/android/features/vr/vr_module_tmpl.gni
index 926ca2e0..214f7765 100644
--- a/chrome/android/features/vr/vr_module_tmpl.gni
+++ b/chrome/android/features/vr/vr_module_tmpl.gni
@@ -12,6 +12,8 @@
 assert(modularize_vr)
 
 template("vr_module_tmpl") {
+  assert(defined(invoker.version_code))
+  assert(defined(invoker.version_name))
   assert(defined(invoker.manifest_package))
   assert(defined(invoker.module_name))
   assert(defined(invoker.base_module_target))
diff --git a/chrome/android/java/res/layout/account_picker_new_account_row.xml b/chrome/android/java/res/layout/account_picker_new_account_row.xml
index 45dce65..2dd7b3e 100644
--- a/chrome/android/java/res/layout/account_picker_new_account_row.xml
+++ b/chrome/android/java/res/layout/account_picker_new_account_row.xml
@@ -6,9 +6,8 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:drawableStart="@drawable/ic_add_circle_40dp"
     android:drawablePadding="16dp"
     android:gravity="center_vertical"
     android:padding="8dp"
     android:text="@string/signin_add_account"
-    android:textAppearance="@style/TextAppearance.BlackBodyDefault"/>
+    android:textAppearance="@style/TextAppearance.BlackBodyDefault" />
diff --git a/chrome/android/java/res/layout/tab_grid_card_item.xml b/chrome/android/java/res/layout/tab_grid_card_item.xml
index d41bb8d2..600470ae 100644
--- a/chrome/android/java/res/layout/tab_grid_card_item.xml
+++ b/chrome/android/java/res/layout/tab_grid_card_item.xml
@@ -7,10 +7,18 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="wrap_content">
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:id="@+id/background_view"
+        android:background="@drawable/popup_bg"
+        android:layout_margin="3dp"
+        android:visibility="gone"/>
     <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:elevation="4dp"
+        android:layout_gravity="center"
         android:background="@drawable/tab_grid_card_background"
         android:layout_margin="8dp">
             <ImageView
@@ -26,13 +34,12 @@
                 android:layout_height="wrap_content"
                 android:layout_toEndOf="@id/tab_favicon"
                 android:layout_marginEnd="32dp"
+                android:gravity="center_vertical"
                 android:minHeight="32dp"
                 android:requiresFadingEdge="horizontal"
                 android:fadingEdgeLength="24dp"
                 android:ellipsize="none"
                 android:singleLine="true"
-                android:paddingBottom="6dp"
-                android:paddingTop="6dp"
                 android:textAppearance="@style/TextAppearance.BlackTitle2"/>
             <org.chromium.ui.widget.RoundedCornerImageView
                 android:id="@+id/tab_thumbnail"
diff --git a/chrome/android/java/res/values/colors.xml b/chrome/android/java/res/values/colors.xml
index 2ede7cb..ff1174db 100644
--- a/chrome/android/java/res/values/colors.xml
+++ b/chrome/android/java/res/values/colors.xml
@@ -95,7 +95,7 @@
     <!-- Data Saver Colors -->
     <color name="data_reduction_compressed_color">#E1E1E1</color>
     <color name="data_reduction_original_color">@color/pref_accent_color</color>
-    <color name="data_reduction_chart_background_color">@color/modern_grey_50</color>
+    <color name="data_reduction_chart_background_color">@color/modern_secondary_color</color>
 
     <!-- Compositor Tab Title Colors -->
     <color name="compositor_tab_title_bar_text">@color/default_text_color</color>
diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml
index 1bc2dfac..ef3e6ae6 100644
--- a/chrome/android/java/res/values/dimens.xml
+++ b/chrome/android/java/res/values/dimens.xml
@@ -597,6 +597,7 @@
     <!-- Tab List dimensions -->
     <dimen name="tab_grid_favicon_size">32dp</dimen>
     <dimen name="tab_list_selected_inset">7dp</dimen>
+    <dimen name="tab_list_selected_inset_kitkat">2dp</dimen>
     <dimen name="tab_list_card_padding">8dp</dimen>
     <dimen name="tab_list_mini_card_radius">4dp</dimen>
     <dimen name="tab_list_mini_card_frame_size">1dp</dimen>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/ManagedPreferencesUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/ManagedPreferencesUtils.java
index 8fa5ff3..14b4a38 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/ManagedPreferencesUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/ManagedPreferencesUtils.java
@@ -82,7 +82,7 @@
      */
     public static Drawable getManagedIconDrawable(
             @Nullable ManagedPreferenceDelegate delegate, Preference preference) {
-        if (delegate == null) return null;
+        if (delegate == null) return preference.getIcon();
 
         if (delegate.isPreferenceControlledByPolicy(preference)) {
             return PreferenceUtils.getTintedIcon(
@@ -92,7 +92,7 @@
                     preference.getContext(), getManagedByCustodianIconId());
         }
 
-        return null;
+        return preference.getIcon();
     }
 
     /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java
index bca9811b..ba22be8b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java
@@ -26,6 +26,7 @@
 import android.preference.PreferenceScreen;
 import android.support.annotation.Nullable;
 import android.support.v4.app.FragmentActivity;
+import android.support.v7.content.res.AppCompatResources;
 import android.widget.ListView;
 
 import org.chromium.base.ApiCompatibilityUtils;
@@ -377,7 +378,8 @@
     private ChromeBasePreference createAddAccountPreference() {
         ChromeBasePreference addAccountPreference = new ChromeBasePreference(getActivity());
         addAccountPreference.setLayoutResource(R.layout.account_management_account_row);
-        addAccountPreference.setIcon(R.drawable.ic_add_circle_40dp);
+        addAccountPreference.setIcon(
+                AppCompatResources.getDrawable(getActivity(), R.drawable.ic_add_circle_40dp));
         addAccountPreference.setTitle(R.string.account_management_add_account_title);
         addAccountPreference.setOnPreferenceClickListener(preference -> {
             if (!isVisible() || !isResumed()) return false;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountPickerDialogFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountPickerDialogFragment.java
index b55b28af..cfdaf0b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountPickerDialogFragment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountPickerDialogFragment.java
@@ -12,6 +12,7 @@
 import android.support.v4.app.Fragment;
 import android.support.v4.util.ObjectsCompat;
 import android.support.v7.app.AlertDialog;
+import android.support.v7.content.res.AppCompatResources;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
@@ -112,8 +113,15 @@
         public ViewHolder onCreateViewHolder(ViewGroup viewGroup, @ViewType int viewType) {
             LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
             if (viewType == ViewType.NEW_ACCOUNT) {
-                View view =
-                        inflater.inflate(R.layout.account_picker_new_account_row, viewGroup, false);
+                TextView view = (TextView) inflater.inflate(
+                        R.layout.account_picker_new_account_row, viewGroup, false);
+                // Set the vector drawable programmatically because app:drawableStartCompat is only
+                // available after AndroidX appcompat library.
+                // TODO(https://crbug.com/948367): Use app:drawableStartCompat.
+                view.setCompoundDrawablesRelativeWithIntrinsicBounds(
+                        AppCompatResources.getDrawable(
+                                viewGroup.getContext(), R.drawable.ic_add_circle_40dp),
+                        null, null, null);
                 return new ViewHolder(view);
             }
             View view = inflater.inflate(R.layout.account_picker_row, viewGroup, false);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/SameActivityWebappSplashDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/SameActivityWebappSplashDelegate.java
index 266a450..0fc96670 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/SameActivityWebappSplashDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/SameActivityWebappSplashDelegate.java
@@ -86,7 +86,7 @@
         mSplashScreen = new FrameLayout(context);
         mSplashScreen.setBackgroundColor(backgroundColor);
         mParentView.addView(mSplashScreen);
-        startSplashscreenTraceEvents();
+        recordTraceEventsShowedSplash();
 
         if (webappInfo.isForWebApk()) {
             initializeLayout(webappInfo, backgroundColor, ((WebApkInfo) webappInfo).splashIcon());
@@ -125,6 +125,7 @@
         assert mIsSplashVisible;
 
         mIsSplashVisible = false;
+        recordTraceEventsStartedHidingSplash();
         mSplashScreen.animate().alpha(0f).withEndAction(new Runnable() {
             @Override
             public void run() {
@@ -134,7 +135,7 @@
                     mWebApkNetworkErrorObserver = null;
                 }
 
-                finishSplashscreenTraceEvents();
+                recordTraceEventsFinishedHidingSplash();
                 mTab = null;
                 mSplashScreen = null;
                 finishedHidingCallback.run();
@@ -225,14 +226,17 @@
         if (mNativeLoaded) mUmaCache.commitMetrics();
     }
 
-    private void startSplashscreenTraceEvents() {
-        TraceEvent.startAsync("WebappSplashScreen", hashCode());
+    private void recordTraceEventsShowedSplash() {
         SingleShotOnDrawListener.install(mParentView,
                 () -> { TraceEvent.startAsync("WebappSplashScreen.visible", hashCode()); });
     }
 
-    private void finishSplashscreenTraceEvents() {
-        TraceEvent.finishAsync("WebappSplashScreen", hashCode());
+    private void recordTraceEventsStartedHidingSplash() {
+        TraceEvent.startAsync("WebappSplashScreen.hidingAnimation", hashCode());
+    }
+
+    private void recordTraceEventsFinishedHidingSplash() {
+        TraceEvent.finishAsync("WebappSplashScreen.hidingAnimation", hashCode());
         SingleShotOnDrawListener.install(mParentView,
                 () -> { TraceEvent.finishAsync("WebappSplashScreen.visible", hashCode()); });
     }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/AutofillTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/AutofillTest.java
index 7bbd04a..cc0d0cde 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/AutofillTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/AutofillTest.java
@@ -56,13 +56,16 @@
     // A container to store autofill profile information for data verification.
     private static class Autofill {
         public final String id;
+        public final String clientTagHash;
         public final String street;
         public final String city;
         public final String state;
         public final String zip;
 
-        public Autofill(String id, String street, String city, String state, String zip) {
+        public Autofill(String id, String clientTagHash, String street, String city, String state,
+                String zip) {
             this.id = id;
+            this.clientTagHash = clientTagHash;
             this.street = street;
             this.city = city;
             this.state = state;
@@ -141,7 +144,7 @@
 
         // Delete on server, sync, and verify deleted locally.
         Autofill autofill = getClientAutofillProfiles().get(0);
-        mSyncTestRule.getFakeServerHelper().deleteEntity(autofill.id);
+        mSyncTestRule.getFakeServerHelper().deleteEntity(autofill.id, autofill.clientTagHash);
         SyncTestUtil.triggerSync();
         waitForClientAutofillProfileCount(0);
     }
@@ -173,8 +176,8 @@
 
     private void addServerAutofillProfile(EntitySpecifics specifics) {
         mSyncTestRule.getFakeServerHelper().injectUniqueClientEntity(
-                specifics.getAutofillProfile().getAddressHomeLine1() /* nonUniqueName */,
-                specifics.getAutofillProfile().getAddressHomeLine1() /* clientTag */, specifics);
+                specifics.getAutofillProfile().getGuid() /* nonUniqueName */,
+                specifics.getAutofillProfile().getGuid() /* clientTag */, specifics);
     }
 
     private List<Autofill> getClientAutofillProfiles() throws JSONException {
@@ -184,11 +187,18 @@
         for (Pair<String, JSONObject> entity : entities) {
             String id = entity.first;
             JSONObject profile = entity.second;
+            String clientTagHash = "";
+            if (profile.has("metadata")) {
+                JSONObject metadata = profile.getJSONObject("metadata");
+                if (metadata.has("client_tag_hash")) {
+                    clientTagHash = metadata.getString("client_tag_hash");
+                }
+            }
             String street = profile.getString("address_home_line1");
             String city = profile.getString("address_home_city");
             String state = profile.getString("address_home_state");
             String zip = profile.getString("address_home_zip");
-            autofills.add(new Autofill(id, street, city, state, zip));
+            autofills.add(new Autofill(id, clientTagHash, street, city, state, zip));
         }
         return autofills;
     }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/FakeServerHelper.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/FakeServerHelper.java
index 918af967..7eb5fad 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/FakeServerHelper.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/FakeServerHelper.java
@@ -351,19 +351,20 @@
      * In other words, this method injects a tombstone into the fake Sync server.
      *
      * @param id the server ID of the entity to delete
-     * @param clientDefinedUniqueTag the client defined unique tag of the entity to delete
+     * @param clientTagHash the client defined unique tag hash of the entity to delete (or an empty
+     *         string if sync does not care about this being a hash)
      */
     public void deleteEntity(final String id) {
         deleteEntity(id, "");
     }
 
-    public void deleteEntity(final String id, final String clientDefinedUniqueTag) {
+    public void deleteEntity(final String id, final String clientTagHash) {
         checkFakeServerInitialized("useFakeServer must be called before deleting an entity.");
         TestThreadUtils.runOnUiThreadBlockingNoException(new Callable<Void>() {
             @Override
             public Void call() {
-                nativeDeleteEntity(mNativeFakeServerHelperAndroid, sNativeFakeServer, id,
-                        clientDefinedUniqueTag);
+                nativeDeleteEntity(
+                        mNativeFakeServerHelperAndroid, sNativeFakeServer, id, clientTagHash);
                 return null;
             }
         });
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/vr/VrBrowserNativeUiTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/vr/VrBrowserNativeUiTest.java
index 154bec66..a93f031 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/vr/VrBrowserNativeUiTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/vr/VrBrowserNativeUiTest.java
@@ -35,6 +35,7 @@
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.chrome.test.util.ChromeTabUtils;
 import org.chromium.chrome.test.util.RenderTestRule;
+import org.chromium.net.test.ServerCertificate;
 
 import java.io.IOException;
 import java.util.concurrent.TimeoutException;
@@ -47,6 +48,11 @@
 @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "enable-webvr"})
 @Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM_OR_STANDALONE)
 public class VrBrowserNativeUiTest {
+    // We need to make sure the port is constant, otherwise the URL changes between test runs, which
+    // is really bad for image diff tests. There's nothing special about this port other than that
+    // it shouldn't be in use by anything.
+    private static final int SERVER_PORT = 39558;
+
     // We explicitly instantiate a rule here instead of using parameterization since this class
     // only ever runs in ChromeTabbedActivity.
     @Rule
@@ -340,24 +346,6 @@
     }
 
     /**
-     * Tests that the page info popup appears when the security token in the URL bar is clicked.
-     */
-    @Test
-    @LargeTest
-    @Feature({"Browser", "RenderTest"})
-    public void testPageInfoAppearsOnSecurityTokenClick()
-            throws InterruptedException, TimeoutException, IOException {
-        NativeUiUtils.clickElementAndWaitForUiQuiescence(
-                UserFriendlyElementName.PAGE_INFO_BUTTON, new PointF());
-        // Workaround for https://crbug.com/893291, where the text doesn't actually show up until a
-        // bit after the element is drawn.
-        SystemClock.sleep(1000);
-        NativeUiUtils.waitForUiQuiescence();
-        RenderTestUtils.dumpAndCompare(NativeUiUtils.FRAME_BUFFER_SUFFIX_BROWSER_UI,
-                "page_info_visible_browser_ui", mRenderTestRule);
-    }
-
-    /**
      * Tests that data URLs have the data portion of the URL emphasized like in 2D browsing.
      */
     @Test
@@ -595,6 +583,17 @@
                 "suggestion_clicking_bottom", cropBounds, mRenderTestRule);
     }
 
+    private void resizeContentWindowToMinimum() throws InterruptedException {
+        NativeUiUtils.selectRepositionBar();
+        NativeUiUtils.scrollFling(NativeUiUtils.ScrollDirection.DOWN);
+        // We need to ensure that the scroll has finished, but we can't use waitForUiQuiescence()
+        // because the UI is never quiescent while the reposition bar is being used. So, wait a
+        // suitable number of frames.
+        NativeUiUtils.waitNumFrames(2 * NativeUiUtils.NUM_STEPS_FLING_SCROLL);
+        NativeUiUtils.deselectRepositionBar();
+        NativeUiUtils.waitForUiQuiescence();
+    }
+
     /**
      * Tests that scrolling while holding the reposition bar causes the content window to be
      * resized and that the resize doesn't affect the dimensions reported to the webpage.
@@ -608,14 +607,7 @@
                         "test_content_resizing_does_not_affect_webpage"),
                 PAGE_LOAD_TIMEOUT_S);
         mVrBrowserTestFramework.executeStepAndWait("stepGetInitialDimensions()");
-        NativeUiUtils.selectRepositionBar();
-        NativeUiUtils.scrollFling(NativeUiUtils.ScrollDirection.DOWN);
-        // We need to ensure that the scroll has finished, but we can't use waitForUiQuiescence()
-        // because the UI is never quiescent while the reposition bar is being used. So, wait a
-        // suitable number of frames.
-        NativeUiUtils.waitNumFrames(2 * NativeUiUtils.NUM_STEPS_FLING_SCROLL);
-        NativeUiUtils.deselectRepositionBar();
-        NativeUiUtils.waitForUiQuiescence();
+        resizeContentWindowToMinimum();
         RenderTestUtils.dumpAndCompare(
                 NativeUiUtils.FRAME_BUFFER_SUFFIX_BROWSER_UI, "scroll_resizing", mRenderTestRule);
         mVrBrowserTestFramework.executeStepAndWait("stepCheckDimensionsAfterResize()");
@@ -794,4 +786,64 @@
         NativeUiUtils.performActionAndWaitForVisibilityStatus(
                 UserFriendlyElementName.OMNIBOX_VOICE_INPUT_BUTTON, false /* visible */, () -> {});
     }
+
+    /**
+     * Tests that the security token and page info popup look correct on HTTP sites.
+     */
+    @Test
+    @MediumTest
+    @Feature({"Browser", "RenderTest"})
+    public void testSecurityTokenOnHttp() throws InterruptedException, IOException {
+        mVrTestRule.getEmbeddedTestServerRule().setServerPort(SERVER_PORT);
+        testSecurityTokenImpl("security_token_http");
+    }
+
+    /**
+     * Tests that the security token and page info popup look correct on HTTPS sites.
+     */
+    @Test
+    @MediumTest
+    @Feature({"Browser", "RenderTest"})
+    public void testSecurityTokenOnHttps() throws InterruptedException, IOException {
+        mVrTestRule.getEmbeddedTestServerRule().setServerPort(SERVER_PORT);
+        mVrTestRule.getEmbeddedTestServerRule().setServerUsesHttps(true);
+        testSecurityTokenImpl("security_token_https");
+    }
+
+    /**
+     * Tests that the security token and page info popup look correct on HTTPS sites when the
+     * server provides a bad certificate.
+     */
+    @Test
+    @MediumTest
+    @Feature({"Browser", "RenderTest"})
+    public void testSecurityTokenOnHttpsBadCertificate() throws InterruptedException, IOException {
+        mVrTestRule.getEmbeddedTestServerRule().setServerPort(SERVER_PORT);
+        mVrTestRule.getEmbeddedTestServerRule().setServerUsesHttps(true);
+        mVrTestRule.getEmbeddedTestServerRule().setCertificateType(ServerCertificate.CERT_EXPIRED);
+        testSecurityTokenImpl("security_token_https_bad_cert");
+    }
+
+    private void testSecurityTokenImpl(String identifier) throws InterruptedException, IOException {
+        NativeUiUtils.enableMockedInput();
+        mVrTestRule.loadUrl(
+                mVrBrowserTestFramework.getEmbeddedServerUrlForHtmlTestFile("2d_permission_page"),
+                PAGE_LOAD_TIMEOUT_S);
+        // Wait for any residual animations from loading to go away.
+        NativeUiUtils.waitForUiQuiescence();
+        RenderTestUtils.dumpAndCompare(NativeUiUtils.FRAME_BUFFER_SUFFIX_BROWSER_UI,
+                identifier + "_url_bar_token", mRenderTestRule);
+        // Make the content window as small as possible to hide as much of it behind the upcoming
+        // popup. See https://crbug.com/947117.
+        // TODO(https://crbug.com/947117): Remove the resizing once the interstitials are no longer
+        // offset slightly vertically at random.
+        resizeContentWindowToMinimum();
+        NativeUiUtils.clickElementAndWaitForUiQuiescence(
+                UserFriendlyElementName.PAGE_INFO_BUTTON, new PointF());
+        // Workaround for https://crbug.com/893291, where the text doesn't actually show up until a
+        // bit after the element is drawn.
+        SystemClock.sleep(2000);
+        RenderTestUtils.dumpAndCompare(NativeUiUtils.FRAME_BUFFER_SUFFIX_BROWSER_UI,
+                identifier + "_popup", mRenderTestRule);
+    }
 }
diff --git a/chrome/app/chromeos_strings.grdp b/chrome/app/chromeos_strings.grdp
index a6ae13ea..4d895688 100644
--- a/chrome/app/chromeos_strings.grdp
+++ b/chrome/app/chromeos_strings.grdp
@@ -3689,20 +3689,6 @@
     This picture will show up on the Chromebook sign in screen and lock screen.
   </message>
 
-  <!-- Strings for ARC intent picker -->
-  <message name="IDS_INTENT_PICKER_BUBBLE_VIEW_OPEN_WITH" desc="Message contained in a label used as a header for a list of applications from which the user will pick one.">
-    Open with
-  </message>
-  <message name="IDS_INTENT_PICKER_BUBBLE_VIEW_REMEMBER_SELECTION" desc="Message contained in a checkbox that must be marked in order for the intent picker to not be shown again for a similar URL.">
-    Remember my choice
-  </message>
-  <message name="IDS_INTENT_PICKER_BUBBLE_VIEW_USE_APP" desc="Message contained in a button to continue the navigation in an ARC app selected by the user.">
-    Use app
-  </message>
-  <message name="IDS_INTENT_PICKER_BUBBLE_VIEW_STAY_IN_CHROME" desc="Message contained in a button to continue the navigation within Chrome.">
-    Stay in Chrome
-  </message>
-
   <!-- Strings for Oobe fingerprint enrollment screen -->
   <message name="IDS_OOBE_FINGERPINT_SETUP_SCREEN_TITLE" desc="The title of the dialog that allow users to register their fingerprint.">
     Set up your fingerprint
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index fb05fcc..14f3310 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -4231,6 +4231,9 @@
       <message name="IDS_EXTENSIONS_MENU_TITLE" desc="Title of the Extensions Menu">
         Extensions
       </message>
+      <message name="IDS_EXTENSIONS_MENU_SETTINGS_TOOLTIP" desc="Tooltip for the 'manage extensions' button inside the Extensions Menu">
+        Manage extensions
+      </message>
 
       <!-- Settings API bubble -->
       <message name="IDS_EXTENSIONS_SETTINGS_API_TITLE_HOME_PAGE_BUBBLE" desc="Title of a bubble warning users that an extension has overridden their home page setting">
@@ -5066,10 +5069,24 @@
       <message name="IDS_TOOLTIP_FIND" desc="The tooltip for the find button">
         Find
       </message>
-      <if expr="chromeos">
+
+      <!-- Strings for intent picker -->
+      <if expr="not is_android">
         <message name="IDS_TOOLTIP_INTENT_PICKER_ICON" desc="The tooltip for the intent picker bubble icon">
           To open this link, choose an app
         </message>
+        <message name="IDS_INTENT_PICKER_BUBBLE_VIEW_OPEN_WITH" desc="Message contained in a label used as a header for a list of applications from which the user will pick one.">
+          Open with
+        </message>
+        <message name="IDS_INTENT_PICKER_BUBBLE_VIEW_REMEMBER_SELECTION" desc="Message contained in a checkbox that must be marked in order for the intent picker to not be shown again for a similar URL.">
+          Remember my choice
+        </message>
+        <message name="IDS_INTENT_PICKER_BUBBLE_VIEW_USE_APP" desc="Message contained in a button to continue the navigation in an app selected by the user.">
+          Use app
+        </message>
+        <message name="IDS_INTENT_PICKER_BUBBLE_VIEW_STAY_IN_CHROME" desc="Message contained in a button to continue the navigation within Chrome.">
+          Stay in Chrome
+        </message>
       </if>
 
       <!--Accessible name/action strings-->
diff --git a/chrome/app/onboarding_welcome_strings.grdp b/chrome/app/onboarding_welcome_strings.grdp
index 9ac5803..55845f3d 100644
--- a/chrome/app/onboarding_welcome_strings.grdp
+++ b/chrome/app/onboarding_welcome_strings.grdp
@@ -25,6 +25,9 @@
   <message name="IDS_ONBOARDING_WELCOME_BOOKMARK_REPLACED" desc="String read for accessibility to inform the user a bookmark was replaced.">
     Bookmark replaced
   </message>
+  <message name="IDS_ONBOARDING_DEFAULT_BROWSER_CHANGED" desc="text notifying users that their default browser is successfully changed to Chrome">
+    Chrome is your default browser
+  </message>
 
   <!-- NUX email provider selection module -->
   <message name="IDS_ONBOARDING_WELCOME_NUX_EMAIL_TITLE" desc="Text shown to prompt the users to select an email service to add as bookmark.">
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 6f6af95..9cac854b 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -2754,6 +2754,20 @@
       "apps/app_service/app_service_proxy_factory.h",
       "apps/app_service/dip_px_util.cc",
       "apps/app_service/dip_px_util.h",
+      "apps/intent_helper/apps_navigation_throttle.cc",
+      "apps/intent_helper/apps_navigation_throttle.h",
+      "apps/intent_helper/apps_navigation_types.cc",
+      "apps/intent_helper/apps_navigation_types.h",
+      "apps/intent_helper/intent_picker_auto_display_pref.cc",
+      "apps/intent_helper/intent_picker_auto_display_pref.h",
+      "apps/intent_helper/intent_picker_auto_display_service.cc",
+      "apps/intent_helper/intent_picker_auto_display_service.h",
+      "apps/intent_helper/intent_picker_auto_display_service_factory.cc",
+      "apps/intent_helper/intent_picker_auto_display_service_factory.h",
+      "apps/intent_helper/intent_picker_controller.cc",
+      "apps/intent_helper/intent_picker_controller.h",
+      "apps/intent_helper/page_transition_util.cc",
+      "apps/intent_helper/page_transition_util.h",
       "background/background_contents.cc",
       "background/background_contents.h",
       "badging/badge_manager.cc",
@@ -3326,20 +3340,6 @@
       "apps/app_service/icon_key_util.h",
       "apps/app_service/launch_util.cc",
       "apps/app_service/launch_util.h",
-      "apps/intent_helper/apps_navigation_throttle.cc",
-      "apps/intent_helper/apps_navigation_throttle.h",
-      "apps/intent_helper/apps_navigation_types.cc",
-      "apps/intent_helper/apps_navigation_types.h",
-      "apps/intent_helper/intent_picker_auto_display_pref.cc",
-      "apps/intent_helper/intent_picker_auto_display_pref.h",
-      "apps/intent_helper/intent_picker_auto_display_service.cc",
-      "apps/intent_helper/intent_picker_auto_display_service.h",
-      "apps/intent_helper/intent_picker_auto_display_service_factory.cc",
-      "apps/intent_helper/intent_picker_auto_display_service_factory.h",
-      "apps/intent_helper/intent_picker_controller.cc",
-      "apps/intent_helper/intent_picker_controller.h",
-      "apps/intent_helper/page_transition_util.cc",
-      "apps/intent_helper/page_transition_util.h",
       "ash_service_registry.cc",
       "ash_service_registry.h",
       "component_updater/cros_component_installer_chromeos.cc",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index c74028d..c215353 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -2984,6 +2984,13 @@
      FEATURE_VALUE_TYPE(chrome::android::kDownloadHomeV2)},
 #endif
 
+#if defined(OS_ANDROID)
+    {"download-auto-resumption-native",
+     flag_descriptions::kDownloadAutoResumptionNativeName,
+     flag_descriptions::kDownloadAutoResumptionNativeDescription, kOsAndroid,
+     FEATURE_VALUE_TYPE(download::features::kDownloadAutoResumptionNative)},
+#endif
+
     {"enable-new-download-backend",
      flag_descriptions::kEnableNewDownloadBackendName,
      flag_descriptions::kEnableNewDownloadBackendDescription, kOsAll,
diff --git a/chrome/browser/android/history_report/history_report_jni_bridge.cc b/chrome/browser/android/history_report/history_report_jni_bridge.cc
index 0c847ce..1c41dc1 100644
--- a/chrome/browser/android/history_report/history_report_jni_bridge.cc
+++ b/chrome/browser/android/history_report/history_report_jni_bridge.cc
@@ -183,6 +183,11 @@
 jboolean HistoryReportJniBridge::AddHistoricVisitsToUsageReportsBuffer(
     JNIEnv* env,
     const JavaParamRef<jobject>& obj) {
+  DCHECK(!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+  // Waiting is okay here because this is called from a background thread
+  // in Java.
+  base::ScopedAllowBaseSyncPrimitives allow_sync;
+
   data_provider_->StartVisitMigrationToUsageBuffer(
       usage_reports_buffer_service_.get());
   // TODO(nileshagrawal): Return true when actually done,
diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_android.cc
index c922cbd..29bef58f 100644
--- a/chrome/browser/android/tab_android.cc
+++ b/chrome/browser/android/tab_android.cc
@@ -159,8 +159,10 @@
 
 base::string16 TabAndroid::GetTitle() const {
   JNIEnv* env = base::android::AttachCurrentThread();
-  return base::android::ConvertJavaStringToUTF16(
-      Java_Tab_getTitle(env, weak_java_tab_.get(env)));
+  ScopedJavaLocalRef<jstring> java_title =
+      Java_Tab_getTitle(env, weak_java_tab_.get(env));
+  return java_title ? base::android::ConvertJavaStringToUTF16(java_title)
+                    : base::string16();
 }
 
 bool TabAndroid::IsNativePage() const {
diff --git a/chrome/browser/apps/guest_view/web_view_browsertest.cc b/chrome/browser/apps/guest_view/web_view_browsertest.cc
index 7781ab3b..f979d52 100644
--- a/chrome/browser/apps/guest_view/web_view_browsertest.cc
+++ b/chrome/browser/apps/guest_view/web_view_browsertest.cc
@@ -440,11 +440,11 @@
 
   void CanDownload(const GURL& url,
                    const std::string& request_method,
-                   const base::Callback<void(bool)>& callback) override {
+                   base::OnceCallback<void(bool)> callback) override {
     orig_delegate_->CanDownload(
         url, request_method,
-        base::Bind(&MockDownloadWebContentsDelegate::DownloadDecided,
-                   base::Unretained(this), callback));
+        base::BindOnce(&MockDownloadWebContentsDelegate::DownloadDecided,
+                       base::Unretained(this), std::move(callback)));
   }
 
   void WaitForCanDownload(bool expect_allow) {
@@ -461,7 +461,7 @@
     message_loop_runner_->Run();
   }
 
-  void DownloadDecided(const base::Callback<void(bool)>& callback, bool allow) {
+  void DownloadDecided(base::OnceCallback<void(bool)> callback, bool allow) {
     EXPECT_FALSE(decision_made_);
     decision_made_ = true;
 
@@ -469,11 +469,11 @@
       EXPECT_EQ(expect_allow_, allow);
       if (message_loop_runner_.get())
         message_loop_runner_->Quit();
-      callback.Run(allow);
+      std::move(callback).Run(allow);
       return;
     }
     last_download_allowed_ = allow;
-    callback.Run(allow);
+    std::move(callback).Run(allow);
   }
 
   void Reset() {
diff --git a/chrome/browser/apps/intent_helper/apps_navigation_throttle.cc b/chrome/browser/apps/intent_helper/apps_navigation_throttle.cc
index c4ea139..33fbf22 100644
--- a/chrome/browser/apps/intent_helper/apps_navigation_throttle.cc
+++ b/chrome/browser/apps/intent_helper/apps_navigation_throttle.cc
@@ -10,13 +10,8 @@
 #include "base/bind.h"
 #include "base/feature_list.h"
 #include "base/metrics/histogram_macros.h"
-#include "base/task/post_task.h"
-#include "chrome/browser/apps/intent_helper/apps_navigation_types.h"
 #include "chrome/browser/apps/intent_helper/intent_picker_auto_display_service.h"
 #include "chrome/browser/apps/intent_helper/page_transition_util.h"
-#include "chrome/browser/chromeos/arc/arc_util.h"
-#include "chrome/browser/chromeos/arc/arc_web_contents_data.h"
-#include "chrome/browser/chromeos/arc/intent_helper/arc_intent_picker_app_fetcher.h"
 #include "chrome/browser/extensions/extension_util.h"
 #include "chrome/browser/extensions/menu_manager.h"
 #include "chrome/browser/prerender/prerender_contents.h"
@@ -26,10 +21,7 @@
 #include "chrome/browser/ui/browser_window.h"
 #include "chrome/browser/ui/extensions/application_launch.h"
 #include "chrome/common/chrome_features.h"
-#include "components/arc/intent_helper/arc_intent_helper_bridge.h"
-#include "components/arc/metrics/arc_metrics_constants.h"
 #include "content/public/browser/browser_context.h"
-#include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/navigation_handle.h"
 #include "content/public/browser/site_instance.h"
@@ -41,30 +33,6 @@
 
 constexpr char kGoogleCom[] = "google.com";
 
-// Removes the flag signaling that the current tab was started via
-// ChromeShellDelegate if the current throttle corresponds to a navigation
-// passing thru different domains or schemes, except if |current_url| has a
-// scheme different than http(s).
-void MaybeRemoveComingFromArcFlag(content::WebContents* web_contents,
-                                  const GURL& previous_url,
-                                  const GURL& current_url) {
-  // Let ArcExternalProtocolDialog handle these cases.
-  if (!current_url.SchemeIsHTTPOrHTTPS())
-    return;
-
-  if (url::Origin::Create(previous_url)
-          .IsSameOriginWith(url::Origin::Create(current_url))) {
-    return;
-  }
-
-  const char* key =
-      arc::ArcWebContentsData::ArcWebContentsData::kArcTransitionFlag;
-  arc::ArcWebContentsData* arc_data =
-      static_cast<arc::ArcWebContentsData*>(web_contents->GetUserData(key));
-  if (arc_data)
-    web_contents->RemoveUserData(key);
-}
-
 // Compares the host name of the referrer and target URL to decide whether
 // the navigation needs to be overridden.
 bool ShouldOverrideUrlLoading(const GURL& previous_url,
@@ -133,33 +101,15 @@
 
 }  // namespace
 
-namespace chromeos {
+namespace apps {
 
 // static
 std::unique_ptr<content::NavigationThrottle>
 AppsNavigationThrottle::MaybeCreate(content::NavigationHandle* handle) {
   content::WebContents* web_contents = handle->GetWebContents();
-  const bool arc_enabled = arc::IsArcPlayStoreEnabledForProfile(
-      Profile::FromBrowserContext(web_contents->GetBrowserContext()));
-
-  // Do not create the throttle if no apps can be installed.
-  if (!arc_enabled && !IsDesktopPwasEnabled())
+  if (!CanCreate(web_contents))
     return nullptr;
-
-  // Do not create the throttle in incognito or for a prerender navigation.
-  if (web_contents->GetBrowserContext()->IsOffTheRecord() ||
-      prerender::PrerenderContents::FromWebContents(web_contents) != nullptr) {
-    return nullptr;
-  }
-
-  // Do not create the throttle if there is no browser for the WebContents or we
-  // are already in an app browser. The former can happen if an initial
-  // navigation is reparented into a new app browser instance.
-  Browser* browser = chrome::FindBrowserWithWebContents(web_contents);
-  if (!browser || browser->is_app())
-    return nullptr;
-
-  return std::make_unique<AppsNavigationThrottle>(handle, arc_enabled);
+  return std::make_unique<AppsNavigationThrottle>(handle);
 }
 
 // static
@@ -167,11 +117,12 @@
     content::WebContents* web_contents,
     IntentPickerAutoDisplayService* ui_auto_display_service,
     const GURL& url) {
-  arc::ArcIntentPickerAppFetcher::GetArcAppsForPicker(
-      web_contents, url,
-      base::BindOnce(
-          &AppsNavigationThrottle::FindPwaForUrlAndShowIntentPickerForApps,
-          web_contents, ui_auto_display_service, url));
+  std::vector<IntentPickerAppInfo> apps = FindPwaForUrl(web_contents, url, {});
+
+  ShowIntentPickerBubbleForAppsImpl(
+      web_contents, std::move(apps),
+      base::BindOnce(&OnIntentPickerClosed, web_contents,
+                     ui_auto_display_service, url));
 }
 
 // static
@@ -197,24 +148,7 @@
         ReparentWebContentsIntoAppBrowser(web_contents, extension);
       }
       break;
-    case apps::mojom::AppType::kArc:
-      if (arc::ArcIntentPickerAppFetcher::MaybeLaunchOrPersistArcApp(
-              url, launch_name, should_launch_app, should_persist)) {
-        CloseOrGoBack(web_contents);
-      } else {
-        close_reason = IntentPickerCloseReason::ERROR;
-      }
-      break;
     case apps::mojom::AppType::kUnknown:
-      // TODO(crbug.com/826982): This workaround can be removed when preferences
-      // are no longer persisted within the ARC container, it was necessary
-      // since chrome browser is neither a PWA or ARC app.
-      if (close_reason == IntentPickerCloseReason::STAY_IN_CHROME &&
-          should_persist) {
-        arc::ArcIntentPickerAppFetcher::MaybeLaunchOrPersistArcApp(
-            url, launch_name, /*should_launch_app=*/false,
-            /*should_persist=*/true);
-      }
       // We reach here if the picker was closed without an app being chosen,
       // e.g. due to the tab being closed. Keep count of this scenario so we can
       // stop the UI from showing after 2+ dismissals.
@@ -223,6 +157,7 @@
           ui_auto_display_service->IncrementCounter(url);
       }
       break;
+    case apps::mojom::AppType::kArc:
     case apps::mojom::AppType::kBuiltIn:
     case apps::mojom::AppType::kCrostini:
     case apps::mojom::AppType::kExtension:
@@ -243,13 +178,6 @@
 
   UMA_HISTOGRAM_ENUMERATION("ChromeOS.Apps.IntentPickerDestinationPlatform",
                             platform);
-
-  if (app_type == apps::mojom::AppType::kArc &&
-      (close_reason == IntentPickerCloseReason::PREFERRED_APP_FOUND ||
-       close_reason == IntentPickerCloseReason::OPEN_APP)) {
-    UMA_HISTOGRAM_ENUMERATION("Arc.UserInteraction",
-                              arc::UserInteractionType::APP_STARTED_FROM_LINK);
-  }
 }
 
 // static
@@ -259,16 +187,32 @@
   return ShouldOverrideUrlLoading(previous_url, current_url);
 }
 
+// static
+void AppsNavigationThrottle::ShowIntentPickerBubbleForAppsImpl(
+    content::WebContents* web_contents,
+    std::vector<IntentPickerAppInfo> apps,
+    IntentPickerResponse callback) {
+  if (apps.empty())
+    return;
+
+  // It should be safe to bind |web_contents| since closing the current tab will
+  // close the intent picker and run the callback prior to the WebContents being
+  // deallocated.
+  Browser* browser = chrome::FindBrowserWithWebContents(web_contents);
+  if (!browser)
+    return;
+  browser->window()->ShowIntentPickerBubble(std::move(apps),
+                                            /*disable_stay_in_chrome=*/false,
+                                            std::move(callback));
+}
+
 AppsNavigationThrottle::AppsNavigationThrottle(
-    content::NavigationHandle* navigation_handle,
-    bool arc_enabled)
+    content::NavigationHandle* navigation_handle)
     : content::NavigationThrottle(navigation_handle),
-      arc_enabled_(arc_enabled),
       ui_displayed_(false),
       ui_auto_display_service_(
           IntentPickerAutoDisplayService::Get(Profile::FromBrowserContext(
-              navigation_handle->GetWebContents()->GetBrowserContext()))),
-      weak_factory_(this) {
+              navigation_handle->GetWebContents()->GetBrowserContext()))) {
   // |ui_auto_display_service_| can be null iff the call is coming from
   // IntentPickerView. Since the pointer to our service is never modified
   // (in case it is successfully created here) this check covers all the
@@ -308,6 +252,28 @@
 }
 
 // static
+bool AppsNavigationThrottle::CanCreate(content::WebContents* web_contents) {
+  // Do not create the throttle if no apps can be installed.
+  if (!IsDesktopPwasEnabled())
+    return false;
+
+  // Do not create the throttle in incognito or for a prerender navigation.
+  if (web_contents->GetBrowserContext()->IsOffTheRecord() ||
+      prerender::PrerenderContents::FromWebContents(web_contents) != nullptr) {
+    return false;
+  }
+
+  // Do not create the throttle if there is no browser for the WebContents or we
+  // are already in an app browser. The former can happen if an initial
+  // navigation is reparented into a new app browser instance.
+  Browser* browser = chrome::FindBrowserWithWebContents(web_contents);
+  if (!browser || browser->is_app())
+    return false;
+
+  return true;
+}
+
+// static
 AppsNavigationThrottle::Platform AppsNavigationThrottle::GetDestinationPlatform(
     const std::string& selected_launch_name,
     PickerAction picker_action) {
@@ -317,74 +283,22 @@
       return Platform::ARC;
     case PickerAction::PWA_APP_PRESSED:
       return Platform::PWA;
-    case PickerAction::ERROR:
+    case PickerAction::PICKER_ERROR:
     case PickerAction::DIALOG_DEACTIVATED:
     case PickerAction::CHROME_PRESSED:
     case PickerAction::CHROME_PREFERRED_PRESSED:
       return Platform::CHROME;
     case PickerAction::PREFERRED_ACTIVITY_FOUND:
-      return arc::ArcIntentHelperBridge::IsIntentHelperPackage(
-                 selected_launch_name)
-                 ? Platform::CHROME
-                 : Platform::ARC;
     case PickerAction::OBSOLETE_ALWAYS_PRESSED:
     case PickerAction::OBSOLETE_JUST_ONCE_PRESSED:
     case PickerAction::INVALID:
-      NOTREACHED();
+      break;
   }
   NOTREACHED();
   return Platform::ARC;
 }
 
 // static
-AppsNavigationThrottle::PickerAction AppsNavigationThrottle::GetPickerAction(
-    apps::mojom::AppType app_type,
-    IntentPickerCloseReason close_reason,
-    bool should_persist) {
-  switch (close_reason) {
-    case IntentPickerCloseReason::ERROR:
-      return PickerAction::ERROR;
-    case IntentPickerCloseReason::DIALOG_DEACTIVATED:
-      return PickerAction::DIALOG_DEACTIVATED;
-    case IntentPickerCloseReason::PREFERRED_APP_FOUND:
-      return PickerAction::PREFERRED_ACTIVITY_FOUND;
-    case IntentPickerCloseReason::STAY_IN_CHROME:
-      return should_persist ? PickerAction::CHROME_PREFERRED_PRESSED
-                            : PickerAction::CHROME_PRESSED;
-    case IntentPickerCloseReason::OPEN_APP:
-      switch (app_type) {
-        case apps::mojom::AppType::kUnknown:
-          return PickerAction::INVALID;
-        case apps::mojom::AppType::kArc:
-          return should_persist ? PickerAction::ARC_APP_PREFERRED_PRESSED
-                                : PickerAction::ARC_APP_PRESSED;
-        case apps::mojom::AppType::kWeb:
-          return PickerAction::PWA_APP_PRESSED;
-        case apps::mojom::AppType::kBuiltIn:
-        case apps::mojom::AppType::kCrostini:
-        case apps::mojom::AppType::kExtension:
-          NOTREACHED();
-      }
-  }
-
-  NOTREACHED();
-  return PickerAction::INVALID;
-}
-
-// static
-void AppsNavigationThrottle::FindPwaForUrlAndShowIntentPickerForApps(
-    content::WebContents* web_contents,
-    IntentPickerAutoDisplayService* ui_auto_display_service,
-    const GURL& url,
-    std::vector<IntentPickerAppInfo> apps) {
-  std::vector<IntentPickerAppInfo> apps_for_picker =
-      FindPwaForUrl(web_contents, url, std::move(apps));
-
-  ShowIntentPickerBubbleForApps(web_contents, ui_auto_display_service, url,
-                                std::move(apps_for_picker));
-}
-
-// static
 std::vector<IntentPickerAppInfo> AppsNavigationThrottle::FindPwaForUrl(
     content::WebContents* web_contents,
     const GURL& url,
@@ -412,29 +326,6 @@
 }
 
 // static
-void AppsNavigationThrottle::ShowIntentPickerBubbleForApps(
-    content::WebContents* web_contents,
-    IntentPickerAutoDisplayService* ui_auto_display_service,
-    const GURL& url,
-    std::vector<IntentPickerAppInfo> apps) {
-  if (apps.empty())
-    return;
-
-  // It should be safe to bind |web_contents| since closing the current tab will
-  // close the intent picker and run the callback prior to the WebContents being
-  // deallocated.
-  Browser* browser = chrome::FindBrowserWithWebContents(web_contents);
-  if (!browser)
-    return;
-
-  browser->window()->ShowIntentPickerBubble(
-      std::move(apps),
-      /*disable_stay_in_chrome=*/false,
-      base::BindOnce(&AppsNavigationThrottle::OnIntentPickerClosed,
-                     web_contents, ui_auto_display_service, url));
-}
-
-// static
 void AppsNavigationThrottle::CloseOrGoBack(content::WebContents* web_contents) {
   DCHECK(web_contents);
   if (web_contents->GetController().CanGoBack())
@@ -443,54 +334,75 @@
     web_contents->ClosePage();
 }
 
-void AppsNavigationThrottle::CancelNavigation() {
-  content::WebContents* web_contents = navigation_handle()->GetWebContents();
-  if (web_contents && web_contents->GetController().IsInitialNavigation()) {
-    // Workaround for b/79167225, closing |web_contents| here may be dangerous.
-    base::PostTaskWithTraits(FROM_HERE, {content::BrowserThread::UI},
-                             base::BindOnce(&AppsNavigationThrottle::CloseTab,
-                                            weak_factory_.GetWeakPtr()));
-  } else {
-    CancelDeferredNavigation(content::NavigationThrottle::CANCEL_AND_IGNORE);
-  }
+bool AppsNavigationThrottle::ShouldDeferNavigationForArc(
+    content::NavigationHandle* handle) {
+  return false;
 }
 
-void AppsNavigationThrottle::OnDeferredNavigationProcessed(
-    AppsNavigationAction action,
+void AppsNavigationThrottle::ShowIntentPickerBubbleForApps(
+    content::WebContents* web_contents,
+    IntentPickerAutoDisplayService* ui_auto_display_service,
+    const GURL& url,
     std::vector<IntentPickerAppInfo> apps) {
-  if (action == AppsNavigationAction::CANCEL) {
-    // We found a preferred ARC app to open; cancel the navigation and don't do
-    // anything else.
-    CancelNavigation();
-    return;
+  ShowIntentPickerBubbleForAppsImpl(
+      web_contents, std::move(apps),
+      base::BindOnce(&OnIntentPickerClosed, web_contents,
+                     ui_auto_display_service, url));
+}
+
+bool AppsNavigationThrottle::ShouldAutoDisplayUi(
+    const std::vector<IntentPickerAppInfo>& apps_for_picker,
+    content::WebContents* web_contents,
+    const GURL& url) {
+  if (apps_for_picker.empty())
+    return false;
+
+  // Check if all the app candidates are PWAs.
+  bool only_pwa_apps =
+      std::all_of(apps_for_picker.begin(), apps_for_picker.end(),
+                  [](const IntentPickerAppInfo& app_info) {
+                    return app_info.type == apps::mojom::AppType::kWeb;
+                  });
+  if (only_pwa_apps)
+    return false;
+
+  DCHECK(ui_auto_display_service_);
+  return ui_auto_display_service_->ShouldAutoDisplayUi(url);
+}
+
+// static
+AppsNavigationThrottle::PickerAction AppsNavigationThrottle::GetPickerAction(
+    apps::mojom::AppType app_type,
+    IntentPickerCloseReason close_reason,
+    bool should_persist) {
+  switch (close_reason) {
+    case IntentPickerCloseReason::PICKER_ERROR:
+      return PickerAction::PICKER_ERROR;
+    case IntentPickerCloseReason::DIALOG_DEACTIVATED:
+      return PickerAction::DIALOG_DEACTIVATED;
+    case IntentPickerCloseReason::PREFERRED_APP_FOUND:
+      return PickerAction::PREFERRED_ACTIVITY_FOUND;
+    case IntentPickerCloseReason::STAY_IN_CHROME:
+      return should_persist ? PickerAction::CHROME_PREFERRED_PRESSED
+                            : PickerAction::CHROME_PRESSED;
+    case IntentPickerCloseReason::OPEN_APP:
+      switch (app_type) {
+        case apps::mojom::AppType::kUnknown:
+          return PickerAction::INVALID;
+        case apps::mojom::AppType::kArc:
+          return should_persist ? PickerAction::ARC_APP_PREFERRED_PRESSED
+                                : PickerAction::ARC_APP_PRESSED;
+        case apps::mojom::AppType::kWeb:
+          return PickerAction::PWA_APP_PRESSED;
+        case apps::mojom::AppType::kBuiltIn:
+        case apps::mojom::AppType::kCrostini:
+        case apps::mojom::AppType::kExtension:
+          NOTREACHED();
+      }
   }
 
-  content::NavigationHandle* handle = navigation_handle();
-  content::WebContents* web_contents = handle->GetWebContents();
-  const GURL& url = handle->GetURL();
-
-  std::vector<IntentPickerAppInfo> apps_for_picker =
-      FindPwaForUrl(web_contents, url, std::move(apps));
-
-  // If we only have PWAs in the app list, do not show the intent picker.
-  // Instead just show the omnibox icon. This is to reduce annoyance to users
-  // until "Remember my choice" is available for desktop PWAs.
-  // TODO(crbug.com/826982): show the intent picker when the app registry is
-  // available to persist "Remember my choice" for PWAs.
-  if (ShouldAutoDisplayUi(apps_for_picker, web_contents, url)) {
-    ShowIntentPickerBubbleForApps(web_contents, ui_auto_display_service_, url,
-                                  std::move(apps_for_picker));
-  } else {
-    ui_displayed_ = false;
-    Browser* browser = chrome::FindBrowserWithWebContents(web_contents);
-    // If there were any candidates, show the intent picker icon in the omnibox
-    // so the user can manually pick if they wish.
-    if (browser && !apps_for_picker.empty())
-      browser->window()->SetIntentPickerViewVisibility(/*visible=*/true);
-  }
-
-  // We are about to resume the navigation, which may destroy this object.
-  Resume();
+  NOTREACHED();
+  return PickerAction::INVALID;
 }
 
 content::NavigationThrottle::ThrottleCheckResult
@@ -532,11 +444,7 @@
   if (!ShouldOverrideUrlLoading(starting_url_, url))
     return content::NavigationThrottle::PROCEED;
 
-  if (arc_enabled_ &&
-      arc::ArcIntentPickerAppFetcher::WillGetArcAppsForNavigation(
-          handle,
-          base::BindOnce(&AppsNavigationThrottle::OnDeferredNavigationProcessed,
-                         weak_factory_.GetWeakPtr()))) {
+  if (ShouldDeferNavigationForArc(handle)) {
     // Handling is now deferred to ArcIntentPickerAppFetcher, which
     // asynchronously queries ARC for apps, and runs
     // OnDeferredNavigationProcessed() with an action based on whether an
@@ -563,31 +471,4 @@
   return content::NavigationThrottle::PROCEED;
 }
 
-void AppsNavigationThrottle::CloseTab() {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  content::WebContents* web_contents = navigation_handle()->GetWebContents();
-  if (web_contents)
-    web_contents->ClosePage();
-}
-
-bool AppsNavigationThrottle::ShouldAutoDisplayUi(
-    const std::vector<IntentPickerAppInfo>& apps_for_picker,
-    content::WebContents* web_contents,
-    const GURL& url) {
-  if (apps_for_picker.empty())
-    return false;
-
-  // Check if all the app candidates are PWAs.
-  bool only_pwa_apps =
-      std::all_of(apps_for_picker.begin(), apps_for_picker.end(),
-                  [](const IntentPickerAppInfo& app_info) {
-                    return app_info.type == apps::mojom::AppType::kWeb;
-                  });
-  if (only_pwa_apps)
-    return false;
-
-  DCHECK(ui_auto_display_service_);
-  return ui_auto_display_service_->ShouldAutoDisplayUi(url);
-}
-
-}  // namespace chromeos
+}  // namespace apps
diff --git a/chrome/browser/apps/intent_helper/apps_navigation_throttle.h b/chrome/browser/apps/intent_helper/apps_navigation_throttle.h
index 64d59b6..e2912991 100644
--- a/chrome/browser/apps/intent_helper/apps_navigation_throttle.h
+++ b/chrome/browser/apps/intent_helper/apps_navigation_throttle.h
@@ -13,6 +13,7 @@
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
+#include "chrome/browser/apps/intent_helper/apps_navigation_types.h"
 #include "chrome/services/app_service/public/mojom/types.mojom.h"
 #include "content/public/browser/navigation_throttle.h"
 #include "url/gurl.h"
@@ -24,11 +25,7 @@
 
 class IntentPickerAutoDisplayService;
 
-namespace chromeos {
-
-enum class AppsNavigationAction;
-enum class IntentPickerCloseReason;
-struct IntentPickerAppInfo;
+namespace apps {
 
 // Allows navigation to be routed to an installed app on Chrome OS, and provides
 // a static method for showing an intent picker for the current URL to display
@@ -75,8 +72,12 @@
   static bool ShouldOverrideUrlLoadingForTesting(const GURL& previous_url,
                                                  const GURL& current_url);
 
-  AppsNavigationThrottle(content::NavigationHandle* navigation_handle,
-                         bool arc_enabled);
+  static void ShowIntentPickerBubbleForAppsImpl(
+      content::WebContents* web_contents,
+      std::vector<IntentPickerAppInfo> apps,
+      IntentPickerResponse callback);
+
+  explicit AppsNavigationThrottle(content::NavigationHandle* navigation_handle);
   ~AppsNavigationThrottle() override;
 
   // content::NavigationHandle overrides
@@ -85,16 +86,17 @@
   content::NavigationThrottle::ThrottleCheckResult WillRedirectRequest()
       override;
 
- private:
-  FRIEND_TEST_ALL_PREFIXES(AppsNavigationThrottleTest, TestGetPickerAction);
-  FRIEND_TEST_ALL_PREFIXES(AppsNavigationThrottleTest,
-                           TestGetDestinationPlatform);
+  // Overridden for Chrome OS to allow asynchronous handling of ARC apps.
+  virtual void OnDeferredNavigationProcessed(
+      AppsNavigationAction action,
+      std::vector<IntentPickerAppInfo> apps) {}
 
+ protected:
   // These enums are used to define the buckets for an enumerated UMA histogram
   // and need to be synced with histograms.xml. This enum class should also be
   // treated as append-only.
   enum class PickerAction : int {
-    ERROR = 0,
+    PICKER_ERROR = 0,
     // DIALOG_DEACTIVATED keeps track of the user dismissing the UI via clicking
     // the close button or clicking outside of the IntentPickerBubbleView
     // surface. As with CHROME_PRESSED, the user stays in Chrome, however we
@@ -128,6 +130,9 @@
     kMaxValue = PWA,
   };
 
+  // Checks whether we can create the apps_navigation_throttle.
+  static bool CanCreate(content::WebContents* web_contents);
+
   // Determines the destination of the current navigation. We know that if the
   // |picker_action| is either ERROR or DIALOG_DEACTIVATED the navigation MUST
   // stay in Chrome, and when |picker_action| is PWA_APP_PRESSED the navigation
@@ -137,18 +142,6 @@
       const std::string& selected_launch_name,
       PickerAction picker_action);
 
-  // Converts the provided |app_type|, |close_reason| and |should_persist|
-  // boolean to a PickerAction value for recording in UMA.
-  static PickerAction GetPickerAction(apps::mojom::AppType app_type,
-                                      IntentPickerCloseReason close_reason,
-                                      bool should_persist);
-
-  static void FindPwaForUrlAndShowIntentPickerForApps(
-      content::WebContents* web_contents,
-      IntentPickerAutoDisplayService* ui_auto_display_service,
-      const GURL& url,
-      std::vector<IntentPickerAppInfo> apps);
-
   // If an installed PWA exists that can handle |url|, prepends it to |apps| and
   // returns the new list.
   static std::vector<IntentPickerAppInfo> FindPwaForUrl(
@@ -156,27 +149,21 @@
       const GURL& url,
       std::vector<IntentPickerAppInfo> apps);
 
-  static void ShowIntentPickerBubbleForApps(
+  static void CloseOrGoBack(content::WebContents* web_contents);
+
+  // Overridden for Chrome OS to allow arc handling.
+  virtual void MaybeRemoveComingFromArcFlag(content::WebContents* web_contents,
+                                            const GURL& previous_url,
+                                            const GURL& current_url) {}
+
+  virtual bool ShouldDeferNavigationForArc(content::NavigationHandle* handle);
+
+  virtual void ShowIntentPickerBubbleForApps(
       content::WebContents* web_contents,
       IntentPickerAutoDisplayService* ui_auto_display_service,
       const GURL& url,
       std::vector<IntentPickerAppInfo> apps);
 
-  static void CloseOrGoBack(content::WebContents* web_contents);
-
-  void CancelNavigation();
-
-  content::NavigationThrottle::ThrottleCheckResult HandleRequest();
-
-  // Passed as a callback to allow ARC-specific code to asynchronously inform
-  // this object of the apps which can handle this URL, and optionally request
-  // that the navigation be completely cancelled (e.g. if a preferred app has
-  // been opened).
-  void OnDeferredNavigationProcessed(AppsNavigationAction action,
-                                     std::vector<IntentPickerAppInfo> apps);
-
-  void CloseTab();
-
   // Whether or not the intent picker UI should be displayed without the user
   // clicking in the omnibox's icon.
   bool ShouldAutoDisplayUi(
@@ -184,12 +171,6 @@
       content::WebContents* web_contents,
       const GURL& url);
 
-  // A reference to the starting GURL.
-  GURL starting_url_;
-
-  // True if ARC is enabled, false otherwise.
-  const bool arc_enabled_;
-
   // Keeps track of whether we already shown the UI or preferred app. Since
   // AppsNavigationThrottle cannot wait for the user (due to the non-blocking
   // nature of the feature) the best we can do is check if we launched a
@@ -201,11 +182,25 @@
   // UI.
   IntentPickerAutoDisplayService* ui_auto_display_service_;
 
-  base::WeakPtrFactory<AppsNavigationThrottle> weak_factory_;
+ private:
+  FRIEND_TEST_ALL_PREFIXES(AppsNavigationThrottleTest, TestGetPickerAction);
+  FRIEND_TEST_ALL_PREFIXES(AppsNavigationThrottleTest,
+                           TestGetDestinationPlatform);
+
+  // Converts the provided |app_type|, |close_reason| and |should_persist|
+  // boolean to a PickerAction value for recording in UMA.
+  static PickerAction GetPickerAction(apps::mojom::AppType app_type,
+                                      IntentPickerCloseReason close_reason,
+                                      bool should_persist);
+
+  content::NavigationThrottle::ThrottleCheckResult HandleRequest();
+
+  // A reference to the starting GURL.
+  GURL starting_url_;
 
   DISALLOW_COPY_AND_ASSIGN(AppsNavigationThrottle);
 };
 
-}  // namespace chromeos
+}  // namespace apps
 
 #endif  // CHROME_BROWSER_APPS_INTENT_HELPER_APPS_NAVIGATION_THROTTLE_H_
diff --git a/chrome/browser/apps/intent_helper/apps_navigation_throttle_unittest.cc b/chrome/browser/apps/intent_helper/apps_navigation_throttle_unittest.cc
index 524ceaf..6f1235b 100644
--- a/chrome/browser/apps/intent_helper/apps_navigation_throttle_unittest.cc
+++ b/chrome/browser/apps/intent_helper/apps_navigation_throttle_unittest.cc
@@ -4,11 +4,10 @@
 
 #include "chrome/browser/apps/intent_helper/apps_navigation_throttle.h"
 #include "chrome/browser/apps/intent_helper/apps_navigation_types.h"
-#include "components/arc/intent_helper/arc_intent_helper_bridge.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
 
-namespace chromeos {
+namespace apps {
 
 TEST(AppsNavigationThrottleTest, TestShouldOverrideUrlLoading) {
   // A navigation within the same domain shouldn't be overridden except if the
@@ -85,26 +84,30 @@
 }
 
 TEST(AppsNavigationThrottleTest, TestGetPickerAction) {
-  // Expect PickerAction::ERROR if the close_reason is ERROR.
-  EXPECT_EQ(AppsNavigationThrottle::PickerAction::ERROR,
-            AppsNavigationThrottle::GetPickerAction(
-                apps::mojom::AppType::kUnknown, IntentPickerCloseReason::ERROR,
-                /*should_persist=*/true));
+  // Expect PickerAction::PICKER_ERROR if the close_reason is ERROR.
+  EXPECT_EQ(
+      AppsNavigationThrottle::PickerAction::PICKER_ERROR,
+      AppsNavigationThrottle::GetPickerAction(
+          apps::mojom::AppType::kUnknown, IntentPickerCloseReason::PICKER_ERROR,
+          /*should_persist=*/true));
 
-  EXPECT_EQ(AppsNavigationThrottle::PickerAction::ERROR,
-            AppsNavigationThrottle::GetPickerAction(
-                apps::mojom::AppType::kArc, IntentPickerCloseReason::ERROR,
-                /*should_persist=*/true));
+  EXPECT_EQ(
+      AppsNavigationThrottle::PickerAction::PICKER_ERROR,
+      AppsNavigationThrottle::GetPickerAction(
+          apps::mojom::AppType::kArc, IntentPickerCloseReason::PICKER_ERROR,
+          /*should_persist=*/true));
 
-  EXPECT_EQ(AppsNavigationThrottle::PickerAction::ERROR,
-            AppsNavigationThrottle::GetPickerAction(
-                apps::mojom::AppType::kUnknown, IntentPickerCloseReason::ERROR,
-                /*should_persist=*/false));
+  EXPECT_EQ(
+      AppsNavigationThrottle::PickerAction::PICKER_ERROR,
+      AppsNavigationThrottle::GetPickerAction(
+          apps::mojom::AppType::kUnknown, IntentPickerCloseReason::PICKER_ERROR,
+          /*should_persist=*/false));
 
-  EXPECT_EQ(AppsNavigationThrottle::PickerAction::ERROR,
-            AppsNavigationThrottle::GetPickerAction(
-                apps::mojom::AppType::kArc, IntentPickerCloseReason::ERROR,
-                /*should_persist=*/false));
+  EXPECT_EQ(
+      AppsNavigationThrottle::PickerAction::PICKER_ERROR,
+      AppsNavigationThrottle::GetPickerAction(
+          apps::mojom::AppType::kArc, IntentPickerCloseReason::PICKER_ERROR,
+          /*should_persist=*/false));
 
   // Expect PickerAction::DIALOG_DEACTIVATED if the close_reason is
   // DIALOG_DEACTIVATED.
@@ -210,51 +213,36 @@
 }
 
 TEST(AppsNavigationThrottleTest, TestGetDestinationPlatform) {
-  const std::string chrome_app =
-      arc::ArcIntentHelperBridge::kArcIntentHelperPackageName;
-  const std::string non_chrome_app = "fake_package";
+  const std::string app_id = "fake_package";
 
   // When the PickerAction is either ERROR or DIALOG_DEACTIVATED we MUST stay in
   // Chrome not taking into account the selected_app_package.
   EXPECT_EQ(AppsNavigationThrottle::Platform::CHROME,
             AppsNavigationThrottle::GetDestinationPlatform(
-                chrome_app, AppsNavigationThrottle::PickerAction::ERROR));
+                app_id, AppsNavigationThrottle::PickerAction::PICKER_ERROR));
   EXPECT_EQ(AppsNavigationThrottle::Platform::CHROME,
             AppsNavigationThrottle::GetDestinationPlatform(
-                non_chrome_app, AppsNavigationThrottle::PickerAction::ERROR));
-  EXPECT_EQ(AppsNavigationThrottle::Platform::CHROME,
-            AppsNavigationThrottle::GetDestinationPlatform(
-                chrome_app,
-                AppsNavigationThrottle::PickerAction::DIALOG_DEACTIVATED));
-  EXPECT_EQ(AppsNavigationThrottle::Platform::CHROME,
-            AppsNavigationThrottle::GetDestinationPlatform(
-                non_chrome_app,
-                AppsNavigationThrottle::PickerAction::DIALOG_DEACTIVATED));
-
-  // When the PickerAction is PWA_APP_PRESSED, always expect the platform to be
-  // PWA.
-  EXPECT_EQ(
-      AppsNavigationThrottle::Platform::PWA,
-      AppsNavigationThrottle::GetDestinationPlatform(
-          chrome_app, AppsNavigationThrottle::PickerAction::PWA_APP_PRESSED));
-
-  EXPECT_EQ(AppsNavigationThrottle::Platform::PWA,
-            AppsNavigationThrottle::GetDestinationPlatform(
-                non_chrome_app,
-                AppsNavigationThrottle::PickerAction::PWA_APP_PRESSED));
-
-  // Under any other PickerAction, stay in Chrome only if the package is Chrome.
-  // Otherwise redirect to ARC.
+                app_id, AppsNavigationThrottle::PickerAction::PICKER_ERROR));
   EXPECT_EQ(
       AppsNavigationThrottle::Platform::CHROME,
       AppsNavigationThrottle::GetDestinationPlatform(
-          chrome_app,
-          AppsNavigationThrottle::PickerAction::PREFERRED_ACTIVITY_FOUND));
+          app_id, AppsNavigationThrottle::PickerAction::DIALOG_DEACTIVATED));
   EXPECT_EQ(
-      AppsNavigationThrottle::Platform::ARC,
+      AppsNavigationThrottle::Platform::CHROME,
       AppsNavigationThrottle::GetDestinationPlatform(
-          non_chrome_app,
-          AppsNavigationThrottle::PickerAction::PREFERRED_ACTIVITY_FOUND));
+          app_id, AppsNavigationThrottle::PickerAction::DIALOG_DEACTIVATED));
+
+  // When the PickerAction is PWA_APP_PRESSED, always expect the platform to be
+  // PWA.
+  EXPECT_EQ(AppsNavigationThrottle::Platform::PWA,
+            AppsNavigationThrottle::GetDestinationPlatform(
+                app_id, AppsNavigationThrottle::PickerAction::PWA_APP_PRESSED));
+
+  EXPECT_EQ(AppsNavigationThrottle::Platform::PWA,
+            AppsNavigationThrottle::GetDestinationPlatform(
+                app_id, AppsNavigationThrottle::PickerAction::PWA_APP_PRESSED));
+
+  // TODO(crbug.com/939205): restore testing ARC picker redirection
 }
 
-}  // namespace chromeos
+}  // namespace apps
diff --git a/chrome/browser/apps/intent_helper/apps_navigation_types.cc b/chrome/browser/apps/intent_helper/apps_navigation_types.cc
index 98ec293..52a1169 100644
--- a/chrome/browser/apps/intent_helper/apps_navigation_types.cc
+++ b/chrome/browser/apps/intent_helper/apps_navigation_types.cc
@@ -4,7 +4,7 @@
 
 #include "chrome/browser/apps/intent_helper/apps_navigation_types.h"
 
-namespace chromeos {
+namespace apps {
 
 IntentPickerAppInfo::IntentPickerAppInfo(apps::mojom::AppType type,
                                          const gfx::Image& icon,
@@ -20,4 +20,4 @@
 IntentPickerAppInfo& IntentPickerAppInfo::operator=(
     IntentPickerAppInfo&& other) = default;
 
-}  // namespace chromeos
+}  // namespace apps
diff --git a/chrome/browser/apps/intent_helper/apps_navigation_types.h b/chrome/browser/apps/intent_helper/apps_navigation_types.h
index fff9e55e..a6faa72e 100644
--- a/chrome/browser/apps/intent_helper/apps_navigation_types.h
+++ b/chrome/browser/apps/intent_helper/apps_navigation_types.h
@@ -13,12 +13,12 @@
 #include "chrome/services/app_service/public/mojom/types.mojom.h"
 #include "ui/gfx/image/image.h"
 
-namespace chromeos {
+namespace apps {
 
 // Describes the possible ways for the intent picker to be closed.
 enum class IntentPickerCloseReason {
   // There was an error in showing the intent picker.
-  ERROR,
+  PICKER_ERROR,
 
   // The user dismissed the picker without making a choice.
   DIALOG_DEACTIVATED,
@@ -96,7 +96,7 @@
 using GetAppsCallback =
     base::OnceCallback<void(std::vector<IntentPickerAppInfo> apps)>;
 
-}  // namespace chromeos
+}  // namespace apps
 
 // Callback to pass the launch name and type of the app selected by the user,
 // along with the reason why the Bubble was closed and whether the decision
@@ -105,7 +105,7 @@
 using IntentPickerResponse =
     base::OnceCallback<void(const std::string& launch_name,
                             apps::mojom::AppType app_type,
-                            chromeos::IntentPickerCloseReason close_reason,
+                            apps::IntentPickerCloseReason close_reason,
                             bool should_persist)>;
 
 #endif  // CHROME_BROWSER_APPS_INTENT_HELPER_APPS_NAVIGATION_TYPES_H_
diff --git a/chrome/browser/apps/intent_helper/intent_picker_controller.cc b/chrome/browser/apps/intent_helper/intent_picker_controller.cc
index 28a8fe5..97aa75b 100644
--- a/chrome/browser/apps/intent_helper/intent_picker_controller.cc
+++ b/chrome/browser/apps/intent_helper/intent_picker_controller.cc
@@ -8,7 +8,7 @@
 #include "chrome/browser/ui/browser_window.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 
-namespace arc {
+namespace apps {
 
 IntentPickerController::IntentPickerController(Browser* browser)
     : browser_(browser) {
@@ -34,4 +34,4 @@
   browser_->window()->SetIntentPickerViewVisibility(/*visible=*/false);
 }
 
-}  // namespace arc
+}  // namespace apps
diff --git a/chrome/browser/apps/intent_helper/intent_picker_controller.h b/chrome/browser/apps/intent_helper/intent_picker_controller.h
index e66b6fe..865ef514 100644
--- a/chrome/browser/apps/intent_helper/intent_picker_controller.h
+++ b/chrome/browser/apps/intent_helper/intent_picker_controller.h
@@ -10,7 +10,7 @@
 
 class Browser;
 
-namespace arc {
+namespace apps {
 
 // Controls the visibility of IntentPickerView by watching whenever the current
 // tab is switched. An object of this class is owned by IntentPickerView.
@@ -33,6 +33,6 @@
   DISALLOW_COPY_AND_ASSIGN(IntentPickerController);
 };
 
-}  // namespace arc
+}  // namespace apps
 
 #endif  // CHROME_BROWSER_APPS_INTENT_HELPER_INTENT_PICKER_CONTROLLER_H_
diff --git a/chrome/browser/apps/intent_helper/page_transition_util.cc b/chrome/browser/apps/intent_helper/page_transition_util.cc
index d95ef801..1d2e809 100644
--- a/chrome/browser/apps/intent_helper/page_transition_util.cc
+++ b/chrome/browser/apps/intent_helper/page_transition_util.cc
@@ -4,7 +4,7 @@
 
 #include "chrome/browser/apps/intent_helper/page_transition_util.h"
 
-namespace chromeos {
+namespace apps {
 
 bool ShouldIgnoreNavigation(ui::PageTransition page_transition,
                             bool allow_form_submit,
@@ -42,4 +42,4 @@
   return ui::PageTransitionFromInt(page_transition & ~mask);
 }
 
-}  // namespace chromeos
+}  // namespace apps
diff --git a/chrome/browser/apps/intent_helper/page_transition_util.h b/chrome/browser/apps/intent_helper/page_transition_util.h
index dac775a..a02fe58a 100644
--- a/chrome/browser/apps/intent_helper/page_transition_util.h
+++ b/chrome/browser/apps/intent_helper/page_transition_util.h
@@ -8,7 +8,7 @@
 #include "base/macros.h"
 #include "ui/base/page_transition_types.h"
 
-namespace chromeos {
+namespace apps {
 
 // Returns true if ARC should ignore the navigation with the |page_transition|.
 bool ShouldIgnoreNavigation(ui::PageTransition page_transition,
@@ -19,6 +19,6 @@
 ui::PageTransition MaskOutPageTransition(ui::PageTransition page_transition,
                                          ui::PageTransition mask);
 
-}  // namespace chromeos
+}  // namespace apps
 
 #endif  // CHROME_BROWSER_APPS_INTENT_HELPER_PAGE_TRANSITION_UTIL_H_
diff --git a/chrome/browser/apps/intent_helper/page_transition_util_unittest.cc b/chrome/browser/apps/intent_helper/page_transition_util_unittest.cc
index 53ef5dd..67a7768 100644
--- a/chrome/browser/apps/intent_helper/page_transition_util_unittest.cc
+++ b/chrome/browser/apps/intent_helper/page_transition_util_unittest.cc
@@ -6,7 +6,7 @@
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/base/page_transition_types.h"
 
-namespace chromeos {
+namespace apps {
 
 // Tests that ShouldIgnoreNavigation returns false only for
 // PAGE_TRANSITION_LINK.
@@ -213,4 +213,4 @@
       false, true));
 }
 
-}  // namespace chromeos
+}  // namespace apps
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 0d52998d..7ffb6df 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -377,7 +377,6 @@
 #include "services/video_capture/public/mojom/constants.mojom.h"
 #elif defined(OS_CHROMEOS)
 #include "ash/public/interfaces/constants.mojom.h"
-#include "chrome/browser/apps/intent_helper/apps_navigation_throttle.h"
 #include "chrome/browser/ash_service_registry.h"
 #include "chrome/browser/chromeos/arc/fileapi/arc_content_file_system_backend_delegate.h"
 #include "chrome/browser/chromeos/arc/fileapi/arc_documents_provider_backend_delegate.h"
@@ -457,7 +456,7 @@
 #include "chrome/browser/ui/search/new_tab_page_navigation_throttle.h"
 #include "chrome/common/importer/profile_import.mojom.h"
 #include "components/services/patch/public/interfaces/constants.mojom.h"
-#endif
+#endif  //  !defined(OS_ANDROID)
 
 #if defined(OS_WIN) || defined(OS_MACOSX) || \
     (defined(OS_LINUX) && !defined(OS_CHROMEOS))
@@ -472,6 +471,16 @@
 #include "components/crash/content/browser/crash_handler_host_linux.h"
 #endif
 
+// TODO(crbug.com/939205):  Once the upcoming App Service is available, use a
+// single navigation throttle to display the intent picker on all platforms.
+#if !defined(OS_ANDROID)
+#if defined(OS_CHROMEOS)
+#include "chrome/browser/chromeos/apps/intent_helper/chromeos_apps_navigation_throttle.h"
+#else
+#include "chrome/browser/apps/intent_helper/apps_navigation_throttle.h"
+#endif
+#endif
+
 #if defined(TOOLKIT_VIEWS)
 #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h"
 #endif
@@ -4217,9 +4226,17 @@
         handle->GetURL().SchemeIsHTTPOrHTTPS()) {
       throttles.push_back(MergeSessionNavigationThrottle::Create(handle));
     }
+  }
+#endif
 
+#if !defined(OS_ANDROID)
+  if (base::FeatureList::IsEnabled(features::kIntentPicker)) {
     auto url_to_apps_throttle =
-        chromeos::AppsNavigationThrottle::MaybeCreate(handle);
+#if defined(OS_CHROMEOS)
+        chromeos::ChromeOsAppsNavigationThrottle::MaybeCreate(handle);
+#else
+        apps::AppsNavigationThrottle::MaybeCreate(handle);
+#endif
     if (url_to_apps_throttle)
       throttles.push_back(std::move(url_to_apps_throttle));
   }
@@ -4271,7 +4288,7 @@
 #endif
 
   std::unique_ptr<content::NavigationThrottle>
-      lookalike_url_navigation_throttle =
+      lookalike_url_navigation_throttle = lookalikes::
           LookalikeUrlNavigationThrottle::MaybeCreateNavigationThrottle(handle);
   if (lookalike_url_navigation_throttle)
     throttles.push_back(std::move(lookalike_url_navigation_throttle));
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index e1a3cf9..2922947 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -396,6 +396,8 @@
     "apps/apk_web_app_service.h",
     "apps/apk_web_app_service_factory.cc",
     "apps/apk_web_app_service_factory.h",
+    "apps/intent_helper/chromeos_apps_navigation_throttle.cc",
+    "apps/intent_helper/chromeos_apps_navigation_throttle.h",
     "arc/accessibility/accessibility_node_info_data_wrapper.cc",
     "arc/accessibility/accessibility_node_info_data_wrapper.h",
     "arc/accessibility/accessibility_window_info_data_wrapper.cc",
@@ -1286,6 +1288,8 @@
     "login/screens/network_screen_view.h",
     "login/screens/recommend_apps/recommend_apps_fetcher.cc",
     "login/screens/recommend_apps/recommend_apps_fetcher.h",
+    "login/screens/recommend_apps/recommend_apps_fetcher_impl.cc",
+    "login/screens/recommend_apps/recommend_apps_fetcher_impl.h",
     "login/screens/recommend_apps_screen.cc",
     "login/screens/recommend_apps_screen.h",
     "login/screens/recommend_apps_screen_view.h",
diff --git a/chrome/browser/chromeos/apps/intent_helper/chromeos_apps_navigation_throttle.cc b/chrome/browser/chromeos/apps/intent_helper/chromeos_apps_navigation_throttle.cc
new file mode 100644
index 0000000..6d3089ff
--- /dev/null
+++ b/chrome/browser/chromeos/apps/intent_helper/chromeos_apps_navigation_throttle.cc
@@ -0,0 +1,272 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/apps/intent_helper/chromeos_apps_navigation_throttle.h"
+
+#include <utility>
+
+#include "base/bind.h"
+#include "base/metrics/histogram_macros.h"
+#include "base/task/post_task.h"
+#include "chrome/browser/apps/intent_helper/apps_navigation_types.h"
+#include "chrome/browser/apps/intent_helper/intent_picker_auto_display_service.h"
+#include "chrome/browser/chromeos/arc/arc_util.h"
+#include "chrome/browser/chromeos/arc/arc_web_contents_data.h"
+#include "chrome/browser/chromeos/arc/intent_helper/arc_intent_picker_app_fetcher.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_finder.h"
+#include "chrome/browser/ui/browser_window.h"
+#include "components/arc/intent_helper/arc_intent_helper_bridge.h"
+#include "components/arc/metrics/arc_metrics_constants.h"
+#include "content/public/browser/browser_context.h"
+#include "content/public/browser/browser_task_traits.h"
+#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/navigation_handle.h"
+#include "content/public/browser/site_instance.h"
+#include "content/public/browser/web_contents.h"
+#include "url/origin.h"
+
+namespace chromeos {
+
+// static
+std::unique_ptr<apps::AppsNavigationThrottle>
+ChromeOsAppsNavigationThrottle::MaybeCreate(content::NavigationHandle* handle) {
+  content::WebContents* web_contents = handle->GetWebContents();
+  const bool arc_enabled = arc::IsArcPlayStoreEnabledForProfile(
+      Profile::FromBrowserContext(web_contents->GetBrowserContext()));
+  if (!arc_enabled && !apps::AppsNavigationThrottle::CanCreate(web_contents))
+    return nullptr;
+
+  return std::make_unique<ChromeOsAppsNavigationThrottle>(handle, arc_enabled);
+}
+
+// static
+void ChromeOsAppsNavigationThrottle::ShowIntentPickerBubble(
+    content::WebContents* web_contents,
+    IntentPickerAutoDisplayService* ui_auto_display_service,
+    const GURL& url) {
+  arc::ArcIntentPickerAppFetcher::GetArcAppsForPicker(
+      web_contents, url,
+      base::BindOnce(&ChromeOsAppsNavigationThrottle::
+                         FindPwaForUrlAndShowIntentPickerForApps,
+                     web_contents, ui_auto_display_service, url));
+}
+
+// static
+void ChromeOsAppsNavigationThrottle::OnIntentPickerClosed(
+    content::WebContents* web_contents,
+    IntentPickerAutoDisplayService* ui_auto_display_service,
+    const GURL& url,
+    const std::string& launch_name,
+    apps::mojom::AppType app_type,
+    apps::IntentPickerCloseReason close_reason,
+    bool should_persist) {
+  const bool should_launch_app =
+      close_reason == apps::IntentPickerCloseReason::OPEN_APP;
+  switch (app_type) {
+    case apps::mojom::AppType::kArc:
+      if (arc::ArcIntentPickerAppFetcher::MaybeLaunchOrPersistArcApp(
+              url, launch_name, should_launch_app, should_persist)) {
+        CloseOrGoBack(web_contents);
+      } else {
+        close_reason = apps::IntentPickerCloseReason::PICKER_ERROR;
+      }
+      return;
+    case apps::mojom::AppType::kUnknown:
+      // TODO(crbug.com/826982): This workaround can be removed when preferences
+      // are no longer persisted within the ARC container, it was necessary
+      // since chrome browser is neither a PWA or ARC app.
+      if (close_reason == apps::IntentPickerCloseReason::STAY_IN_CHROME &&
+          should_persist) {
+        arc::ArcIntentPickerAppFetcher::MaybeLaunchOrPersistArcApp(
+            url, launch_name, /*should_launch_app=*/false,
+            /*should_persist=*/true);
+      }
+      // Fall through to super class method to increment counter.
+      break;
+    case apps::mojom::AppType::kWeb:
+    case apps::mojom::AppType::kBuiltIn:
+    case apps::mojom::AppType::kCrostini:
+    case apps::mojom::AppType::kExtension:
+      break;
+  }
+  apps::AppsNavigationThrottle::OnIntentPickerClosed(
+      web_contents, ui_auto_display_service, url, launch_name, app_type,
+      close_reason, should_persist);
+}
+
+// static
+void ChromeOsAppsNavigationThrottle::RecordUma(
+    const std::string& selected_app_package,
+    apps::mojom::AppType app_type,
+    apps::IntentPickerCloseReason close_reason,
+    bool should_persist) {
+  if (app_type == apps::mojom::AppType::kArc &&
+      (close_reason == apps::IntentPickerCloseReason::PREFERRED_APP_FOUND ||
+       close_reason == apps::IntentPickerCloseReason::OPEN_APP)) {
+    UMA_HISTOGRAM_ENUMERATION("Arc.UserInteraction",
+                              arc::UserInteractionType::APP_STARTED_FROM_LINK);
+  }
+  apps::AppsNavigationThrottle::RecordUma(selected_app_package, app_type,
+                                          close_reason, should_persist);
+}
+
+ChromeOsAppsNavigationThrottle::ChromeOsAppsNavigationThrottle(
+    content::NavigationHandle* navigation_handle,
+    bool arc_enabled)
+    : apps::AppsNavigationThrottle(navigation_handle),
+      arc_enabled_(arc_enabled),
+      weak_factory_(this) {}
+
+ChromeOsAppsNavigationThrottle::~ChromeOsAppsNavigationThrottle() = default;
+
+// static
+void ChromeOsAppsNavigationThrottle::FindPwaForUrlAndShowIntentPickerForApps(
+    content::WebContents* web_contents,
+    IntentPickerAutoDisplayService* ui_auto_display_service,
+    const GURL& url,
+    std::vector<apps::IntentPickerAppInfo> apps) {
+  std::vector<apps::IntentPickerAppInfo> apps_for_picker =
+      FindPwaForUrl(web_contents, url, std::move(apps));
+  apps::AppsNavigationThrottle::ShowIntentPickerBubbleForAppsImpl(
+      web_contents, std::move(apps_for_picker),
+      base::BindOnce(&OnIntentPickerClosed, web_contents,
+                     ui_auto_display_service, url));
+}
+
+// static
+apps::AppsNavigationThrottle::Platform
+ChromeOsAppsNavigationThrottle::GetDestinationPlatform(
+    const std::string& selected_launch_name,
+    PickerAction picker_action) {
+  switch (picker_action) {
+    case PickerAction::PREFERRED_ACTIVITY_FOUND:
+      return arc::ArcIntentHelperBridge::IsIntentHelperPackage(
+                 selected_launch_name)
+                 ? Platform::CHROME
+                 : Platform::ARC;
+    case PickerAction::ARC_APP_PRESSED:
+    case PickerAction::ARC_APP_PREFERRED_PRESSED:
+    case PickerAction::PWA_APP_PRESSED:
+    case PickerAction::PICKER_ERROR:
+    case PickerAction::DIALOG_DEACTIVATED:
+    case PickerAction::CHROME_PRESSED:
+    case PickerAction::CHROME_PREFERRED_PRESSED:
+    case PickerAction::OBSOLETE_ALWAYS_PRESSED:
+    case PickerAction::OBSOLETE_JUST_ONCE_PRESSED:
+    case PickerAction::INVALID:
+      break;
+  }
+  return apps::AppsNavigationThrottle::GetDestinationPlatform(
+      selected_launch_name, picker_action);
+}
+
+// Removes the flag signaling that the current tab was started via
+// ChromeShellDelegate if the current throttle corresponds to a navigation
+// passing thru different domains or schemes, except if |current_url| has a
+// scheme different than http(s).
+void ChromeOsAppsNavigationThrottle::MaybeRemoveComingFromArcFlag(
+    content::WebContents* web_contents,
+    const GURL& previous_url,
+    const GURL& current_url) {
+  // Let ArcExternalProtocolDialog handle these cases.
+  if (!current_url.SchemeIsHTTPOrHTTPS())
+    return;
+
+  if (url::Origin::Create(previous_url)
+          .IsSameOriginWith(url::Origin::Create(current_url))) {
+    return;
+  }
+
+  const char* key =
+      arc::ArcWebContentsData::ArcWebContentsData::kArcTransitionFlag;
+  arc::ArcWebContentsData* arc_data =
+      static_cast<arc::ArcWebContentsData*>(web_contents->GetUserData(key));
+  if (arc_data)
+    web_contents->RemoveUserData(key);
+}
+
+void ChromeOsAppsNavigationThrottle::CancelNavigation() {
+  content::WebContents* web_contents = navigation_handle()->GetWebContents();
+  if (web_contents && web_contents->GetController().IsInitialNavigation()) {
+    // Workaround for b/79167225, closing |web_contents| here may be dangerous.
+    base::PostTaskWithTraits(
+        FROM_HERE, {content::BrowserThread::UI},
+        base::BindOnce(&ChromeOsAppsNavigationThrottle::CloseTab,
+                       weak_factory_.GetWeakPtr()));
+  } else {
+    CancelDeferredNavigation(content::NavigationThrottle::CANCEL_AND_IGNORE);
+  }
+}
+
+bool ChromeOsAppsNavigationThrottle::ShouldDeferNavigationForArc(
+    content::NavigationHandle* handle) {
+  if (arc_enabled_ &&
+      arc::ArcIntentPickerAppFetcher::WillGetArcAppsForNavigation(
+          handle,
+          base::BindOnce(
+              &ChromeOsAppsNavigationThrottle::OnDeferredNavigationProcessed,
+              weak_factory_.GetWeakPtr()))) {
+    return true;
+  }
+  return false;
+}
+
+void ChromeOsAppsNavigationThrottle::ShowIntentPickerBubbleForApps(
+    content::WebContents* web_contents,
+    IntentPickerAutoDisplayService* ui_auto_display_service,
+    const GURL& url,
+    std::vector<apps::IntentPickerAppInfo> apps) {
+  apps::AppsNavigationThrottle::ShowIntentPickerBubbleForAppsImpl(
+      web_contents, std::move(apps),
+      base::BindOnce(&OnIntentPickerClosed, web_contents,
+                     ui_auto_display_service, url));
+}
+
+void ChromeOsAppsNavigationThrottle::OnDeferredNavigationProcessed(
+    apps::AppsNavigationAction action,
+    std::vector<apps::IntentPickerAppInfo> apps) {
+  if (action == apps::AppsNavigationAction::CANCEL) {
+    // We found a preferred ARC app to open; cancel the navigation and don't do
+    // anything else.
+    CancelNavigation();
+    return;
+  }
+
+  content::NavigationHandle* handle = navigation_handle();
+  content::WebContents* web_contents = handle->GetWebContents();
+  const GURL& url = handle->GetURL();
+
+  std::vector<apps::IntentPickerAppInfo> apps_for_picker =
+      FindPwaForUrl(web_contents, url, std::move(apps));
+
+  // If we only have PWAs in the app list, do not show the intent picker.
+  // Instead just show the omnibox icon. This is to reduce annoyance to users
+  // until "Remember my choice" is available for desktop PWAs.
+  // TODO(crbug.com/826982): show the intent picker when the app registry is
+  // available to persist "Remember my choice" for PWAs.
+  if (ShouldAutoDisplayUi(apps_for_picker, web_contents, url)) {
+    ShowIntentPickerBubbleForApps(web_contents, ui_auto_display_service_, url,
+                                  std::move(apps_for_picker));
+  } else {
+    ui_displayed_ = false;
+    Browser* browser = chrome::FindBrowserWithWebContents(web_contents);
+    // If there were any candidates, show the intent picker icon in the omnibox
+    // so the user can manually pick if they wish.
+    if (browser && !apps_for_picker.empty())
+      browser->window()->SetIntentPickerViewVisibility(/*visible=*/true);
+  }
+
+  // We are about to resume the navigation, which may destroy this object.
+  Resume();
+}
+
+void ChromeOsAppsNavigationThrottle::CloseTab() {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  content::WebContents* web_contents = navigation_handle()->GetWebContents();
+  if (web_contents)
+    web_contents->ClosePage();
+}
+}  // namespace chromeos
diff --git a/chrome/browser/chromeos/apps/intent_helper/chromeos_apps_navigation_throttle.h b/chrome/browser/chromeos/apps/intent_helper/chromeos_apps_navigation_throttle.h
new file mode 100644
index 0000000..c2c4762
--- /dev/null
+++ b/chrome/browser/chromeos/apps/intent_helper/chromeos_apps_navigation_throttle.h
@@ -0,0 +1,119 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_APPS_INTENT_HELPER_CHROMEOS_APPS_NAVIGATION_THROTTLE_H_
+#define CHROME_BROWSER_CHROMEOS_APPS_INTENT_HELPER_CHROMEOS_APPS_NAVIGATION_THROTTLE_H_
+
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "base/macros.h"
+#include "chrome/browser/apps/intent_helper/apps_navigation_throttle.h"
+#include "chrome/services/app_service/public/mojom/types.mojom.h"
+#include "content/public/browser/navigation_throttle.h"
+#include "url/gurl.h"
+
+namespace content {
+class NavigationHandle;
+class WebContents;
+}  // namespace content
+
+class IntentPickerAutoDisplayService;
+
+namespace chromeos {
+
+// Allows navigation to be routed to an installed app on Chrome OS, and provides
+// a static method for showing an intent picker for the current URL to display
+// any handling apps.
+class ChromeOsAppsNavigationThrottle : public apps::AppsNavigationThrottle {
+ public:
+  // Possibly creates a navigation throttle that checks if any installed apps
+  // can handle the URL being navigated to. The user is prompted if they wish to
+  // open the app or remain in the browser.
+  static std::unique_ptr<apps::AppsNavigationThrottle> MaybeCreate(
+      content::NavigationHandle* handle);
+
+  // Queries for installed apps which can handle |url|, and displays the intent
+  // picker bubble for |web_contents|.
+  static void ShowIntentPickerBubble(
+      content::WebContents* web_contents,
+      IntentPickerAutoDisplayService* ui_auto_display_service,
+      const GURL& url);
+
+  // Called when the intent picker is closed for |url|, in |web_contents|, with
+  // |launch_name| as the (possibly empty) action to be triggered based on
+  // |app_type|. |close_reason| gives the reason for the picker being closed,
+  // and |should_persist| is true if the user indicated they wish to remember
+  // the choice made. |ui_auto_display_service| keeps track of whether or not
+  // the user dismissed the ui without engaging with it.
+  static void OnIntentPickerClosed(
+      content::WebContents* web_contents,
+      IntentPickerAutoDisplayService* ui_auto_display_service,
+      const GURL& url,
+      const std::string& launch_name,
+      apps::mojom::AppType app_type,
+      apps::IntentPickerCloseReason close_reason,
+      bool should_persist);
+
+  static void RecordUma(const std::string& selected_app_package,
+                        apps::mojom::AppType app_type,
+                        apps::IntentPickerCloseReason close_reason,
+                        bool should_persist);
+
+  ChromeOsAppsNavigationThrottle(content::NavigationHandle* navigation_handle,
+                                 bool arc_enabled);
+  ~ChromeOsAppsNavigationThrottle() override;
+
+ private:
+  static void FindPwaForUrlAndShowIntentPickerForApps(
+      content::WebContents* web_contents,
+      IntentPickerAutoDisplayService* ui_auto_display_service,
+      const GURL& url,
+      std::vector<apps::IntentPickerAppInfo> apps);
+
+  // Determines the destination of the current navigation. We know that if the
+  // |picker_action| is either ERROR or DIALOG_DEACTIVATED the navigation MUST
+  // stay in Chrome, and when |picker_action| is PWA_APP_PRESSED the navigation
+  // goes to a PWA. Otherwise we can assume the navigation goes to ARC with the
+  // exception of the |selected_launch_name| being Chrome.
+  static Platform GetDestinationPlatform(
+      const std::string& selected_launch_name,
+      PickerAction picker_action);
+
+  void MaybeRemoveComingFromArcFlag(content::WebContents* web_contents,
+                                    const GURL& previous_url,
+                                    const GURL& current_url) override;
+
+  void CancelNavigation();
+
+  bool ShouldDeferNavigationForArc(content::NavigationHandle* handle) override;
+
+  void ShowIntentPickerBubbleForApps(
+      content::WebContents* web_contents,
+      IntentPickerAutoDisplayService* ui_auto_display_service,
+      const GURL& url,
+      std::vector<apps::IntentPickerAppInfo> apps) override;
+
+  // Passed as a callback to allow ARC-specific code to asynchronously inform
+  // this object of the apps which can handle this URL, and optionally request
+  // that the navigation be completely cancelled (e.g. if a preferred app has
+  // been opened).
+  void OnDeferredNavigationProcessed(
+      apps::AppsNavigationAction action,
+      std::vector<apps::IntentPickerAppInfo> apps) override;
+
+  void CloseTab();
+
+  // True if ARC is enabled, false otherwise.
+  const bool arc_enabled_;
+
+  base::WeakPtrFactory<ChromeOsAppsNavigationThrottle> weak_factory_;
+
+  DISALLOW_COPY_AND_ASSIGN(ChromeOsAppsNavigationThrottle);
+};
+
+}  // namespace chromeos
+
+#endif  // CHROME_BROWSER_CHROMEOS_APPS_INTENT_HELPER_CHROMEOS_APPS_NAVIGATION_THROTTLE_H_
diff --git a/chrome/browser/chromeos/arc/intent_helper/arc_external_protocol_dialog.cc b/chrome/browser/chromeos/arc/intent_helper/arc_external_protocol_dialog.cc
index d38113a8..921856a 100644
--- a/chrome/browser/chromeos/arc/intent_helper/arc_external_protocol_dialog.cc
+++ b/chrome/browser/chromeos/arc/intent_helper/arc_external_protocol_dialog.cc
@@ -9,9 +9,9 @@
 
 #include "base/bind.h"
 #include "base/memory/ref_counted.h"
-#include "chrome/browser/apps/intent_helper/apps_navigation_throttle.h"
 #include "chrome/browser/apps/intent_helper/apps_navigation_types.h"
 #include "chrome/browser/apps/intent_helper/page_transition_util.h"
+#include "chrome/browser/chromeos/apps/intent_helper/chromeos_apps_navigation_throttle.h"
 #include "chrome/browser/chromeos/arc/arc_web_contents_data.h"
 #include "chrome/browser/chromeos/arc/intent_helper/arc_intent_picker_app_fetcher.h"
 #include "chrome/browser/chromeos/external_protocol_dialog.h"
@@ -357,7 +357,7 @@
                           std::vector<mojom::IntentHandlerInfoPtr> handlers,
                           const std::string& selected_app_package,
                           apps::mojom::AppType app_type,
-                          chromeos::IntentPickerCloseReason reason,
+                          apps::IntentPickerCloseReason reason,
                           bool should_persist) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
@@ -388,17 +388,17 @@
   }
 
   if (!instance)
-    reason = chromeos::IntentPickerCloseReason::ERROR;
+    reason = apps::IntentPickerCloseReason::PICKER_ERROR;
 
-  if (reason == chromeos::IntentPickerCloseReason::OPEN_APP ||
-      reason == chromeos::IntentPickerCloseReason::STAY_IN_CHROME) {
+  if (reason == apps::IntentPickerCloseReason::OPEN_APP ||
+      reason == apps::IntentPickerCloseReason::STAY_IN_CHROME) {
     if (selected_app_index == handlers.size()) {
-      reason = chromeos::IntentPickerCloseReason::ERROR;
+      reason = apps::IntentPickerCloseReason::PICKER_ERROR;
     }
   }
 
   switch (reason) {
-    case chromeos::IntentPickerCloseReason::OPEN_APP:
+    case apps::IntentPickerCloseReason::OPEN_APP:
       // Only ARC apps are offered in the external protocol intent picker, so if
       // the user decided to open in app the type must be ARC.
       DCHECK_EQ(apps::mojom::AppType::kArc, app_type);
@@ -417,29 +417,29 @@
       HandleUrl(render_process_host_id, routing_id, url, handlers,
                 selected_app_index, /*out_result=*/nullptr, safe_to_bypass_ui);
       break;
-    case chromeos::IntentPickerCloseReason::PREFERRED_APP_FOUND:
+    case apps::IntentPickerCloseReason::PREFERRED_APP_FOUND:
       // We shouldn't be here if a preferred app was found.
       NOTREACHED();
       return;  // no UMA recording.
-    case chromeos::IntentPickerCloseReason::STAY_IN_CHROME:
+    case apps::IntentPickerCloseReason::STAY_IN_CHROME:
       LOG(ERROR) << "Chrome is not a valid option for external protocol URLs";
       NOTREACHED();
       return;  // no UMA recording.
-    case chromeos::IntentPickerCloseReason::ERROR:
+    case apps::IntentPickerCloseReason::PICKER_ERROR:
       LOG(ERROR) << "IntentPickerBubbleView returned CloseReason::ERROR: "
                  << "instance=" << instance
                  << ", selected_app_index=" << selected_app_index
                  << ", handlers.size=" << handlers.size();
       FALLTHROUGH;
-    case chromeos::IntentPickerCloseReason::DIALOG_DEACTIVATED:
+    case apps::IntentPickerCloseReason::DIALOG_DEACTIVATED:
       // The user didn't select any ARC activity.
       OnIntentPickerDialogDeactivated(render_process_host_id, routing_id,
                                       safe_to_bypass_ui, handlers);
       break;
   }
 
-  chromeos::AppsNavigationThrottle::RecordUma(selected_app_package, app_type,
-                                              reason, should_persist);
+  chromeos::ChromeOsAppsNavigationThrottle::RecordUma(
+      selected_app_package, app_type, reason, should_persist);
 }
 
 // Called when ARC returned activity icons for the |handlers|.
@@ -452,7 +452,7 @@
     std::unique_ptr<ArcIntentHelperBridge::ActivityToIconsMap> icons) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
-  using AppInfo = chromeos::IntentPickerAppInfo;
+  using AppInfo = apps::IntentPickerAppInfo;
   std::vector<AppInfo> app_info;
 
   for (const auto& handler : handlers) {
@@ -519,9 +519,9 @@
   if (HandleUrl(render_process_host_id, routing_id, url, handlers,
                 handlers.size(), &result, safe_to_bypass_ui)) {
     if (result == GetActionResult::HANDLE_URL_IN_ARC) {
-      chromeos::AppsNavigationThrottle::RecordUma(
+      chromeos::ChromeOsAppsNavigationThrottle::RecordUma(
           std::string(), apps::mojom::AppType::kArc,
-          chromeos::IntentPickerCloseReason::PREFERRED_APP_FOUND,
+          apps::IntentPickerCloseReason::PREFERRED_APP_FOUND,
           /*should_persist=*/false);
     }
     return;  // the |url| has been handled.
@@ -551,13 +551,12 @@
   DCHECK(!url.SchemeIsHTTPOrHTTPS()) << url;
 
   // For external protocol navigation, always ignore the FROM_API qualifier.
-  const ui::PageTransition masked_page_transition =
-      chromeos::MaskOutPageTransition(page_transition,
-                                      ui::PAGE_TRANSITION_FROM_API);
+  const ui::PageTransition masked_page_transition = apps::MaskOutPageTransition(
+      page_transition, ui::PAGE_TRANSITION_FROM_API);
 
-  if (chromeos::ShouldIgnoreNavigation(masked_page_transition,
-                                       /*allow_form_submit=*/true,
-                                       /*allow_client_redirect=*/true)) {
+  if (apps::ShouldIgnoreNavigation(masked_page_transition,
+                                   /*allow_form_submit=*/true,
+                                   /*allow_client_redirect=*/true)) {
     LOG(WARNING) << "RunArcExternalProtocolDialog: ignoring " << url
                  << " with PageTransition=" << masked_page_transition;
     return false;
diff --git a/chrome/browser/chromeos/arc/intent_helper/arc_intent_picker_app_fetcher.cc b/chrome/browser/chromeos/arc/intent_helper/arc_intent_picker_app_fetcher.cc
index ceaac90..e7959c22 100644
--- a/chrome/browser/chromeos/arc/intent_helper/arc_intent_picker_app_fetcher.cc
+++ b/chrome/browser/chromeos/arc/intent_helper/arc_intent_picker_app_fetcher.cc
@@ -8,7 +8,7 @@
 
 #include "base/bind.h"
 #include "base/callback.h"
-#include "chrome/browser/apps/intent_helper/apps_navigation_throttle.h"
+#include "chrome/browser/chromeos/apps/intent_helper/chromeos_apps_navigation_throttle.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_finder.h"
 #include "chrome/browser/ui/browser_window.h"
@@ -52,7 +52,7 @@
 void ArcIntentPickerAppFetcher::GetArcAppsForPicker(
     content::WebContents* web_contents,
     const GURL& url,
-    chromeos::GetAppsCallback callback) {
+    apps::GetAppsCallback callback) {
   arc::ArcServiceManager* arc_service_manager = arc::ArcServiceManager::Get();
   if (!arc_service_manager) {
     DVLOG(1) << "Cannot get an instance of ArcServiceManager";
@@ -78,7 +78,7 @@
 // static
 bool ArcIntentPickerAppFetcher::WillGetArcAppsForNavigation(
     content::NavigationHandle* handle,
-    chromeos::AppsNavigationCallback callback) {
+    apps::AppsNavigationCallback callback) {
   ArcServiceManager* arc_service_manager = ArcServiceManager::Get();
   if (!arc_service_manager)
     return false;
@@ -193,7 +193,7 @@
 void ArcIntentPickerAppFetcher::GetArcAppsForNavigation(
     mojom::IntentHelperInstance* instance,
     const GURL& url,
-    chromeos::AppsNavigationCallback callback) {
+    apps::AppsNavigationCallback callback) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
   instance->RequestUrlHandlerList(
@@ -206,7 +206,7 @@
 void ArcIntentPickerAppFetcher::GetArcAppsForPicker(
     mojom::IntentHelperInstance* instance,
     const GURL& url,
-    chromeos::GetAppsCallback callback) {
+    apps::GetAppsCallback callback) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
   instance->RequestUrlHandlerList(
@@ -218,7 +218,7 @@
 
 void ArcIntentPickerAppFetcher::OnAppCandidatesReceivedForNavigation(
     const GURL& url,
-    chromeos::AppsNavigationCallback callback,
+    apps::AppsNavigationCallback callback,
     std::vector<mojom::IntentHandlerInfoPtr> app_candidates) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
@@ -227,28 +227,29 @@
     // This scenario shouldn't be accessed as ArcIntentPickerAppFetcher is
     // created iff there are ARC apps which can actually handle the given URL.
     DVLOG(1) << "There are no app candidates for this URL: " << url;
-    chromeos::AppsNavigationThrottle::RecordUma(
+    chromeos::ChromeOsAppsNavigationThrottle::RecordUma(
         std::string(), apps::mojom::AppType::kUnknown,
-        chromeos::IntentPickerCloseReason::ERROR, /*should_persist=*/false);
-    std::move(callback).Run(chromeos::AppsNavigationAction::RESUME, {});
+        apps::IntentPickerCloseReason::PICKER_ERROR,
+        /*should_persist=*/false);
+    std::move(callback).Run(apps::AppsNavigationAction::RESUME, {});
     return;
   }
 
   // If one of the apps is marked as preferred, launch it immediately.
-  chromeos::PreferredPlatform pref_platform =
+  apps::PreferredPlatform pref_platform =
       DidLaunchPreferredArcApp(url, app_candidates);
 
   switch (pref_platform) {
-    case chromeos::PreferredPlatform::ARC:
-      std::move(callback).Run(chromeos::AppsNavigationAction::CANCEL, {});
+    case apps::PreferredPlatform::ARC:
+      std::move(callback).Run(apps::AppsNavigationAction::CANCEL, {});
       return;
-    case chromeos::PreferredPlatform::NATIVE_CHROME:
-      std::move(callback).Run(chromeos::AppsNavigationAction::RESUME, {});
+    case apps::PreferredPlatform::NATIVE_CHROME:
+      std::move(callback).Run(apps::AppsNavigationAction::RESUME, {});
       return;
-    case chromeos::PreferredPlatform::PWA:
+    case apps::PreferredPlatform::PWA:
       NOTREACHED();
       break;
-    case chromeos::PreferredPlatform::NONE:
+    case apps::PreferredPlatform::NONE:
       break;  // Do nothing.
   }
 
@@ -256,14 +257,14 @@
   // the intent picker bubble to prompt the user to choose if they would like to
   // use an ARC app to open the URL.
   deleter.release();
-  GetArcAppIcons(url, std::move(app_candidates),
-                 base::BindOnce(std::move(callback),
-                                chromeos::AppsNavigationAction::RESUME));
+  GetArcAppIcons(
+      url, std::move(app_candidates),
+      base::BindOnce(std::move(callback), apps::AppsNavigationAction::RESUME));
 }
 
 void ArcIntentPickerAppFetcher::OnAppCandidatesReceivedForPicker(
     const GURL& url,
-    chromeos::GetAppsCallback callback,
+    apps::GetAppsCallback callback,
     std::vector<arc::mojom::IntentHandlerInfoPtr> app_candidates) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
@@ -278,18 +279,17 @@
   GetArcAppIcons(url, std::move(app_candidates), std::move(callback));
 }
 
-chromeos::PreferredPlatform ArcIntentPickerAppFetcher::DidLaunchPreferredArcApp(
+apps::PreferredPlatform ArcIntentPickerAppFetcher::DidLaunchPreferredArcApp(
     const GURL& url,
     const std::vector<mojom::IntentHandlerInfoPtr>& app_candidates) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
-  chromeos::PreferredPlatform preferred_platform =
-      chromeos::PreferredPlatform::NONE;
+  apps::PreferredPlatform preferred_platform = apps::PreferredPlatform::NONE;
   apps::mojom::AppType app_type = apps::mojom::AppType::kUnknown;
   const size_t index = FindPreferredApp(app_candidates, url);
 
   if (index != app_candidates.size()) {
-    auto close_reason = chromeos::IntentPickerCloseReason::PREFERRED_APP_FOUND;
+    auto close_reason = apps::IntentPickerCloseReason::PREFERRED_APP_FOUND;
     const std::string& package_name = app_candidates[index]->package_name;
 
     // Make sure that the instance at least supports HandleUrl.
@@ -302,18 +302,18 @@
     }
 
     if (!instance) {
-      close_reason = chromeos::IntentPickerCloseReason::ERROR;
+      close_reason = apps::IntentPickerCloseReason::PICKER_ERROR;
     } else if (ArcIntentHelperBridge::IsIntentHelperPackage(package_name)) {
       Browser* browser = chrome::FindBrowserWithWebContents(web_contents());
       if (browser)
         browser->window()->SetIntentPickerViewVisibility(/*visible=*/true);
-      preferred_platform = chromeos::PreferredPlatform::NATIVE_CHROME;
+      preferred_platform = apps::PreferredPlatform::NATIVE_CHROME;
     } else {
       instance->HandleUrl(url.spec(), package_name);
-      preferred_platform = chromeos::PreferredPlatform::ARC;
+      preferred_platform = apps::PreferredPlatform::ARC;
       app_type = apps::mojom::AppType::kArc;
     }
-    chromeos::AppsNavigationThrottle::RecordUma(
+    chromeos::ChromeOsAppsNavigationThrottle::RecordUma(
         package_name, app_type, close_reason, /*should_persist=*/false);
   }
 
@@ -323,7 +323,7 @@
 void ArcIntentPickerAppFetcher::GetArcAppIcons(
     const GURL& url,
     std::vector<mojom::IntentHandlerInfoPtr> app_candidates,
-    chromeos::GetAppsCallback callback) {
+    apps::GetAppsCallback callback) {
   std::unique_ptr<ArcIntentPickerAppFetcher> deleter(this);
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
@@ -331,9 +331,10 @@
       web_contents()->GetBrowserContext());
   if (!intent_helper_bridge) {
     LOG(ERROR) << "Cannot get an instance of ArcIntentHelperBridge";
-    chromeos::AppsNavigationThrottle::RecordUma(
+    chromeos::ChromeOsAppsNavigationThrottle::RecordUma(
         std::string(), apps::mojom::AppType::kUnknown,
-        chromeos::IntentPickerCloseReason::ERROR, /*should_persist=*/false);
+        apps::IntentPickerCloseReason::PICKER_ERROR,
+        /*should_persist=*/false);
     std::move(callback).Run({});
     return;
   }
@@ -352,12 +353,12 @@
 void ArcIntentPickerAppFetcher::OnAppIconsReceived(
     const GURL& url,
     std::vector<arc::mojom::IntentHandlerInfoPtr> app_candidates,
-    chromeos::GetAppsCallback callback,
+    apps::GetAppsCallback callback,
     std::unique_ptr<arc::ArcIntentHelperBridge::ActivityToIconsMap> icons) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
   std::unique_ptr<ArcIntentPickerAppFetcher> deleter(this);
-  std::vector<chromeos::IntentPickerAppInfo> app_info;
+  std::vector<apps::IntentPickerAppInfo> app_info;
 
   for (const auto& candidate : app_candidates) {
     gfx::Image icon;
diff --git a/chrome/browser/chromeos/arc/intent_helper/arc_intent_picker_app_fetcher.h b/chrome/browser/chromeos/arc/intent_helper/arc_intent_picker_app_fetcher.h
index 27ba3a9..631ae60f 100644
--- a/chrome/browser/chromeos/arc/intent_helper/arc_intent_picker_app_fetcher.h
+++ b/chrome/browser/chromeos/arc/intent_helper/arc_intent_picker_app_fetcher.h
@@ -32,7 +32,7 @@
   // |callback| when complete. Does not attempt to open preferred apps.
   static void GetArcAppsForPicker(content::WebContents* web_contents,
                                   const GURL& url,
-                                  chromeos::GetAppsCallback callback);
+                                  apps::GetAppsCallback callback);
 
   // Returns true if the navigation request represented by |handle| should be
   // deferred while ARC is queried for apps, and if so, |callback| will be run
@@ -40,7 +40,7 @@
   // run if false is returned.
   static bool WillGetArcAppsForNavigation(
       content::NavigationHandle* handle,
-      chromeos::AppsNavigationCallback callback);
+      apps::AppsNavigationCallback callback);
 
   // Called to launch an ARC app if it was selected by the user, and persist the
   // preference to launch or stay in Chrome if |should_persist| is true. Returns
@@ -80,13 +80,13 @@
   // of handling apps.
   void GetArcAppsForNavigation(mojom::IntentHelperInstance* instance,
                                const GURL& url,
-                               chromeos::AppsNavigationCallback callback);
+                               apps::AppsNavigationCallback callback);
 
   // Asychronously queries ARC for apps which can handle |url|. Runs |callback|
   // with the list of handling apps.
   void GetArcAppsForPicker(mojom::IntentHelperInstance* instance,
                            const GURL& url,
-                           chromeos::GetAppsCallback callback);
+                           apps::GetAppsCallback callback);
 
   // Determines if there are apps to show the intent picker, or if we should
   // open a preferred app. Runs |callback| to RESUME/CANCEL the navigation which
@@ -96,21 +96,21 @@
   // navigation.
   void OnAppCandidatesReceivedForNavigation(
       const GURL& url,
-      chromeos::AppsNavigationCallback callback,
+      apps::AppsNavigationCallback callback,
       std::vector<mojom::IntentHandlerInfoPtr> app_candidates);
 
   // Determines if there are apps to show the intent picker. Runs |callback|
   // with the list of apps to show in the picker.
   void OnAppCandidatesReceivedForPicker(
       const GURL& url,
-      chromeos::GetAppsCallback callback,
+      apps::GetAppsCallback callback,
       std::vector<arc::mojom::IntentHandlerInfoPtr> app_candidates);
 
   // Returns NONE if there is no preferred app given the potential
   // |app_candidates| or if we had an error while checking for preferred apps.
   // Otherwise return the platform where the preferred app lives (for now only
   // ARC and NATIVE_CHROME).
-  chromeos::PreferredPlatform DidLaunchPreferredArcApp(
+  apps::PreferredPlatform DidLaunchPreferredArcApp(
       const GURL& url,
       const std::vector<mojom::IntentHandlerInfoPtr>& app_candidates);
 
@@ -118,12 +118,12 @@
   // |app_candidates|. Calls OnAppIconsReceived() when finished.
   void GetArcAppIcons(const GURL& url,
                       std::vector<mojom::IntentHandlerInfoPtr> app_candidates,
-                      chromeos::GetAppsCallback callback);
+                      apps::GetAppsCallback callback);
 
   void OnAppIconsReceived(
       const GURL& url,
       std::vector<arc::mojom::IntentHandlerInfoPtr> app_candidates,
-      chromeos::GetAppsCallback callback,
+      apps::GetAppsCallback callback,
       std::unique_ptr<arc::ArcIntentHelperBridge::ActivityToIconsMap> icons);
 
   // content::WebContentsObserver overrides.
diff --git a/chrome/browser/chromeos/crostini/crostini_util.cc b/chrome/browser/chromeos/crostini/crostini_util.cc
index 3969af9..e2ac697 100644
--- a/chrome/browser/chromeos/crostini/crostini_util.cc
+++ b/chrome/browser/chromeos/crostini/crostini_util.cc
@@ -164,7 +164,6 @@
     if (loaded_icons_ != icons_.size())
       return;
 
-    timeout_timer_.AbandonAndStop();
     RunCallback();
   }
 
@@ -182,10 +181,16 @@
 
     // If we're running the callback as loading has finished, we can't delete
     // ourselves yet as it would destroy the CrostiniAppIcon which is calling
-    // into us right now.
-    base::SequencedTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE,
-        base::BindOnce(&IconLoadWaiter::Delete, base::Unretained(this)));
+    // into us right now. If we hit the timeout, we delete immediately to avoid
+    // any race with more icons finishing loading.
+    if (timeout_timer_.IsRunning()) {
+      timeout_timer_.AbandonAndStop();
+      base::SequencedTaskRunnerHandle::Get()->PostTask(
+          FROM_HERE,
+          base::BindOnce(&IconLoadWaiter::Delete, base::Unretained(this)));
+    } else {
+      Delete();
+    }
   }
 
   std::vector<std::unique_ptr<CrostiniAppIcon>> icons_;
diff --git a/chrome/browser/chromeos/input_method/input_method_engine.cc b/chrome/browser/chromeos/input_method/input_method_engine.cc
index b455bd8..38b3fdc 100644
--- a/chrome/browser/chromeos/input_method/input_method_engine.cc
+++ b/chrome/browser/chromeos/input_method/input_method_engine.cc
@@ -64,11 +64,17 @@
 class MojoHelper : public ime::mojom::ImeEngine,
                    public ime::mojom::ImeEngineFactory {
  public:
-  MojoHelper(InputMethodEngine* engine,
-             ime::mojom::ImeEngineFactoryRegistryPtr registry)
-      : engine_(engine), factory_binding_(this), engine_binding_(this) {
+  explicit MojoHelper(InputMethodEngine* engine)
+      : engine_(engine), factory_binding_(this), engine_binding_(this) {}
+  ~MojoHelper() override = default;
+
+  void Activate(ime::mojom::ImeEngineFactoryRegistryPtr registry) {
     ime::mojom::ImeEngineFactoryPtr factory_ptr;
+    factory_binding_.Close();
     factory_binding_.Bind(mojo::MakeRequest(&factory_ptr));
+    factory_binding_.set_connection_error_handler(
+        base::BindOnce(&MojoHelper::OnConnectionLost, base::Unretained(this)));
+
     if (registry) {
       registry_ = std::move(registry);
     } else {
@@ -79,11 +85,11 @@
     }
     registry_->ActivateFactory(std::move(factory_ptr));
   }
-  ~MojoHelper() override = default;
 
   // ime::mojom::ImeEngineFactory overrides:
   void CreateEngine(ime::mojom::ImeEngineRequest engine_request,
                     ime::mojom::ImeEngineClientPtr client) override {
+    engine_binding_.Close();
     engine_binding_.Bind(std::move(engine_request));
     engine_client_ = std::move(client);
   }
@@ -112,7 +118,11 @@
     engine_->SetCompositionBounds(bounds);
   }
 
-  ime::mojom::ImeEngineClientPtr& engine_client() { return engine_client_; }
+  bool IsConnected() const { return engine_client_.is_bound(); }
+
+  ime::mojom::ImeEngineClientProxy* engine_client() {
+    return engine_client_.get();
+  }
 
   void FlushForTesting() {
     if (registry_)
@@ -122,6 +132,14 @@
   }
 
  private:
+  void OnConnectionLost() {
+    // After the connection to |ImeEngineFactoryRegistry| is broken, break the
+    // connection to the client, so that the client can reconnect through Window
+    // Service.
+    engine_binding_.Close();
+    engine_client_.reset();
+  }
+
   InputMethodEngine* engine_;
   mojo::Binding<ime::mojom::ImeEngineFactory> factory_binding_;
   mojo::Binding<ime::mojom::ImeEngine> engine_binding_;
@@ -152,20 +170,16 @@
     : candidate_window_(new ui::CandidateWindow()),
       window_visible_(false),
       is_mirroring_(false),
-      is_casting_(false) {}
+      is_casting_(false) {
+  mojo_helper_ = std::make_unique<MojoHelper>(this);
+}
 
 InputMethodEngine::~InputMethodEngine() {}
 
 void InputMethodEngine::Enable(const std::string& component_id) {
   InputMethodEngineBase::Enable(component_id);
   EnableInputView();
-  mojo_helper_ = std::make_unique<MojoHelper>(
-      this, std::move(ime_engine_factory_registry_));
-}
-
-void InputMethodEngine::Disable() {
-  InputMethodEngineBase::Disable();
-  mojo_helper_.reset();
+  mojo_helper_->Activate(std::move(ime_engine_factory_registry_));
 }
 
 bool InputMethodEngine::IsActive() const {
@@ -355,19 +369,33 @@
     const ui::CompositionText& composition_text,
     uint32_t cursor_pos,
     bool is_visible) {
-  ui::IMEInputContextHandlerInterface* input_context =
-      ui::IMEBridge::Get()->GetInputContextHandler();
-  if (input_context)
-    input_context->UpdateCompositionText(composition_text, cursor_pos,
-                                         is_visible);
+  if (mojo_helper_->IsConnected()) {
+    NOTIMPLEMENTED_LOG_ONCE();
+  } else {
+    ui::IMEInputContextHandlerInterface* input_context =
+        ui::IMEBridge::Get()->GetInputContextHandler();
+    if (input_context)
+      input_context->UpdateCompositionText(composition_text, cursor_pos,
+                                           is_visible);
+  }
 }
 
 void InputMethodEngine::CommitTextToInputContext(int context_id,
                                                  const std::string& text) {
-  ui::IMEBridge::Get()->GetInputContextHandler()->CommitText(text);
+  bool committed = false;
+  if (mojo_helper_->IsConnected()) {
+    NOTIMPLEMENTED_LOG_ONCE();
+  } else {
+    ui::IMEInputContextHandlerInterface* input_context =
+        ui::IMEBridge::Get()->GetInputContextHandler();
+    if (input_context) {
+      input_context->CommitText(text);
+      committed = true;
+    }
+  }
 
-  // Records histograms for committed characters.
-  if (!composition_text_->text.empty()) {
+  if (committed && !composition_text_->text.empty()) {
+    // Records histograms for committed characters.
     base::string16 wtext = base::UTF8ToUTF16(text);
     UMA_HISTOGRAM_CUSTOM_COUNTS("InputMethod.CommitLength", wtext.length(), 1,
                                 25, 25);
@@ -375,24 +403,42 @@
   }
 }
 
+void InputMethodEngine::DeleteSurroundingTextToInputContext(
+    int offset,
+    size_t number_of_chars) {
+  if (mojo_helper_->IsConnected()) {
+    NOTIMPLEMENTED_LOG_ONCE();
+  } else {
+    ui::IMEInputContextHandlerInterface* input_context =
+        ui::IMEBridge::Get()->GetInputContextHandler();
+    if (input_context)
+      input_context->DeleteSurroundingText(offset, number_of_chars);
+  }
+}
+
 bool InputMethodEngine::SendKeyEvent(ui::KeyEvent* event,
                                      const std::string& code) {
   DCHECK(event);
   if (event->key_code() == ui::VKEY_UNKNOWN)
     event->set_key_code(ui::DomKeycodeToKeyboardCode(code));
 
-  ui::IMEInputContextHandlerInterface* input_context =
-      ui::IMEBridge::Get()->GetInputContextHandler();
-  if (!input_context)
-    return false;
-
   // Marks the simulated key event is from the Virtual Keyboard.
   ui::Event::Properties properties;
   properties[ui::kPropertyFromVK] = std::vector<uint8_t>();
   event->SetProperties(properties);
 
-  input_context->SendKeyEvent(event);
-  return true;
+  bool sent = false;
+  if (mojo_helper_->IsConnected()) {
+    NOTIMPLEMENTED_LOG_ONCE();
+  } else {
+    ui::IMEInputContextHandlerInterface* input_context =
+        ui::IMEBridge::Get()->GetInputContextHandler();
+    if (input_context) {
+      input_context->SendKeyEvent(event);
+      sent = true;
+    }
+  }
+  return sent;
 }
 
 void InputMethodEngine::EnableInputView() {
diff --git a/chrome/browser/chromeos/input_method/input_method_engine.h b/chrome/browser/chromeos/input_method/input_method_engine.h
index e5374ab..710f8adc 100644
--- a/chrome/browser/chromeos/input_method/input_method_engine.h
+++ b/chrome/browser/chromeos/input_method/input_method_engine.h
@@ -91,7 +91,6 @@
 
   // InputMethodEngineBase overrides.
   void Enable(const std::string& component_id) override;
-  void Disable() override;
   bool IsActive() const override;
 
   // ui::IMEEngineHandlerInterface overrides.
@@ -146,6 +145,8 @@
                          bool is_visible) override;
   void CommitTextToInputContext(int context_id,
                                 const std::string& text) override;
+  void DeleteSurroundingTextToInputContext(int offset,
+                                           size_t number_of_chars) override;
   bool SendKeyEvent(ui::KeyEvent* event, const std::string& code) override;
 
   // Enables overriding input view page to Virtual Keyboard window.
diff --git a/chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher.cc b/chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher.cc
index 3d5c804c..08ca541 100644
--- a/chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher.cc
+++ b/chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher.cc
@@ -1,633 +1,37 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
+// Copyright 2019 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
-
+//
 #include "chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher.h"
 
-#include "ash/public/interfaces/constants.mojom.h"
-#include "ash/public/interfaces/cros_display_config.mojom.h"
-#include "base/base64url.h"
-#include "base/bind.h"
-#include "base/json/json_reader.h"
-#include "base/metrics/histogram_functions.h"
-#include "base/metrics/histogram_macros.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_piece.h"
-#include "base/strings/string_split.h"
-#include "base/task/post_task.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/profiles/profile_manager.h"
-#include "content/public/browser/gpu_data_manager.h"
-#include "content/public/browser/storage_partition.h"
-#include "content/public/common/service_manager_connection.h"
-#include "extensions/common/api/system_display.h"
-#include "gpu/config/gpu_info.h"
-#include "net/base/load_flags.h"
-#include "net/http/http_status_code.h"
-#include "services/network/public/cpp/simple_url_loader.h"
-#include "services/service_manager/public/cpp/connector.h"
-#include "third_party/zlib/google/compression_utils.h"
-#include "ui/display/display.h"
-#include "ui/display/screen.h"
-#include "ui/events/devices/input_device.h"
-#include "ui/events/devices/input_device_manager.h"
-#include "ui/gfx/extension_set.h"
-#include "ui/gl/gl_version_info.h"
+#include "base/callback.h"
+#include "chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher_impl.h"
 
 namespace chromeos {
 
 namespace {
 
-constexpr const char kGetAppListUrl[] =
-    "https://android.clients.google.com/fdfe/chrome/getfastreinstallappslist";
-
-constexpr int kResponseErrorNotEnoughApps = 5;
-
-constexpr int kResponseErrorNotFirstTimeChromebookUser = 6;
-
-constexpr base::TimeDelta kDownloadTimeOut = base::TimeDelta::FromMinutes(1);
-
-constexpr const int64_t kMaxDownloadBytes = 1024 * 1024;  // 1Mb
-
-constexpr const int kMaxAppCount = 21;
-
-enum RecommendAppsResponseParseResult {
-  // These values are persisted to logs. Entries should not be renumbered and
-  // numeric values should never be reused.
-  RECOMMEND_APPS_RESPONSE_PARSE_RESULT_NO_ERROR = 0,
-  RECOMMEND_APPS_RESPONSE_PARSE_RESULT_INVALID_JSON = 1,
-  RECOMMEND_APPS_RESPONSE_PARSE_RESULT_NO_APP = 2,
-  RECOMMEND_APPS_RESPONSE_PARSE_RESULT_OWNS_CHROMEBOOK_ALREADY = 3,
-  RECOMMEND_APPS_RESPONSE_PARSE_RESULT_UNKNOWN_ERROR_CODE = 4,
-  RECOMMEND_APPS_RESPONSE_PARSE_RESULT_INVALID_ERROR_CODE = 5,
-
-  kMaxValue = RECOMMEND_APPS_RESPONSE_PARSE_RESULT_INVALID_ERROR_CODE
-};
-
-bool HasTouchScreen() {
-  return !ui::InputDeviceManager::GetInstance()
-              ->GetTouchscreenDevices()
-              .empty();
-}
-
-bool HasStylusInput() {
-  // Check to see if the hardware reports it is stylus capable.
-  for (const ui::TouchscreenDevice& device :
-       ui::InputDeviceManager::GetInstance()->GetTouchscreenDevices()) {
-    if (device.has_stylus &&
-        device.type == ui::InputDeviceType::INPUT_DEVICE_INTERNAL) {
-      return true;
-    }
-  }
-
-  return false;
-}
-
-bool HasKeyboard() {
-  return !ui::InputDeviceManager::GetInstance()->GetKeyboardDevices().empty();
-}
-
-bool HasHardKeyboard() {
-  for (const ui::InputDevice& device :
-       ui::InputDeviceManager::GetInstance()->GetKeyboardDevices()) {
-    if (!device.phys.empty())
-      return true;
-  }
-
-  return false;
-}
-
-gfx::Size GetScreenSize() {
-  return display::Screen::GetScreen()->GetPrimaryDisplay().GetSizeInPixel();
-}
-
-// TODO(rsgingerrs): This function is copied from Play. We need to find a way to
-// keep this synced with the Play side if there are any changes there. Another
-// approach is to let the server do the calculation since we have provided the
-// screen width, height and dpi.
-int CalculateStableScreenLayout(const int screen_width,
-                                const int screen_height,
-                                const float dpi) {
-  const int density_default = 160;
-  const float px_to_dp = density_default / static_cast<float>(dpi);
-  const int short_size_dp = static_cast<int>(screen_width * px_to_dp);
-  const int long_size_dp = static_cast<int>(screen_height * px_to_dp);
-
-  int screen_layout_size;
-  bool screen_layout_long;
-
-  const int screenlayout_size_small = 0x01;
-  const int screenlayout_size_normal = 0x02;
-  const int screenlayout_size_large = 0x03;
-  const int screenlayout_size_xlarge = 0x04;
-  const int screenlayout_long_no = 0x10;
-
-  // These semi-magic numbers define our compatibility modes for
-  // applications with different screens.  These are guarantees to
-  // app developers about the space they can expect for a particular
-  // configuration.  DO NOT CHANGE!
-  if (long_size_dp < 470) {
-    // This is shorter than an HVGA normal density screen (which
-    // is 480 pixels on its long side).
-    screen_layout_size = screenlayout_size_small;
-    screen_layout_long = false;
-  } else {
-    // What size is this screen?
-    if (long_size_dp >= 960 && short_size_dp >= 720) {
-      // 1.5xVGA or larger screens at medium density are the point
-      // at which we consider it to be an extra large screen.
-      screen_layout_size = screenlayout_size_xlarge;
-    } else if (long_size_dp >= 640 && short_size_dp >= 480) {
-      // VGA or larger screens at medium density are the point
-      // at which we consider it to be a large screen.
-      screen_layout_size = screenlayout_size_large;
-    } else {
-      screen_layout_size = screenlayout_size_normal;
-    }
-
-    // Is this a long screen? Anything wider than WVGA (5:3) is considering to
-    // be long.
-    screen_layout_long = ((long_size_dp * 3) / 5) >= (short_size_dp - 1);
-  }
-
-  int screen_layout = screen_layout_size;
-  if (!screen_layout_long) {
-    screen_layout |= screenlayout_long_no;
-  }
-
-  return screen_layout;
-}
-
-device_configuration::DeviceConfigurationProto_ScreenLayout
-GetScreenLayoutSizeId(const int screen_layout_size_value) {
-  const int screenlayout_size_small = 0x01;
-  const int screenlayout_size_normal = 0x02;
-  const int screenlayout_size_large = 0x03;
-  const int screenlayout_size_xlarge = 0x04;
-  const int screenlayout_size_mask = 0x0f;
-  int size_bits = screen_layout_size_value & screenlayout_size_mask;
-
-  switch (size_bits) {
-    case screenlayout_size_small:
-      return device_configuration::DeviceConfigurationProto_ScreenLayout::
-          DeviceConfigurationProto_ScreenLayout_SMALL;
-    case screenlayout_size_normal:
-      return device_configuration::DeviceConfigurationProto_ScreenLayout::
-          DeviceConfigurationProto_ScreenLayout_NORMAL;
-    case screenlayout_size_large:
-      return device_configuration::DeviceConfigurationProto_ScreenLayout::
-          DeviceConfigurationProto_ScreenLayout_LARGE;
-    case screenlayout_size_xlarge:
-      return device_configuration::DeviceConfigurationProto_ScreenLayout::
-          DeviceConfigurationProto_ScreenLayout_EXTRA_LARGE;
-    default:
-      return device_configuration::DeviceConfigurationProto_ScreenLayout::
-          DeviceConfigurationProto_ScreenLayout_UNDEFINED_SCREEN_LAYOUT;
-  }
-}
-
-const gpu::GPUInfo GetGPUInfo() {
-  return content::GpuDataManager::GetInstance()->GetGPUInfo();
-}
-
-// This function converts the major and minor versions to the proto accepted
-// value. For example, if the version is 3.2, the return value is 0x00030002.
-unsigned GetGLVersionInfo() {
-  const gpu::GPUInfo gpu_info = GetGPUInfo();
-  gfx::ExtensionSet extensionSet(gfx::MakeExtensionSet(gpu_info.gl_extensions));
-  gl::GLVersionInfo glVersionInfo(gpu_info.gl_version.c_str(),
-                                  gpu_info.gl_renderer.c_str(), extensionSet);
-
-  unsigned major_version = glVersionInfo.major_version;
-  unsigned minor_version = glVersionInfo.minor_version;
-  unsigned version = 0x0000ffff;
-  version &= minor_version;
-  version |= (major_version << 16) & 0xffff0000;
-
-  return version;
-}
-
-gfx::ExtensionSet GetGLExtensions() {
-  const gpu::GPUInfo gpu_info = GetGPUInfo();
-  gfx::ExtensionSet extensionSet(gfx::MakeExtensionSet(gpu_info.gl_extensions));
-
-  return extensionSet;
-}
-
-const std::string& GetAndroidSdkVersion(const arc::ArcFeatures& arc_features) {
-  return arc_features.build_props.at("ro.build.version.sdk");
-}
-
-std::vector<std::string> GetCpuAbiList(const arc::ArcFeatures& arc_features) {
-  const std::string& abi_list_str =
-      arc_features.build_props.at("ro.product.cpu.abilist");
-  return base::SplitString(abi_list_str, ",", base::TRIM_WHITESPACE,
-                           base::SPLIT_WANT_ALL);
-}
-
-std::string CompressAndEncodeProtoMessageOnBlockingThread(
-    device_configuration::DeviceConfigurationProto device_config) {
-  std::string encoded_device_configuration_proto;
-
-  std::string serialized_proto;
-  device_config.SerializeToString(&serialized_proto);
-  std::string compressed_proto;
-  compression::GzipCompress(serialized_proto, &compressed_proto);
-  base::Base64UrlEncode(compressed_proto,
-                        base::Base64UrlEncodePolicy::OMIT_PADDING,
-                        &encoded_device_configuration_proto);
-
-  return encoded_device_configuration_proto;
-}
-
-void RecordUmaResponseAppCount(int app_count) {
-  UMA_HISTOGRAM_CUSTOM_COUNTS("OOBE.RecommendApps.Fetcher.AppCount", app_count,
-                              0, kMaxAppCount, kMaxAppCount + 1);
-}
-
-void RecordUmaDownloadTime(base::TimeDelta download_time) {
-  UMA_HISTOGRAM_TIMES("OOBE.RecommendApps.Fetcher.DownloadTime", download_time);
-}
-
-void RecordUmaResponseCode(int code) {
-  base::UmaHistogramSparse("OOBE.RecommendApps.Fetcher.ResponseCode", code);
-}
-
-void RecordUmaResponseParseResult(RecommendAppsResponseParseResult result) {
-  UMA_HISTOGRAM_ENUMERATION("OOBE.RecommendApps.Fetcher.ResponseParseResult",
-                            result);
-}
-
-void RecordUmaResponseSize(unsigned long responseSize) {
-  UMA_HISTOGRAM_COUNTS_1M(
-      "OOBE.RecommendApps.Fetcher.ResponseSize",
-      static_cast<base::HistogramBase::Sample>(responseSize));
-}
+// The factory callback that will be used to create RecommendAppsFetcher
+// instances other than default RecommendAppsFetcherImpl.
+// It can be set by SetFactoryCallbackForTesting().
+RecommendAppsFetcher::FactoryCallback* g_factory_callback = nullptr;
 
 }  // namespace
 
-RecommendAppsFetcher::RecommendAppsFetcher(RecommendAppsScreenView* view)
-    : view_(view), weak_ptr_factory_(this) {
-  service_manager::Connector* connector =
-      content::ServiceManagerConnection::GetForProcess()->GetConnector();
-  DCHECK(connector);
-  connector->BindInterface(ash::mojom::kServiceName, &cros_display_config_);
-
-  PopulateDeviceConfig();
-  StartAshRequest();
-  arc::ArcFeaturesParser::GetArcFeatures(
-      base::BindOnce(&RecommendAppsFetcher::OnArcFeaturesRead,
-                     weak_ptr_factory_.GetWeakPtr()));
+// static
+std::unique_ptr<RecommendAppsFetcher> RecommendAppsFetcher::Create(
+    RecommendAppsScreenView* view) {
+  if (g_factory_callback)
+    return g_factory_callback->Run(view);
+  return std::make_unique<RecommendAppsFetcherImpl>(view);
 }
 
-RecommendAppsFetcher::~RecommendAppsFetcher() = default;
+// static
+void RecommendAppsFetcher::SetFactoryCallbackForTesting(
+    FactoryCallback* callback) {
+  DCHECK(!g_factory_callback || !callback);
 
-void RecommendAppsFetcher::PopulateDeviceConfig() {
-  if (!HasTouchScreen()) {
-    device_config_.set_touch_screen(
-        device_configuration::DeviceConfigurationProto_TouchScreen::
-            DeviceConfigurationProto_TouchScreen_NOTOUCH);
-  } else if (!HasStylusInput()) {
-    device_config_.set_touch_screen(
-        device_configuration::DeviceConfigurationProto_TouchScreen::
-            DeviceConfigurationProto_TouchScreen_FINGER);
-  } else {
-    device_config_.set_touch_screen(
-        device_configuration::DeviceConfigurationProto_TouchScreen::
-            DeviceConfigurationProto_TouchScreen_STYLUS);
-  }
-
-  if (!HasKeyboard()) {
-    device_config_.set_keyboard(
-        device_configuration::DeviceConfigurationProto_Keyboard::
-            DeviceConfigurationProto_Keyboard_NOKEYS);
-  } else {
-    // TODO(rsgingerrs): Currently there is no straightforward way to determine
-    // whether it is a full keyboard or not. We assume it is safe to set it as
-    // QWERTY keyboard for this feature.
-    device_config_.set_keyboard(
-        device_configuration::DeviceConfigurationProto_Keyboard::
-            DeviceConfigurationProto_Keyboard_QWERTY);
-  }
-  device_config_.set_has_hard_keyboard(HasHardKeyboard());
-
-  // TODO(rsgingerrs): There is no straightforward way to get this info. We
-  // assume it is safe to set it as no navigation.
-  device_config_.set_navigation(
-      device_configuration::DeviceConfigurationProto_Navigation::
-          DeviceConfigurationProto_Navigation_NONAV);
-  device_config_.set_has_five_way_navigation(false);
-
-  device_config_.set_gl_es_version(GetGLVersionInfo());
-
-  for (const base::StringPiece& gl_extension : GetGLExtensions()) {
-    if (!gl_extension.empty())
-      device_config_.add_gl_extension(gl_extension.as_string());
-  }
-}
-
-void RecommendAppsFetcher::StartAshRequest() {
-  cros_display_config_->GetDisplayUnitInfoList(
-      false /* single_unified */,
-      base::BindOnce(&RecommendAppsFetcher::OnAshResponse,
-                     weak_ptr_factory_.GetWeakPtr()));
-}
-
-void RecommendAppsFetcher::MaybeStartCompressAndEncodeProtoMessage() {
-  if (!ash_ready_ || !arc_features_ready_ || has_started_proto_processing_)
-    return;
-
-  base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
-      base::BindOnce(&CompressAndEncodeProtoMessageOnBlockingThread,
-                     std::move(device_config_)),
-      base::BindOnce(&RecommendAppsFetcher::OnProtoMessageCompressedAndEncoded,
-                     weak_ptr_factory_.GetWeakPtr()));
-  has_started_proto_processing_ = true;
-}
-
-void RecommendAppsFetcher::OnProtoMessageCompressedAndEncoded(
-    std::string encoded_device_configuration_proto) {
-  proto_compressed_and_encoded_ = true;
-  encoded_device_configuration_proto_ = encoded_device_configuration_proto;
-  StartDownload();
-}
-
-void RecommendAppsFetcher::OnAshResponse(
-    std::vector<ash::mojom::DisplayUnitInfoPtr> all_displays_info) {
-  ash_ready_ = true;
-
-  int screen_density = 0;
-  for (const ash::mojom::DisplayUnitInfoPtr& display_info : all_displays_info) {
-    if (base::NumberToString(display::Display::InternalDisplayId()) ==
-        display_info->id) {
-      screen_density = display_info->dpi_x + display_info->dpi_y;
-      break;
-    }
-  }
-  device_config_.set_screen_density(screen_density);
-
-  const int screen_width = GetScreenSize().width();
-  const int screen_height = GetScreenSize().height();
-  device_config_.set_screen_width(screen_width);
-  device_config_.set_screen_height(screen_height);
-
-  const int screen_layout =
-      CalculateStableScreenLayout(screen_width, screen_height, screen_density);
-  device_config_.set_screen_layout(GetScreenLayoutSizeId(screen_layout));
-
-  MaybeStartCompressAndEncodeProtoMessage();
-}
-
-void RecommendAppsFetcher::OnArcFeaturesRead(
-    base::Optional<arc::ArcFeatures> read_result) {
-  arc_features_ready_ = true;
-
-  if (read_result != base::nullopt) {
-    for (const auto& feature : read_result.value().feature_map) {
-      device_config_.add_system_available_feature(feature.first);
-    }
-
-    for (const auto& abi : GetCpuAbiList(read_result.value())) {
-      device_config_.add_native_platform(abi);
-    }
-
-    play_store_version_ = read_result.value().play_store_version;
-
-    android_sdk_version_ = GetAndroidSdkVersion(read_result.value());
-  }
-
-  MaybeStartCompressAndEncodeProtoMessage();
-}
-
-void RecommendAppsFetcher::StartDownload() {
-  if (!proto_compressed_and_encoded_)
-    return;
-
-  net::NetworkTrafficAnnotationTag traffic_annotation =
-      net::DefineNetworkTrafficAnnotation("play_recommended_apps_download", R"(
-        semantics {
-          sender: "ChromeOS Recommended Apps Screen"
-          description:
-            "Chrome OS downloads the recommended app list from Google Play API."
-          trigger:
-            "When user has accepted the ARC Terms of Service."
-          data:
-            "URL of the Google Play API."
-          destination: GOOGLE_OWNED_SERVICE
-        }
-        policy {
-          cookies_allowed: YES
-          cookie_store: "user"
-          setting:
-            "NA"
-          policy_exception_justification:
-            "Not implemented, considered not necessary."
-        })");
-
-  Profile* profile = ProfileManager::GetActiveUserProfile();
-
-  auto resource_request = std::make_unique<network::ResourceRequest>();
-  resource_request->url = GURL(kGetAppListUrl);
-  resource_request->method = "GET";
-  resource_request->load_flags =
-      net::LOAD_BYPASS_CACHE | net::LOAD_DISABLE_CACHE;
-
-  resource_request->headers.SetHeader("X-DFE-Device-Config",
-                                      encoded_device_configuration_proto_);
-  resource_request->headers.SetHeader("X-DFE-Sdk-Version",
-                                      android_sdk_version_);
-  resource_request->headers.SetHeader("X-DFE-Chromesky-Client-Version",
-                                      play_store_version_);
-
-  network::mojom::URLLoaderFactory* loader_factory =
-      content::BrowserContext::GetDefaultStoragePartition(profile)
-          ->GetURLLoaderFactoryForBrowserProcess()
-          .get();
-
-  start_time_ = base::TimeTicks::Now();
-  app_list_loader_ = network::SimpleURLLoader::Create(
-      std::move(resource_request), traffic_annotation);
-  // Retry up to three times if network changes are detected during the
-  // download.
-  app_list_loader_->SetRetryOptions(
-      3, network::SimpleURLLoader::RETRY_ON_NETWORK_CHANGE);
-  app_list_loader_->DownloadToString(
-      loader_factory,
-      base::BindOnce(&RecommendAppsFetcher::OnDownloaded,
-                     base::Unretained(this)),
-      kMaxDownloadBytes);
-
-  // Abort the download attempt if it takes longer than one minute.
-  download_timer_.Start(FROM_HERE, kDownloadTimeOut, this,
-                        &RecommendAppsFetcher::OnDownloadTimeout);
-}
-
-void RecommendAppsFetcher::OnDownloadTimeout() {
-  // Destroy the fetcher, which will abort the download attempt.
-  app_list_loader_.reset();
-
-  RecordUmaDownloadTime(base::TimeTicks::Now() - start_time_);
-
-  // Show an error message to the user.
-  if (view_)
-    view_->OnLoadError();
-}
-
-void RecommendAppsFetcher::OnDownloaded(
-    std::unique_ptr<std::string> response_body) {
-  download_timer_.Stop();
-
-  RecordUmaDownloadTime(base::TimeTicks::Now() - start_time_);
-
-  std::unique_ptr<network::SimpleURLLoader> loader(std::move(app_list_loader_));
-  if (!view_)
-    return;
-
-  int response_code = 0;
-  if (!loader->ResponseInfo() || !loader->ResponseInfo()->headers) {
-    view_->OnLoadError();
-    return;
-  }
-  response_code = loader->ResponseInfo()->headers->response_code();
-  RecordUmaResponseCode(response_code);
-
-  // If the recommended app list could not be downloaded, show an error message
-  // to the user.
-  if (!response_body || response_body->empty()) {
-    view_->OnLoadError();
-    return;
-  }
-
-  // If the recommended app list were downloaded successfully, show them to
-  // the user.
-  //
-  // The response starts with a prefix ")]}'". This needs to be removed before
-  // further parsing.
-  RecordUmaResponseSize(response_body->size());
-  constexpr base::StringPiece json_xss_prevention_prefix(")]}'");
-  base::StringPiece response_body_json(*response_body);
-  if (response_body_json.starts_with(json_xss_prevention_prefix))
-    response_body_json.remove_prefix(json_xss_prevention_prefix.length());
-  base::Optional<base::Value> output = ParseResponse(response_body_json);
-  if (!output.has_value()) {
-    RecordUmaResponseAppCount(0);
-    view_->OnParseResponseError();
-    return;
-  }
-
-  view_->OnLoadSuccess(std::move(output.value()));
-}
-
-void RecommendAppsFetcher::Retry() {
-  StartDownload();
-}
-
-base::Optional<base::Value> RecommendAppsFetcher::ParseResponse(
-    base::StringPiece response) {
-  base::Value output(base::Value::Type::LIST);
-
-  int error_code;
-  std::string error_msg;
-  std::unique_ptr<base::Value> json_value =
-      base::JSONReader::ReadAndReturnErrorDeprecated(
-          response, base::JSON_PARSE_RFC, &error_code, &error_msg);
-
-  if (!json_value || (!json_value->is_list() && !json_value->is_dict())) {
-    LOG(ERROR) << "Error parsing response JSON: " << error_msg;
-    RecordUmaResponseParseResult(
-        RECOMMEND_APPS_RESPONSE_PARSE_RESULT_INVALID_JSON);
-    return base::nullopt;
-  }
-
-  // If the response is a dictionary, it is an error message in the
-  // following format:
-  //   {"Error code":"error code","Error message":"Error message"}
-  if (json_value->is_dict()) {
-    const base::Value* response_error_code_value =
-        json_value->FindKeyOfType("Error code", base::Value::Type::STRING);
-
-    if (!response_error_code_value) {
-      LOG(ERROR) << "Unable to find error code: response="
-                 << response.substr(0, 128);
-      RecordUmaResponseParseResult(
-          RECOMMEND_APPS_RESPONSE_PARSE_RESULT_INVALID_JSON);
-      return base::nullopt;
-    }
-
-    base::StringPiece response_error_code_str =
-        response_error_code_value->GetString();
-    int response_error_code = 0;
-    if (!base::StringToInt(response_error_code_str, &response_error_code)) {
-      LOG(WARNING) << "Unable to parse error code: " << response_error_code_str;
-      RecordUmaResponseParseResult(
-          RECOMMEND_APPS_RESPONSE_PARSE_RESULT_INVALID_ERROR_CODE);
-      return base::nullopt;
-    }
-
-    if (response_error_code == kResponseErrorNotFirstTimeChromebookUser) {
-      RecordUmaResponseParseResult(
-          RECOMMEND_APPS_RESPONSE_PARSE_RESULT_OWNS_CHROMEBOOK_ALREADY);
-    } else if (response_error_code == kResponseErrorNotEnoughApps) {
-      RecordUmaResponseParseResult(RECOMMEND_APPS_RESPONSE_PARSE_RESULT_NO_APP);
-    } else {
-      LOG(WARNING) << "Unknown error code: " << response_error_code_str;
-      RecordUmaResponseParseResult(
-          RECOMMEND_APPS_RESPONSE_PARSE_RESULT_UNKNOWN_ERROR_CODE);
-    }
-
-    return base::nullopt;
-  }
-
-  // Otherwise, the response should return a list of apps.
-  const base::Value::ListStorage& app_list = json_value->GetList();
-  if (app_list.empty()) {
-    DVLOG(1) << "No app in the response.";
-    RecordUmaResponseParseResult(RECOMMEND_APPS_RESPONSE_PARSE_RESULT_NO_APP);
-    return base::nullopt;
-  }
-
-  for (auto& item : app_list) {
-    base::Value output_map(base::Value::Type::DICTIONARY);
-
-    if (!item.is_dict()) {
-      DVLOG(1) << "Cannot parse item.";
-      continue;
-    }
-
-    // Retrieve the app title.
-    const base::Value* title =
-        item.FindPathOfType({"title_", "name_"}, base::Value::Type::STRING);
-    if (title)
-      output_map.SetKey("name", base::Value(title->GetString()));
-
-    // Retrieve the package name.
-    const base::Value* package_name =
-        item.FindPathOfType({"id_", "id_"}, base::Value::Type::STRING);
-    if (package_name)
-      output_map.SetKey("package_name", base::Value(package_name->GetString()));
-
-    // Retrieve the icon URL for the app.
-    //
-    // The name "privateDoNotAccessOrElseSafeUrlWrappedValue_" here is because
-    // it is a direct serialization from the proto message. The value has been
-    // sanitized so it is regarded as a safe URL. In general, if the response is
-    // a protobuf, we should not directly access this field but use the wrapper
-    // method getSafeUrlString() to read it. In our case, we don't have the
-    // option other than access it directly.
-    const base::Value* icon_url = item.FindPathOfType(
-        {"icon_", "url_", "privateDoNotAccessOrElseSafeUrlWrappedValue_"},
-        base::Value::Type::STRING);
-    if (icon_url)
-      output_map.SetKey("icon", base::Value(icon_url->GetString()));
-
-    output.GetList().push_back(std::move(output_map));
-  }
-
-  RecordUmaResponseParseResult(RECOMMEND_APPS_RESPONSE_PARSE_RESULT_NO_ERROR);
-  RecordUmaResponseAppCount(static_cast<int>(output.GetList().size()));
-
-  return output;
+  g_factory_callback = callback;
 }
 
 }  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher.h b/chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher.h
index 357c7a5..f6be97a 100644
--- a/chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher.h
+++ b/chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher.h
@@ -1,4 +1,4 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
+// Copyright 2019 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
@@ -6,132 +6,27 @@
 #define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_RECOMMEND_APPS_RECOMMEND_APPS_FETCHER_H_
 
 #include <memory>
-#include <string>
-#include <vector>
 
-#include "ash/public/interfaces/cros_display_config.mojom.h"
-#include "base/callback.h"
-#include "base/macros.h"
-#include "base/memory/weak_ptr.h"
-#include "base/timer/timer.h"
-#include "chrome/browser/chromeos/login/screens/recommend_apps/device_configuration.pb.h"
-#include "chrome/browser/chromeos/login/screens/recommend_apps_screen_view.h"
-#include "components/arc/arc_features_parser.h"
-#include "extensions/browser/api/system_display/display_info_provider.h"
-
-namespace network {
-class SimpleURLLoader;
-}
+#include "base/callback_forward.h"
 
 namespace chromeos {
 
-// This class handles the network request for the Recommend Apps screen. It is
-// supposed to run on the UI thread. The request requires the following headers:
-// 1. X-Device-Config
-// 2. X-Sdk-Version
-// Play requires Android device config information to filter apps.
-// device_configuration.proto is used to encode all the info. The following
-// fields will be retrieved and sent:
-// 1. touch_screen
-// 2. keyboard
-// 3. navigation
-// 4. screen_layout
-// 5. has_hard_keyboard
-// 6. has_five_way_navigation
-// 7. screen_density
-// 8. screen_width
-// 9. screen_height
-// 10. gl_es_version
-// 11. system_available_feature
-// 12. native_platform
-// 13. gl_extension
+class RecommendAppsScreenView;
+
 class RecommendAppsFetcher {
  public:
-  explicit RecommendAppsFetcher(RecommendAppsScreenView* view);
-  ~RecommendAppsFetcher();
+  static std::unique_ptr<RecommendAppsFetcher> Create(
+      RecommendAppsScreenView* view);
 
-  // Provide a retry method to download the app list again.
-  void Retry();
+  using FactoryCallback =
+      base::RepeatingCallback<std::unique_ptr<RecommendAppsFetcher>(
+          RecommendAppsScreenView* view)>;
+  static void SetFactoryCallbackForTesting(FactoryCallback* callback);
 
- private:
-  // Populate the required device config info.
-  void PopulateDeviceConfig();
+  virtual ~RecommendAppsFetcher() = default;
 
-  // Start the connection to ash. Send the request to get display unit info
-  // list.
-  void StartAshRequest();
-
-  // Start to compress and encode the proto message if we finish ash request
-  // and ARC feature is read.
-  void MaybeStartCompressAndEncodeProtoMessage();
-
-  // Callback function called when display unit info list is retrieved from ash.
-  // It will populate the device config info related to the screen density.
-  void OnAshResponse(
-      std::vector<ash::mojom::DisplayUnitInfoPtr> all_displays_info);
-
-  // Callback function called when ARC features are read by the parser.
-  // It will populate the device config info related to ARC features.
-  void OnArcFeaturesRead(base::Optional<arc::ArcFeatures> read_result);
-
-  // Callback function called when the proto message has been compressed and
-  // encoded.
-  void OnProtoMessageCompressedAndEncoded(
-      std::string encoded_device_configuration_proto);
-
-  // Start downloading the recommended app list.
-  void StartDownload();
-
-  // Abort the attempt to download the recommended app list if it takes too
-  // long.
-  void OnDownloadTimeout();
-
-  // Callback function called when SimpleURLLoader completes.
-  void OnDownloaded(std::unique_ptr<std::string> response_body);
-
-  // If the response is not a valid JSON, return base::nullopt.
-  // If the response contains no app, return base::nullopt;
-  // Value output, in true, is a list containing:
-  // 1. name: the title of the app.
-  // 2. package_name
-  // 3. Possibly an Icon URL.
-  // Parses an input string that looks somewhat like this:
-  // [{"title_" : {"name_" : {title of app"}},
-  //   "id_" : {"id_" : {com.package.name"}},
-  //  "icon_": {"url_": {"privateDoNotAccessOrElseSafeUrlWrappedValue_":
-  //  "http://icon_url.com/url"}}},
-  //  {"title_" : "title of second app",
-  //   "packageName_": "second package name.",
-  //  }]
-  base::Optional<base::Value> ParseResponse(base::StringPiece response);
-
-  device_configuration::DeviceConfigurationProto device_config_;
-
-  std::string android_sdk_version_;
-
-  std::string play_store_version_;
-
-  std::string encoded_device_configuration_proto_;
-
-  bool ash_ready_ = false;
-  bool arc_features_ready_ = false;
-  bool has_started_proto_processing_ = false;
-  bool proto_compressed_and_encoded_ = false;
-
-  RecommendAppsScreenView* view_;
-
-  std::unique_ptr<network::SimpleURLLoader> app_list_loader_;
-
-  // Timer that enforces a custom (shorter) timeout on the attempt to download
-  // the recommended app list.
-  base::OneShotTimer download_timer_;
-
-  base::TimeTicks start_time_;
-
-  ash::mojom::CrosDisplayConfigControllerPtr cros_display_config_;
-  base::WeakPtrFactory<RecommendAppsFetcher> weak_ptr_factory_;
-
-  DISALLOW_COPY_AND_ASSIGN(RecommendAppsFetcher);
+  virtual void Start() = 0;
+  virtual void Retry() = 0;
 };
 
 }  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher_impl.cc b/chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher_impl.cc
new file mode 100644
index 0000000..3c4cdf9
--- /dev/null
+++ b/chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher_impl.cc
@@ -0,0 +1,637 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher_impl.h"
+
+#include "ash/public/interfaces/constants.mojom.h"
+#include "ash/public/interfaces/cros_display_config.mojom.h"
+#include "base/base64url.h"
+#include "base/bind.h"
+#include "base/json/json_reader.h"
+#include "base/metrics/histogram_functions.h"
+#include "base/metrics/histogram_macros.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_piece.h"
+#include "base/strings/string_split.h"
+#include "base/task/post_task.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/profiles/profile_manager.h"
+#include "content/public/browser/gpu_data_manager.h"
+#include "content/public/browser/storage_partition.h"
+#include "content/public/common/service_manager_connection.h"
+#include "extensions/common/api/system_display.h"
+#include "gpu/config/gpu_info.h"
+#include "net/base/load_flags.h"
+#include "net/http/http_status_code.h"
+#include "services/network/public/cpp/simple_url_loader.h"
+#include "services/service_manager/public/cpp/connector.h"
+#include "third_party/zlib/google/compression_utils.h"
+#include "ui/display/display.h"
+#include "ui/display/screen.h"
+#include "ui/events/devices/input_device.h"
+#include "ui/events/devices/input_device_manager.h"
+#include "ui/gfx/extension_set.h"
+#include "ui/gl/gl_version_info.h"
+
+namespace chromeos {
+
+namespace {
+
+constexpr const char kGetAppListUrl[] =
+    "https://android.clients.google.com/fdfe/chrome/getfastreinstallappslist";
+
+constexpr int kResponseErrorNotEnoughApps = 5;
+
+constexpr int kResponseErrorNotFirstTimeChromebookUser = 6;
+
+constexpr base::TimeDelta kDownloadTimeOut = base::TimeDelta::FromMinutes(1);
+
+constexpr const int64_t kMaxDownloadBytes = 1024 * 1024;  // 1Mb
+
+constexpr const int kMaxAppCount = 21;
+
+enum RecommendAppsResponseParseResult {
+  // These values are persisted to logs. Entries should not be renumbered and
+  // numeric values should never be reused.
+  RECOMMEND_APPS_RESPONSE_PARSE_RESULT_NO_ERROR = 0,
+  RECOMMEND_APPS_RESPONSE_PARSE_RESULT_INVALID_JSON = 1,
+  RECOMMEND_APPS_RESPONSE_PARSE_RESULT_NO_APP = 2,
+  RECOMMEND_APPS_RESPONSE_PARSE_RESULT_OWNS_CHROMEBOOK_ALREADY = 3,
+  RECOMMEND_APPS_RESPONSE_PARSE_RESULT_UNKNOWN_ERROR_CODE = 4,
+  RECOMMEND_APPS_RESPONSE_PARSE_RESULT_INVALID_ERROR_CODE = 5,
+
+  kMaxValue = RECOMMEND_APPS_RESPONSE_PARSE_RESULT_INVALID_ERROR_CODE
+};
+
+bool HasTouchScreen() {
+  return !ui::InputDeviceManager::GetInstance()
+              ->GetTouchscreenDevices()
+              .empty();
+}
+
+bool HasStylusInput() {
+  // Check to see if the hardware reports it is stylus capable.
+  for (const ui::TouchscreenDevice& device :
+       ui::InputDeviceManager::GetInstance()->GetTouchscreenDevices()) {
+    if (device.has_stylus &&
+        device.type == ui::InputDeviceType::INPUT_DEVICE_INTERNAL) {
+      return true;
+    }
+  }
+
+  return false;
+}
+
+bool HasKeyboard() {
+  return !ui::InputDeviceManager::GetInstance()->GetKeyboardDevices().empty();
+}
+
+bool HasHardKeyboard() {
+  for (const ui::InputDevice& device :
+       ui::InputDeviceManager::GetInstance()->GetKeyboardDevices()) {
+    if (!device.phys.empty())
+      return true;
+  }
+
+  return false;
+}
+
+gfx::Size GetScreenSize() {
+  return display::Screen::GetScreen()->GetPrimaryDisplay().GetSizeInPixel();
+}
+
+// TODO(rsgingerrs): This function is copied from Play. We need to find a way to
+// keep this synced with the Play side if there are any changes there. Another
+// approach is to let the server do the calculation since we have provided the
+// screen width, height and dpi.
+int CalculateStableScreenLayout(const int screen_width,
+                                const int screen_height,
+                                const float dpi) {
+  const int density_default = 160;
+  const float px_to_dp = density_default / static_cast<float>(dpi);
+  const int short_size_dp = static_cast<int>(screen_width * px_to_dp);
+  const int long_size_dp = static_cast<int>(screen_height * px_to_dp);
+
+  int screen_layout_size;
+  bool screen_layout_long;
+
+  const int screenlayout_size_small = 0x01;
+  const int screenlayout_size_normal = 0x02;
+  const int screenlayout_size_large = 0x03;
+  const int screenlayout_size_xlarge = 0x04;
+  const int screenlayout_long_no = 0x10;
+
+  // These semi-magic numbers define our compatibility modes for
+  // applications with different screens.  These are guarantees to
+  // app developers about the space they can expect for a particular
+  // configuration.  DO NOT CHANGE!
+  if (long_size_dp < 470) {
+    // This is shorter than an HVGA normal density screen (which
+    // is 480 pixels on its long side).
+    screen_layout_size = screenlayout_size_small;
+    screen_layout_long = false;
+  } else {
+    // What size is this screen?
+    if (long_size_dp >= 960 && short_size_dp >= 720) {
+      // 1.5xVGA or larger screens at medium density are the point
+      // at which we consider it to be an extra large screen.
+      screen_layout_size = screenlayout_size_xlarge;
+    } else if (long_size_dp >= 640 && short_size_dp >= 480) {
+      // VGA or larger screens at medium density are the point
+      // at which we consider it to be a large screen.
+      screen_layout_size = screenlayout_size_large;
+    } else {
+      screen_layout_size = screenlayout_size_normal;
+    }
+
+    // Is this a long screen? Anything wider than WVGA (5:3) is considering to
+    // be long.
+    screen_layout_long = ((long_size_dp * 3) / 5) >= (short_size_dp - 1);
+  }
+
+  int screen_layout = screen_layout_size;
+  if (!screen_layout_long) {
+    screen_layout |= screenlayout_long_no;
+  }
+
+  return screen_layout;
+}
+
+device_configuration::DeviceConfigurationProto_ScreenLayout
+GetScreenLayoutSizeId(const int screen_layout_size_value) {
+  const int screenlayout_size_small = 0x01;
+  const int screenlayout_size_normal = 0x02;
+  const int screenlayout_size_large = 0x03;
+  const int screenlayout_size_xlarge = 0x04;
+  const int screenlayout_size_mask = 0x0f;
+  int size_bits = screen_layout_size_value & screenlayout_size_mask;
+
+  switch (size_bits) {
+    case screenlayout_size_small:
+      return device_configuration::DeviceConfigurationProto_ScreenLayout::
+          DeviceConfigurationProto_ScreenLayout_SMALL;
+    case screenlayout_size_normal:
+      return device_configuration::DeviceConfigurationProto_ScreenLayout::
+          DeviceConfigurationProto_ScreenLayout_NORMAL;
+    case screenlayout_size_large:
+      return device_configuration::DeviceConfigurationProto_ScreenLayout::
+          DeviceConfigurationProto_ScreenLayout_LARGE;
+    case screenlayout_size_xlarge:
+      return device_configuration::DeviceConfigurationProto_ScreenLayout::
+          DeviceConfigurationProto_ScreenLayout_EXTRA_LARGE;
+    default:
+      return device_configuration::DeviceConfigurationProto_ScreenLayout::
+          DeviceConfigurationProto_ScreenLayout_UNDEFINED_SCREEN_LAYOUT;
+  }
+}
+
+const gpu::GPUInfo GetGPUInfo() {
+  return content::GpuDataManager::GetInstance()->GetGPUInfo();
+}
+
+// This function converts the major and minor versions to the proto accepted
+// value. For example, if the version is 3.2, the return value is 0x00030002.
+unsigned GetGLVersionInfo() {
+  const gpu::GPUInfo gpu_info = GetGPUInfo();
+  gfx::ExtensionSet extensionSet(gfx::MakeExtensionSet(gpu_info.gl_extensions));
+  gl::GLVersionInfo glVersionInfo(gpu_info.gl_version.c_str(),
+                                  gpu_info.gl_renderer.c_str(), extensionSet);
+
+  unsigned major_version = glVersionInfo.major_version;
+  unsigned minor_version = glVersionInfo.minor_version;
+  unsigned version = 0x0000ffff;
+  version &= minor_version;
+  version |= (major_version << 16) & 0xffff0000;
+
+  return version;
+}
+
+gfx::ExtensionSet GetGLExtensions() {
+  const gpu::GPUInfo gpu_info = GetGPUInfo();
+  gfx::ExtensionSet extensionSet(gfx::MakeExtensionSet(gpu_info.gl_extensions));
+
+  return extensionSet;
+}
+
+const std::string& GetAndroidSdkVersion(const arc::ArcFeatures& arc_features) {
+  return arc_features.build_props.at("ro.build.version.sdk");
+}
+
+std::vector<std::string> GetCpuAbiList(const arc::ArcFeatures& arc_features) {
+  const std::string& abi_list_str =
+      arc_features.build_props.at("ro.product.cpu.abilist");
+  return base::SplitString(abi_list_str, ",", base::TRIM_WHITESPACE,
+                           base::SPLIT_WANT_ALL);
+}
+
+std::string CompressAndEncodeProtoMessageOnBlockingThread(
+    device_configuration::DeviceConfigurationProto device_config) {
+  std::string encoded_device_configuration_proto;
+
+  std::string serialized_proto;
+  device_config.SerializeToString(&serialized_proto);
+  std::string compressed_proto;
+  compression::GzipCompress(serialized_proto, &compressed_proto);
+  base::Base64UrlEncode(compressed_proto,
+                        base::Base64UrlEncodePolicy::OMIT_PADDING,
+                        &encoded_device_configuration_proto);
+
+  return encoded_device_configuration_proto;
+}
+
+void RecordUmaResponseAppCount(int app_count) {
+  UMA_HISTOGRAM_CUSTOM_COUNTS("OOBE.RecommendApps.Fetcher.AppCount", app_count,
+                              0, kMaxAppCount, kMaxAppCount + 1);
+}
+
+void RecordUmaDownloadTime(base::TimeDelta download_time) {
+  UMA_HISTOGRAM_TIMES("OOBE.RecommendApps.Fetcher.DownloadTime", download_time);
+}
+
+void RecordUmaResponseCode(int code) {
+  base::UmaHistogramSparse("OOBE.RecommendApps.Fetcher.ResponseCode", code);
+}
+
+void RecordUmaResponseParseResult(RecommendAppsResponseParseResult result) {
+  UMA_HISTOGRAM_ENUMERATION("OOBE.RecommendApps.Fetcher.ResponseParseResult",
+                            result);
+}
+
+void RecordUmaResponseSize(unsigned long responseSize) {
+  UMA_HISTOGRAM_COUNTS_1M(
+      "OOBE.RecommendApps.Fetcher.ResponseSize",
+      static_cast<base::HistogramBase::Sample>(responseSize));
+}
+
+}  // namespace
+
+RecommendAppsFetcherImpl::RecommendAppsFetcherImpl(
+    RecommendAppsScreenView* view)
+    : view_(view), weak_ptr_factory_(this) {
+  service_manager::Connector* connector =
+      content::ServiceManagerConnection::GetForProcess()->GetConnector();
+  DCHECK(connector);
+  connector->BindInterface(ash::mojom::kServiceName, &cros_display_config_);
+}
+
+RecommendAppsFetcherImpl::~RecommendAppsFetcherImpl() = default;
+
+void RecommendAppsFetcherImpl::PopulateDeviceConfig() {
+  if (!HasTouchScreen()) {
+    device_config_.set_touch_screen(
+        device_configuration::DeviceConfigurationProto_TouchScreen::
+            DeviceConfigurationProto_TouchScreen_NOTOUCH);
+  } else if (!HasStylusInput()) {
+    device_config_.set_touch_screen(
+        device_configuration::DeviceConfigurationProto_TouchScreen::
+            DeviceConfigurationProto_TouchScreen_FINGER);
+  } else {
+    device_config_.set_touch_screen(
+        device_configuration::DeviceConfigurationProto_TouchScreen::
+            DeviceConfigurationProto_TouchScreen_STYLUS);
+  }
+
+  if (!HasKeyboard()) {
+    device_config_.set_keyboard(
+        device_configuration::DeviceConfigurationProto_Keyboard::
+            DeviceConfigurationProto_Keyboard_NOKEYS);
+  } else {
+    // TODO(rsgingerrs): Currently there is no straightforward way to determine
+    // whether it is a full keyboard or not. We assume it is safe to set it as
+    // QWERTY keyboard for this feature.
+    device_config_.set_keyboard(
+        device_configuration::DeviceConfigurationProto_Keyboard::
+            DeviceConfigurationProto_Keyboard_QWERTY);
+  }
+  device_config_.set_has_hard_keyboard(HasHardKeyboard());
+
+  // TODO(rsgingerrs): There is no straightforward way to get this info. We
+  // assume it is safe to set it as no navigation.
+  device_config_.set_navigation(
+      device_configuration::DeviceConfigurationProto_Navigation::
+          DeviceConfigurationProto_Navigation_NONAV);
+  device_config_.set_has_five_way_navigation(false);
+
+  device_config_.set_gl_es_version(GetGLVersionInfo());
+
+  for (const base::StringPiece& gl_extension : GetGLExtensions()) {
+    if (!gl_extension.empty())
+      device_config_.add_gl_extension(gl_extension.as_string());
+  }
+}
+
+void RecommendAppsFetcherImpl::StartAshRequest() {
+  cros_display_config_->GetDisplayUnitInfoList(
+      false /* single_unified */,
+      base::BindOnce(&RecommendAppsFetcherImpl::OnAshResponse,
+                     weak_ptr_factory_.GetWeakPtr()));
+}
+
+void RecommendAppsFetcherImpl::MaybeStartCompressAndEncodeProtoMessage() {
+  if (!ash_ready_ || !arc_features_ready_ || has_started_proto_processing_)
+    return;
+
+  base::PostTaskWithTraitsAndReplyWithResult(
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
+      base::BindOnce(&CompressAndEncodeProtoMessageOnBlockingThread,
+                     std::move(device_config_)),
+      base::BindOnce(
+          &RecommendAppsFetcherImpl::OnProtoMessageCompressedAndEncoded,
+          weak_ptr_factory_.GetWeakPtr()));
+  has_started_proto_processing_ = true;
+}
+
+void RecommendAppsFetcherImpl::OnProtoMessageCompressedAndEncoded(
+    std::string encoded_device_configuration_proto) {
+  proto_compressed_and_encoded_ = true;
+  encoded_device_configuration_proto_ = encoded_device_configuration_proto;
+  StartDownload();
+}
+
+void RecommendAppsFetcherImpl::OnAshResponse(
+    std::vector<ash::mojom::DisplayUnitInfoPtr> all_displays_info) {
+  ash_ready_ = true;
+
+  int screen_density = 0;
+  for (const ash::mojom::DisplayUnitInfoPtr& display_info : all_displays_info) {
+    if (base::NumberToString(display::Display::InternalDisplayId()) ==
+        display_info->id) {
+      screen_density = display_info->dpi_x + display_info->dpi_y;
+      break;
+    }
+  }
+  device_config_.set_screen_density(screen_density);
+
+  const int screen_width = GetScreenSize().width();
+  const int screen_height = GetScreenSize().height();
+  device_config_.set_screen_width(screen_width);
+  device_config_.set_screen_height(screen_height);
+
+  const int screen_layout =
+      CalculateStableScreenLayout(screen_width, screen_height, screen_density);
+  device_config_.set_screen_layout(GetScreenLayoutSizeId(screen_layout));
+
+  MaybeStartCompressAndEncodeProtoMessage();
+}
+
+void RecommendAppsFetcherImpl::OnArcFeaturesRead(
+    base::Optional<arc::ArcFeatures> read_result) {
+  arc_features_ready_ = true;
+
+  if (read_result != base::nullopt) {
+    for (const auto& feature : read_result.value().feature_map) {
+      device_config_.add_system_available_feature(feature.first);
+    }
+
+    for (const auto& abi : GetCpuAbiList(read_result.value())) {
+      device_config_.add_native_platform(abi);
+    }
+
+    play_store_version_ = read_result.value().play_store_version;
+
+    android_sdk_version_ = GetAndroidSdkVersion(read_result.value());
+  }
+
+  MaybeStartCompressAndEncodeProtoMessage();
+}
+
+void RecommendAppsFetcherImpl::StartDownload() {
+  if (!proto_compressed_and_encoded_)
+    return;
+
+  net::NetworkTrafficAnnotationTag traffic_annotation =
+      net::DefineNetworkTrafficAnnotation("play_recommended_apps_download", R"(
+        semantics {
+          sender: "ChromeOS Recommended Apps Screen"
+          description:
+            "Chrome OS downloads the recommended app list from Google Play API."
+          trigger:
+            "When user has accepted the ARC Terms of Service."
+          data:
+            "URL of the Google Play API."
+          destination: GOOGLE_OWNED_SERVICE
+        }
+        policy {
+          cookies_allowed: YES
+          cookie_store: "user"
+          setting:
+            "NA"
+          policy_exception_justification:
+            "Not implemented, considered not necessary."
+        })");
+
+  Profile* profile = ProfileManager::GetActiveUserProfile();
+
+  auto resource_request = std::make_unique<network::ResourceRequest>();
+  resource_request->url = GURL(kGetAppListUrl);
+  resource_request->method = "GET";
+  resource_request->load_flags =
+      net::LOAD_BYPASS_CACHE | net::LOAD_DISABLE_CACHE;
+
+  resource_request->headers.SetHeader("X-DFE-Device-Config",
+                                      encoded_device_configuration_proto_);
+  resource_request->headers.SetHeader("X-DFE-Sdk-Version",
+                                      android_sdk_version_);
+  resource_request->headers.SetHeader("X-DFE-Chromesky-Client-Version",
+                                      play_store_version_);
+
+  network::mojom::URLLoaderFactory* loader_factory =
+      content::BrowserContext::GetDefaultStoragePartition(profile)
+          ->GetURLLoaderFactoryForBrowserProcess()
+          .get();
+
+  start_time_ = base::TimeTicks::Now();
+  app_list_loader_ = network::SimpleURLLoader::Create(
+      std::move(resource_request), traffic_annotation);
+  // Retry up to three times if network changes are detected during the
+  // download.
+  app_list_loader_->SetRetryOptions(
+      3, network::SimpleURLLoader::RETRY_ON_NETWORK_CHANGE);
+  app_list_loader_->DownloadToString(
+      loader_factory,
+      base::BindOnce(&RecommendAppsFetcherImpl::OnDownloaded,
+                     base::Unretained(this)),
+      kMaxDownloadBytes);
+
+  // Abort the download attempt if it takes longer than one minute.
+  download_timer_.Start(FROM_HERE, kDownloadTimeOut, this,
+                        &RecommendAppsFetcherImpl::OnDownloadTimeout);
+}
+
+void RecommendAppsFetcherImpl::OnDownloadTimeout() {
+  // Destroy the fetcher, which will abort the download attempt.
+  app_list_loader_.reset();
+
+  RecordUmaDownloadTime(base::TimeTicks::Now() - start_time_);
+
+  // Show an error message to the user.
+  if (view_)
+    view_->OnLoadError();
+}
+
+void RecommendAppsFetcherImpl::OnDownloaded(
+    std::unique_ptr<std::string> response_body) {
+  download_timer_.Stop();
+
+  RecordUmaDownloadTime(base::TimeTicks::Now() - start_time_);
+
+  std::unique_ptr<network::SimpleURLLoader> loader(std::move(app_list_loader_));
+  if (!view_)
+    return;
+
+  int response_code = 0;
+  if (!loader->ResponseInfo() || !loader->ResponseInfo()->headers) {
+    view_->OnLoadError();
+    return;
+  }
+  response_code = loader->ResponseInfo()->headers->response_code();
+  RecordUmaResponseCode(response_code);
+
+  // If the recommended app list could not be downloaded, show an error message
+  // to the user.
+  if (!response_body || response_body->empty()) {
+    view_->OnLoadError();
+    return;
+  }
+
+  // If the recommended app list were downloaded successfully, show them to
+  // the user.
+  //
+  // The response starts with a prefix ")]}'". This needs to be removed before
+  // further parsing.
+  RecordUmaResponseSize(response_body->size());
+  constexpr base::StringPiece json_xss_prevention_prefix(")]}'");
+  base::StringPiece response_body_json(*response_body);
+  if (response_body_json.starts_with(json_xss_prevention_prefix))
+    response_body_json.remove_prefix(json_xss_prevention_prefix.length());
+  base::Optional<base::Value> output = ParseResponse(response_body_json);
+  if (!output.has_value()) {
+    RecordUmaResponseAppCount(0);
+    view_->OnParseResponseError();
+    return;
+  }
+
+  view_->OnLoadSuccess(std::move(output.value()));
+}
+
+void RecommendAppsFetcherImpl::Start() {
+  PopulateDeviceConfig();
+  StartAshRequest();
+  arc::ArcFeaturesParser::GetArcFeatures(
+      base::BindOnce(&RecommendAppsFetcherImpl::OnArcFeaturesRead,
+                     weak_ptr_factory_.GetWeakPtr()));
+}
+
+void RecommendAppsFetcherImpl::Retry() {
+  StartDownload();
+}
+
+base::Optional<base::Value> RecommendAppsFetcherImpl::ParseResponse(
+    base::StringPiece response) {
+  base::Value output(base::Value::Type::LIST);
+
+  int error_code;
+  std::string error_msg;
+  std::unique_ptr<base::Value> json_value =
+      base::JSONReader::ReadAndReturnErrorDeprecated(
+          response, base::JSON_PARSE_RFC, &error_code, &error_msg);
+
+  if (!json_value || (!json_value->is_list() && !json_value->is_dict())) {
+    LOG(ERROR) << "Error parsing response JSON: " << error_msg;
+    RecordUmaResponseParseResult(
+        RECOMMEND_APPS_RESPONSE_PARSE_RESULT_INVALID_JSON);
+    return base::nullopt;
+  }
+
+  // If the response is a dictionary, it is an error message in the
+  // following format:
+  //   {"Error code":"error code","Error message":"Error message"}
+  if (json_value->is_dict()) {
+    const base::Value* response_error_code_value =
+        json_value->FindKeyOfType("Error code", base::Value::Type::STRING);
+
+    if (!response_error_code_value) {
+      LOG(ERROR) << "Unable to find error code: response="
+                 << response.substr(0, 128);
+      RecordUmaResponseParseResult(
+          RECOMMEND_APPS_RESPONSE_PARSE_RESULT_INVALID_JSON);
+      return base::nullopt;
+    }
+
+    base::StringPiece response_error_code_str =
+        response_error_code_value->GetString();
+    int response_error_code = 0;
+    if (!base::StringToInt(response_error_code_str, &response_error_code)) {
+      LOG(WARNING) << "Unable to parse error code: " << response_error_code_str;
+      RecordUmaResponseParseResult(
+          RECOMMEND_APPS_RESPONSE_PARSE_RESULT_INVALID_ERROR_CODE);
+      return base::nullopt;
+    }
+
+    if (response_error_code == kResponseErrorNotFirstTimeChromebookUser) {
+      RecordUmaResponseParseResult(
+          RECOMMEND_APPS_RESPONSE_PARSE_RESULT_OWNS_CHROMEBOOK_ALREADY);
+    } else if (response_error_code == kResponseErrorNotEnoughApps) {
+      RecordUmaResponseParseResult(RECOMMEND_APPS_RESPONSE_PARSE_RESULT_NO_APP);
+    } else {
+      LOG(WARNING) << "Unknown error code: " << response_error_code_str;
+      RecordUmaResponseParseResult(
+          RECOMMEND_APPS_RESPONSE_PARSE_RESULT_UNKNOWN_ERROR_CODE);
+    }
+
+    return base::nullopt;
+  }
+
+  // Otherwise, the response should return a list of apps.
+  const base::Value::ListStorage& app_list = json_value->GetList();
+  if (app_list.empty()) {
+    DVLOG(1) << "No app in the response.";
+    RecordUmaResponseParseResult(RECOMMEND_APPS_RESPONSE_PARSE_RESULT_NO_APP);
+    return base::nullopt;
+  }
+
+  for (auto& item : app_list) {
+    base::Value output_map(base::Value::Type::DICTIONARY);
+
+    if (!item.is_dict()) {
+      DVLOG(1) << "Cannot parse item.";
+      continue;
+    }
+
+    // Retrieve the app title.
+    const base::Value* title =
+        item.FindPathOfType({"title_", "name_"}, base::Value::Type::STRING);
+    if (title)
+      output_map.SetKey("name", base::Value(title->GetString()));
+
+    // Retrieve the package name.
+    const base::Value* package_name =
+        item.FindPathOfType({"id_", "id_"}, base::Value::Type::STRING);
+    if (package_name)
+      output_map.SetKey("package_name", base::Value(package_name->GetString()));
+
+    // Retrieve the icon URL for the app.
+    //
+    // The name "privateDoNotAccessOrElseSafeUrlWrappedValue_" here is because
+    // it is a direct serialization from the proto message. The value has been
+    // sanitized so it is regarded as a safe URL. In general, if the response is
+    // a protobuf, we should not directly access this field but use the wrapper
+    // method getSafeUrlString() to read it. In our case, we don't have the
+    // option other than access it directly.
+    const base::Value* icon_url = item.FindPathOfType(
+        {"icon_", "url_", "privateDoNotAccessOrElseSafeUrlWrappedValue_"},
+        base::Value::Type::STRING);
+    if (icon_url)
+      output_map.SetKey("icon", base::Value(icon_url->GetString()));
+
+    output.GetList().push_back(std::move(output_map));
+  }
+
+  RecordUmaResponseParseResult(RECOMMEND_APPS_RESPONSE_PARSE_RESULT_NO_ERROR);
+  RecordUmaResponseAppCount(static_cast<int>(output.GetList().size()));
+
+  return output;
+}
+
+}  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher_impl.h b/chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher_impl.h
new file mode 100644
index 0000000..7c51c1f
--- /dev/null
+++ b/chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher_impl.h
@@ -0,0 +1,142 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_RECOMMEND_APPS_RECOMMEND_APPS_FETCHER_IMPL_H_
+#define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_RECOMMEND_APPS_RECOMMEND_APPS_FETCHER_IMPL_H_
+
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "ash/public/interfaces/cros_display_config.mojom.h"
+#include "base/callback.h"
+#include "base/macros.h"
+#include "base/memory/weak_ptr.h"
+#include "base/timer/timer.h"
+#include "chrome/browser/chromeos/login/screens/recommend_apps/device_configuration.pb.h"
+#include "chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher.h"
+#include "chrome/browser/chromeos/login/screens/recommend_apps_screen_view.h"
+#include "components/arc/arc_features_parser.h"
+#include "extensions/browser/api/system_display/display_info_provider.h"
+
+namespace network {
+class SimpleURLLoader;
+}
+
+namespace chromeos {
+
+// This class handles the network request for the Recommend Apps screen. It is
+// supposed to run on the UI thread. The request requires the following headers:
+// 1. X-Device-Config
+// 2. X-Sdk-Version
+// Play requires Android device config information to filter apps.
+// device_configuration.proto is used to encode all the info. The following
+// fields will be retrieved and sent:
+// 1. touch_screen
+// 2. keyboard
+// 3. navigation
+// 4. screen_layout
+// 5. has_hard_keyboard
+// 6. has_five_way_navigation
+// 7. screen_density
+// 8. screen_width
+// 9. screen_height
+// 10. gl_es_version
+// 11. system_available_feature
+// 12. native_platform
+// 13. gl_extension
+class RecommendAppsFetcherImpl : public RecommendAppsFetcher {
+ public:
+  explicit RecommendAppsFetcherImpl(RecommendAppsScreenView* view);
+  ~RecommendAppsFetcherImpl() override;
+
+  // Provide a retry method to download the app list again.
+  // RecommendAppsFetcher:
+  void Start() override;
+  void Retry() override;
+
+ private:
+  // Populate the required device config info.
+  void PopulateDeviceConfig();
+
+  // Start the connection to ash. Send the request to get display unit info
+  // list.
+  void StartAshRequest();
+
+  // Start to compress and encode the proto message if we finish ash request
+  // and ARC feature is read.
+  void MaybeStartCompressAndEncodeProtoMessage();
+
+  // Callback function called when display unit info list is retrieved from ash.
+  // It will populate the device config info related to the screen density.
+  void OnAshResponse(
+      std::vector<ash::mojom::DisplayUnitInfoPtr> all_displays_info);
+
+  // Callback function called when ARC features are read by the parser.
+  // It will populate the device config info related to ARC features.
+  void OnArcFeaturesRead(base::Optional<arc::ArcFeatures> read_result);
+
+  // Callback function called when the proto message has been compressed and
+  // encoded.
+  void OnProtoMessageCompressedAndEncoded(
+      std::string encoded_device_configuration_proto);
+
+  // Start downloading the recommended app list.
+  void StartDownload();
+
+  // Abort the attempt to download the recommended app list if it takes too
+  // long.
+  void OnDownloadTimeout();
+
+  // Callback function called when SimpleURLLoader completes.
+  void OnDownloaded(std::unique_ptr<std::string> response_body);
+
+  // If the response is not a valid JSON, return base::nullopt.
+  // If the response contains no app, return base::nullopt;
+  // Value output, in true, is a list containing:
+  // 1. name: the title of the app.
+  // 2. package_name
+  // 3. Possibly an Icon URL.
+  // Parses an input string that looks somewhat like this:
+  // [{"title_" : {"name_" : {title of app"}},
+  //   "id_" : {"id_" : {com.package.name"}},
+  //  "icon_": {"url_": {"privateDoNotAccessOrElseSafeUrlWrappedValue_":
+  //  "http://icon_url.com/url"}}},
+  //  {"title_" : "title of second app",
+  //   "packageName_": "second package name.",
+  //  }]
+  base::Optional<base::Value> ParseResponse(base::StringPiece response);
+
+  device_configuration::DeviceConfigurationProto device_config_;
+
+  std::string android_sdk_version_;
+
+  std::string play_store_version_;
+
+  std::string encoded_device_configuration_proto_;
+
+  bool ash_ready_ = false;
+  bool arc_features_ready_ = false;
+  bool has_started_proto_processing_ = false;
+  bool proto_compressed_and_encoded_ = false;
+
+  RecommendAppsScreenView* view_;
+
+  std::unique_ptr<network::SimpleURLLoader> app_list_loader_;
+
+  // Timer that enforces a custom (shorter) timeout on the attempt to download
+  // the recommended app list.
+  base::OneShotTimer download_timer_;
+
+  base::TimeTicks start_time_;
+
+  ash::mojom::CrosDisplayConfigControllerPtr cros_display_config_;
+  base::WeakPtrFactory<RecommendAppsFetcherImpl> weak_ptr_factory_;
+
+  DISALLOW_COPY_AND_ASSIGN(RecommendAppsFetcherImpl);
+};
+
+}  // namespace chromeos
+
+#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_RECOMMEND_APPS_RECOMMEND_APPS_FETCHER_IMPL_H_
diff --git a/chrome/browser/chromeos/login/screens/recommend_apps_screen.cc b/chrome/browser/chromeos/login/screens/recommend_apps_screen.cc
index 026bad3..cc71080 100644
--- a/chrome/browser/chromeos/login/screens/recommend_apps_screen.cc
+++ b/chrome/browser/chromeos/login/screens/recommend_apps_screen.cc
@@ -4,6 +4,8 @@
 
 #include "chrome/browser/chromeos/login/screens/recommend_apps_screen.h"
 
+#include "chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher.h"
+
 namespace chromeos {
 
 RecommendAppsScreen::RecommendAppsScreen(
@@ -28,7 +30,8 @@
 void RecommendAppsScreen::Show() {
   view_->Show();
 
-  recommend_apps_fetcher_ = std::make_unique<RecommendAppsFetcher>(view_);
+  recommend_apps_fetcher_ = RecommendAppsFetcher::Create(view_);
+  recommend_apps_fetcher_->Start();
 }
 
 void RecommendAppsScreen::Hide() {
diff --git a/chrome/browser/chromeos/login/screens/recommend_apps_screen.h b/chrome/browser/chromeos/login/screens/recommend_apps_screen.h
index 9d7af0b..252ac1dc3 100644
--- a/chrome/browser/chromeos/login/screens/recommend_apps_screen.h
+++ b/chrome/browser/chromeos/login/screens/recommend_apps_screen.h
@@ -11,11 +11,12 @@
 #include "base/callback.h"
 #include "base/macros.h"
 #include "chrome/browser/chromeos/login/screens/base_screen.h"
-#include "chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher.h"
 #include "chrome/browser/chromeos/login/screens/recommend_apps_screen_view.h"
 
 namespace chromeos {
 
+class RecommendAppsFetcher;
+
 // This is Recommend Apps screen that is displayed as a part of user first
 // sign-in flow.
 class RecommendAppsScreen : public BaseScreen,
diff --git a/chrome/browser/chromeos/login/screens/recommend_apps_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/recommend_apps_screen_browsertest.cc
new file mode 100644
index 0000000..2a309a8a
--- /dev/null
+++ b/chrome/browser/chromeos/login/screens/recommend_apps_screen_browsertest.cc
@@ -0,0 +1,699 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/login/screens/recommend_apps_screen.h"
+
+#include <memory>
+#include <vector>
+
+#include "base/bind.h"
+#include "base/run_loop.h"
+#include "base/strings/string_piece.h"
+#include "base/strings/stringprintf.h"
+#include "base/values.h"
+#include "chrome/browser/chromeos/login/login_wizard.h"
+#include "chrome/browser/chromeos/login/mixin_based_in_process_browser_test.h"
+#include "chrome/browser/chromeos/login/oobe_screen.h"
+#include "chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher.h"
+#include "chrome/browser/chromeos/login/test/js_checker.h"
+#include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h"
+#include "chrome/browser/chromeos/login/ui/login_display_host.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/profiles/profile_manager.h"
+#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
+#include "components/arc/arc_prefs.h"
+#include "components/prefs/pref_service.h"
+#include "content/public/test/browser_test_utils.h"
+
+namespace chromeos {
+
+namespace {
+
+chromeos::OobeUI* GetOobeUI() {
+  auto* host = chromeos::LoginDisplayHost::default_host();
+  return host ? host->GetOobeUI() : nullptr;
+}
+
+struct FakeAppInfo {
+ public:
+  FakeAppInfo(const std::string& package_name, const std::string& name)
+      : package_name(package_name), name(name) {}
+  ~FakeAppInfo() = default;
+
+  base::Value ToValue() const {
+    base::Value result(base::Value::Type::DICTIONARY);
+    result.SetKey("package_name", base::Value(package_name));
+    result.SetKey("name", base::Value(name));
+    return result;
+  }
+
+  const std::string package_name;
+  const std::string name;
+};
+
+class FakeRecommendAppsFetcher : public RecommendAppsFetcher {
+ public:
+  explicit FakeRecommendAppsFetcher(RecommendAppsScreenView* view)
+      : view_(view) {}
+  ~FakeRecommendAppsFetcher() override = default;
+
+  bool started() const { return started_; }
+  int retries() const { return retries_; }
+
+  void SimulateSuccess(const std::vector<FakeAppInfo>& apps) {
+    EXPECT_TRUE(started_);
+    base::Value app_list(base::Value::Type::LIST);
+    for (const auto& app : apps) {
+      app_list.GetList().emplace_back(app.ToValue());
+    }
+    view_->OnLoadSuccess(app_list);
+  }
+
+  void SimulateParseError() {
+    EXPECT_TRUE(started_);
+    view_->OnParseResponseError();
+  }
+
+  void SimulateLoadError() {
+    EXPECT_TRUE(started_);
+    view_->OnLoadError();
+  }
+
+  // RecommendAppsFetcher:
+  void Start() override {
+    EXPECT_FALSE(started_);
+    started_ = true;
+  }
+  void Retry() override {
+    EXPECT_TRUE(started_);
+    ++retries_;
+  }
+
+ private:
+  RecommendAppsScreenView* const view_;
+  bool started_ = false;
+  int retries_ = 0;
+};
+
+}  // namespace
+
+class RecommendAppsScreenTest : public InProcessBrowserTest {
+ public:
+  RecommendAppsScreenTest() = default;
+  ~RecommendAppsScreenTest() override = default;
+
+  void SetUpOnMainThread() override {
+    ShowLoginWizard(OobeScreen::SCREEN_TEST_NO_WINDOW);
+
+    fetcher_factory_callback_ = base::BindRepeating(
+        &RecommendAppsScreenTest::CreateRecommendAppsFetcher,
+        base::Unretained(this));
+    RecommendAppsFetcher::SetFactoryCallbackForTesting(
+        &fetcher_factory_callback_);
+
+    recommend_apps_screen_ = std::make_unique<RecommendAppsScreen>(
+        GetOobeUI()->GetRecommendAppsScreenView(),
+        base::BindRepeating(&RecommendAppsScreenTest::HandleScreenExit,
+                            base::Unretained(this)));
+
+    InProcessBrowserTest::SetUpOnMainThread();
+  }
+  void TearDownOnMainThread() override {
+    RecommendAppsFetcher::SetFactoryCallbackForTesting(nullptr);
+    fetcher_factory_callback_.Reset();
+    recommend_apps_fetcher_ = nullptr;
+
+    InProcessBrowserTest::TearDownOnMainThread();
+  }
+
+  void WaitForScreenExit() {
+    if (screen_result_.has_value())
+      return;
+    base::RunLoop run_loop;
+    screen_exit_callback_ = run_loop.QuitClosure();
+    run_loop.Run();
+  }
+
+  bool WaitForAppListSize(const std::string& webview_path, int app_count) {
+    std::string count_apps_script =
+        "Array.from(document.getElementById('recommend-apps-container')"
+        "     .querySelectorAll('.item'))"
+        "     .map(i => i.getAttribute('data-packagename'));";
+
+    std::string script = base::StringPrintf(
+        "(function() {"
+        "  var getAppCount = function() {"
+        "    %s.executeScript({code: \"%s\"}, r => {"
+        "      if (!r || !r[0] || r[0].length !== %d) {"
+        "        setTimeout(getAppCount, 50);"
+        "        return;"
+        "      }"
+        "      window.domAutomationController.send(true);"
+        "    });"
+        "  };"
+        "  getAppCount();"
+        "})();",
+        webview_path.c_str(), count_apps_script.c_str(), app_count);
+
+    // Wait for some apps to be shown
+    bool result;
+    return content::ExecuteScriptAndExtractBool(
+               LoginDisplayHost::default_host()->GetOobeWebContents(), script,
+               &result) &&
+           result;
+  }
+
+  // Simulates click on the apps in the webview's app list.
+  // The apps are expected to be passed in as a JavaScript array string.
+  // For example ['app_package_name1', 'app_package_name_2']
+  bool ToggleAppsSelection(const std::string& webview_path,
+                           const std::string& package_names) {
+    std::string toggle_apps_script = base::StringPrintf(
+        "Array.from(document.getElementById('recommend-apps-container')"
+        "     .querySelectorAll('.item'))"
+        "     .filter(i => %s.includes(i.getAttribute('data-packagename')))"
+        "     .forEach(i => i.querySelector('.image-picker').click());",
+        package_names.c_str());
+
+    std::string script = base::StringPrintf(
+        "(function() {"
+        "  %s.executeScript({code: \"%s\"},"
+        "                   r => window.domAutomationController.send(true));"
+        "})();",
+        webview_path.c_str(), toggle_apps_script.c_str());
+
+    bool result;
+    return content::ExecuteScriptAndExtractBool(
+               LoginDisplayHost::default_host()->GetOobeWebContents(), script,
+               &result) &&
+           result;
+  }
+
+  std::unique_ptr<RecommendAppsScreen> recommend_apps_screen_;
+  base::Optional<RecommendAppsScreen::Result> screen_result_;
+  FakeRecommendAppsFetcher* recommend_apps_fetcher_ = nullptr;
+
+ private:
+  void HandleScreenExit(RecommendAppsScreen::Result result) {
+    ASSERT_FALSE(screen_result_.has_value());
+    screen_result_ = result;
+    if (screen_exit_callback_)
+      std::move(screen_exit_callback_).Run();
+  }
+
+  std::unique_ptr<RecommendAppsFetcher> CreateRecommendAppsFetcher(
+      RecommendAppsScreenView* view) {
+    EXPECT_EQ(view, GetOobeUI()->GetRecommendAppsScreenView());
+    EXPECT_FALSE(recommend_apps_fetcher_);
+
+    auto fetcher = std::make_unique<FakeRecommendAppsFetcher>(view);
+    recommend_apps_fetcher_ = fetcher.get();
+    return fetcher;
+  }
+
+  // The callback passed to
+  // RecommendAppsFetcher::SetFactoryCallbackForTesting(). Bound to
+  // CreateRecommendAppsFetcher().
+  RecommendAppsFetcher::FactoryCallback fetcher_factory_callback_;
+
+  base::OnceClosure screen_exit_callback_;
+};
+
+IN_PROC_BROWSER_TEST_F(RecommendAppsScreenTest, BasicSelection) {
+  recommend_apps_screen_->Show();
+
+  OobeScreenWaiter screen_waiter(OobeScreen::SCREEN_RECOMMEND_APPS);
+  screen_waiter.set_assert_next_screen();
+  screen_waiter.Wait();
+
+  // Wait for loading screen.
+  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-loading"});
+  test::OobeJS().ExpectHidden("recommend-apps-screen");
+
+  std::vector<FakeAppInfo> test_apps = {
+      FakeAppInfo("test.app.foo.app1", "Test app 1"),
+      FakeAppInfo("test.app.foo.app2", "Test app 2"),
+      FakeAppInfo("test.app.foo.app3", "Test app 3")};
+  recommend_apps_fetcher_->SimulateSuccess(test_apps);
+
+  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-screen"});
+  test::OobeJS().ExpectHidden("recommend-apps-loading");
+
+  const std::string webview_path =
+      test::GetOobeElementPath({"recommend-apps-screen", "app-list-view"});
+  const std::initializer_list<base::StringPiece> install_button = {
+      "recommend-apps-screen", "recommend-apps-install-button"};
+  const std::initializer_list<base::StringPiece> skip_button = {
+      "recommend-apps-screen", "recommend-apps-skip-button"};
+  const std::initializer_list<base::StringPiece> retry_button = {
+      "recommend-apps-screen", "recommend-apps-retry-button"};
+
+  test::OobeJS().ExpectDisabledPath(install_button);
+
+  test::OobeJS()
+      .CreateDisplayedWaiter(true, {"recommend-apps-screen", "app-list-view"})
+      ->Wait();
+  ASSERT_TRUE(WaitForAppListSize(webview_path, test_apps.size()));
+
+  test::OobeJS().ExpectPathDisplayed(true, install_button);
+  test::OobeJS().ExpectDisabledPath(install_button);
+  test::OobeJS().ExpectPathDisplayed(true, skip_button);
+  test::OobeJS().ExpectEnabledPath(skip_button);
+  test::OobeJS().ExpectPathDisplayed(false, retry_button);
+
+  ASSERT_TRUE(ToggleAppsSelection(
+      webview_path, "['test.app.foo.app1', 'test.app.foo.app2']"));
+
+  test::OobeJS().CreateEnabledWaiter(true, install_button)->Wait();
+  test::OobeJS().ExpectEnabledPath(skip_button);
+  test::OobeJS().ExpectPathDisplayed(false, retry_button);
+
+  test::OobeJS().TapOnPath(install_button);
+
+  WaitForScreenExit();
+  EXPECT_EQ(RecommendAppsScreen::Result::SELECTED, screen_result_.value());
+
+  EXPECT_EQ(0, recommend_apps_fetcher_->retries());
+
+  const base::Value* fast_reinstall_packages =
+      ProfileManager::GetActiveUserProfile()->GetPrefs()->Get(
+          arc::prefs::kArcFastAppReinstallPackages);
+  ASSERT_TRUE(fast_reinstall_packages);
+
+  base::Value expected_pref_value(base::Value::Type::LIST);
+  expected_pref_value.GetList().emplace_back("test.app.foo.app1");
+  expected_pref_value.GetList().emplace_back("test.app.foo.app2");
+  EXPECT_EQ(expected_pref_value, *fast_reinstall_packages);
+}
+
+IN_PROC_BROWSER_TEST_F(RecommendAppsScreenTest, SelectionChange) {
+  recommend_apps_screen_->Show();
+
+  OobeScreenWaiter screen_waiter(OobeScreen::SCREEN_RECOMMEND_APPS);
+  screen_waiter.set_assert_next_screen();
+  screen_waiter.Wait();
+
+  // Wait for loading screen.
+  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-loading"});
+  test::OobeJS().ExpectHidden("recommend-apps-screen");
+
+  std::vector<FakeAppInfo> test_apps = {
+      FakeAppInfo("test.app.foo.app1", "Test app 1"),
+      FakeAppInfo("test.app.foo.app2", "Test app 2"),
+      FakeAppInfo("test.app.foo.app3", "Test app 3")};
+  recommend_apps_fetcher_->SimulateSuccess(test_apps);
+
+  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-screen"});
+  test::OobeJS().ExpectHidden("recommend-apps-loading");
+
+  const std::string webview_path =
+      test::GetOobeElementPath({"recommend-apps-screen", "app-list-view"});
+  const std::initializer_list<base::StringPiece> install_button = {
+      "recommend-apps-screen", "recommend-apps-install-button"};
+  const std::initializer_list<base::StringPiece> skip_button = {
+      "recommend-apps-screen", "recommend-apps-skip-button"};
+  const std::initializer_list<base::StringPiece> retry_button = {
+      "recommend-apps-screen", "recommend-apps-retry-button"};
+
+  test::OobeJS().ExpectDisabledPath(install_button);
+
+  test::OobeJS()
+      .CreateDisplayedWaiter(true, {"recommend-apps-screen", "app-list-view"})
+      ->Wait();
+  ASSERT_TRUE(WaitForAppListSize(webview_path, test_apps.size()));
+
+  test::OobeJS().ExpectPathDisplayed(true, install_button);
+  test::OobeJS().ExpectDisabledPath(install_button);
+  test::OobeJS().ExpectPathDisplayed(true, skip_button);
+  test::OobeJS().ExpectEnabledPath(skip_button);
+  test::OobeJS().ExpectPathDisplayed(false, retry_button);
+
+  ASSERT_TRUE(ToggleAppsSelection(
+      webview_path, "['test.app.foo.app1', 'test.app.foo.app2']"));
+
+  test::OobeJS().CreateEnabledWaiter(true, install_button)->Wait();
+  test::OobeJS().ExpectEnabledPath(skip_button);
+  test::OobeJS().ExpectPathDisplayed(false, retry_button);
+
+  ASSERT_TRUE(ToggleAppsSelection(webview_path, "['test.app.foo.app1']"));
+
+  test::OobeJS().TapOnPath(install_button);
+
+  WaitForScreenExit();
+  EXPECT_EQ(RecommendAppsScreen::Result::SELECTED, screen_result_.value());
+
+  EXPECT_EQ(0, recommend_apps_fetcher_->retries());
+
+  const base::Value* fast_reinstall_packages =
+      ProfileManager::GetActiveUserProfile()->GetPrefs()->Get(
+          arc::prefs::kArcFastAppReinstallPackages);
+  ASSERT_TRUE(fast_reinstall_packages);
+
+  base::Value expected_pref_value(base::Value::Type::LIST);
+  expected_pref_value.GetList().emplace_back("test.app.foo.app2");
+  EXPECT_EQ(expected_pref_value, *fast_reinstall_packages);
+}
+
+IN_PROC_BROWSER_TEST_F(RecommendAppsScreenTest, SkipWithSelectedApps) {
+  recommend_apps_screen_->Show();
+
+  OobeScreenWaiter screen_waiter(OobeScreen::SCREEN_RECOMMEND_APPS);
+  screen_waiter.set_assert_next_screen();
+  screen_waiter.Wait();
+
+  // Wait for loading screen.
+  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-loading"});
+  test::OobeJS().ExpectHidden("recommend-apps-screen");
+
+  std::vector<FakeAppInfo> test_apps = {
+      FakeAppInfo("test.app.foo.app1", "Test app 1"),
+      FakeAppInfo("test.app.foo.app2", "Test app 2"),
+      FakeAppInfo("test.app.foo.app3", "Test app 3")};
+  recommend_apps_fetcher_->SimulateSuccess(test_apps);
+
+  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-screen"});
+  test::OobeJS().ExpectHidden("recommend-apps-loading");
+
+  const std::string webview_path =
+      test::GetOobeElementPath({"recommend-apps-screen", "app-list-view"});
+  const std::initializer_list<base::StringPiece> install_button = {
+      "recommend-apps-screen", "recommend-apps-install-button"};
+  const std::initializer_list<base::StringPiece> skip_button = {
+      "recommend-apps-screen", "recommend-apps-skip-button"};
+  const std::initializer_list<base::StringPiece> retry_button = {
+      "recommend-apps-screen", "recommend-apps-retry-button"};
+
+  test::OobeJS().ExpectDisabledPath(install_button);
+
+  test::OobeJS()
+      .CreateDisplayedWaiter(true, {"recommend-apps-screen", "app-list-view"})
+      ->Wait();
+  ASSERT_TRUE(WaitForAppListSize(webview_path, test_apps.size()));
+
+  test::OobeJS().ExpectPathDisplayed(true, install_button);
+  test::OobeJS().ExpectDisabledPath(install_button);
+  test::OobeJS().ExpectPathDisplayed(true, skip_button);
+  test::OobeJS().ExpectEnabledPath(skip_button);
+  test::OobeJS().ExpectPathDisplayed(false, retry_button);
+
+  ASSERT_TRUE(ToggleAppsSelection(webview_path, "['test.app.foo.app2']"));
+
+  test::OobeJS().CreateEnabledWaiter(true, install_button)->Wait();
+  test::OobeJS().ExpectEnabledPath(skip_button);
+  test::OobeJS().ExpectPathDisplayed(false, retry_button);
+
+  test::OobeJS().TapOnPath(skip_button);
+
+  WaitForScreenExit();
+  EXPECT_EQ(RecommendAppsScreen::Result::SKIPPED, screen_result_.value());
+
+  EXPECT_EQ(0, recommend_apps_fetcher_->retries());
+
+  const base::Value* fast_reinstall_packages =
+      ProfileManager::GetActiveUserProfile()->GetPrefs()->Get(
+          arc::prefs::kArcFastAppReinstallPackages);
+  ASSERT_TRUE(fast_reinstall_packages);
+  EXPECT_EQ(base::Value(base::Value::Type::LIST), *fast_reinstall_packages);
+}
+
+IN_PROC_BROWSER_TEST_F(RecommendAppsScreenTest, SkipWithNoAppsSelected) {
+  recommend_apps_screen_->Show();
+
+  OobeScreenWaiter screen_waiter(OobeScreen::SCREEN_RECOMMEND_APPS);
+  screen_waiter.set_assert_next_screen();
+  screen_waiter.Wait();
+
+  // Wait for loading screen.
+  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-loading"});
+  test::OobeJS().ExpectHidden("recommend-apps-screen");
+
+  std::vector<FakeAppInfo> test_apps = {
+      FakeAppInfo("test.app.foo.app1", "Test app 1"),
+      FakeAppInfo("test.app.foo.app2", "Test app 2"),
+      FakeAppInfo("test.app.foo.app3", "Test app 3")};
+  recommend_apps_fetcher_->SimulateSuccess(test_apps);
+
+  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-screen"});
+  test::OobeJS().ExpectHidden("recommend-apps-loading");
+
+  const std::string webview_path =
+      test::GetOobeElementPath({"recommend-apps-screen", "app-list-view"});
+  const std::initializer_list<base::StringPiece> install_button = {
+      "recommend-apps-screen", "recommend-apps-install-button"};
+  const std::initializer_list<base::StringPiece> skip_button = {
+      "recommend-apps-screen", "recommend-apps-skip-button"};
+  const std::initializer_list<base::StringPiece> retry_button = {
+      "recommend-apps-screen", "recommend-apps-retry-button"};
+
+  test::OobeJS().ExpectDisabledPath(install_button);
+
+  test::OobeJS()
+      .CreateDisplayedWaiter(true, {"recommend-apps-screen", "app-list-view"})
+      ->Wait();
+  ASSERT_TRUE(WaitForAppListSize(webview_path, test_apps.size()));
+
+  test::OobeJS().ExpectPathDisplayed(true, install_button);
+  test::OobeJS().ExpectDisabledPath(install_button);
+  test::OobeJS().ExpectPathDisplayed(true, skip_button);
+  test::OobeJS().ExpectEnabledPath(skip_button);
+  test::OobeJS().ExpectPathDisplayed(false, retry_button);
+
+  ASSERT_TRUE(ToggleAppsSelection(webview_path, "['test.app.foo.app2']"));
+
+  test::OobeJS().CreateEnabledWaiter(true, install_button)->Wait();
+  test::OobeJS().ExpectEnabledPath(skip_button);
+  test::OobeJS().ExpectPathDisplayed(false, retry_button);
+
+  ASSERT_TRUE(ToggleAppsSelection(webview_path, "['test.app.foo.app2']"));
+
+  test::OobeJS().CreateEnabledWaiter(false, install_button)->Wait();
+  test::OobeJS().ExpectEnabledPath(skip_button);
+  test::OobeJS().ExpectPathDisplayed(false, retry_button);
+
+  test::OobeJS().TapOnPath(skip_button);
+
+  WaitForScreenExit();
+  EXPECT_EQ(RecommendAppsScreen::Result::SKIPPED, screen_result_.value());
+
+  EXPECT_EQ(0, recommend_apps_fetcher_->retries());
+
+  const base::Value* fast_reinstall_packages =
+      ProfileManager::GetActiveUserProfile()->GetPrefs()->Get(
+          arc::prefs::kArcFastAppReinstallPackages);
+  ASSERT_TRUE(fast_reinstall_packages);
+  EXPECT_EQ(base::Value(base::Value::Type::LIST), *fast_reinstall_packages);
+}
+
+IN_PROC_BROWSER_TEST_F(RecommendAppsScreenTest, InstallWithNoAppsSelected) {
+  recommend_apps_screen_->Show();
+
+  OobeScreenWaiter screen_waiter(OobeScreen::SCREEN_RECOMMEND_APPS);
+  screen_waiter.set_assert_next_screen();
+  screen_waiter.Wait();
+
+  // Wait for loading screen.
+  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-loading"});
+  test::OobeJS().ExpectHidden("recommend-apps-screen");
+
+  std::vector<FakeAppInfo> test_apps = {
+      FakeAppInfo("test.app.foo.app1", "Test app 1")};
+  recommend_apps_fetcher_->SimulateSuccess(test_apps);
+
+  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-screen"});
+  test::OobeJS().ExpectHidden("recommend-apps-loading");
+
+  const std::string webview_path =
+      test::GetOobeElementPath({"recommend-apps-screen", "app-list-view"});
+  test::OobeJS()
+      .CreateDisplayedWaiter(true, {"recommend-apps-screen", "app-list-view"})
+      ->Wait();
+  ASSERT_TRUE(WaitForAppListSize(webview_path, test_apps.size()));
+
+  // The install button is expected to be disabled at this point. Send empty app
+  // list directly to test handler behavior when install is triggered with no
+  // apps selected.
+  test::OobeJS().Evaluate("chrome.send('recommendAppsInstall', []);");
+
+  WaitForScreenExit();
+  EXPECT_EQ(RecommendAppsScreen::Result::SKIPPED, screen_result_.value());
+
+  EXPECT_EQ(0, recommend_apps_fetcher_->retries());
+
+  const base::Value* fast_reinstall_packages =
+      ProfileManager::GetActiveUserProfile()->GetPrefs()->Get(
+          arc::prefs::kArcFastAppReinstallPackages);
+  ASSERT_TRUE(fast_reinstall_packages);
+  EXPECT_EQ(base::Value(base::Value::Type::LIST), *fast_reinstall_packages);
+}
+
+IN_PROC_BROWSER_TEST_F(RecommendAppsScreenTest, NoRecommendedApps) {
+  recommend_apps_screen_->Show();
+
+  OobeScreenWaiter screen_waiter(OobeScreen::SCREEN_RECOMMEND_APPS);
+  screen_waiter.set_assert_next_screen();
+  screen_waiter.Wait();
+
+  // Wait for loading screen.
+  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-loading"});
+  test::OobeJS().ExpectHidden("recommend-apps-screen");
+
+  recommend_apps_fetcher_->SimulateSuccess(std::vector<FakeAppInfo>());
+
+  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-screen"});
+  test::OobeJS().ExpectHidden("recommend-apps-loading");
+
+  const std::initializer_list<base::StringPiece> install_button = {
+      "recommend-apps-screen", "recommend-apps-install-button"};
+  const std::initializer_list<base::StringPiece> skip_button = {
+      "recommend-apps-screen", "recommend-apps-skip-button"};
+  const std::initializer_list<base::StringPiece> retry_button = {
+      "recommend-apps-screen", "recommend-apps-retry-button"};
+
+  test::OobeJS().CreateDisplayedWaiter(true, skip_button)->Wait();
+  test::OobeJS().ExpectEnabledPath(skip_button);
+  test::OobeJS().ExpectPathDisplayed(false, install_button);
+  test::OobeJS().ExpectPathDisplayed(false, retry_button);
+  test::OobeJS().ExpectPathDisplayed(false, retry_button);
+
+  test::OobeJS().TapOnPath(skip_button);
+
+  WaitForScreenExit();
+  EXPECT_EQ(RecommendAppsScreen::Result::SKIPPED, screen_result_.value());
+
+  EXPECT_EQ(0, recommend_apps_fetcher_->retries());
+
+  const base::Value* fast_reinstall_packages =
+      ProfileManager::GetActiveUserProfile()->GetPrefs()->Get(
+          arc::prefs::kArcFastAppReinstallPackages);
+  ASSERT_TRUE(fast_reinstall_packages);
+  EXPECT_EQ(base::Value(base::Value::Type::LIST), *fast_reinstall_packages);
+}
+
+IN_PROC_BROWSER_TEST_F(RecommendAppsScreenTest, ParseError) {
+  recommend_apps_screen_->Show();
+
+  OobeScreenWaiter screen_waiter(OobeScreen::SCREEN_RECOMMEND_APPS);
+  screen_waiter.set_assert_next_screen();
+  screen_waiter.Wait();
+
+  // Wait for loading screen.
+  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-loading"});
+  test::OobeJS().ExpectHidden("recommend-apps-screen");
+
+  recommend_apps_fetcher_->SimulateParseError();
+
+  ASSERT_TRUE(screen_result_.has_value());
+  EXPECT_EQ(RecommendAppsScreen::Result::SKIPPED, screen_result_.value());
+  EXPECT_EQ(0, recommend_apps_fetcher_->retries());
+}
+
+IN_PROC_BROWSER_TEST_F(RecommendAppsScreenTest, SkipOnLoadError) {
+  recommend_apps_screen_->Show();
+
+  OobeScreenWaiter screen_waiter(OobeScreen::SCREEN_RECOMMEND_APPS);
+  screen_waiter.set_assert_next_screen();
+  screen_waiter.Wait();
+
+  // Wait for loading screen.
+  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-loading"});
+  test::OobeJS().ExpectHidden("recommend-apps-screen");
+
+  recommend_apps_fetcher_->SimulateLoadError();
+
+  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-screen"});
+  test::OobeJS().ExpectHidden("recommend-apps-loading");
+
+  const std::initializer_list<base::StringPiece> install_button = {
+      "recommend-apps-screen", "recommend-apps-install-button"};
+  const std::initializer_list<base::StringPiece> skip_button = {
+      "recommend-apps-screen", "recommend-apps-skip-button"};
+  const std::initializer_list<base::StringPiece> retry_button = {
+      "recommend-apps-screen", "recommend-apps-retry-button"};
+
+  test::OobeJS().CreateDisplayedWaiter(true, skip_button)->Wait();
+  test::OobeJS().ExpectEnabledPath(skip_button);
+  test::OobeJS().CreateDisplayedWaiter(true, retry_button)->Wait();
+  test::OobeJS().ExpectEnabledPath(retry_button);
+  test::OobeJS().ExpectPathDisplayed(false, install_button);
+
+  test::OobeJS().TapOnPath(skip_button);
+
+  WaitForScreenExit();
+  EXPECT_EQ(RecommendAppsScreen::Result::SKIPPED, screen_result_.value());
+  EXPECT_EQ(0, recommend_apps_fetcher_->retries());
+
+  const base::Value* fast_reinstall_packages =
+      ProfileManager::GetActiveUserProfile()->GetPrefs()->Get(
+          arc::prefs::kArcFastAppReinstallPackages);
+  ASSERT_TRUE(fast_reinstall_packages);
+  EXPECT_EQ(base::Value(base::Value::Type::LIST), *fast_reinstall_packages);
+}
+
+IN_PROC_BROWSER_TEST_F(RecommendAppsScreenTest, RetryOnLoadError) {
+  recommend_apps_screen_->Show();
+
+  OobeScreenWaiter screen_waiter(OobeScreen::SCREEN_RECOMMEND_APPS);
+  screen_waiter.set_assert_next_screen();
+  screen_waiter.Wait();
+
+  // Wait for loading screen.
+  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-loading"});
+  test::OobeJS().ExpectHidden("recommend-apps-screen");
+
+  recommend_apps_fetcher_->SimulateLoadError();
+
+  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-screen"});
+  test::OobeJS().ExpectHidden("recommend-apps-loading");
+
+  const std::initializer_list<base::StringPiece> install_button = {
+      "recommend-apps-screen", "recommend-apps-install-button"};
+  const std::initializer_list<base::StringPiece> skip_button = {
+      "recommend-apps-screen", "recommend-apps-skip-button"};
+  const std::initializer_list<base::StringPiece> retry_button = {
+      "recommend-apps-screen", "recommend-apps-retry-button"};
+
+  test::OobeJS().CreateDisplayedWaiter(true, skip_button)->Wait();
+  test::OobeJS().ExpectEnabledPath(skip_button);
+  test::OobeJS().CreateDisplayedWaiter(true, retry_button)->Wait();
+  test::OobeJS().ExpectEnabledPath(retry_button);
+  test::OobeJS().ExpectPathDisplayed(false, install_button);
+
+  test::OobeJS().TapOnPath(retry_button);
+
+  EXPECT_EQ(1, recommend_apps_fetcher_->retries());
+
+  test::OobeJS().CreateVisibilityWaiter(false, {"recommend-apps-screen"});
+  test::OobeJS().ExpectVisible("recommend-apps-loading");
+
+  std::vector<FakeAppInfo> test_apps = {
+      FakeAppInfo("test.app.foo.app1", "Test app 1")};
+  recommend_apps_fetcher_->SimulateSuccess(test_apps);
+
+  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-screen"});
+  test::OobeJS().ExpectHidden("recommend-apps-loading");
+
+  const std::string webview_path =
+      test::GetOobeElementPath({"recommend-apps-screen", "app-list-view"});
+  test::OobeJS()
+      .CreateDisplayedWaiter(true, {"recommend-apps-screen", "app-list-view"})
+      ->Wait();
+  ASSERT_TRUE(WaitForAppListSize(webview_path, test_apps.size()));
+
+  test::OobeJS().ExpectPathDisplayed(true, install_button);
+  test::OobeJS().ExpectDisabledPath(install_button);
+  test::OobeJS().ExpectPathDisplayed(true, skip_button);
+  test::OobeJS().ExpectEnabledPath(skip_button);
+  test::OobeJS().ExpectPathDisplayed(false, retry_button);
+
+  EXPECT_FALSE(screen_result_.has_value());
+  EXPECT_EQ(1, recommend_apps_fetcher_->retries());
+
+  const base::Value* fast_reinstall_packages =
+      ProfileManager::GetActiveUserProfile()->GetPrefs()->Get(
+          arc::prefs::kArcFastAppReinstallPackages);
+  ASSERT_TRUE(fast_reinstall_packages);
+  EXPECT_EQ(base::Value(base::Value::Type::LIST), *fast_reinstall_packages);
+}
+
+}  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/test/js_checker.cc b/chrome/browser/chromeos/login/test/js_checker.cc
index 58f2379c..8382afa 100644
--- a/chrome/browser/chromeos/login/test/js_checker.cc
+++ b/chrome/browser/chromeos/login/test/js_checker.cc
@@ -136,6 +136,28 @@
   return CreateWaiter(js_condition);
 }
 
+std::unique_ptr<TestConditionWaiter> JSChecker::CreateDisplayedWaiter(
+    bool displayed,
+    std::initializer_list<base::StringPiece> element_ids) {
+  const std::string element_path = GetOobeElementPath(element_ids);
+  std::string js_condition = element_path + ".offsetWidth > 0 && " +
+                             element_path + ".offsetHeight > 0";
+  if (!displayed) {
+    js_condition = "!(" + js_condition + ")";
+  }
+  return CreateWaiter(js_condition);
+}
+
+std::unique_ptr<TestConditionWaiter> JSChecker::CreateEnabledWaiter(
+    bool enabled,
+    std::initializer_list<base::StringPiece> element_ids) {
+  std::string js_condition = GetOobeElementPath(element_ids) + ".disabled";
+  if (enabled) {
+    js_condition = "!(" + js_condition + ")";
+  }
+  return CreateWaiter(js_condition);
+}
+
 void JSChecker::GetBoolImpl(const std::string& expression, bool* result) {
   CHECK(web_contents_);
   ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
@@ -180,6 +202,28 @@
   ExpectHiddenPath({element_id});
 }
 
+void JSChecker::ExpectPathDisplayed(
+    bool displayed,
+    std::initializer_list<base::StringPiece> element_ids) {
+  const std::string element_path = GetOobeElementPath(element_ids);
+  std::string js_condition = element_path + ".offsetWidth > 0 && " +
+                             element_path + ".offsetHeight > 0";
+  if (!displayed) {
+    js_condition = "!(" + js_condition + ")";
+  }
+  ExpectTrue(js_condition);
+}
+
+void JSChecker::ExpectDisabledPath(
+    std::initializer_list<base::StringPiece> element_ids) {
+  ExpectTrue(GetOobeElementPath(element_ids) + ".disabled");
+}
+
+void JSChecker::ExpectEnabledPath(
+    std::initializer_list<base::StringPiece> element_ids) {
+  ExpectFalse(GetOobeElementPath(element_ids) + ".disabled");
+}
+
 void JSChecker::ExpectHasClass(
     const std::string& css_class,
     std::initializer_list<base::StringPiece> element_ids) {
diff --git a/chrome/browser/chromeos/login/test/js_checker.h b/chrome/browser/chromeos/login/test/js_checker.h
index 6a289db..0db84970 100644
--- a/chrome/browser/chromeos/login/test/js_checker.h
+++ b/chrome/browser/chromeos/login/test/js_checker.h
@@ -65,14 +65,42 @@
       bool visibility,
       std::initializer_list<base::StringPiece> element_ids);
 
+  // Waiter that waits until specified element is (not) displayed with non-zero
+  // size.
+  std::unique_ptr<TestConditionWaiter> CreateDisplayedWaiter(
+      bool displayed,
+      std::initializer_list<base::StringPiece> element_ids);
+
+  // Waiter that waits until an element is enabled or disabled.
+  std::unique_ptr<TestConditionWaiter> CreateEnabledWaiter(
+      bool enabled,
+      std::initializer_list<base::StringPiece> element_ids);
+
   // Expects that indicated UI element is not hidden.
+  // NOTE: This only checks hidden property - it might not work for elements
+  // hidden by "display: none" style.
   void ExpectVisiblePath(std::initializer_list<base::StringPiece> element_ids);
   void ExpectVisible(const std::string& element_id);
 
   // Expects that indicated UI element is hidden.
+  // NOTE: This only checks hidden property - it might not work for elements
+  // hidden by "display: none" style.
   void ExpectHiddenPath(std::initializer_list<base::StringPiece> element_ids);
   void ExpectHidden(const std::string& element_id);
 
+  // Expects that the element is displayed on screen - i.e. that it has non-null
+  // size. Unlike ExpectHidden and ExpectVisible methods, this will correctly
+  // elements with "display: none" style, but might not work for polymer module
+  // roots.
+  void ExpectPathDisplayed(bool displayed,
+                           std::initializer_list<base::StringPiece> element_id);
+
+  // Expects that the indicated UI element is disabled.
+  void ExpectDisabledPath(std::initializer_list<base::StringPiece> element_ids);
+
+  // Expects that the indicated UI element is not disabled.
+  void ExpectEnabledPath(std::initializer_list<base::StringPiece> element_ids);
+
   // Expects that indicated UI element has particular class.
   void ExpectHasClass(const std::string& css_class,
                       std::initializer_list<base::StringPiece> element_ids);
diff --git a/chrome/browser/chromeos/power/auto_screen_brightness/adapter.cc b/chrome/browser/chromeos/power/auto_screen_brightness/adapter.cc
index ca9cf9f..c024f58 100644
--- a/chrome/browser/chromeos/power/auto_screen_brightness/adapter.cc
+++ b/chrome/browser/chromeos/power/auto_screen_brightness/adapter.cc
@@ -69,16 +69,16 @@
 
 void Adapter::OnAmbientLightUpdated(int lux) {
   // Ambient light data is only used when adapter is initialized to success.
-  // |ambient_light_values_| may not be available to use when adapter is being
+  // |log_als_values_| may not be available to use when adapter is being
   // initialized.
   if (adapter_status_ != Status::kSuccess)
     return;
 
-  DCHECK(ambient_light_values_);
+  DCHECK(log_als_values_);
 
   const base::TimeTicks now = tick_clock_->NowTicks();
 
-  ambient_light_values_->SaveToBuffer({lux, now});
+  log_als_values_->SaveToBuffer({ConvertToLog(lux), now});
 
   MaybeAdjustBrightness(now);
 }
@@ -108,17 +108,17 @@
     return;
 
   // |latest_brightness_change_time_|, |current_brightness_|,
-  // |log_average_ambient_lux_| and thresholds are only needed if adapter is
+  // |average_log_ambient_lux_| and thresholds are only needed if adapter is
   // |kSuccess|.
   if (adapter_status_ == Status::kSuccess) {
-    DCHECK(ambient_light_values_);
-    const base::Optional<AlsAvgStdDev> als_avg_stddev =
-        ambient_light_values_->AverageAmbientWithStdDev(now);
+    DCHECK(log_als_values_);
+    const base::Optional<AlsAvgStdDev> log_als_avg_stddev =
+        log_als_values_->AverageAmbientWithStdDev(now);
 
     OnBrightnessChanged(now, new_brightness_percent,
-                        als_avg_stddev ? base::Optional<double>(
-                                             ConvertToLog(als_avg_stddev->avg))
-                                       : base::nullopt);
+                        log_als_avg_stddev
+                            ? base::Optional<double>(log_als_avg_stddev->avg)
+                            : base::nullopt);
   }
 
   if (!metrics_reporter_)
@@ -237,8 +237,8 @@
 
 base::Optional<AlsAvgStdDev> Adapter::GetAverageAmbientWithStdDevForTesting(
     base::TimeTicks now) {
-  DCHECK(ambient_light_values_);
-  return ambient_light_values_->AverageAmbientWithStdDev(now);
+  DCHECK(log_als_values_);
+  return log_als_values_->AverageAmbientWithStdDev(now);
 }
 
 double Adapter::GetBrighteningThresholdForTesting() const {
@@ -249,8 +249,8 @@
   return *darkening_threshold_;
 }
 
-base::Optional<double> Adapter::GetCurrentLogAvgAlsForTesting() const {
-  return log_average_ambient_lux_;
+base::Optional<double> Adapter::GetCurrentAvgLogAlsForTesting() const {
+  return average_log_ambient_lux_;
 }
 
 std::unique_ptr<Adapter> Adapter::CreateForTesting(
@@ -349,7 +349,7 @@
 
   params_.auto_brightness_als_horizon =
       base::TimeDelta::FromSeconds(auto_brightness_als_horizon_seconds);
-  ambient_light_values_ = std::make_unique<AmbientLightSampleBuffer>(
+  log_als_values_ = std::make_unique<AmbientLightSampleBuffer>(
       params_.auto_brightness_als_horizon);
 
   // TODO(jiameng): move this to device config once we complete experiments.
@@ -426,8 +426,7 @@
 }
 
 base::Optional<Adapter::BrightnessChangeCause> Adapter::CanAdjustBrightness(
-    double current_log_average_ambient,
-    double stddev) const {
+    const AlsAvgStdDev& log_als_avg_stddev) const {
   if (adapter_status_ != Status::kSuccess ||
       adapter_disabled_by_user_adjustment_) {
     return base::nullopt;
@@ -442,7 +441,7 @@
     return base::nullopt;
   }
 
-  if (!log_average_ambient_lux_) {
+  if (!average_log_ambient_lux_) {
     // Either
     // 1. brightness hasn't been changed, or,
     // 2. brightness was changed by the user but there wasn't any ALS data. This
@@ -456,15 +455,15 @@
   DCHECK(brightening_threshold_);
   DCHECK(darkening_threshold_);
 
-  if (current_log_average_ambient > *brightening_threshold_ &&
-      stddev <= params_.brightening_log_lux_threshold *
-                    params_.stabilization_threshold) {
+  if (log_als_avg_stddev.avg > *brightening_threshold_ &&
+      log_als_avg_stddev.stddev <= params_.brightening_log_lux_threshold *
+                                       params_.stabilization_threshold) {
     return BrightnessChangeCause::kBrightneningThresholdExceeded;
   }
 
-  if (current_log_average_ambient < *darkening_threshold_ &&
-      stddev <= params_.darkening_log_lux_threshold *
-                    params_.stabilization_threshold) {
+  if (log_als_avg_stddev.avg < *darkening_threshold_ &&
+      log_als_avg_stddev.stddev <= params_.darkening_log_lux_threshold *
+                                       params_.stabilization_threshold) {
     return BrightnessChangeCause::kDarkeningThresholdExceeded;
   }
 
@@ -473,7 +472,7 @@
 
 void Adapter::MaybeAdjustBrightness(base::TimeTicks now) {
   DCHECK_EQ(adapter_status_, Status::kSuccess);
-  DCHECK(ambient_light_values_);
+  DCHECK(log_als_values_);
   DCHECK(!als_init_time_.is_null());
   // Wait until we've had enough ALS data to calc avg.
   if (now - als_init_time_ < params_.auto_brightness_als_horizon)
@@ -486,21 +485,19 @@
           params_.auto_brightness_als_horizon)
     return;
 
-  const base::Optional<AlsAvgStdDev> als_avg_stddev =
-      ambient_light_values_->AverageAmbientWithStdDev(now);
-  if (!als_avg_stddev)
+  const base::Optional<AlsAvgStdDev> log_als_avg_stddev =
+      log_als_values_->AverageAmbientWithStdDev(now);
+  if (!log_als_avg_stddev)
     return;
 
-  const double log_average_ambient_lux = ConvertToLog(als_avg_stddev->avg);
-
   const base::Optional<BrightnessChangeCause> brightness_change_cause =
-      CanAdjustBrightness(log_average_ambient_lux, als_avg_stddev->stddev);
+      CanAdjustBrightness(*log_als_avg_stddev);
 
   if (!brightness_change_cause.has_value())
     return;
 
   const base::Optional<double> brightness =
-      GetBrightnessBasedOnAmbientLogLux(log_average_ambient_lux);
+      GetBrightnessBasedOnAmbientLogLux(log_als_avg_stddev->avg);
 
   // This could occur if curve isn't set up (e.g. when we want to use
   // personal only that's not yet available).
@@ -526,11 +523,11 @@
   UMA_HISTOGRAM_ENUMERATION("AutoScreenBrightness.BrightnessChange.Cause",
                             cause);
 
-  WriteLogMessages(log_average_ambient_lux, *brightness, cause);
+  WriteLogMessages(log_als_avg_stddev->avg, *brightness, cause);
   model_brightness_change_counter_++;
 
   OnBrightnessChanged(brightness_change_time, *brightness,
-                      log_average_ambient_lux);
+                      log_als_avg_stddev->avg);
 }
 
 base::Optional<double> Adapter::GetBrightnessBasedOnAmbientLogLux(
@@ -565,13 +562,13 @@
   if (!new_log_als)
     return;
 
-  // Update |log_average_ambient_lux_| with the new reference value. Brightness
+  // Update |average_log_ambient_lux_| with the new reference value. Brightness
   // will be changed by the model if next log-avg ALS value goes outside of the
   // range
   // [|darkening_threshold_|, |brightening_threshold_|].
   // Thresholds in |params_| are absolute values to be added/subtracted from
   // the reference values. Log-avg can be negative.
-  log_average_ambient_lux_ = new_log_als;
+  average_log_ambient_lux_ = new_log_als;
   brightening_threshold_ = *new_log_als + params_.brightening_log_lux_threshold;
   darkening_threshold_ = *new_log_als - params_.darkening_log_lux_threshold;
 }
@@ -581,8 +578,8 @@
                                BrightnessChangeCause cause) const {
   DCHECK_EQ(adapter_status_, Status::kSuccess);
   const std::string old_log_als =
-      log_average_ambient_lux_
-          ? base::StringPrintf("%.4f", log_average_ambient_lux_.value()) + "->"
+      average_log_ambient_lux_
+          ? base::StringPrintf("%.4f", average_log_ambient_lux_.value()) + "->"
           : "";
 
   const std::string old_brightness =
diff --git a/chrome/browser/chromeos/power/auto_screen_brightness/adapter.h b/chrome/browser/chromeos/power/auto_screen_brightness/adapter.h
index 87591ba..27470a7 100644
--- a/chrome/browser/chromeos/power/auto_screen_brightness/adapter.h
+++ b/chrome/browser/chromeos/power/auto_screen_brightness/adapter.h
@@ -161,14 +161,14 @@
   base::Optional<MonotoneCubicSpline> GetGlobalCurveForTesting() const;
   base::Optional<MonotoneCubicSpline> GetPersonalCurveForTesting() const;
 
-  // Returns the average and std-dev over |ambient_light_values_|.
+  // Returns the average and std-dev over |log_als_values_|.
   base::Optional<AlsAvgStdDev> GetAverageAmbientWithStdDevForTesting(
       base::TimeTicks now);
   double GetBrighteningThresholdForTesting() const;
   double GetDarkeningThresholdForTesting() const;
 
-  // Returns |log_average_ambient_lux_|.
-  base::Optional<double> GetCurrentLogAvgAlsForTesting() const;
+  // Returns |average_log_ambient_lux_|.
+  base::Optional<double> GetCurrentAvgLogAlsForTesting() const;
 
   static std::unique_ptr<Adapter> CreateForTesting(
       Profile* profile,
@@ -209,8 +209,7 @@
   // the ambient light has changed beyond thresholds and has stabilized.
   // Returns nullopt if it shouldn't change the brightness.
   base::Optional<BrightnessChangeCause> CanAdjustBrightness(
-      double current_log_average_ambient,
-      double stddev) const;
+      const AlsAvgStdDev& log_als_avg_stddev) const;
 
   // Called when ambient light changes. It only changes screen brightness if
   // |CanAdjustBrightness| returns true and a required curve is set up:
@@ -232,7 +231,7 @@
   // Called when brightness is changed by the model or user. This function
   // updates |latest_brightness_change_time_|, |current_brightness_|. If
   // |new_log_als| is not nullopt, it will also update
-  // |log_average_ambient_lux_| and thresholds. |new_log_als| should be
+  // |average_log_ambient_lux_| and thresholds. |new_log_als| should be
   // available when this function is called, but may be nullopt when a user
   // changes brightness before any ALS reading comes in. We log an error if this
   // happens.
@@ -271,8 +270,9 @@
 
   // TODO(jiameng): refactor internal states and flags.
 
-  // This buffer will be used to store the recent ambient light values.
-  std::unique_ptr<AmbientLightSampleBuffer> ambient_light_values_;
+  // This buffer will be used to store the recent ambient light values in the
+  // log space.
+  std::unique_ptr<AmbientLightSampleBuffer> log_als_values_;
 
   base::Optional<AlsReader::AlsInitStatus> als_init_status_;
   // Time when AlsReader is initialized.
@@ -298,7 +298,7 @@
   // to check |adapter_disabled_by_user_adjustment_|.
   bool adapter_disabled_by_user_adjustment_ = false;
 
-  // The thresholds are calculated from the |log_average_ambient_lux_|.
+  // The thresholds are calculated from the |average_log_ambient_lux_|.
   // They are only updated when brightness is changed (either by user or model).
   base::Optional<double> brightening_threshold_;
   base::Optional<double> darkening_threshold_;
@@ -306,9 +306,9 @@
   base::Optional<MonotoneCubicSpline> global_curve_;
   base::Optional<MonotoneCubicSpline> personal_curve_;
 
-  // |log_average_ambient_lux_| is only recorded when screen brightness is
+  // |average_log_ambient_lux_| is only recorded when screen brightness is
   // changed by either model or user. New thresholds will be calculated from it.
-  base::Optional<double> log_average_ambient_lux_;
+  base::Optional<double> average_log_ambient_lux_;
 
   // Last time brightness change occurred, either by user or model.
   base::TimeTicks latest_brightness_change_time_;
diff --git a/chrome/browser/chromeos/power/auto_screen_brightness/adapter_unittest.cc b/chrome/browser/chromeos/power/auto_screen_brightness/adapter_unittest.cc
index 5334b5f..19af919 100644
--- a/chrome/browser/chromeos/power/auto_screen_brightness/adapter_unittest.cc
+++ b/chrome/browser/chromeos/power/auto_screen_brightness/adapter_unittest.cc
@@ -41,15 +41,18 @@
 
 namespace {
 
-// Checks |actual_log_avg| is equal to the log avg calculated from
-// |expected_data|.
-void CheckLogAvg(const std::vector<double>& expected_data,
-                 double actual_log_avg) {
+// Checks |actual_avg_log| is equal to the avg log calculated from
+// |expected_data|. |expected_data| contains absolute lux value, not log lux.
+void CheckAvgLog(const std::vector<double>& expected_data,
+                 double actual_avg_log) {
   const size_t count = expected_data.size();
   CHECK_NE(count, 0u);
-  const double expected_log_avg = ConvertToLog(
-      std::accumulate(expected_data.begin(), expected_data.end(), 0.0) / count);
-  EXPECT_DOUBLE_EQ(actual_log_avg, expected_log_avg);
+  const double expected_avg_log =
+      std::accumulate(
+          expected_data.begin(), expected_data.end(), 0.0,
+          [](double sum, double lux) { return sum + ConvertToLog(lux); }) /
+      count;
+  EXPECT_DOUBLE_EQ(actual_avg_log, expected_avg_log);
 }
 
 // Testing modeller.
@@ -496,8 +499,8 @@
 
   ForwardTimeAndReportAls({100});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({1, 2, 3, 4, 100},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4, 100},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 }
 
 // First ALS comes in at the same time when AlsReader is initialized. Hence
@@ -516,8 +519,8 @@
 
   ForwardTimeAndReportAls({100});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({1, 2, 3, 4, 100},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4, 100},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 }
 
 TEST_F(AdapterTest, SequenceOfBrightnessUpdatesWithDefaultParams) {
@@ -536,45 +539,45 @@
   // Brightness is changed for the first time after the 5th reading.
   ForwardTimeAndReportAls({5});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({1, 2, 3, 4, 5},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4, 5},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   // Several other ALS readings come in, but need to wait for
   // |params.auto_brightness_als_horizon_seconds| to pass before having any
   // effect
   ForwardTimeAndReportAls({20});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({1, 2, 3, 4, 5},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4, 5},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   ForwardTimeAndReportAls({30});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({1, 2, 3, 4, 5},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4, 5},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   ForwardTimeAndReportAls({40});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({1, 2, 3, 4, 5},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4, 5},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   ForwardTimeAndReportAls({50});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({1, 2, 3, 4, 5},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4, 5},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   // The next ALS reading triggers brightness change.
   ForwardTimeAndReportAls({60});
   EXPECT_EQ(test_observer_.num_changes(), 2);
-  CheckLogAvg({20, 30, 40, 50, 60},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({20, 30, 40, 50, 60},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   // |params.auto_brightness_als_horizon_seconds| has elapsed since we've made
   // the change, but there's no new ALS value, hence no brightness change is
   // triggered.
   thread_bundle_.FastForwardBy(base::TimeDelta::FromSeconds(10));
   EXPECT_EQ(test_observer_.num_changes(), 2);
-  CheckLogAvg({20, 30, 40, 50, 60},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({20, 30, 40, 50, 60},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   EXPECT_EQ(adapter_->GetAverageAmbientWithStdDevForTesting(
                 thread_bundle_.NowTicks()),
@@ -583,7 +586,7 @@
   // A new ALS value triggers a brightness change.
   ForwardTimeAndReportAls({100});
   EXPECT_EQ(test_observer_.num_changes(), 3);
-  CheckLogAvg({100}, adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({100}, adapter_->GetCurrentAvgLogAlsForTesting().value());
 }
 
 // A user brightness change comes in when ALS readings exist. This also disables
@@ -604,12 +607,12 @@
       "AutoScreenBrightness.MissingAlsWhenBrightnessChanged", false, 1);
   EXPECT_EQ(adapter_->GetStatusForTesting(), Adapter::Status::kSuccess);
   EXPECT_FALSE(adapter_->IsAppliedForTesting());
-  CheckLogAvg({1, 2, 3, 4}, adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4}, adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   // An als reading comes in but will not change the brightness.
   ForwardTimeAndReportAls({100});
   EXPECT_EQ(test_observer_.num_changes(), 0);
-  CheckLogAvg({1, 2, 3, 4}, adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4}, adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   // Another user manual adjustment comes in.
   thread_bundle_.FastForwardBy(base::TimeDelta::FromSeconds(1));
@@ -619,8 +622,8 @@
   EXPECT_FALSE(adapter_->IsAppliedForTesting());
   histogram_tester_.ExpectUniqueSample(
       "AutoScreenBrightness.MissingAlsWhenBrightnessChanged", false, 2);
-  CheckLogAvg({2, 3, 4, 100},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({2, 3, 4, 100},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 }
 
 // Same as |UserBrightnessChangeAlsReadingExists| except that user adjustment
@@ -644,19 +647,19 @@
   EXPECT_EQ(adapter_->GetStatusForTesting(), Adapter::Status::kSuccess);
   EXPECT_TRUE(adapter_->IsAppliedForTesting());
   EXPECT_EQ(test_observer_.num_changes(), 0);
-  CheckLogAvg({2, 4, 6, 8}, adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({2, 4, 6, 8}, adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   // Four ALS readings come in, but not enough time has passed since user
   // brightness change.
   ForwardTimeAndReportAls({4, 6, 8, 2});
   EXPECT_EQ(test_observer_.num_changes(), 0);
-  CheckLogAvg({2, 4, 6, 8}, adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({2, 4, 6, 8}, adapter_->GetCurrentAvgLogAlsForTesting().value());
 
-  // Another ALS reading is in, but avg is the same as reference ALS (when user
-  // changed brightness). Hence no change to brightness.
+  // Another ALS reading is in and triggers brightness change.
   ForwardTimeAndReportAls({5});
-  EXPECT_EQ(test_observer_.num_changes(), 0);
-  CheckLogAvg({2, 4, 6, 8}, adapter_->GetCurrentLogAvgAlsForTesting().value());
+  EXPECT_EQ(test_observer_.num_changes(), 1);
+  CheckAvgLog({4, 6, 8, 2, 5},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   // Another user manual adjustment comes in.
   thread_bundle_.FastForwardBy(base::TimeDelta::FromSeconds(1));
@@ -665,8 +668,8 @@
   EXPECT_EQ(adapter_->GetStatusForTesting(), Adapter::Status::kSuccess);
   EXPECT_TRUE(adapter_->IsAppliedForTesting());
   histogram_tester_.ExpectUniqueSample(
-      "AutoScreenBrightness.MissingAlsWhenBrightnessChanged", false, 2);
-  CheckLogAvg({6, 8, 2, 5}, adapter_->GetCurrentLogAvgAlsForTesting().value());
+      "AutoScreenBrightness.MissingAlsWhenBrightnessChanged", false, 3);
+  CheckAvgLog({6, 8, 2, 5}, adapter_->GetCurrentAvgLogAlsForTesting().value());
 }
 
 // Same as |UserBrightnessChangeAlsReadingExists| except that the 1st user
@@ -682,15 +685,15 @@
 
   histogram_tester_.ExpectUniqueSample(
       "AutoScreenBrightness.MissingAlsWhenBrightnessChanged", true, 1);
-  EXPECT_EQ(adapter_->GetCurrentLogAvgAlsForTesting(), base::nullopt);
+  EXPECT_EQ(adapter_->GetCurrentAvgLogAlsForTesting(), base::nullopt);
   EXPECT_EQ(adapter_->GetStatusForTesting(), Adapter::Status::kSuccess);
   EXPECT_FALSE(adapter_->IsAppliedForTesting());
-  EXPECT_FALSE(adapter_->GetCurrentLogAvgAlsForTesting());
+  EXPECT_FALSE(adapter_->GetCurrentAvgLogAlsForTesting());
 
   // ALS readings come in but will not change the brightness.
   ForwardTimeAndReportAls({100, 101, 102, 103, 104});
   EXPECT_EQ(test_observer_.num_changes(), 0);
-  EXPECT_FALSE(adapter_->GetCurrentLogAvgAlsForTesting());
+  EXPECT_FALSE(adapter_->GetCurrentAvgLogAlsForTesting());
 
   // Another user manual adjustment comes in.
   thread_bundle_.FastForwardBy(base::TimeDelta::FromSeconds(1));
@@ -701,8 +704,8 @@
       "AutoScreenBrightness.MissingAlsWhenBrightnessChanged", false, 1);
   EXPECT_EQ(adapter_->GetStatusForTesting(), Adapter::Status::kSuccess);
   EXPECT_FALSE(adapter_->IsAppliedForTesting());
-  CheckLogAvg({101, 102, 103, 104},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({101, 102, 103, 104},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 }
 
 // Same as |UserBrightnessChangeAlsReadingAbsent| except that user adjustment
@@ -720,18 +723,18 @@
 
   histogram_tester_.ExpectUniqueSample(
       "AutoScreenBrightness.MissingAlsWhenBrightnessChanged", true, 1);
-  EXPECT_EQ(adapter_->GetCurrentLogAvgAlsForTesting(), base::nullopt);
+  EXPECT_EQ(adapter_->GetCurrentAvgLogAlsForTesting(), base::nullopt);
   EXPECT_EQ(adapter_->GetStatusForTesting(), Adapter::Status::kSuccess);
   EXPECT_TRUE(adapter_->IsAppliedForTesting());
-  EXPECT_FALSE(adapter_->GetCurrentLogAvgAlsForTesting());
+  EXPECT_FALSE(adapter_->GetCurrentAvgLogAlsForTesting());
 
   // ALS readings come in, and will trigger a brightness change.
   ForwardTimeAndReportAls({100});
   EXPECT_EQ(test_observer_.num_changes(), 0);
   ForwardTimeAndReportAls({101, 102, 103, 104});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({100, 101, 102, 103, 104},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({100, 101, 102, 103, 104},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   // Another user manual adjustment comes in.
   thread_bundle_.FastForwardBy(base::TimeDelta::FromSeconds(1));
@@ -742,8 +745,8 @@
       "AutoScreenBrightness.MissingAlsWhenBrightnessChanged", false, 2);
   EXPECT_EQ(adapter_->GetStatusForTesting(), Adapter::Status::kSuccess);
   EXPECT_TRUE(adapter_->IsAppliedForTesting());
-  CheckLogAvg({101, 102, 103, 104},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({101, 102, 103, 104},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 }
 
 // Set |brightening_log_lux_threshold| to a very high value to effectively make
@@ -764,40 +767,40 @@
   EXPECT_EQ(test_observer_.num_changes(), 0);
   ForwardTimeAndReportAls({5});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({1, 2, 3, 4, 5},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4, 5},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
   EXPECT_DOUBLE_EQ(adapter_->GetBrighteningThresholdForTesting(),
-                   adapter_->GetCurrentLogAvgAlsForTesting().value() + 100);
+                   adapter_->GetCurrentAvgLogAlsForTesting().value() + 100);
   EXPECT_DOUBLE_EQ(adapter_->GetDarkeningThresholdForTesting(),
-                   adapter_->GetCurrentLogAvgAlsForTesting().value() - 0.00001);
+                   adapter_->GetCurrentAvgLogAlsForTesting().value() - 0.00001);
 
   ForwardTimeAndReportAls({4, 4, 4, 4, 4});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({1, 2, 3, 4, 5},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4, 5},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
   EXPECT_DOUBLE_EQ(adapter_->GetBrighteningThresholdForTesting(),
-                   adapter_->GetCurrentLogAvgAlsForTesting().value() + 100);
+                   adapter_->GetCurrentAvgLogAlsForTesting().value() + 100);
   EXPECT_DOUBLE_EQ(adapter_->GetDarkeningThresholdForTesting(),
-                   adapter_->GetCurrentLogAvgAlsForTesting().value() - 0.00001);
+                   adapter_->GetCurrentAvgLogAlsForTesting().value() - 0.00001);
 
   // Darkening is still possible.
   ForwardTimeAndReportAls({1});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({1, 2, 3, 4, 5},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4, 5},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
   EXPECT_DOUBLE_EQ(adapter_->GetBrighteningThresholdForTesting(),
-                   adapter_->GetCurrentLogAvgAlsForTesting().value() + 100);
+                   adapter_->GetCurrentAvgLogAlsForTesting().value() + 100);
   EXPECT_DOUBLE_EQ(adapter_->GetDarkeningThresholdForTesting(),
-                   adapter_->GetCurrentLogAvgAlsForTesting().value() - 0.00001);
+                   adapter_->GetCurrentAvgLogAlsForTesting().value() - 0.00001);
 
   ForwardTimeAndReportAls({1});
   EXPECT_EQ(test_observer_.num_changes(), 2);
-  CheckLogAvg({4, 4, 4, 1, 1},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({4, 4, 4, 1, 1},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
   EXPECT_DOUBLE_EQ(adapter_->GetBrighteningThresholdForTesting(),
-                   adapter_->GetCurrentLogAvgAlsForTesting().value() + 100);
+                   adapter_->GetCurrentAvgLogAlsForTesting().value() + 100);
   EXPECT_DOUBLE_EQ(adapter_->GetDarkeningThresholdForTesting(),
-                   adapter_->GetCurrentLogAvgAlsForTesting().value() - 0.00001);
+                   adapter_->GetCurrentAvgLogAlsForTesting().value() - 0.00001);
 }
 
 // Set |darkening_log_lux_threshold| to a very high value to effectively make
@@ -812,29 +815,29 @@
   EXPECT_EQ(test_observer_.num_changes(), 0);
   ForwardTimeAndReportAls({50});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({10, 20, 30, 40, 50},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({10, 20, 30, 40, 50},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
   EXPECT_DOUBLE_EQ(adapter_->GetBrighteningThresholdForTesting(),
-                   adapter_->GetCurrentLogAvgAlsForTesting().value() + 0.00001);
+                   adapter_->GetCurrentAvgLogAlsForTesting().value() + 0.00001);
   EXPECT_DOUBLE_EQ(adapter_->GetDarkeningThresholdForTesting(),
-                   adapter_->GetCurrentLogAvgAlsForTesting().value() - 100);
+                   adapter_->GetCurrentAvgLogAlsForTesting().value() - 100);
 
-  ForwardTimeAndReportAls({29, 29, 29, 29, 29});
+  ForwardTimeAndReportAls({25, 25, 25, 25, 25});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({10, 20, 30, 40, 50},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({10, 20, 30, 40, 50},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
   EXPECT_DOUBLE_EQ(adapter_->GetBrighteningThresholdForTesting(),
-                   adapter_->GetCurrentLogAvgAlsForTesting().value() + 0.00001);
+                   adapter_->GetCurrentAvgLogAlsForTesting().value() + 0.00001);
   EXPECT_DOUBLE_EQ(adapter_->GetDarkeningThresholdForTesting(),
-                   adapter_->GetCurrentLogAvgAlsForTesting().value() - 100);
+                   adapter_->GetCurrentAvgLogAlsForTesting().value() - 100);
 
   ForwardTimeAndReportAls({40});
-  CheckLogAvg({29, 29, 29, 29, 40},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({25, 25, 25, 25, 40},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
   EXPECT_DOUBLE_EQ(adapter_->GetBrighteningThresholdForTesting(),
-                   adapter_->GetCurrentLogAvgAlsForTesting().value() + 0.00001);
+                   adapter_->GetCurrentAvgLogAlsForTesting().value() + 0.00001);
   EXPECT_DOUBLE_EQ(adapter_->GetDarkeningThresholdForTesting(),
-                   adapter_->GetCurrentLogAvgAlsForTesting().value() - 100);
+                   adapter_->GetCurrentAvgLogAlsForTesting().value() - 100);
 }
 
 // Set |stabilization_threshold| to a very low value so that the average really
@@ -847,19 +850,19 @@
 
   ForwardTimeAndReportAls({10, 20, 30, 40, 50});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({10, 20, 30, 40, 50},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({10, 20, 30, 40, 50},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
-  // A slight fluctuation means brightness is not changed.
-  ForwardTimeAndReportAls({29, 29, 29, 29, 28});
+  // A fluctuation means brightness is not changed.
+  ForwardTimeAndReportAls({29, 29, 29, 29, 20});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({10, 20, 30, 40, 50},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({10, 20, 30, 40, 50},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
-  ForwardTimeAndReportAls({28, 28, 28, 28});
+  ForwardTimeAndReportAls({20, 20, 20, 20});
   EXPECT_EQ(test_observer_.num_changes(), 2);
-  CheckLogAvg({28, 28, 28, 28, 28},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({20, 20, 20, 20, 20},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 }
 
 // Shorten |auto_brightness_als_horizon| to 1 second. Averaging period is
@@ -875,15 +878,15 @@
 
   ForwardTimeAndReportAls({10});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({10}, adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({10}, adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   ForwardTimeAndReportAls({100});
   EXPECT_EQ(test_observer_.num_changes(), 2);
-  CheckLogAvg({100}, adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({100}, adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   ForwardTimeAndReportAls({2});
   EXPECT_EQ(test_observer_.num_changes(), 3);
-  CheckLogAvg({2}, adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({2}, adapter_->GetCurrentAvgLogAlsForTesting().value());
 }
 
 TEST_F(AdapterTest, UsePersonalCurve) {
@@ -901,14 +904,14 @@
   // because there is no personal curve.
   ForwardTimeAndReportAls({1, 2, 3, 4, 5, 6, 7, 8});
   EXPECT_EQ(test_observer_.num_changes(), 0);
-  EXPECT_EQ(adapter_->GetCurrentLogAvgAlsForTesting(), base::nullopt);
+  EXPECT_EQ(adapter_->GetCurrentAvgLogAlsForTesting(), base::nullopt);
 
   // Personal curve is received, it does not lead to any immediate brightness
   // change.
   thread_bundle_.FastForwardBy(base::TimeDelta::FromSeconds(1));
   fake_modeller_.ReportModelTrained(*personal_curve_);
   EXPECT_EQ(test_observer_.num_changes(), 0);
-  EXPECT_EQ(adapter_->GetCurrentLogAvgAlsForTesting(), base::nullopt);
+  EXPECT_EQ(adapter_->GetCurrentAvgLogAlsForTesting(), base::nullopt);
 
   // Another ALS comes in, which triggers a brightness change.
   ReportAls(20);
@@ -916,13 +919,13 @@
   EXPECT_EQ(test_observer_.GetCause(),
             power_manager::BacklightBrightnessChange_Cause_MODEL);
 
-  CheckLogAvg({5, 6, 7, 8, 20},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({5, 6, 7, 8, 20},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   // Brightness is changed according to the personal curve.
   EXPECT_DOUBLE_EQ(test_observer_.GetBrightnessPercent(),
                    personal_curve_->Interpolate(
-                       adapter_->GetCurrentLogAvgAlsForTesting().value()));
+                       adapter_->GetCurrentAvgLogAlsForTesting().value()));
 }
 
 TEST_F(AdapterTest, UseGlobalCurve) {
@@ -936,13 +939,13 @@
 
   ForwardTimeAndReportAls({1, 2, 3, 4, 5});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({1, 2, 3, 4, 5},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4, 5},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   // Brightness is changed according to the global curve.
   EXPECT_DOUBLE_EQ(test_observer_.GetBrightnessPercent(),
                    global_curve_->Interpolate(
-                       adapter_->GetCurrentLogAvgAlsForTesting().value()));
+                       adapter_->GetCurrentAvgLogAlsForTesting().value()));
 
   // A new personal curve is received but adapter still uses the global curve.
   thread_bundle_.FastForwardBy(base::TimeDelta::FromSeconds(20));
@@ -955,7 +958,7 @@
   // Brightness is changed according to the global curve.
   EXPECT_DOUBLE_EQ(test_observer_.GetBrightnessPercent(),
                    global_curve_->Interpolate(
-                       adapter_->GetCurrentLogAvgAlsForTesting().value()));
+                       adapter_->GetCurrentAvgLogAlsForTesting().value()));
 }
 
 TEST_F(AdapterTest, BrightnessSetByPolicy) {
@@ -967,7 +970,7 @@
 
   ForwardTimeAndReportAls({1, 2, 3, 4, 5, 6, 7, 8});
   EXPECT_EQ(test_observer_.num_changes(), 0);
-  EXPECT_EQ(adapter_->GetCurrentLogAvgAlsForTesting(), base::nullopt);
+  EXPECT_EQ(adapter_->GetCurrentAvgLogAlsForTesting(), base::nullopt);
 }
 
 TEST_F(AdapterTest, FeatureDisabled) {
@@ -987,7 +990,7 @@
   // No brightness is changed.
   ForwardTimeAndReportAls({1, 2, 3, 4, 5, 6, 7, 8});
   EXPECT_EQ(test_observer_.num_changes(), 0);
-  EXPECT_EQ(adapter_->GetCurrentLogAvgAlsForTesting(), base::nullopt);
+  EXPECT_EQ(adapter_->GetCurrentAvgLogAlsForTesting(), base::nullopt);
 }
 
 TEST_F(AdapterTest, FeatureEnabledForAtlas) {
@@ -1005,8 +1008,8 @@
 
   ForwardTimeAndReportAls({1, 2, 3, 4, 5});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({1, 2, 3, 4, 5},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4, 5},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 }
 
 TEST_F(AdapterTest, ValidParameters) {
@@ -1042,8 +1045,8 @@
   // Brightness is changed for the 1st time.
   ForwardTimeAndReportAls({1, 2, 3, 4, 5});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({1, 2, 3, 4, 5},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4, 5},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   // Adapter will not be applied after a user manual adjustment.
   ReportUserBrightnessChangeRequest(20.0, 30.0);
@@ -1052,8 +1055,8 @@
 
   ForwardTimeAndReportAls({6, 7, 8, 9, 10, 11});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({1, 2, 3, 4, 5},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4, 5},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   // SuspendDone is received, which does not enable Adapter.
   ReportSuspendDone();
@@ -1062,8 +1065,8 @@
 
   ForwardTimeAndReportAls({11, 12, 13, 14, 15, 16});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({1, 2, 3, 4, 5},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4, 5},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 }
 
 TEST_F(AdapterTest, UserAdjustmentEffectPause) {
@@ -1083,8 +1086,8 @@
   // Brightness is changed for the 1st time.
   ForwardTimeAndReportAls({1, 2, 3, 4, 5});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({1, 2, 3, 4, 5},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4, 5},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   // User manually changes brightness so that adapter will not be applied.
   ReportUserBrightnessChangeRequest(20.0, 30.0);
@@ -1094,8 +1097,8 @@
   // New ALS data will not trigger brightness update.
   ForwardTimeAndReportAls({101, 102, 103, 104, 105, 106, 107, 108});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({1, 2, 3, 4, 5},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4, 5},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   // // SuspendDone is received, which reenables adapter.
   ReportSuspendDone();
@@ -1105,21 +1108,21 @@
   // Another ALS results in a brightness change.
   ForwardTimeAndReportAls({109});
   EXPECT_EQ(test_observer_.num_changes(), 2);
-  CheckLogAvg({105, 106, 107, 108, 109},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({105, 106, 107, 108, 109},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   // Another user brightness change.
   ReportUserBrightnessChangeRequest(40.0, 50.0);
-  CheckLogAvg({105, 106, 107, 108, 109},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({105, 106, 107, 108, 109},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
   EXPECT_EQ(adapter_->GetStatusForTesting(), Adapter::Status::kSuccess);
   EXPECT_FALSE(adapter_->IsAppliedForTesting());
 
   // New ALS data will not trigger brightness update.
   ForwardTimeAndReportAls({200});
   EXPECT_EQ(test_observer_.num_changes(), 2);
-  CheckLogAvg({105, 106, 107, 108, 109},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({105, 106, 107, 108, 109},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   // SuspendDone is received, which reenables adapter.
   ReportSuspendDone();
@@ -1129,13 +1132,13 @@
   // Als readings come in but not sufficient time since user changed brightness.
   ForwardTimeAndReportAls({201, 202, 203});
   EXPECT_EQ(test_observer_.num_changes(), 2);
-  CheckLogAvg({105, 106, 107, 108, 109},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({105, 106, 107, 108, 109},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   ForwardTimeAndReportAls({204});
   EXPECT_EQ(test_observer_.num_changes(), 3);
-  CheckLogAvg({200, 201, 202, 203, 204},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({200, 201, 202, 203, 204},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 }
 
 TEST_F(AdapterTest, UserAdjustmentEffectContinue) {
@@ -1155,26 +1158,26 @@
   // Brightness is changed for the 1st time.
   ForwardTimeAndReportAls({1, 2, 3, 4, 5});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({1, 2, 3, 4, 5},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4, 5},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   ForwardTimeAndReportAls({10});
   // User manual adjustment doesn't disable adapter.
   ReportUserBrightnessChangeRequest(40.0, 50.0);
-  CheckLogAvg({2, 3, 4, 5, 10},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({2, 3, 4, 5, 10},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   EXPECT_EQ(adapter_->GetStatusForTesting(), Adapter::Status::kSuccess);
   EXPECT_TRUE(adapter_->IsAppliedForTesting());
 
   ForwardTimeAndReportAls({100, 101, 102, 103});
-  CheckLogAvg({2, 3, 4, 5, 10},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({2, 3, 4, 5, 10},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   ForwardTimeAndReportAls({104});
   EXPECT_EQ(test_observer_.num_changes(), 2);
-  CheckLogAvg({100, 101, 102, 103, 104},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({100, 101, 102, 103, 104},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 }
 
 // Default user adjustment effect for atlas is Continue.
@@ -1196,26 +1199,26 @@
   // Brightness is changed for the 1st time.
   ForwardTimeAndReportAls({1, 2, 3, 4, 5});
   EXPECT_EQ(test_observer_.num_changes(), 1);
-  CheckLogAvg({1, 2, 3, 4, 5},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({1, 2, 3, 4, 5},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   ForwardTimeAndReportAls({10});
   // User manual adjustment doesn't disable adapter.
   ReportUserBrightnessChangeRequest(40.0, 50.0);
-  CheckLogAvg({2, 3, 4, 5, 10},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({2, 3, 4, 5, 10},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   EXPECT_EQ(adapter_->GetStatusForTesting(), Adapter::Status::kSuccess);
   EXPECT_TRUE(adapter_->IsAppliedForTesting());
 
   ForwardTimeAndReportAls({100, 101, 102, 103});
-  CheckLogAvg({2, 3, 4, 5, 10},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({2, 3, 4, 5, 10},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 
   ForwardTimeAndReportAls({104});
   EXPECT_EQ(test_observer_.num_changes(), 2);
-  CheckLogAvg({100, 101, 102, 103, 104},
-              adapter_->GetCurrentLogAvgAlsForTesting().value());
+  CheckAvgLog({100, 101, 102, 103, 104},
+              adapter_->GetCurrentAvgLogAlsForTesting().value());
 }
 
 }  // namespace auto_screen_brightness
diff --git a/chrome/browser/chromeos/power/auto_screen_brightness/modeller_impl.cc b/chrome/browser/chromeos/power/auto_screen_brightness/modeller_impl.cc
index 418810c1..deffb0212 100644
--- a/chrome/browser/chromeos/power/auto_screen_brightness/modeller_impl.cc
+++ b/chrome/browser/chromeos/power/auto_screen_brightness/modeller_impl.cc
@@ -143,8 +143,8 @@
   if (!is_modeller_enabled_.has_value() || !*is_modeller_enabled_)
     return;
 
-  DCHECK(ambient_light_values_);
-  ambient_light_values_->SaveToBuffer({lux, tick_clock_->NowTicks()});
+  DCHECK(log_als_values_);
+  log_als_values_->SaveToBuffer({ConvertToLog(lux), tick_clock_->NowTicks()});
 }
 
 void ModellerImpl::OnAlsReaderInitialized(AlsReader::AlsInitStatus status) {
@@ -170,17 +170,16 @@
   if (!is_modeller_enabled_.has_value() || !*is_modeller_enabled_)
     return;
 
-  DCHECK(ambient_light_values_);
+  DCHECK(log_als_values_);
   const base::TimeTicks now = tick_clock_->NowTicks();
   // We don't add any training data if there is no ambient light sample.
-  const base::Optional<AlsAvgStdDev> als_avg_stddev =
-      ambient_light_values_->AverageAmbientWithStdDev(now);
-  if (!als_avg_stddev)
+  const base::Optional<AlsAvgStdDev> log_als_avg_stddev =
+      log_als_values_->AverageAmbientWithStdDev(now);
+  if (!log_als_avg_stddev)
     return;
 
-  const double average_ambient_lux = als_avg_stddev->avg;
   data_cache_.push_back({old_brightness_percent, new_brightness_percent,
-                         ConvertToLog(average_ambient_lux), now});
+                         log_als_avg_stddev->avg, now});
 
   ScheduleTrainerStart();
 }
@@ -225,13 +224,13 @@
 base::Optional<double> ModellerImpl::AverageAmbientForTesting(
     base::TimeTicks now) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  DCHECK(ambient_light_values_);
-  const base::Optional<AlsAvgStdDev> als_avg_stddev =
-      ambient_light_values_->AverageAmbientWithStdDev(now);
-  if (!als_avg_stddev)
+  DCHECK(log_als_values_);
+  const base::Optional<AlsAvgStdDev> log_als_avg_stddev =
+      log_als_values_->AverageAmbientWithStdDev(now);
+  if (!log_als_avg_stddev)
     return base::nullopt;
 
-  return als_avg_stddev->avg;
+  return log_als_avg_stddev->avg;
 }
 
 size_t ModellerImpl::NumberTrainingDataPointsForTesting() const {
@@ -373,7 +372,7 @@
   global_curve_.emplace(
       MonotoneCubicSpline(model_config_.log_lux, model_config_.brightness));
 
-  ambient_light_values_ = std::make_unique<AmbientLightSampleBuffer>(
+  log_als_values_ = std::make_unique<AmbientLightSampleBuffer>(
       base::TimeDelta::FromSeconds(model_config_.model_als_horizon_seconds));
 
   // TODO(jiameng): the following params are probably not useful and can be
diff --git a/chrome/browser/chromeos/power/auto_screen_brightness/modeller_impl.h b/chrome/browser/chromeos/power/auto_screen_brightness/modeller_impl.h
index 7af1e93..edc5e82 100644
--- a/chrome/browser/chromeos/power/auto_screen_brightness/modeller_impl.h
+++ b/chrome/browser/chromeos/power/auto_screen_brightness/modeller_impl.h
@@ -88,7 +88,7 @@
       scoped_refptr<base::SequencedTaskRunner> blocking_task_runner,
       const base::TickClock* tick_clock);
 
-  // Current average ambient light.
+  // Current average log ambient light.
   base::Optional<double> AverageAmbientForTesting(base::TimeTicks now);
 
   // Current number of training data points stored, which will be used for next
@@ -246,8 +246,8 @@
   // generates a new curve.
   base::Optional<MonotoneCubicSpline> current_curve_;
 
-  // Recent ambient values.
-  std::unique_ptr<AmbientLightSampleBuffer> ambient_light_values_;
+  // Recent log ambient values.
+  std::unique_ptr<AmbientLightSampleBuffer> log_als_values_;
 
   std::vector<TrainingDataPoint> data_cache_;
 
diff --git a/chrome/browser/chromeos/power/auto_screen_brightness/modeller_impl_unittest.cc b/chrome/browser/chromeos/power/auto_screen_brightness/modeller_impl_unittest.cc
index 79e8988c..1de50128 100644
--- a/chrome/browser/chromeos/power/auto_screen_brightness/modeller_impl_unittest.cc
+++ b/chrome/browser/chromeos/power/auto_screen_brightness/modeller_impl_unittest.cc
@@ -485,17 +485,19 @@
     thread_bundle_.FastForwardBy(base::TimeDelta::FromSeconds(1));
     const int lux = i == 0 ? first_lux : i;
     fake_als_reader_.ReportAmbientLightUpdate(lux);
-    running_sum += lux;
-    EXPECT_EQ(modeller_->AverageAmbientForTesting(thread_bundle_.NowTicks()),
-              running_sum / (i + 1));
+    running_sum += ConvertToLog(lux);
+    EXPECT_DOUBLE_EQ(
+        modeller_->AverageAmbientForTesting(thread_bundle_.NowTicks()).value(),
+        running_sum / (i + 1));
   }
 
   // Add another one should push the oldest |first_lux| out of the horizon.
   thread_bundle_.FastForwardBy(base::TimeDelta::FromSeconds(1));
   fake_als_reader_.ReportAmbientLightUpdate(100);
-  running_sum = running_sum + 100 - first_lux;
-  EXPECT_EQ(modeller_->AverageAmbientForTesting(thread_bundle_.NowTicks()),
-            running_sum / horizon_in_seconds);
+  running_sum = running_sum + ConvertToLog(100) - ConvertToLog(first_lux);
+  EXPECT_DOUBLE_EQ(
+      modeller_->AverageAmbientForTesting(thread_bundle_.NowTicks()).value(),
+      running_sum / horizon_in_seconds);
 }
 
 // User brightness changes are received, training example cache reaches
@@ -523,9 +525,9 @@
     const double brightness_old = 10.0 + i;
     const double brightness_new = 20.0 + i;
     modeller_->OnUserBrightnessChanged(brightness_old, brightness_new);
-    expected_data.push_back(
-        {brightness_old, brightness_new,
-         ConvertToLog(modeller_->AverageAmbientForTesting(now).value()), now});
+    expected_data.push_back({brightness_old, brightness_new,
+                             modeller_->AverageAmbientForTesting(now).value(),
+                             now});
   }
 
   // Training should not have started.
@@ -538,9 +540,9 @@
   const double brightness_old = 85;
   const double brightness_new = 95;
   modeller_->OnUserBrightnessChanged(brightness_old, brightness_new);
-  expected_data.push_back(
-      {brightness_old, brightness_new,
-       ConvertToLog(modeller_->AverageAmbientForTesting(now).value()), now});
+  expected_data.push_back({brightness_old, brightness_new,
+                           modeller_->AverageAmbientForTesting(now).value(),
+                           now});
   thread_bundle_.RunUntilIdle();
 
   EXPECT_EQ(0u, modeller_->NumberTrainingDataPointsForTesting());
@@ -577,9 +579,9 @@
     const double brightness_old = 10.0 + i;
     const double brightness_new = 20.0 + i;
     modeller_->OnUserBrightnessChanged(brightness_old, brightness_new);
-    expected_data.push_back(
-        {brightness_old, brightness_new,
-         ConvertToLog(modeller_->AverageAmbientForTesting(now).value()), now});
+    expected_data.push_back({brightness_old, brightness_new,
+                             modeller_->AverageAmbientForTesting(now).value(),
+                             now});
   }
 
   EXPECT_EQ(modeller_->NumberTrainingDataPointsForTesting(), 10u);
diff --git a/chrome/browser/dom_distiller/dom_distiller_viewer_source_browsertest.cc b/chrome/browser/dom_distiller/dom_distiller_viewer_source_browsertest.cc
index f709922..26ff796 100644
--- a/chrome/browser/dom_distiller/dom_distiller_viewer_source_browsertest.cc
+++ b/chrome/browser/dom_distiller/dom_distiller_viewer_source_browsertest.cc
@@ -52,8 +52,8 @@
 
 using leveldb_proto::test::FakeDB;
 using test::FakeDistiller;
-using test::MockDistillerPage;
 using test::MockDistillerFactory;
+using test::MockDistillerPage;
 using test::MockDistillerPageFactory;
 using test::util::CreateStoreWithFakeDB;
 using testing::HasSubstr;
@@ -63,23 +63,23 @@
 
 const char kGetLoadIndicatorClassName[] =
     "window.domAutomationController.send("
-        "document.getElementById('loadingIndicator').className)";
+    "document.getElementById('loadingIndicator').className)";
 
 const char kGetContent[] =
     "window.domAutomationController.send("
-        "document.getElementById('content').innerHTML)";
+    "document.getElementById('content').innerHTML)";
 
 const char kGetTitle[] =
     "window.domAutomationController.send("
-        "document.title)";
+    "document.title)";
 
 const char kGetBodyClass[] =
     "window.domAutomationController.send("
-        "document.body.className)";
+    "document.body.className)";
 
 const char kGetFontSize[] =
     "window.domAutomationController.send("
-        "window.getComputedStyle(document.documentElement).fontSize)";
+    "window.getComputedStyle(document.documentElement).fontSize)";
 
 const unsigned kDarkToolbarThemeColor = 0xFF1A1A1A;
 
@@ -259,14 +259,16 @@
   EXPECT_EQ(url, contents->GetLastCommittedURL());
 
   std::string result;
-  EXPECT_TRUE(content::ExecuteScriptAndExtractString(
-      contents, kGetContent, &result));
-  EXPECT_THAT(result, HasSubstr(l10n_util::GetStringUTF8(
-      IDS_DOM_DISTILLER_VIEWER_FAILED_TO_FIND_ARTICLE_CONTENT)));
-  EXPECT_TRUE(content::ExecuteScriptAndExtractString(
-      contents, kGetTitle, &result));
-  EXPECT_THAT(result, HasSubstr(l10n_util::GetStringUTF8(
-      IDS_DOM_DISTILLER_VIEWER_FAILED_TO_FIND_ARTICLE_TITLE)));
+  EXPECT_TRUE(
+      content::ExecuteScriptAndExtractString(contents, kGetContent, &result));
+  EXPECT_THAT(result,
+              HasSubstr(l10n_util::GetStringUTF8(
+                  IDS_DOM_DISTILLER_VIEWER_FAILED_TO_FIND_ARTICLE_CONTENT)));
+  EXPECT_TRUE(
+      content::ExecuteScriptAndExtractString(contents, kGetTitle, &result));
+  EXPECT_THAT(result,
+              HasSubstr(l10n_util::GetStringUTF8(
+                  IDS_DOM_DISTILLER_VIEWER_FAILED_TO_FIND_ARTICLE_TITLE)));
 }
 
 // The DomDistillerViewerSource renders untrusted content, so ensure no bindings
@@ -282,7 +284,6 @@
   ViewSingleDistilledPage(url, "text/css");
 }
 
-
 #if defined(OS_LINUX)
 // Flaky on Ubuntu-12.04 bots: https://crbug.com/604362
 #define MAYBE_EmptyURLShouldNotCrash DISABLED_EmptyURLShouldNotCrash
@@ -307,8 +308,7 @@
   ViewSingleDistilledPage(url, "text/html");
 }
 
-IN_PROC_BROWSER_TEST_F(DomDistillerViewerSourceBrowserTest,
-                       EarlyTemplateLoad) {
+IN_PROC_BROWSER_TEST_F(DomDistillerViewerSourceBrowserTest, EarlyTemplateLoad) {
   dom_distiller::DomDistillerServiceFactory::GetInstance()
       ->SetTestingFactoryAndUse(browser()->profile(),
                                 base::BindRepeating(&Build));
@@ -316,9 +316,8 @@
   scoped_refptr<content::MessageLoopRunner> distillation_done_runner =
       new content::MessageLoopRunner;
 
-  FakeDistiller* distiller = new FakeDistiller(
-      false,
-      distillation_done_runner->QuitClosure());
+  FakeDistiller* distiller =
+      new FakeDistiller(false, distillation_done_runner->QuitClosure());
   EXPECT_CALL(*distiller_factory_, CreateDistillerImpl())
       .WillOnce(testing::Return(distiller));
 
@@ -337,19 +336,19 @@
   std::string result;
   // Loading spinner should be on screen at this point.
   EXPECT_TRUE(content::ExecuteScriptAndExtractString(
-      contents, kGetLoadIndicatorClassName , &result));
+      contents, kGetLoadIndicatorClassName, &result));
   EXPECT_EQ("visible", result);
 
-  EXPECT_TRUE(content::ExecuteScriptAndExtractString(
-      contents, kGetContent , &result));
+  EXPECT_TRUE(
+      content::ExecuteScriptAndExtractString(contents, kGetContent, &result));
   EXPECT_THAT(result, Not(HasSubstr("content")));
 
   // Finish distillation and make sure the spinner has been replaced by text.
-  std::vector<scoped_refptr<ArticleDistillationUpdate::RefCountedPageProto> >
+  std::vector<scoped_refptr<ArticleDistillationUpdate::RefCountedPageProto>>
       update_pages;
   std::unique_ptr<DistilledArticleProto> article(new DistilledArticleProto());
 
-  scoped_refptr<base::RefCountedData<DistilledPageProto> > page_proto =
+  scoped_refptr<base::RefCountedData<DistilledPageProto>> page_proto =
       new base::RefCountedData<DistilledPageProto>();
   page_proto->data.set_url("http://foo.html");
   page_proto->data.set_html("<div>content</div>");
@@ -361,8 +360,8 @@
 
   content::WaitForLoadStop(contents);
 
-  EXPECT_TRUE(content::ExecuteScriptAndExtractString(
-      contents, kGetContent , &result));
+  EXPECT_TRUE(
+      content::ExecuteScriptAndExtractString(contents, kGetContent, &result));
   EXPECT_THAT(result, HasSubstr("content"));
 }
 
@@ -435,9 +434,8 @@
   scoped_refptr<content::MessageLoopRunner> distillation_done_runner =
       new content::MessageLoopRunner;
 
-  FakeDistiller* distiller = new FakeDistiller(
-      false,
-      distillation_done_runner->QuitClosure());
+  FakeDistiller* distiller =
+      new FakeDistiller(false, distillation_done_runner->QuitClosure());
   EXPECT_CALL(*distiller_factory_, CreateDistillerImpl())
       .WillOnce(testing::Return(distiller));
 
@@ -454,13 +452,13 @@
 
   // Fake a multi-page response from distiller.
 
-  std::vector<scoped_refptr<ArticleDistillationUpdate::RefCountedPageProto> >
+  std::vector<scoped_refptr<ArticleDistillationUpdate::RefCountedPageProto>>
       update_pages;
   std::unique_ptr<DistilledArticleProto> article(new DistilledArticleProto());
 
   // Flush page 1.
   {
-    scoped_refptr<base::RefCountedData<DistilledPageProto> > page_proto =
+    scoped_refptr<base::RefCountedData<DistilledPageProto>> page_proto =
         new base::RefCountedData<DistilledPageProto>();
     page_proto->data.set_url("http://foobar.1.html");
     page_proto->data.set_html("<div>Page 1 content</div>");
@@ -476,18 +474,18 @@
 
     std::string result;
     EXPECT_TRUE(content::ExecuteScriptAndExtractString(
-        contents, kGetLoadIndicatorClassName , &result));
+        contents, kGetLoadIndicatorClassName, &result));
     EXPECT_EQ("visible", result);
 
-    EXPECT_TRUE(content::ExecuteScriptAndExtractString(
-        contents, kGetContent , &result));
+    EXPECT_TRUE(
+        content::ExecuteScriptAndExtractString(contents, kGetContent, &result));
     EXPECT_THAT(result, HasSubstr("Page 1 content"));
     EXPECT_THAT(result, Not(HasSubstr("Page 2 content")));
   }
 
   // Flush page 2.
   {
-    scoped_refptr<base::RefCountedData<DistilledPageProto> > page_proto =
+    scoped_refptr<base::RefCountedData<DistilledPageProto>> page_proto =
         new base::RefCountedData<DistilledPageProto>();
     page_proto->data.set_url("http://foobar.2.html");
     page_proto->data.set_html("<div>Page 2 content</div>");
@@ -499,11 +497,11 @@
 
     std::string result;
     EXPECT_TRUE(content::ExecuteScriptAndExtractString(
-        contents, kGetLoadIndicatorClassName , &result));
+        contents, kGetLoadIndicatorClassName, &result));
     EXPECT_EQ("hidden", result);
 
-    EXPECT_TRUE(content::ExecuteScriptAndExtractString(
-        contents, kGetContent , &result));
+    EXPECT_TRUE(
+        content::ExecuteScriptAndExtractString(contents, kGetContent, &result));
     EXPECT_THAT(result, HasSubstr("Page 1 content"));
     EXPECT_THAT(result, HasSubstr("Page 2 content"));
   }
@@ -516,8 +514,8 @@
   EXPECT_TRUE(content::ExecuteScriptAndExtractString(
       contents, kGetLoadIndicatorClassName, &result));
   EXPECT_EQ("hidden", result);
-  EXPECT_TRUE(content::ExecuteScriptAndExtractString(
-      contents, kGetContent , &result));
+  EXPECT_TRUE(
+      content::ExecuteScriptAndExtractString(contents, kGetContent, &result));
   EXPECT_THAT(result, HasSubstr("Page 1 content"));
   EXPECT_THAT(result, HasSubstr("Page 2 content"));
 }
@@ -528,8 +526,7 @@
 #else
 #define MAYBE_PrefChange PrefChange
 #endif
-IN_PROC_BROWSER_TEST_F(DomDistillerViewerSourceBrowserTest,
-                       MAYBE_PrefChange) {
+IN_PROC_BROWSER_TEST_F(DomDistillerViewerSourceBrowserTest, MAYBE_PrefChange) {
   PrefTest(false);
 }
 
@@ -544,7 +541,6 @@
   PrefTest(true);
 }
 
-
 void DomDistillerViewerSourceBrowserTest::PrefTest(bool is_error_page) {
   GURL url;
   if (is_error_page) {
@@ -562,19 +558,19 @@
   ViewSingleDistilledPage(url, "text/html");
   content::WaitForLoadStop(contents);
   std::string result;
-  EXPECT_TRUE(content::ExecuteScriptAndExtractString(
-      contents, kGetBodyClass, &result));
+  EXPECT_TRUE(
+      content::ExecuteScriptAndExtractString(contents, kGetBodyClass, &result));
   EXPECT_EQ("light sans-serif", result);
 
   DistilledPagePrefs* distilled_page_prefs =
-       DomDistillerServiceFactory::GetForBrowserContext(
-            browser()->profile())->GetDistilledPagePrefs();
+      DomDistillerServiceFactory::GetForBrowserContext(browser()->profile())
+          ->GetDistilledPagePrefs();
 
   // Test theme.
   distilled_page_prefs->SetTheme(DistilledPagePrefs::THEME_DARK);
   base::RunLoop().RunUntilIdle();
-  EXPECT_TRUE(content::ExecuteScriptAndExtractString(
-      contents, kGetBodyClass, &result));
+  EXPECT_TRUE(
+      content::ExecuteScriptAndExtractString(contents, kGetBodyClass, &result));
   EXPECT_EQ("dark sans-serif", result);
 
   // Verify that the theme color for the tab is updated as well.
@@ -588,19 +584,19 @@
   EXPECT_EQ("dark serif", result);
 
   // Test font scaling.
-  EXPECT_TRUE(content::ExecuteScriptAndExtractString(
-      contents, kGetFontSize, &result));
+  EXPECT_TRUE(
+      content::ExecuteScriptAndExtractString(contents, kGetFontSize, &result));
   double oldFontSize;
   base::StringToDouble(result, &oldFontSize);
 
   const double kScale = 1.23;
   distilled_page_prefs->SetFontScaling(kScale);
   base::RunLoop().RunUntilIdle();
-  EXPECT_TRUE(content::ExecuteScriptAndExtractString(
-      contents, kGetFontSize, &result));
+  EXPECT_TRUE(
+      content::ExecuteScriptAndExtractString(contents, kGetFontSize, &result));
   double fontSize;
   base::StringToDouble(result, &fontSize);
-  ASSERT_FLOAT_EQ(kScale, fontSize/oldFontSize);
+  ASSERT_FLOAT_EQ(kScale, fontSize / oldFontSize);
 }
 
 IN_PROC_BROWSER_TEST_F(DomDistillerViewerSourceBrowserTest, PrefPersist) {
@@ -614,11 +610,11 @@
 
   std::string result;
   DistilledPagePrefs* distilled_page_prefs =
-       DomDistillerServiceFactory::GetForBrowserContext(
-            browser()->profile())->GetDistilledPagePrefs();
+      DomDistillerServiceFactory::GetForBrowserContext(browser()->profile())
+          ->GetDistilledPagePrefs();
 
-  EXPECT_TRUE(content::ExecuteScriptAndExtractString(
-      contents, kGetFontSize, &result));
+  EXPECT_TRUE(
+      content::ExecuteScriptAndExtractString(contents, kGetFontSize, &result));
   double oldFontSize;
   base::StringToDouble(result, &oldFontSize);
 
@@ -629,15 +625,15 @@
   distilled_page_prefs->SetFontScaling(kScale);
 
   base::RunLoop().RunUntilIdle();
-  EXPECT_TRUE(content::ExecuteScriptAndExtractString(
-      contents, kGetBodyClass, &result));
+  EXPECT_TRUE(
+      content::ExecuteScriptAndExtractString(contents, kGetBodyClass, &result));
   EXPECT_EQ("dark serif", result);
   EXPECT_EQ(kDarkToolbarThemeColor, contents->GetThemeColor());
-  EXPECT_TRUE(content::ExecuteScriptAndExtractString(
-      contents, kGetFontSize, &result));
+  EXPECT_TRUE(
+      content::ExecuteScriptAndExtractString(contents, kGetFontSize, &result));
   double fontSize;
   base::StringToDouble(result, &fontSize);
-  ASSERT_FLOAT_EQ(kScale, fontSize/oldFontSize);
+  ASSERT_FLOAT_EQ(kScale, fontSize / oldFontSize);
 
   // Make sure perf persist across web pages.
   GURL url2("chrome-distiller://bad2");
@@ -645,15 +641,15 @@
   content::WaitForLoadStop(contents);
 
   base::RunLoop().RunUntilIdle();
-  EXPECT_TRUE(content::ExecuteScriptAndExtractString(
-      contents, kGetBodyClass, &result));
+  EXPECT_TRUE(
+      content::ExecuteScriptAndExtractString(contents, kGetBodyClass, &result));
   EXPECT_EQ("dark serif", result);
   EXPECT_EQ(kDarkToolbarThemeColor, contents->GetThemeColor());
 
-  EXPECT_TRUE(content::ExecuteScriptAndExtractString(
-      contents, kGetFontSize, &result));
+  EXPECT_TRUE(
+      content::ExecuteScriptAndExtractString(contents, kGetFontSize, &result));
   base::StringToDouble(result, &fontSize);
-  ASSERT_FLOAT_EQ(kScale, fontSize/oldFontSize);
+  ASSERT_FLOAT_EQ(kScale, fontSize / oldFontSize);
 }
 
 }  // namespace dom_distiller
diff --git a/chrome/browser/dom_distiller/lazy_dom_distiller_service.cc b/chrome/browser/dom_distiller/lazy_dom_distiller_service.cc
index 9fb7a9fe..5f137e1 100644
--- a/chrome/browser/dom_distiller/lazy_dom_distiller_service.cc
+++ b/chrome/browser/dom_distiller/lazy_dom_distiller_service.cc
@@ -20,13 +20,11 @@
     Profile* profile,
     const DomDistillerServiceFactory* service_factory)
     : profile_(profile), service_factory_(service_factory) {
-  registrar_.Add(this,
-                 chrome::NOTIFICATION_PROFILE_DESTROYED,
+  registrar_.Add(this, chrome::NOTIFICATION_PROFILE_DESTROYED,
                  content::Source<Profile>(profile));
 }
 
-LazyDomDistillerService::~LazyDomDistillerService() {
-}
+LazyDomDistillerService::~LazyDomDistillerService() {}
 
 // This will create an object and schedule work the first time it's called
 // and just return an existing object after that.
diff --git a/chrome/browser/dom_distiller/tab_utils.cc b/chrome/browser/dom_distiller/tab_utils.cc
index d988440a..6c17d5f 100644
--- a/chrome/browser/dom_distiller/tab_utils.cc
+++ b/chrome/browser/dom_distiller/tab_utils.cc
@@ -25,15 +25,15 @@
 
 namespace {
 
-using dom_distiller::ViewRequestDelegate;
-using dom_distiller::DistilledArticleProto;
 using dom_distiller::ArticleDistillationUpdate;
-using dom_distiller::ViewerHandle;
-using dom_distiller::SourcePageHandleWebContents;
+using dom_distiller::DistilledArticleProto;
+using dom_distiller::DistillerPage;
 using dom_distiller::DomDistillerService;
 using dom_distiller::DomDistillerServiceFactory;
-using dom_distiller::DistillerPage;
 using dom_distiller::SourcePageHandle;
+using dom_distiller::SourcePageHandleWebContents;
+using dom_distiller::ViewerHandle;
+using dom_distiller::ViewRequestDelegate;
 
 // An no-op ViewRequestDelegate which holds a ViewerHandle and deletes itself
 // after the WebContents navigates or goes away. This class is a band-aid to
@@ -86,19 +86,15 @@
 
 SelfDeletingRequestDelegate::SelfDeletingRequestDelegate(
     content::WebContents* web_contents)
-    : WebContentsObserver(web_contents) {
-}
+    : WebContentsObserver(web_contents) {}
 
-SelfDeletingRequestDelegate::~SelfDeletingRequestDelegate() {
-}
+SelfDeletingRequestDelegate::~SelfDeletingRequestDelegate() {}
 
 void SelfDeletingRequestDelegate::OnArticleReady(
-    const DistilledArticleProto* article_proto) {
-}
+    const DistilledArticleProto* article_proto) {}
 
 void SelfDeletingRequestDelegate::OnArticleUpdated(
-    ArticleDistillationUpdate article_update) {
-}
+    ArticleDistillationUpdate article_update) {}
 
 void SelfDeletingRequestDelegate::TakeViewerHandle(
     std::unique_ptr<ViewerHandle> viewer_handle) {
diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrome/browser/download/chrome_download_manager_delegate.cc
index fadeabe..b128f79 100644
--- a/chrome/browser/download/chrome_download_manager_delegate.cc
+++ b/chrome/browser/download/chrome_download_manager_delegate.cc
@@ -242,12 +242,6 @@
     base::OnceCallback<void(bool /* storage permission granted */,
                             bool /*allow*/)>;
 
-// Remove this function once DownloadRequestLimiter::Callback() is declared as a
-// OnceCallback
-void CheckDownloadComplete(CanDownloadCallback can_download_cb, bool allow) {
-  std::move(can_download_cb).Run(true, allow);
-}
-
 void CheckCanDownload(
     const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
     const GURL& url,
@@ -256,9 +250,8 @@
   DownloadRequestLimiter* limiter =
       g_browser_process->download_request_limiter();
   if (limiter) {
-    DownloadRequestLimiter::Callback cb =
-        base::Bind(&CheckDownloadComplete, base::Passed(&can_download_cb));
-    limiter->CanDownload(web_contents_getter, url, request_method, cb);
+    limiter->CanDownload(web_contents_getter, url, request_method,
+                         base::BindOnce(std::move(can_download_cb), true));
   }
 }
 
diff --git a/chrome/browser/download/download_request_limiter.cc b/chrome/browser/download/download_request_limiter.cc
index c5d4044..75cb0fa 100644
--- a/chrome/browser/download/download_request_limiter.cc
+++ b/chrome/browser/download/download_request_limiter.cc
@@ -4,6 +4,9 @@
 
 #include "chrome/browser/download/download_request_limiter.h"
 
+#include <iterator>
+#include <utility>
+
 #include "base/bind.h"
 #include "base/stl_util.h"
 #include "base/task/post_task.h"
@@ -223,8 +226,8 @@
 }
 
 void DownloadRequestLimiter::TabDownloadState::PromptUserForDownload(
-    const DownloadRequestLimiter::Callback& callback) {
-  callbacks_.push_back(callback);
+    DownloadRequestLimiter::Callback callback) {
+  callbacks_.push_back(std::move(callback));
   DCHECK(web_contents_);
   if (is_showing_prompt())
     return;
@@ -363,15 +366,16 @@
     std::vector<DownloadRequestLimiter::Callback>::iterator start, end;
     start = callbacks_.begin();
     end = callbacks_.begin() + kMaxDownloadsAtOnce;
-    callbacks.assign(start, end);
+    callbacks.assign(std::make_move_iterator(start),
+                     std::make_move_iterator(end));
     callbacks_.erase(start, end);
     throttled = true;
   }
 
-  for (const auto& callback : callbacks) {
+  for (auto& callback : callbacks) {
     // When callback runs, it can cause the WebContents to be destroyed.
     base::PostTaskWithTraits(FROM_HERE, {BrowserThread::UI},
-                             base::BindOnce(callback, allow));
+                             base::BindOnce(std::move(callback), allow));
   }
 
   return throttled;
@@ -466,45 +470,46 @@
     const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
     const GURL& url,
     const std::string& request_method,
-    const Callback& callback) {
+    Callback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
   content::WebContents* originating_contents = web_contents_getter.Run();
   if (!originating_contents) {
     // The WebContents was closed, don't allow the download.
-    callback.Run(false);
+    std::move(callback).Run(false);
     return;
   }
 
   if (!originating_contents->GetDelegate()) {
-    callback.Run(false);
+    std::move(callback).Run(false);
     return;
   }
 
   // Note that because |originating_contents| might go away before
   // OnCanDownloadDecided is invoked, we look it up by |render_process_host_id|
   // and |render_view_id|.
-  base::Callback<void(bool)> can_download_callback = base::Bind(
+  base::OnceCallback<void(bool)> can_download_callback = base::BindOnce(
       &DownloadRequestLimiter::OnCanDownloadDecided, factory_.GetWeakPtr(),
-      web_contents_getter, request_method, callback);
+      web_contents_getter, request_method, std::move(callback));
 
-  originating_contents->GetDelegate()->CanDownload(url, request_method,
-                                                   can_download_callback);
+  originating_contents->GetDelegate()->CanDownload(
+      url, request_method, std::move(can_download_callback));
 }
 
 void DownloadRequestLimiter::OnCanDownloadDecided(
     const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
     const std::string& request_method,
-    const Callback& orig_callback,
+    Callback orig_callback,
     bool allow) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   content::WebContents* originating_contents = web_contents_getter.Run();
   if (!originating_contents || !allow) {
-    orig_callback.Run(false);
+    std::move(orig_callback).Run(false);
     return;
   }
 
-  CanDownloadImpl(originating_contents, request_method, orig_callback);
+  CanDownloadImpl(originating_contents, request_method,
+                  std::move(orig_callback));
 }
 
 HostContentSettingsMap* DownloadRequestLimiter::GetContentSettings(
@@ -516,7 +521,7 @@
 void DownloadRequestLimiter::CanDownloadImpl(
     content::WebContents* originating_contents,
     const std::string& request_method,
-    const Callback& callback) {
+    Callback callback) {
   DCHECK(originating_contents);
 
   TabDownloadState* state =
@@ -538,20 +543,20 @@
       } else {
         state->SetDownloadStatusAndNotify(ALLOW_ALL_DOWNLOADS);
       }
-      callback.Run(true);
+      std::move(callback).Run(true);
       state->increment_download_count();
       break;
 
     case ALLOW_ONE_DOWNLOAD:
       state->SetDownloadStatusAndNotify(PROMPT_BEFORE_DOWNLOAD);
-      callback.Run(true);
+      std::move(callback).Run(true);
       state->increment_download_count();
       break;
 
     case DOWNLOADS_NOT_ALLOWED:
       state->SetDownloadStatusAndNotify(DOWNLOADS_NOT_ALLOWED);
       ret = false;
-      callback.Run(false);
+      std::move(callback).Run(false);
       break;
 
     case PROMPT_BEFORE_DOWNLOAD: {
@@ -566,19 +571,19 @@
       switch (setting) {
         case CONTENT_SETTING_ALLOW: {
           state->SetDownloadStatusAndNotify(ALLOW_ALL_DOWNLOADS);
-          callback.Run(true);
+          std::move(callback).Run(true);
           state->increment_download_count();
           break;
         }
         case CONTENT_SETTING_BLOCK: {
           state->SetDownloadStatusAndNotify(DOWNLOADS_NOT_ALLOWED);
           ret = false;
-          callback.Run(false);
+          std::move(callback).Run(false);
           break;
         }
         case CONTENT_SETTING_DEFAULT:
         case CONTENT_SETTING_ASK:
-          state->PromptUserForDownload(callback);
+          state->PromptUserForDownload(std::move(callback));
           state->increment_download_count();
           break;
         case CONTENT_SETTING_SESSION_ONLY:
@@ -606,6 +611,6 @@
 }
 
 void DownloadRequestLimiter::SetOnCanDownloadDecidedCallbackForTesting(
-    Callback callback) {
+    CanDownloadDecidedCallback callback) {
   on_can_download_decided_callback_ = callback;
 }
diff --git a/chrome/browser/download/download_request_limiter.h b/chrome/browser/download/download_request_limiter.h
index 577b77ee..030f03e 100644
--- a/chrome/browser/download/download_request_limiter.h
+++ b/chrome/browser/download/download_request_limiter.h
@@ -78,7 +78,7 @@
 
   // The callback from CanDownloadOnIOThread. This is invoked on the io thread.
   // The boolean parameter indicates whether or not the download is allowed.
-  typedef base::Callback<void(bool /*allow*/)> Callback;
+  using Callback = base::OnceCallback<void(bool /*allow*/)>;
 
   // TabDownloadState maintains the download state for a particular tab.
   // TabDownloadState prompts the user with an infobar as necessary.
@@ -132,8 +132,7 @@
     // Asks the user if they really want to allow the download.
     // See description above CanDownloadOnIOThread for details on lifetime of
     // callback.
-    void PromptUserForDownload(
-        const DownloadRequestLimiter::Callback& callback);
+    void PromptUserForDownload(DownloadRequestLimiter::Callback callback);
 
     // Invoked from DownloadRequestDialogDelegate. Notifies the delegates and
     // changes the status appropriately. Virtual for testing.
@@ -229,7 +228,7 @@
                        web_contents_getter,
                    const GURL& url,
                    const std::string& request_method,
-                   const Callback& callback);
+                   Callback callback);
 
  private:
   FRIEND_TEST_ALL_PREFIXES(DownloadTest, DownloadResourceThrottleCancels);
@@ -262,14 +261,14 @@
   // potentially prompting the user.
   void CanDownloadImpl(content::WebContents* originating_contents,
                        const std::string& request_method,
-                       const Callback& callback);
+                       Callback callback);
 
   // Invoked when decision to download has been made.
   void OnCanDownloadDecided(
       const content::ResourceRequestInfo::WebContentsGetter&
           web_contents_getter,
       const std::string& request_method,
-      const Callback& orig_callback,
+      Callback orig_callback,
       bool allow);
 
   // Removes the specified TabDownloadState from the internal map and deletes
@@ -281,7 +280,10 @@
       content::WebContents* contents);
 
   // Sets the callback for tests to know the result of OnCanDownloadDecided().
-  void SetOnCanDownloadDecidedCallbackForTesting(Callback callback);
+  using CanDownloadDecidedCallback =
+      base::RepeatingCallback<void(bool /*allow*/)>;
+  void SetOnCanDownloadDecidedCallbackForTesting(
+      CanDownloadDecidedCallback callback);
 
   // TODO(bauerb): Change this to use WebContentsUserData.
   // Maps from tab to download state. The download state for a tab only exists
@@ -291,7 +293,7 @@
   typedef std::map<content::WebContents*, TabDownloadState*> StateMap;
   StateMap state_map_;
 
-  Callback on_can_download_decided_callback_;
+  CanDownloadDecidedCallback on_can_download_decided_callback_;
 
   // Weak ptr factory used when |CanDownload| asks the delegate asynchronously
   // about the download.
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index addaf52..3452bd0 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -1387,6 +1387,11 @@
     "expiry_milestone": 74
   },
   {
+    "name": "download-auto-resumption-native",
+    "owners": [ "shaktisahu", "qinmin" ],
+    "expiry_milestone": 76
+  },
+  {
     "name": "enable-new-download-backend",
     "owners": [ "shaktisahu", "dtrainor" ],
     "expiry_milestone": 76
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 16443a5..91926ea1 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -725,6 +725,11 @@
 const char kEnableNetworkServiceInProcessDescription[] =
     "Runs the network service in the browser process.";
 
+const char kDownloadAutoResumptionNativeName[] =
+    "Enable download auto-resumption in native";
+const char kDownloadAutoResumptionNativeDescription[] =
+    "Enables download auto-resumption in native";
+
 const char kEnableNewDownloadBackendName[] = "Enable new download backend";
 const char kEnableNewDownloadBackendDescription[] =
     "Enables the new download backend that uses offline content provider";
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 898d349..cd22b23 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -500,6 +500,9 @@
 extern const char kMemlogStackModeNativeWithThreadNames[];
 extern const char kMemlogStackModePseudo[];
 
+extern const char kDownloadAutoResumptionNativeName[];
+extern const char kDownloadAutoResumptionNativeDescription[];
+
 extern const char kEnableNewDownloadBackendName[];
 extern const char kEnableNewDownloadBackendDescription[];
 
diff --git a/chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.cc b/chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.cc
index 156ffa75..59bff3c 100644
--- a/chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.cc
+++ b/chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.cc
@@ -95,24 +95,22 @@
 void ChromeWebViewPermissionHelperDelegate::CanDownload(
     const GURL& url,
     const std::string& request_method,
-    const base::Callback<void(bool)>& callback) {
+    base::OnceCallback<void(bool)> callback) {
   base::DictionaryValue request_info;
   request_info.SetString(guest_view::kUrl, url.spec());
   web_view_permission_helper()->RequestPermission(
-      WEB_VIEW_PERMISSION_TYPE_DOWNLOAD,
-      request_info,
-      base::Bind(
+      WEB_VIEW_PERMISSION_TYPE_DOWNLOAD, request_info,
+      base::BindOnce(
           &ChromeWebViewPermissionHelperDelegate::OnDownloadPermissionResponse,
-          weak_factory_.GetWeakPtr(),
-          callback),
+          weak_factory_.GetWeakPtr(), std::move(callback)),
       false /* allowed_by_default */);
 }
 
 void ChromeWebViewPermissionHelperDelegate::OnDownloadPermissionResponse(
-    const base::Callback<void(bool)>& callback,
+    base::OnceCallback<void(bool)> callback,
     bool allow,
     const std::string& user_input) {
-  callback.Run(allow && web_view_guest()->attached());
+  std::move(callback).Run(allow && web_view_guest()->attached());
 }
 
 void ChromeWebViewPermissionHelperDelegate::RequestPointerLockPermission(
diff --git a/chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.h b/chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.h
index d4dea2a6..6b78b19 100644
--- a/chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.h
+++ b/chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.h
@@ -29,7 +29,7 @@
   // WebViewPermissionHelperDelegate implementation.
   void CanDownload(const GURL& url,
                    const std::string& request_method,
-                   const base::Callback<void(bool)>& callback) override;
+                   base::OnceCallback<void(bool)> callback) override;
   void RequestPointerLockPermission(
       bool user_gesture,
       bool last_unlocked_by_target,
@@ -83,10 +83,9 @@
       bool allow,
       const std::string& user_input);
 
-  void OnDownloadPermissionResponse(
-      const base::Callback<void(bool)>& callback,
-      bool allow,
-      const std::string& user_input);
+  void OnDownloadPermissionResponse(base::OnceCallback<void(bool)> callback,
+                                    bool allow,
+                                    const std::string& user_input);
 
   void OnPointerLockPermissionResponse(
       const base::Callback<void(bool)>& callback,
diff --git a/chrome/browser/lookalikes/lookalike_url_navigation_throttle.cc b/chrome/browser/lookalikes/lookalike_url_navigation_throttle.cc
index 3f2bbde..6712d76 100644
--- a/chrome/browser/lookalikes/lookalike_url_navigation_throttle.cc
+++ b/chrome/browser/lookalikes/lookalike_url_navigation_throttle.cc
@@ -28,14 +28,16 @@
 #include "components/url_formatter/top_domains/top500_domains.h"
 #include "components/url_formatter/top_domains/top_domain_util.h"
 #include "content/public/browser/navigation_handle.h"
-#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
 
 namespace {
 
+using lookalikes::LookalikeUrlNavigationThrottle;
 using MatchType = LookalikeUrlInterstitialPage::MatchType;
 using UserAction = LookalikeUrlInterstitialPage::UserAction;
 using NavigationSuggestionEvent =
-    LookalikeUrlNavigationThrottle::NavigationSuggestionEvent;
+    lookalikes::LookalikeUrlNavigationThrottle::NavigationSuggestionEvent;
+using DomainInfo = lookalikes::DomainInfo;
+
 typedef content::NavigationThrottle::ThrottleCheckResult ThrottleCheckResult;
 
 void RecordEvent(
@@ -57,8 +59,7 @@
 }
 
 // Returns true if the domain given by |domain_info| is a top domain.
-bool IsTopDomain(
-    const LookalikeUrlNavigationThrottle::DomainInfo& domain_info) {
+bool IsTopDomain(const DomainInfo& domain_info) {
   // Top domains are only accessible through their skeletons, so query the top
   // domains trie for each skeleton of this domain.
   for (const std::string& skeleton : domain_info.skeletons) {
@@ -71,64 +72,19 @@
   return false;
 }
 
-// Returns the eTLD+1 of |hostname|. This excludes private registries so that
-// GetETLDPlusOne("test.blogspot.com") returns "blogspot.com" (blogspot.com is
-// listed as a private registry). We do this to be consistent with
-// url_formatter's top domain list which doesn't have a notion of private
-// registries.
-std::string GetETLDPlusOne(const GURL& url) {
-  return net::registry_controlled_domains::GetDomainAndRegistry(
-      url, net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES);
-}
-
 // Returns a site that the user has used before that the eTLD+1 in
 // |domain_and_registry| may be attempting to spoof, based on skeleton
 // comparison.
 std::string GetMatchingSiteEngagementDomain(
-    const std::set<GURL>& engaged_sites,
-    const LookalikeUrlNavigationThrottle::DomainInfo& navigated_domain) {
+    const std::vector<DomainInfo>& engaged_sites,
+    const DomainInfo& navigated_domain) {
   DCHECK(!navigated_domain.domain_and_registry.empty());
-  std::map<std::string, url_formatter::Skeletons>
-      domain_and_registry_to_skeleton;
-
-  for (const GURL& engaged_site : engaged_sites) {
-    DCHECK(engaged_site.SchemeIsHTTPOrHTTPS());
-    // If the user has engaged with eTLD+1 of this site, don't show any
-    // lookalike navigation suggestions. This ignores the scheme. That's okay as
-    // it's the more conservative option: If the user is engaged with
-    // http://domain.test, not showing the warning on https://domain.test is
-    // acceptable.
-    const std::string engaged_domain_and_registry =
-        GetETLDPlusOne(engaged_site);
-    // eTLD+1 can be empty for private domains (e.g. http://test).
-    if (engaged_domain_and_registry.empty()) {
-      continue;
-    }
-
-    if (navigated_domain.domain_and_registry == engaged_domain_and_registry) {
-      return std::string();
-    }
-
-    // Multiple domains can map to the same eTLD+1, avoid skeleton generation
-    // when possible.
-    auto it = domain_and_registry_to_skeleton.find(engaged_domain_and_registry);
-    url_formatter::Skeletons skeletons;
-    if (it == domain_and_registry_to_skeleton.end()) {
-      // Engaged site can be IDN. Decode as unicode and compute the skeleton
-      // from that. This skips all spoof checks so it will always return the
-      // unicode version of the domain.
-      const url_formatter::IDNConversionResult conversion_result =
-          url_formatter::UnsafeIDNToUnicodeWithDetails(
-              engaged_domain_and_registry);
-
-      skeletons = url_formatter::GetSkeletons(conversion_result.result);
-      domain_and_registry_to_skeleton[engaged_domain_and_registry] = skeletons;
-    } else {
-      skeletons = it->second;
-    }
-
-    if (SkeletonsMatch(navigated_domain.skeletons, skeletons)) {
-      return engaged_site.host();
+  for (const DomainInfo& engaged_site : engaged_sites) {
+    DCHECK(!engaged_site.domain_and_registry.empty());
+    DCHECK_NE(navigated_domain.domain_and_registry,
+              engaged_site.domain_and_registry);
+    if (SkeletonsMatch(navigated_domain.skeletons, engaged_site.skeletons)) {
+      return engaged_site.full_domain;
     }
   }
   return std::string();
@@ -136,23 +92,12 @@
 
 }  // namespace
 
+namespace lookalikes {
+
 // static
 const char LookalikeUrlNavigationThrottle::kHistogramName[] =
     "NavigationSuggestion.Event";
 
-LookalikeUrlNavigationThrottle::DomainInfo::DomainInfo(
-    const std::string& arg_domain_and_registry,
-    const url_formatter::IDNConversionResult& arg_idn_result,
-    const url_formatter::Skeletons& arg_skeletons)
-    : domain_and_registry(arg_domain_and_registry),
-      idn_result(arg_idn_result),
-      skeletons(arg_skeletons) {}
-
-LookalikeUrlNavigationThrottle::DomainInfo::~DomainInfo() = default;
-
-LookalikeUrlNavigationThrottle::DomainInfo::DomainInfo(const DomainInfo&) =
-    default;
-
 LookalikeUrlNavigationThrottle::LookalikeUrlNavigationThrottle(
     content::NavigationHandle* navigation_handle)
     : content::NavigationThrottle(navigation_handle),
@@ -255,31 +200,10 @@
   return std::make_unique<LookalikeUrlNavigationThrottle>(navigation_handle);
 }
 
-// static
-LookalikeUrlNavigationThrottle::DomainInfo
-LookalikeUrlNavigationThrottle::GetDomainInfo(const GURL& url) {
-  // Perform all computations on eTLD+1.
-  const std::string domain_and_registry = GetETLDPlusOne(url);
-  // eTLD+1 can be empty for private domains.
-  if (domain_and_registry.empty()) {
-    return DomainInfo(domain_and_registry, url_formatter::IDNConversionResult(),
-                      url_formatter::Skeletons());
-  }
-  // Compute skeletons using eTLD+1, skipping all spoofing checks. Spoofing
-  // checks in url_formatter can cause the converted result to be punycode.
-  // We want to avoid this in order to get an accurate skeleton for the unicode
-  // version of the domain.
-  const url_formatter::IDNConversionResult idn_result =
-      url_formatter::UnsafeIDNToUnicodeWithDetails(domain_and_registry);
-  const url_formatter::Skeletons skeletons =
-      url_formatter::GetSkeletons(idn_result.result);
-  return DomainInfo(domain_and_registry, idn_result, skeletons);
-}
-
 void LookalikeUrlNavigationThrottle::PerformChecksDeferred(
     const GURL& url,
     const DomainInfo& navigated_domain,
-    const std::set<GURL>& engaged_sites) {
+    const std::vector<DomainInfo>& engaged_sites) {
   ThrottleCheckResult result = LookalikeUrlNavigationThrottle::PerformChecks(
       url, navigated_domain, engaged_sites);
 
@@ -298,14 +222,23 @@
 ThrottleCheckResult LookalikeUrlNavigationThrottle::PerformChecks(
     const GURL& url,
     const DomainInfo& navigated_domain,
-    const std::set<GURL>& engaged_sites) {
+    const std::vector<DomainInfo>& engaged_sites) {
   std::string matched_domain;
   MatchType match_type;
 
   // Ensure that this URL is not already engaged. We can't use the synchronous
   // SiteEngagementService::IsEngagementAtLeast as it has side effects. We check
   // in PerformChecks to ensure we have up-to-date engaged_sites.
-  if (base::ContainsKey(engaged_sites, url.GetOrigin())) {
+  // This check ignores the scheme which is okay since it's more conservative:
+  // If the user is engaged with http://domain.test, not showing the warning on
+  // https://domain.test is acceptable.
+  const auto already_engaged =
+      std::find_if(engaged_sites.begin(), engaged_sites.end(),
+                   [navigated_domain](const DomainInfo& engaged_domain) {
+                     return (navigated_domain.domain_and_registry ==
+                             engaged_domain.domain_and_registry);
+                   });
+  if (already_engaged != engaged_sites.end()) {
     return content::NavigationThrottle::PROCEED;
   }
 
@@ -336,7 +269,7 @@
 
 bool LookalikeUrlNavigationThrottle::GetMatchingDomain(
     const DomainInfo& navigated_domain,
-    const std::set<GURL>& engaged_sites,
+    const std::vector<DomainInfo>& engaged_sites,
     std::string* matched_domain,
     MatchType* match_type) {
   DCHECK(!navigated_domain.domain_and_registry.empty());
@@ -458,3 +391,5 @@
   }
   return std::string();
 }
+
+}  // namespace lookalikes
diff --git a/chrome/browser/lookalikes/lookalike_url_navigation_throttle.h b/chrome/browser/lookalikes/lookalike_url_navigation_throttle.h
index 4c1dd8f8..6b283a5d 100644
--- a/chrome/browser/lookalikes/lookalike_url_navigation_throttle.h
+++ b/chrome/browser/lookalikes/lookalike_url_navigation_throttle.h
@@ -22,6 +22,10 @@
 
 class Profile;
 
+namespace lookalikes {
+
+struct DomainInfo;
+
 // Observes navigations and shows an interstitial if the navigated domain name
 // is visually similar to a top domain or a domain with a site engagement score.
 class LookalikeUrlNavigationThrottle : public content::NavigationThrottle {
@@ -41,16 +45,6 @@
     kMaxValue = kMatchEditDistance,
   };
 
-  struct DomainInfo {
-    const std::string domain_and_registry;
-    const url_formatter::IDNConversionResult idn_result;
-    const url_formatter::Skeletons skeletons;
-    DomainInfo(const std::string& arg_domain_and_registry,
-               const url_formatter::IDNConversionResult& arg_idn_result,
-               const url_formatter::Skeletons& arg_skeletons);
-    ~DomainInfo();
-    DomainInfo(const DomainInfo& other);
-  };
 
   static const char kHistogramName[];
 
@@ -71,18 +65,17 @@
 
   ThrottleCheckResult HandleThrottleRequest(const GURL& url);
 
-  static DomainInfo GetDomainInfo(const GURL& url);
-
   // Performs synchronous top domain and engaged site checks on the navigated
   // |url|. Uses |engaged_sites| for the engaged site checks.
-  ThrottleCheckResult PerformChecks(const GURL& url,
-                                    const DomainInfo& navigated_domain,
-                                    const std::set<GURL>& engaged_sites);
+  ThrottleCheckResult PerformChecks(
+      const GURL& url,
+      const DomainInfo& navigated_domain,
+      const std::vector<DomainInfo>& engaged_sites);
 
   // A void-returning variant, only used with deferred throttle results.
   void PerformChecksDeferred(const GURL& url,
                              const DomainInfo& navigated_domain,
-                             const std::set<GURL>& engaged_sites);
+                             const std::vector<DomainInfo>& engaged_sites);
 
   // Returns true if a domain is visually similar to the hostname of |url|. The
   // matching domain can be a top domain or an engaged site. Similarity check
@@ -90,7 +83,7 @@
   // returns true, match details will be written into |matched_domain| and
   // |match_type|. They cannot be nullptr.
   bool GetMatchingDomain(const DomainInfo& navigated_domain,
-                         const std::set<GURL>& engaged_sites,
+                         const std::vector<DomainInfo>& engaged_sites,
                          std::string* matched_domain,
                          LookalikeUrlInterstitialPage::MatchType* match_type);
 
@@ -116,4 +109,6 @@
   base::WeakPtrFactory<LookalikeUrlNavigationThrottle> weak_factory_;
 };
 
+}  // namespace lookalikes
+
 #endif  // CHROME_BROWSER_LOOKALIKES_LOOKALIKE_URL_NAVIGATION_THROTTLE_H_
diff --git a/chrome/browser/lookalikes/lookalike_url_navigation_throttle_browsertest.cc b/chrome/browser/lookalikes/lookalike_url_navigation_throttle_browsertest.cc
index e6e1623..d29384f 100644
--- a/chrome/browser/lookalikes/lookalike_url_navigation_throttle_browsertest.cc
+++ b/chrome/browser/lookalikes/lookalike_url_navigation_throttle_browsertest.cc
@@ -34,11 +34,13 @@
 
 namespace {
 
+using lookalikes::LookalikeUrlNavigationThrottle;
+using lookalikes::LookalikeUrlService;
 using security_interstitials::MetricsHelper;
 using security_interstitials::SecurityInterstitialCommand;
 using UkmEntry = ukm::builders::LookalikeUrl_NavigationSuggestion;
 using NavigationSuggestionEvent =
-    LookalikeUrlNavigationThrottle::NavigationSuggestionEvent;
+    lookalikes::LookalikeUrlNavigationThrottle::NavigationSuggestionEvent;
 
 using MatchType = LookalikeUrlInterstitialPage::MatchType;
 using UserAction = LookalikeUrlInterstitialPage::UserAction;
diff --git a/chrome/browser/lookalikes/lookalike_url_navigation_throttle_unittest.cc b/chrome/browser/lookalikes/lookalike_url_navigation_throttle_unittest.cc
index 32d9263a..48f6f56 100644
--- a/chrome/browser/lookalikes/lookalike_url_navigation_throttle_unittest.cc
+++ b/chrome/browser/lookalikes/lookalike_url_navigation_throttle_unittest.cc
@@ -7,6 +7,8 @@
 #include "base/strings/utf_string_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
+namespace lookalikes {
+
 TEST(LookalikeUrlNavigationThrottleTest, IsEditDistanceAtMostOne) {
   const struct TestCase {
     const wchar_t* domain;
@@ -65,3 +67,5 @@
     EXPECT_EQ(test_case.expected, result);
   }
 }
+
+}  // namespace lookalikes
diff --git a/chrome/browser/lookalikes/lookalike_url_service.cc b/chrome/browser/lookalikes/lookalike_url_service.cc
index e157ebef..36e1e92e 100644
--- a/chrome/browser/lookalikes/lookalike_url_service.cc
+++ b/chrome/browser/lookalikes/lookalike_url_service.cc
@@ -21,8 +21,13 @@
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "components/keyed_service/content/browser_context_dependency_manager.h"
 #include "components/keyed_service/content/browser_context_keyed_service_factory.h"
+#include "components/url_formatter/url_formatter.h"
+#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
 
 namespace {
+
+using lookalikes::LookalikeUrlService;
+
 constexpr uint32_t kEngagedSiteUpdateIntervalInSeconds = 5 * 60;
 
 class LookalikeUrlServiceFactory : public BrowserContextKeyedServiceFactory {
@@ -65,6 +70,48 @@
 
 }  // namespace
 
+namespace lookalikes {
+
+DomainInfo::DomainInfo(const std::string& arg_domain_and_registry,
+                       const std::string& arg_full_domain,
+                       const url_formatter::IDNConversionResult& arg_idn_result,
+                       const url_formatter::Skeletons& arg_skeletons)
+    : domain_and_registry(arg_domain_and_registry),
+      full_domain(arg_full_domain),
+      idn_result(arg_idn_result),
+      skeletons(arg_skeletons) {}
+
+DomainInfo::~DomainInfo() = default;
+
+DomainInfo::DomainInfo(const DomainInfo&) = default;
+
+DomainInfo GetDomainInfo(const GURL& url) {
+  // Perform all computations on eTLD+1. This excludes private registries, and
+  // returns "blogspot.com" for "test.blogspot.com" (blogspot.com is
+  // listed as a private registry). We do this to be consistent with
+  // url_formatter's top domain list which doesn't have a notion of private
+  // registries.
+  const std::string domain_and_registry =
+      net::registry_controlled_domains::GetDomainAndRegistry(
+          url, net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES);
+
+  // eTLD+1 can be empty for private domains.
+  if (domain_and_registry.empty()) {
+    return DomainInfo(domain_and_registry, url.host(),
+                      url_formatter::IDNConversionResult(),
+                      url_formatter::Skeletons());
+  }
+  // Compute skeletons using eTLD+1, skipping all spoofing checks. Spoofing
+  // checks in url_formatter can cause the converted result to be punycode.
+  // We want to avoid this in order to get an accurate skeleton for the unicode
+  // version of the domain.
+  const url_formatter::IDNConversionResult idn_result =
+      url_formatter::UnsafeIDNToUnicodeWithDetails(domain_and_registry);
+  const url_formatter::Skeletons skeletons =
+      url_formatter::GetSkeletons(idn_result.result);
+  return DomainInfo(domain_and_registry, url.host(), idn_result, skeletons);
+}
+
 LookalikeUrlService::LookalikeUrlService(Profile* profile)
     : profile_(profile),
       clock_(base::DefaultClock::GetInstance()),
@@ -101,7 +148,8 @@
   return true;
 }
 
-const std::set<GURL> LookalikeUrlService::GetLatestEngagedSites() const {
+const std::vector<DomainInfo> LookalikeUrlService::GetLatestEngagedSites()
+    const {
   return engaged_sites_;
 }
 
@@ -115,14 +163,22 @@
   SiteEngagementService* service = SiteEngagementService::Get(profile_);
   engaged_sites_.clear();
   for (const mojom::SiteEngagementDetails& detail : details) {
+    if (!detail.origin.SchemeIsHTTPOrHTTPS()) {
+      continue;
+    }
     // Ignore sites with an engagement score below threshold.
     if (!service->IsEngagementAtLeast(detail.origin,
                                       blink::mojom::EngagementLevel::MEDIUM)) {
       continue;
     }
-    engaged_sites_.insert(detail.origin);
+    const DomainInfo domain_info = GetDomainInfo(detail.origin);
+    if (domain_info.domain_and_registry.empty()) {
+      continue;
+    }
+    engaged_sites_.push_back(domain_info);
   }
-
   last_engagement_fetch_time_ = clock_->Now();
   std::move(callback).Run(engaged_sites_);
 }
+
+}  // namespace lookalikes
diff --git a/chrome/browser/lookalikes/lookalike_url_service.h b/chrome/browser/lookalikes/lookalike_url_service.h
index ca2d29d..2495570 100644
--- a/chrome/browser/lookalikes/lookalike_url_service.h
+++ b/chrome/browser/lookalikes/lookalike_url_service.h
@@ -5,7 +5,7 @@
 #ifndef CHROME_BROWSER_LOOKALIKES_LOOKALIKE_URL_SERVICE_H_
 #define CHROME_BROWSER_LOOKALIKES_LOOKALIKE_URL_SERVICE_H_
 
-#include <set>
+#include <string>
 #include <vector>
 
 #include "base/callback_forward.h"
@@ -14,14 +14,39 @@
 #include "base/time/time.h"
 #include "chrome/browser/engagement/site_engagement_details.mojom.h"
 #include "components/keyed_service/core/keyed_service.h"
+#include "components/url_formatter/url_formatter.h"
 #include "url/gurl.h"
 
+class GURL;
 class Profile;
 
 namespace base {
 class Clock;
 }
 
+namespace lookalikes {
+
+struct DomainInfo {
+  // eTLD+1, used for skeleton and edit distance comparison. Must be ASCII.
+  const std::string domain_and_registry;
+  // Full hostname, used for suggesting a new URL. Must be ASCII.
+  const std::string full_domain;
+
+  // Result of IDN conversion of domain_and_registry field.
+  const url_formatter::IDNConversionResult idn_result;
+  // Skeletons of domain_and_registry field.
+  const url_formatter::Skeletons skeletons;
+
+  DomainInfo(const std::string& arg_domain_and_registry,
+             const std::string& full_domain,
+             const url_formatter::IDNConversionResult& arg_idn_result,
+             const url_formatter::Skeletons& arg_skeletons);
+  ~DomainInfo();
+  DomainInfo(const DomainInfo& other);
+};
+
+DomainInfo GetDomainInfo(const GURL& url);
+
 // A service that handles operations on lookalike URLs. It can fetch the list of
 // engaged sites in a background thread and cache the results until the next
 // update. This is more efficient than fetching the list on each navigation for
@@ -31,7 +56,8 @@
   explicit LookalikeUrlService(Profile* profile);
   ~LookalikeUrlService() override;
 
-  using EngagedSitesCallback = base::OnceCallback<void(const std::set<GURL>&)>;
+  using EngagedSitesCallback =
+      base::OnceCallback<void(const std::vector<DomainInfo>&)>;
 
   static LookalikeUrlService* Get(Profile* profile);
 
@@ -44,7 +70,7 @@
 
   // Returns the _current_ list of engaged sites, without updating them if
   // they're out of date.
-  const std::set<GURL> GetLatestEngagedSites() const;
+  const std::vector<DomainInfo> GetLatestEngagedSites() const;
 
   void SetClockForTesting(base::Clock* clock);
 
@@ -55,10 +81,12 @@
   Profile* profile_;
   base::Clock* clock_;
   base::Time last_engagement_fetch_time_;
-  std::set<GURL> engaged_sites_;
+  std::vector<DomainInfo> engaged_sites_;
   base::WeakPtrFactory<LookalikeUrlService> weak_factory_;
 
   DISALLOW_COPY_AND_ASSIGN(LookalikeUrlService);
 };
 
+}  // namespace lookalikes
+
 #endif  // CHROME_BROWSER_LOOKALIKES_LOOKALIKE_URL_SERVICE_H_
diff --git a/chrome/browser/media/offscreen_tab.cc b/chrome/browser/media/offscreen_tab.cc
index 648f3d6..e9107afc 100644
--- a/chrome/browser/media/offscreen_tab.cc
+++ b/chrome/browser/media/offscreen_tab.cc
@@ -237,12 +237,11 @@
   return false;
 }
 
-void OffscreenTab::CanDownload(
-    const GURL& url,
-    const std::string& request_method,
-    const base::RepeatingCallback<void(bool)>& callback) {
+void OffscreenTab::CanDownload(const GURL& url,
+                               const std::string& request_method,
+                               base::OnceCallback<void(bool)> callback) {
   // Offscreen tab pages are not allowed to download files.
-  callback.Run(false);
+  std::move(callback).Run(false);
 }
 
 bool OffscreenTab::HandleContextMenu(
diff --git a/chrome/browser/media/offscreen_tab.h b/chrome/browser/media/offscreen_tab.h
index acb56a4..85b8853 100644
--- a/chrome/browser/media/offscreen_tab.h
+++ b/chrome/browser/media/offscreen_tab.h
@@ -90,7 +90,7 @@
   bool ShouldFocusPageAfterCrash() final;
   void CanDownload(const GURL& url,
                    const std::string& request_method,
-                   const base::RepeatingCallback<void(bool)>& callback) final;
+                   base::OnceCallback<void(bool)> callback) final;
   bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
                          const content::ContextMenuParams& params) final;
   content::KeyboardEventProcessingResult PreHandleKeyboardEvent(
diff --git a/chrome/browser/notifications/scheduler/BUILD.gn b/chrome/browser/notifications/scheduler/BUILD.gn
index 941b7adf..01332b4 100644
--- a/chrome/browser/notifications/scheduler/BUILD.gn
+++ b/chrome/browser/notifications/scheduler/BUILD.gn
@@ -49,6 +49,8 @@
 
   sources = [
     "collection_store.h",
+    "display_decider.cc",
+    "display_decider.h",
     "distribution_policy.cc",
     "distribution_policy.h",
     "icon_entry.h",
@@ -89,6 +91,7 @@
 source_set("unit_tests") {
   testonly = true
   sources = [
+    "display_decider_unittest.cc",
     "distribution_policy_unittest.cc",
     "icon_store_unittest.cc",
     "impression_history_tracker_unittest.cc",
diff --git a/chrome/browser/notifications/scheduler/collection_store.h b/chrome/browser/notifications/scheduler/collection_store.h
index a7102713..25543c8 100644
--- a/chrome/browser/notifications/scheduler/collection_store.h
+++ b/chrome/browser/notifications/scheduler/collection_store.h
@@ -15,7 +15,8 @@
 namespace notifications {
 
 // A storage interface which loads a collection of data type T into memory
-// during initialization.
+// during initialization. When updating the data, T will be copied to the actual
+// storage layer since the caller will keep in memory data as well.
 template <typename T>
 class CollectionStore {
  public:
@@ -24,20 +25,19 @@
   using InitCallback = base::OnceCallback<void(bool)>;
   using UpdateCallback = base::OnceCallback<void(bool)>;
 
-  // Initializes the database.
-  virtual void Init(InitCallback callback) = 0;
-
   // Initializes the database and loads all entries into memory.
   virtual void InitAndLoad(LoadCallback callback) = 0;
 
-  // Loads one entry into memory.
-  virtual void Load(const std::string& key, LoadCallback callback) = 0;
-
   // Adds an entry to the storage.
   virtual void Add(const std::string& key,
-                   T& entry,
+                   const T& entry,
                    UpdateCallback callback) = 0;
 
+  // Updates an entry.
+  virtual void Update(const std::string& key,
+                      const T& entry,
+                      UpdateCallback callback) = 0;
+
   // Deletes an entry from storage.
   virtual void Delete(const std::string& key, UpdateCallback callback) = 0;
 
diff --git a/chrome/browser/notifications/scheduler/display_decider.cc b/chrome/browser/notifications/scheduler/display_decider.cc
new file mode 100644
index 0000000..6fb97d5
--- /dev/null
+++ b/chrome/browser/notifications/scheduler/display_decider.cc
@@ -0,0 +1,208 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/notifications/scheduler/display_decider.h"
+
+#include <algorithm>
+
+#include "chrome/browser/notifications/scheduler/distribution_policy.h"
+#include "chrome/browser/notifications/scheduler/impression_types.h"
+#include "chrome/browser/notifications/scheduler/notification_entry.h"
+#include "chrome/browser/notifications/scheduler/scheduler_config.h"
+#include "chrome/browser/notifications/scheduler/scheduler_utils.h"
+
+using Notifications = notifications::DisplayDecider::Notifications;
+using Results = notifications::DisplayDecider::Results;
+using TypeStates = notifications::DisplayDecider::TypeStates;
+
+namespace notifications {
+namespace {
+
+// Helper class contains the actual logic to decide which notifications to show.
+// This is an one-shot class, callers should create a new object each time.
+class DecisionHelper {
+ public:
+  DecisionHelper(const SchedulerConfig* config,
+                 const std::vector<SchedulerClientType>& clients,
+                 std::unique_ptr<DistributionPolicy> distribution_policy,
+                 SchedulerTaskTime task_start_time,
+                 Notifications notifications,
+                 TypeStates type_states)
+      : notifications_(std::move(notifications)),
+        current_task_start_time_(task_start_time),
+        type_states_(std::move(type_states)),
+        config_(config),
+        clients_(clients),
+        policy_(std::move(distribution_policy)),
+        daily_max_to_show_all_types_(0),
+        last_shown_type_(SchedulerClientType::kUnknown),
+        shown_(0) {}
+
+  ~DecisionHelper() = default;
+
+  // Figures out a list of notifications to show.
+  void DecideNotificationToShow(Results* results) {
+    ComputeDailyQuotaAllTypes();
+    CountNotificationsShownToday();
+    PickNotificationToShow(results);
+  }
+
+ private:
+  void ComputeDailyQuotaAllTypes() {
+    // Only background task launch needs to comply to |policy_|.
+    if (current_task_start_time_ == SchedulerTaskTime::kUnknown) {
+      daily_max_to_show_all_types_ = config_->max_daily_shown_all_type;
+      return;
+    }
+
+    int quota = std::max(config_->max_daily_shown_all_type - shown_, 0);
+    DCHECK(policy_);
+    daily_max_to_show_all_types_ =
+        std::min(config_->max_daily_shown_all_type,
+                 policy_->MaxToShow(current_task_start_time_, quota));
+  }
+
+  void CountNotificationsShownToday() {
+    base::Time last_shown_time;
+    base::Time now(base::Time::Now());
+    base::Time beginning_of_today;
+    bool success = ToLocalHour(0, now, 0, &beginning_of_today);
+    DCHECK(success);
+
+    for (const auto& state : type_states_) {
+      const auto* type_state = state.second;
+      // TODO(xingliu): Ensure deprecated clients will not have data in storage.
+      DCHECK(std::find(clients_.begin(), clients_.end(), type_state->type) !=
+             clients_.end());
+      for (const auto& impression_it : type_state->impressions) {
+        const auto& impression = impression_it.second;
+
+        // Tracks last notification shown to the user.
+        if (impression.create_time > last_shown_time) {
+          last_shown_time = impression.create_time;
+          last_shown_type_ = type_state->type;
+        }
+
+        // Count notification shown today.
+        if (impression.create_time >= beginning_of_today) {
+          shown_per_type_[type_state->type]++;
+          ++shown_;
+        }
+      }
+    }
+  }
+
+  // Picks a list of notifications to show.
+  void PickNotificationToShow(Results* to_show) {
+    DCHECK(to_show);
+    if (shown_ > config_->max_daily_shown_all_type || clients_.empty())
+      return;
+
+    // No previous shown notification, move the iterator to last element.
+    // We will iterate through all client types later.
+    auto it = std::find(clients_.begin(), clients_.end(), last_shown_type_);
+    if (it == clients_.end()) {
+      DCHECK_EQ(last_shown_type_, SchedulerClientType::kUnknown);
+      last_shown_type_ = clients_.back();
+      it = clients_.end() - 1;
+    }
+
+    DCHECK_NE(last_shown_type_, SchedulerClientType::kUnknown);
+    size_t steps = 0u;
+
+    // Circling around all clients to find new notification to show.
+    // TODO(xingliu): Apply scheduling parameters here.
+    do {
+      // Move the iterator to next client type.
+      DCHECK(it != clients_.end());
+      if (++it == clients_.end())
+        it = clients_.begin();
+      ++steps;
+
+      SchedulerClientType type = *it;
+
+      // Check quota for all types and current background task type.
+      if (ReachDailyQuota())
+        break;
+
+      // Check quota for this type, and continue to iterate other types.
+      if (NoMoreNotificationToShow(type))
+        continue;
+
+      // Show the last notification in the vector. Notice the order depends on
+      // how the vector is sorted.
+      to_show->emplace(notifications_[type].back()->guid);
+      notifications_[type].pop_back();
+      shown_per_type_[type]++;
+      shown_++;
+      steps = 0u;
+
+      // Stop if we didn't find anything new to show, and have looped around
+      // all clients.
+    } while (steps <= clients_.size());
+  }
+
+  bool NoMoreNotificationToShow(SchedulerClientType type) {
+    auto it = type_states_.find(type);
+    int max_daily_show =
+        it == type_states_.end() ? 0 : it->second->current_max_daily_show;
+
+    return notifications_[type].empty() ||
+           shown_per_type_[type] >= config_->max_daily_shown_per_type ||
+           shown_per_type_[type] >= max_daily_show;
+  }
+
+  bool ReachDailyQuota() const {
+    return shown_ >= daily_max_to_show_all_types_;
+  }
+
+  // Scheduled notifications as candidates to display to the user.
+  Notifications notifications_;
+
+  const SchedulerTaskTime current_task_start_time_;
+  const TypeStates type_states_;
+  const SchedulerConfig* config_;
+  const std::vector<SchedulerClientType> clients_;
+  std::unique_ptr<DistributionPolicy> policy_;
+  int daily_max_to_show_all_types_;
+
+  SchedulerClientType last_shown_type_;
+  std::map<SchedulerClientType, int> shown_per_type_;
+  int shown_;
+
+  DISALLOW_COPY_AND_ASSIGN(DecisionHelper);
+};
+
+class DisplayDeciderImpl : public DisplayDecider {
+ public:
+  DisplayDeciderImpl() = default;
+  ~DisplayDeciderImpl() override = default;
+
+ private:
+  // DisplayDecider implementation.
+  void FindNotificationsToShow(
+      const SchedulerConfig* config,
+      std::vector<SchedulerClientType> clients,
+      std::unique_ptr<DistributionPolicy> distribution_policy,
+      SchedulerTaskTime task_start_time,
+      Notifications notifications,
+      TypeStates type_states,
+      Results* results) override {
+    auto helper = std::make_unique<DecisionHelper>(
+        config, std::move(clients), std::move(distribution_policy),
+        task_start_time, std::move(notifications), std::move(type_states));
+    helper->DecideNotificationToShow(results);
+  }
+
+  DISALLOW_COPY_AND_ASSIGN(DisplayDeciderImpl);
+};
+
+}  // namespace
+
+// static
+std::unique_ptr<DisplayDecider> DisplayDecider::Create() {
+  return std::make_unique<DisplayDeciderImpl>();
+}
+
+}  // namespace notifications
diff --git a/chrome/browser/notifications/scheduler/display_decider.h b/chrome/browser/notifications/scheduler/display_decider.h
new file mode 100644
index 0000000..4a55dd3
--- /dev/null
+++ b/chrome/browser/notifications/scheduler/display_decider.h
@@ -0,0 +1,59 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_NOTIFICATIONS_SCHEDULER_DISPLAY_DECIDER_H_
+#define CHROME_BROWSER_NOTIFICATIONS_SCHEDULER_DISPLAY_DECIDER_H_
+
+#include <map>
+#include <memory>
+#include <set>
+#include <utility>
+#include <vector>
+
+#include "base/callback.h"
+#include "base/macros.h"
+#include "chrome/browser/notifications/scheduler/internal_types.h"
+#include "chrome/browser/notifications/scheduler/notification_scheduler_types.h"
+
+namespace notifications {
+
+class DistributionPolicy;
+struct TypeState;
+struct NotificationEntry;
+struct SchedulerConfig;
+
+// This class uses scheduled notifications data and notification impression data
+// of each notification type to find a list of notification that should be
+// displayed to the user.
+// All operations should be done on the main thread.
+class DisplayDecider {
+ public:
+  using Notifications =
+      std::map<SchedulerClientType, std::vector<const NotificationEntry*>>;
+  using TypeStates = std::map<SchedulerClientType, const TypeState*>;
+  using Results = std::set<std::string>;
+
+  // Creates the decider to determine notifications to show.
+  static std::unique_ptr<DisplayDecider> Create();
+
+  DisplayDecider() = default;
+  virtual ~DisplayDecider() = default;
+
+  // Finds notifications to show. Returns a list of notification guids.
+  virtual void FindNotificationsToShow(
+      const SchedulerConfig* config,
+      std::vector<SchedulerClientType> clients,
+      std::unique_ptr<DistributionPolicy> distribution_policy,
+      SchedulerTaskTime task_start_time,
+      Notifications notifications,
+      TypeStates type_states,
+      Results* results) = 0;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(DisplayDecider);
+};
+
+}  // namespace notifications
+
+#endif  // CHROME_BROWSER_NOTIFICATIONS_SCHEDULER_DISPLAY_DECIDER_H_
diff --git a/chrome/browser/notifications/scheduler/display_decider_unittest.cc b/chrome/browser/notifications/scheduler/display_decider_unittest.cc
new file mode 100644
index 0000000..f3b2b1b1
--- /dev/null
+++ b/chrome/browser/notifications/scheduler/display_decider_unittest.cc
@@ -0,0 +1,150 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/notifications/scheduler/display_decider.h"
+
+#include <map>
+#include <memory>
+#include <vector>
+
+#include "base/strings/stringprintf.h"
+#include "base/test/scoped_task_environment.h"
+#include "chrome/browser/notifications/scheduler/distribution_policy.h"
+#include "chrome/browser/notifications/scheduler/notification_entry.h"
+#include "chrome/browser/notifications/scheduler/notification_scheduler_types.h"
+#include "chrome/browser/notifications/scheduler/scheduler_config.h"
+#include "chrome/browser/notifications/scheduler/test/test_utils.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace notifications {
+namespace {
+
+// Default suppression info used in this test.
+const SuppressionInfo kSuppressionInfo =
+    SuppressionInfo(base::Time::Now(), base::TimeDelta::FromDays(56));
+
+// Initial state for test cases with a single registered client.
+const std::vector<test::ImpressionTestData> kSingleClientImpressionTestData = {
+    {SchedulerClientType::kTest1,
+     2 /* current_max_daily_show */,
+     {},
+     base::nullopt /* suppression_info */}};
+
+const std::vector<test::ImpressionTestData> kClientsImpressionTestData = {
+    {SchedulerClientType::kTest1,
+     2 /* current_max_daily_show */,
+     {},
+     base::nullopt /* suppression_info */},
+    {SchedulerClientType::kTest2,
+     5 /* current_max_daily_show */,
+     {},
+     base::nullopt /* suppression_info */},
+    {SchedulerClientType::kTest3,
+     0 /* current_max_daily_show */,
+     {},
+     kSuppressionInfo}};
+
+struct TestData {
+  // Impression data as the input.
+  std::vector<test::ImpressionTestData> impression_test_data;
+
+  // Notification entries as the input.
+  std::vector<NotificationEntry> notification_entries;
+
+  // The type of current background task.
+  SchedulerTaskTime task_start_time = SchedulerTaskTime::kUnknown;
+
+  // Expected output data.
+  DisplayDecider::Results expected;
+};
+
+std::string DebugString(const DisplayDecider::Results& results) {
+  std::string debug_string("notifications_to_show: \n");
+  for (const auto& guid : results)
+    debug_string += base::StringPrintf("%s ", guid.c_str());
+
+  return debug_string;
+}
+
+// TODO(xingliu): Add more test cases.
+class DisplayDeciderTest : public testing::Test {
+ public:
+  DisplayDeciderTest() = default;
+  ~DisplayDeciderTest() override = default;
+
+  void SetUp() override {
+    // Setup configuration used by this test.
+    config_.morning_task_hour = 7;
+    config_.evening_task_hour = 18;
+    config_.max_daily_shown_all_type = 3;
+  }
+
+ protected:
+  // Initializes a test case with input data.
+  void RunTestCase(const TestData& test_data) {
+    test_data_ = test_data;
+    test::AddImpressionTestData(test_data_.impression_test_data, &type_states_);
+
+    DisplayDecider::Notifications notifications;
+    for (const auto& entry : test_data_.notification_entries) {
+      notifications[entry.type].emplace_back(&entry);
+    }
+    std::vector<SchedulerClientType> clients;
+
+    std::map<SchedulerClientType, const TypeState*> type_states;
+    for (const auto& type : type_states_) {
+      type_states.emplace(type.first, type.second.get());
+      clients.emplace_back(type.first);
+    }
+
+    // Copy test inputs into |decider_|.
+    decider_ = DisplayDecider::Create();
+    decider_->FindNotificationsToShow(
+        &config_, std::move(clients), DistributionPolicy::Create(),
+        test_data_.task_start_time, std::move(notifications),
+        std::move(type_states), &results_);
+
+    // Verify output.
+    EXPECT_EQ(results_, test_data_.expected)
+        << "Actual result: \n"
+        << DebugString(results_) << " \n Expected result: \n"
+        << DebugString(test_data_.expected);
+  }
+
+ private:
+  base::test::ScopedTaskEnvironment scoped_task_environment_;
+
+  TestData test_data_;
+  SchedulerConfig config_;
+
+  std::map<SchedulerClientType, std::unique_ptr<TypeState>> type_states_;
+
+  // Test target class and output.
+  std::unique_ptr<DisplayDecider> decider_;
+  DisplayDecider::Results results_;
+
+  DISALLOW_COPY_AND_ASSIGN(DisplayDeciderTest);
+};
+
+TEST_F(DisplayDeciderTest, NoNotification) {
+  TestData data{kClientsImpressionTestData,
+                {},
+                SchedulerTaskTime::kEvening,
+                DisplayDecider::Results()};
+  RunTestCase(data);
+}
+
+// Simple test case to verify new notifcaiton can be selected to show.
+TEST_F(DisplayDeciderTest, PickNewMorning) {
+  NotificationEntry entry(SchedulerClientType::kTest1, "guid123");
+  DisplayDecider::Results expected = {"guid123"};
+  TestData data{kSingleClientImpressionTestData,
+                {entry},
+                SchedulerTaskTime::kMorning,
+                std::move(expected)};
+  RunTestCase(data);
+}
+
+}  // namespace
+}  // namespace notifications
diff --git a/chrome/browser/notifications/scheduler/distribution_policy_unittest.cc b/chrome/browser/notifications/scheduler/distribution_policy_unittest.cc
index 393bf84..320b900 100644
--- a/chrome/browser/notifications/scheduler/distribution_policy_unittest.cc
+++ b/chrome/browser/notifications/scheduler/distribution_policy_unittest.cc
@@ -30,6 +30,12 @@
             5);
   EXPECT_EQ(MaxToShow(policy.get(), SchedulerTaskTime::kEvening, 4 /* quota */),
             4);
+
+  // Test 0 quota.
+  EXPECT_EQ(MaxToShow(policy.get(), SchedulerTaskTime::kMorning, 0 /* quota */),
+            0);
+  EXPECT_EQ(MaxToShow(policy.get(), SchedulerTaskTime::kMorning, 0 /* quota */),
+            0);
 }
 
 }  // namespace
diff --git a/chrome/browser/notifications/scheduler/notification_entry.cc b/chrome/browser/notifications/scheduler/notification_entry.cc
index 461c693..8703595 100644
--- a/chrome/browser/notifications/scheduler/notification_entry.cc
+++ b/chrome/browser/notifications/scheduler/notification_entry.cc
@@ -12,6 +12,8 @@
                                      const std::string& guid)
     : type(type), guid(guid) {}
 
+NotificationEntry::NotificationEntry(const NotificationEntry& other) = default;
+
 NotificationEntry::~NotificationEntry() = default;
 
 }  // namespace notifications
diff --git a/chrome/browser/notifications/scheduler/notification_entry.h b/chrome/browser/notifications/scheduler/notification_entry.h
index eadfdb5f..9dc8cb91 100644
--- a/chrome/browser/notifications/scheduler/notification_entry.h
+++ b/chrome/browser/notifications/scheduler/notification_entry.h
@@ -17,6 +17,7 @@
 // record.
 struct NotificationEntry {
   NotificationEntry(SchedulerClientType type, const std::string& guid);
+  NotificationEntry(const NotificationEntry& other);
   ~NotificationEntry();
 
   // The type of the notification.
@@ -25,8 +26,10 @@
   // The unique id of the notification database entry.
   std::string guid;
 
+  // Contains information to construct the notification.
   NotificationData notification_data;
 
+  // Scheduling details.
   ScheduleParams schedule_params;
 };
 
diff --git a/chrome/browser/notifications/scheduler/notification_scheduler_types.h b/chrome/browser/notifications/scheduler/notification_scheduler_types.h
index fcd7774..ecd65840 100644
--- a/chrome/browser/notifications/scheduler/notification_scheduler_types.h
+++ b/chrome/browser/notifications/scheduler/notification_scheduler_types.h
@@ -12,6 +12,7 @@
   // Test only values.
   kTest1 = -1,
   kTest2 = -2,
+  kTest3 = -3,
 
   // Default value of client type.
   kUnknown = 0,
diff --git a/chrome/browser/notifications/scheduler/scheduler_utils.cc b/chrome/browser/notifications/scheduler/scheduler_utils.cc
index 11e1ecc..ae455472 100644
--- a/chrome/browser/notifications/scheduler/scheduler_utils.cc
+++ b/chrome/browser/notifications/scheduler/scheduler_utils.cc
@@ -6,22 +6,26 @@
 
 namespace notifications {
 
-bool ToLocalYesterdayHour(int hour, const base::Time& today, base::Time* out) {
+bool ToLocalHour(int hour,
+                 const base::Time& today,
+                 int day_delta,
+                 base::Time* out) {
   DCHECK_GE(hour, 0);
   DCHECK_LE(hour, 23);
   DCHECK(out);
 
   // Gets the local time at |hour| in yesterday.
-  base::Time yesterday = today - base::TimeDelta::FromDays(1);
-  base::Time::Exploded yesterday_exploded;
-  yesterday.LocalExplode(&yesterday_exploded);
-  yesterday_exploded.hour = hour;
-  yesterday_exploded.minute = 0;
-  yesterday_exploded.second = 0;
-  yesterday_exploded.millisecond = 0;
+
+  base::Time another_day = today + base::TimeDelta::FromDays(day_delta);
+  base::Time::Exploded another_day_exploded;
+  another_day.LocalExplode(&another_day_exploded);
+  another_day_exploded.hour = hour;
+  another_day_exploded.minute = 0;
+  another_day_exploded.second = 0;
+  another_day_exploded.millisecond = 0;
 
   // Converts local exploded time to time stamp.
-  return base::Time::FromLocalExploded(yesterday_exploded, out);
+  return base::Time::FromLocalExploded(another_day_exploded, out);
 }
 
 }  // namespace notifications
diff --git a/chrome/browser/notifications/scheduler/scheduler_utils.h b/chrome/browser/notifications/scheduler/scheduler_utils.h
index 378bc55..c18ea0d 100644
--- a/chrome/browser/notifications/scheduler/scheduler_utils.h
+++ b/chrome/browser/notifications/scheduler/scheduler_utils.h
@@ -9,12 +9,16 @@
 
 namespace notifications {
 
-// Retrieves the time stamp of a certain hour at yesterday.
+// Retrieves the time stamp of a certain hour at a certain day from today.
 // |hour| must be in the range of [0, 23].
 // |today| is a timestamp to define today, usually caller can directly pass in
 // the current system time.
+// |day_delta| is the different between the output date and today.
 // Returns false if the conversion is failed.
-bool ToLocalYesterdayHour(int hour, const base::Time& today, base::Time* out);
+bool ToLocalHour(int hour,
+                 const base::Time& today,
+                 int day_delta,
+                 base::Time* out);
 
 }  // namespace notifications
 
diff --git a/chrome/browser/notifications/scheduler/scheduler_utils_unittest.cc b/chrome/browser/notifications/scheduler/scheduler_utils_unittest.cc
index 2d56c288..e4acaee 100644
--- a/chrome/browser/notifications/scheduler/scheduler_utils_unittest.cc
+++ b/chrome/browser/notifications/scheduler/scheduler_utils_unittest.cc
@@ -11,20 +11,31 @@
 namespace {
 
 // Verifies we can get the correct time stamp at certain hour in yesterday.
-TEST(SchedulerUtilsTest, ToLocalYesterdayHour) {
-  base::Time today, yesterday, expected;
+TEST(SchedulerUtilsTest, ToLocalHour) {
+  base::Time today, another_day, expected;
 
-  // Retrieve a timestamp of yesterday at 6am.
+  // Timestamp of another day in the past.
   EXPECT_TRUE(base::Time::FromString("10/15/07 12:45:12 PM", &today));
-  EXPECT_TRUE(ToLocalYesterdayHour(6, today, &yesterday));
+  EXPECT_TRUE(ToLocalHour(6, today, -1, &another_day));
   EXPECT_TRUE(base::Time::FromString("10/14/07 06:00:00 AM", &expected));
-  EXPECT_EQ(expected, yesterday);
+  EXPECT_EQ(expected, another_day);
 
-  // Test an edge case, that the time is 0 am of a Monday.
   EXPECT_TRUE(base::Time::FromString("03/25/19 00:00:00 AM", &today));
-  EXPECT_TRUE(ToLocalYesterdayHour(0, today, &yesterday));
+  EXPECT_TRUE(ToLocalHour(0, today, -1, &another_day));
   EXPECT_TRUE(base::Time::FromString("03/24/19 00:00:00 AM", &expected));
-  EXPECT_EQ(expected, yesterday);
+  EXPECT_EQ(expected, another_day);
+
+  // Timestamp of the same day.
+  EXPECT_TRUE(base::Time::FromString("03/25/19 00:00:00 AM", &today));
+  EXPECT_TRUE(ToLocalHour(0, today, 0, &another_day));
+  EXPECT_TRUE(base::Time::FromString("03/25/19 00:00:00 AM", &expected));
+  EXPECT_EQ(expected, another_day);
+
+  // Timestamp of another day in the future.
+  EXPECT_TRUE(base::Time::FromString("03/25/19 06:35:27 AM", &today));
+  EXPECT_TRUE(ToLocalHour(16, today, 7, &another_day));
+  EXPECT_TRUE(base::Time::FromString("04/01/19 16:00:00 PM", &expected));
+  EXPECT_EQ(expected, another_day);
 }
 
 }  // namespace
diff --git a/chrome/browser/offline_pages/background_loader_offliner.cc b/chrome/browser/offline_pages/background_loader_offliner.cc
index ced2785..598c44f 100644
--- a/chrome/browser/offline_pages/background_loader_offliner.cc
+++ b/chrome/browser/offline_pages/background_loader_offliner.cc
@@ -284,9 +284,9 @@
 }
 
 void BackgroundLoaderOffliner::CanDownload(
-    const base::Callback<void(bool)>& callback) {
+    base::OnceCallback<void(bool)> callback) {
   if (!pending_request_.get()) {
-    callback.Run(false);  // Shouldn't happen though...
+    std::move(callback).Run(false);  // Shouldn't happen though...
   }
 
   bool should_allow_downloads = false;
@@ -302,7 +302,7 @@
     final_status = Offliner::RequestStatus::DOWNLOAD_THROTTLED;
   }
 
-  callback.Run(should_allow_downloads);
+  std::move(callback).Run(should_allow_downloads);
   SavePageRequest request(*pending_request_.get());
   std::move(completion_callback_).Run(request, final_status);
   base::ThreadTaskRunnerHandle::Get()->PostTask(
diff --git a/chrome/browser/offline_pages/background_loader_offliner.h b/chrome/browser/offline_pages/background_loader_offliner.h
index ae020b0..a05a6b6 100644
--- a/chrome/browser/offline_pages/background_loader_offliner.h
+++ b/chrome/browser/offline_pages/background_loader_offliner.h
@@ -68,7 +68,7 @@
   // Called when a navigation resulted in a single-file download. e.g.
   // When user navigated to a pdf page while offline and clicks on the
   // "Download page later" button.
-  void CanDownload(const base::Callback<void(bool)>& callback) override;
+  void CanDownload(base::OnceCallback<void(bool)> callback) override;
 
   // WebContentsObserver implementation.
   void DocumentAvailableInMainFrame() override;
diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.cc
index d6c6998..45ad2fd 100644
--- a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.cc
+++ b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.cc
@@ -479,8 +479,8 @@
   // Only records histograms on pages that have some ad bytes.
   if (aggregate_frame_data_->ad_bytes() == 0)
     return;
-  PAGE_BYTES_HISTOGRAM("PageLoad.Clients.Ads.Resources.Bytes.Ads",
-                       aggregate_frame_data_->ad_bytes());
+  PAGE_BYTES_HISTOGRAM("PageLoad.Clients.Ads.Resources.Bytes.Ads2",
+                       aggregate_frame_data_->ad_network_bytes());
   size_t unfinished_bytes = 0;
   for (auto const& kv :
        GetDelegate()->GetResourceTracker().unfinished_resources())
diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_browsertest.cc b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_browsertest.cc
index b64ad18..ef87cc5 100644
--- a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_browsertest.cc
+++ b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_browsertest.cc
@@ -625,8 +625,8 @@
   histogram_tester.ExpectBucketCount(
       "PageLoad.Clients.Ads.Bytes.FullPage.Network", 5, 1);
   // We have received 4 KB of ads and 1 KB of mainframe ads.
-  histogram_tester.ExpectBucketCount("PageLoad.Clients.Ads.Resources.Bytes.Ads",
-                                     4, 1);
+  histogram_tester.ExpectBucketCount(
+      "PageLoad.Clients.Ads.Resources.Bytes.Ads2", 4, 1);
   histogram_tester.ExpectBucketCount(
       "PageLoad.Clients.Ads.Bytes.MainFrame.Ads.Total", 1, 1);
 
diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_unittest.cc
index c54ebf9..e090d2a 100644
--- a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_unittest.cc
+++ b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_unittest.cc
@@ -714,6 +714,37 @@
                  0u /* non_ad_cached_kb */, 0u /* non_ad_uncached_kb */);
 }
 
+// Tests that main frame ad bytes are recorded correctly.
+TEST_F(AdsPageLoadMetricsObserverTest, MainFrameAdBytesRecorded) {
+  NavigateMainFrame(kNonAdUrl);
+
+  ResourceDataUpdate(main_rfh(), ResourceCached::NOT_CACHED, 10,
+                     "" /* mime_type */, true /* is_ad_resource */);
+  ResourceDataUpdate(main_rfh(), ResourceCached::CACHED, 10, "" /* mime_type */,
+                     true /* is_ad_resource */);
+
+  RenderFrameHost* subframe =
+      RenderFrameHostTester::For(main_rfh())->AppendChild("foo");
+  std::unique_ptr<NavigationSimulator> simulator =
+      NavigationSimulator::CreateRendererInitiated(GURL(kDefaultDisallowedUrl),
+                                                   subframe);
+  ResourceDataUpdate(subframe, ResourceCached::NOT_CACHED, 10,
+                     "" /* mime_type */, true /* is_ad_resource */);
+  ResourceDataUpdate(subframe, ResourceCached::CACHED, 10, "" /* mime_type */,
+                     true /* is_ad_resource */);
+  simulator->Commit();
+
+  NavigateMainFrame(kNonAdUrl);
+  histogram_tester().ExpectUniqueSample(
+      SuffixedHistogram("Bytes.MainFrame.Ads.Total"), 20, 1);
+  histogram_tester().ExpectUniqueSample(
+      SuffixedHistogram("Bytes.MainFrame.Ads.Network"), 10, 1);
+
+  // Verify page total for network bytes.
+  histogram_tester().ExpectUniqueSample(
+      SuffixedHistogram("Resources.Bytes.Ads2"), 20, 1);
+}
+
 // UKM metrics for ad page load are recorded correctly.
 TEST_F(AdsPageLoadMetricsObserverTest, AdPageLoadUKM) {
   ukm::TestAutoSetUkmRecorder ukm_recorder;
diff --git a/chrome/browser/prerender/prerender_contents.cc b/chrome/browser/prerender/prerender_contents.cc
index ef8862a..416f7734 100644
--- a/chrome/browser/prerender/prerender_contents.cc
+++ b/chrome/browser/prerender/prerender_contents.cc
@@ -104,10 +104,10 @@
 
   void CanDownload(const GURL& url,
                    const std::string& request_method,
-                   const base::Callback<void(bool)>& callback) override {
+                   base::OnceCallback<void(bool)> callback) override {
     prerender_contents_->Destroy(FINAL_STATUS_DOWNLOAD);
     // Cancel the download.
-    callback.Run(false);
+    std::move(callback).Run(false);
   }
 
   bool ShouldCreateWebContents(
diff --git a/chrome/browser/prerender/prerender_field_trial.cc b/chrome/browser/prerender/prerender_field_trial.cc
index 804a9e5..e99cb2ef 100644
--- a/chrome/browser/prerender/prerender_field_trial.cc
+++ b/chrome/browser/prerender/prerender_field_trial.cc
@@ -14,6 +14,9 @@
 const base::Feature kNoStatePrefetchFeature{"NoStatePrefetch",
                                             base::FEATURE_ENABLED_BY_DEFAULT};
 
+const base::Feature kGWSPrefetchHoldback{"GWSPrefetchHoldback",
+                                         base::FEATURE_DISABLED_BY_DEFAULT};
+
 void ConfigureNoStatePrefetch() {
   auto mode = PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH;
   if (!base::FeatureList::IsEnabled(kNoStatePrefetchFeature))
diff --git a/chrome/browser/prerender/prerender_field_trial.h b/chrome/browser/prerender/prerender_field_trial.h
index d4b674e..3a41f95 100644
--- a/chrome/browser/prerender/prerender_field_trial.h
+++ b/chrome/browser/prerender/prerender_field_trial.h
@@ -12,6 +12,9 @@
 // These Finch feature and parameter strings exposed for for testing.
 extern const base::Feature kNoStatePrefetchFeature;
 
+// Preconnects instead of prefetching from GWS.
+extern const base::Feature kGWSPrefetchHoldback;
+
 // Configures global state using kNoStatePrefetchFeature.
 void ConfigureNoStatePrefetch();
 
diff --git a/chrome/browser/prerender/prerender_final_status.cc b/chrome/browser/prerender/prerender_final_status.cc
index b708eedf..dfb382ea9 100644
--- a/chrome/browser/prerender/prerender_final_status.cc
+++ b/chrome/browser/prerender/prerender_final_status.cc
@@ -71,6 +71,7 @@
     "NoStatePrefetch Finished",
     "Low-End Device",
     "BrowserSwitcher Switch",
+    "GWS Holdback",
     "Max",
 };
 static_assert(base::size(kFinalStatusNames) == FINAL_STATUS_MAX + 1,
diff --git a/chrome/browser/prerender/prerender_final_status.h b/chrome/browser/prerender/prerender_final_status.h
index 9785d2b7..cb5ebe4f 100644
--- a/chrome/browser/prerender/prerender_final_status.h
+++ b/chrome/browser/prerender/prerender_final_status.h
@@ -76,6 +76,7 @@
   FINAL_STATUS_NOSTATE_PREFETCH_FINISHED = 56,
   FINAL_STATUS_LOW_END_DEVICE = 57,
   FINAL_STATUS_BROWSER_SWITCH = 58,
+  FINAL_STATUS_GWS_HOLDBACK = 59,
   FINAL_STATUS_MAX,
 };
 
diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc
index e1e0c0d..77cd9d2 100644
--- a/chrome/browser/prerender/prerender_manager.cc
+++ b/chrome/browser/prerender/prerender_manager.cc
@@ -861,6 +861,18 @@
     return nullptr;
   }
 
+  // If this is GWS, and we are in the holdback, fall back to preconnect
+  // instead of prefetch. Record the status as holdback, so we can analyze via
+  // UKM.
+  if (origin == ORIGIN_GWS_PRERENDER &&
+      base::FeatureList::IsEnabled(kGWSPrefetchHoldback)) {
+    // Set the holdback status on the prefetch entry.
+    SetPrefetchFinalStatusForUrl(url, FINAL_STATUS_GWS_HOLDBACK);
+    SkipPrerenderContentsAndMaybePreconnect(url, origin,
+                                            FINAL_STATUS_GWS_HOLDBACK);
+    return nullptr;
+  }
+
   std::unique_ptr<PrerenderContents> prerender_contents =
       CreatePrerenderContents(url, referrer, origin);
   DCHECK(prerender_contents);
@@ -1184,12 +1196,13 @@
   if (final_status == FINAL_STATUS_LOW_END_DEVICE ||
       final_status == FINAL_STATUS_CELLULAR_NETWORK ||
       final_status == FINAL_STATUS_DUPLICATE ||
-      final_status == FINAL_STATUS_TOO_MANY_PROCESSES) {
+      final_status == FINAL_STATUS_TOO_MANY_PROCESSES ||
+      final_status == FINAL_STATUS_GWS_HOLDBACK) {
     MaybePreconnect(origin, url);
   }
 
   static_assert(
-      FINAL_STATUS_MAX == FINAL_STATUS_BROWSER_SWITCH + 1,
+      FINAL_STATUS_MAX == FINAL_STATUS_GWS_HOLDBACK + 1,
       "Consider whether a failed prerender should fallback to preconnect");
 }
 
diff --git a/chrome/browser/prerender/prerender_unittest.cc b/chrome/browser/prerender/prerender_unittest.cc
index e4fe8d1..9f44120 100644
--- a/chrome/browser/prerender/prerender_unittest.cc
+++ b/chrome/browser/prerender/prerender_unittest.cc
@@ -391,6 +391,19 @@
     return LauncherHasRunningPrerender(kDefaultChildId, last_prerender_id());
   }
 
+  // Shorthand to add a simple prerender with a reasonable source. Returns
+  // true iff the prerender has been added to the PrerenderManager by the
+  // PrerenderLinkManager and the PrerenderManager returned a handle. The
+  // referrer is set to a google domain.
+  bool AddSimpleGWSPrerender(const GURL& url) {
+    content::Referrer referrer;
+    referrer.url = GURL("https://www.google.com");
+    prerender_link_manager()->OnAddPrerender(
+        kDefaultChildId, GetNextPrerenderID(), url, kDefaultRelTypes, referrer,
+        kSize, kDefaultRenderViewRouteId);
+    return LauncherHasRunningPrerender(kDefaultChildId, last_prerender_id());
+  }
+
   void DisablePrerender() {
     profile_.GetPrefs()->SetInteger(
         prefs::kNetworkPredictionOptions,
@@ -457,6 +470,66 @@
   EXPECT_FALSE(AddSimplePrerender(url));
 }
 
+TEST_F(PrerenderTest, GWSPrefetchHoldbackNonGWSSReferrer) {
+  GURL url("http://www.notgoogle.com/");
+  test_utils::RestorePrerenderMode restore_prerender_mode;
+
+  prerender_manager()->SetMode(
+      PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH);
+
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndEnableFeature(kGWSPrefetchHoldback);
+  prerender_manager()->CreateNextPrerenderContents(
+      url, FINAL_STATUS_MANAGER_SHUTDOWN);
+
+  EXPECT_TRUE(AddSimplePrerender(url));
+}
+
+TEST_F(PrerenderTest, GWSPrefetchHoldbackGWSReferrer) {
+  GURL url("http://www.notgoogle.com/");
+  test_utils::RestorePrerenderMode restore_prerender_mode;
+
+  prerender_manager()->SetMode(
+      PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH);
+
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndEnableFeature(kGWSPrefetchHoldback);
+  prerender_manager()->CreateNextPrerenderContents(
+      url, ORIGIN_GWS_PRERENDER, FINAL_STATUS_MANAGER_SHUTDOWN);
+
+  EXPECT_FALSE(AddSimpleGWSPrerender(url));
+}
+
+TEST_F(PrerenderTest, GWSPrefetchHoldbackOffNonGWSReferrer) {
+  GURL url("http://www.notgoogle.com/");
+  test_utils::RestorePrerenderMode restore_prerender_mode;
+
+  prerender_manager()->SetMode(
+      PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH);
+
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndDisableFeature(kGWSPrefetchHoldback);
+  prerender_manager()->CreateNextPrerenderContents(
+      url, FINAL_STATUS_MANAGER_SHUTDOWN);
+
+  EXPECT_TRUE(AddSimplePrerender(url));
+}
+
+TEST_F(PrerenderTest, GWSPrefetchHoldbackOffGWSReferrer) {
+  GURL url("http://www.notgoogle.com/");
+  test_utils::RestorePrerenderMode restore_prerender_mode;
+
+  prerender_manager()->SetMode(
+      PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH);
+
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndDisableFeature(kGWSPrefetchHoldback);
+  prerender_manager()->CreateNextPrerenderContents(
+      url, ORIGIN_GWS_PRERENDER, FINAL_STATUS_MANAGER_SHUTDOWN);
+
+  EXPECT_TRUE(AddSimpleGWSPrerender(url));
+}
+
 TEST_F(PrerenderTest, PrerenderDisabledOnLowEndDevice) {
   GURL url("http://www.google.com/");
   ASSERT_TRUE(IsNoStatePrefetchEnabled());
diff --git a/chrome/browser/resource_coordinator/tab_activity_watcher.cc b/chrome/browser/resource_coordinator/tab_activity_watcher.cc
index 52e5337..743d56b0 100644
--- a/chrome/browser/resource_coordinator/tab_activity_watcher.cc
+++ b/chrome/browser/resource_coordinator/tab_activity_watcher.cc
@@ -14,7 +14,6 @@
 #include "chrome/browser/resource_coordinator/tab_metrics_logger.h"
 #include "chrome/browser/resource_coordinator/tab_ranker/mru_features.h"
 #include "chrome/browser/resource_coordinator/tab_ranker/tab_features.h"
-#include "chrome/browser/resource_coordinator/tab_ranker/window_features.h"
 #include "chrome/browser/resource_coordinator/time.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_finder.h"
@@ -109,8 +108,7 @@
     backgrounded_time_ = replaced_tab.backgrounded_time_;
 
     // Copy the replaced tab's stats.
-    tab_metrics_.page_metrics = replaced_tab.tab_metrics_.page_metrics;
-    tab_metrics_.page_transition = replaced_tab.tab_metrics_.page_transition;
+    page_metrics_ = replaced_tab.page_metrics_;
 
     // Record previous ukm_source_id from the |replaced_tab|.
     previous_ukm_source_id_ = replaced_tab.ukm_source_id_;
@@ -190,7 +188,6 @@
   explicit WebContentsData(content::WebContents* web_contents)
       : WebContentsObserver(web_contents) {
     DCHECK(!web_contents->GetBrowserContext()->IsOffTheRecord());
-    tab_metrics_.web_contents = web_contents;
     web_contents->GetRenderViewHost()->GetWidget()->AddInputEventObserver(this);
 
     creation_time_ = NowTicks();
@@ -243,7 +240,7 @@
     foregrounded_time_ = NowTicks();
     creation_time_ = NowTicks();
 
-    tab_metrics_.page_metrics.num_reactivations++;
+    page_metrics_.num_reactivations++;
   }
 
   // content::WebContentsObserver:
@@ -274,10 +271,10 @@
     navigation_time_ = navigation_handle->NavigationStart();
 
     // Reset the per-page data.
-    tab_metrics_.page_metrics = {};
+    page_metrics_ = {};
 
     // Update navigation info.
-    tab_metrics_.page_transition = navigation_handle->GetPageTransition();
+    page_metrics_.page_transition = navigation_handle->GetPageTransition();
   }
 
   // Logs metrics for the tab when it stops loading instead of immediately
@@ -343,11 +340,11 @@
   // content::RenderWidgetHost::InputEventObserver:
   void OnInputEvent(const blink::WebInputEvent& event) override {
     if (blink::WebInputEvent::IsMouseEventType(event.GetType()))
-      tab_metrics_.page_metrics.mouse_event_count++;
+      page_metrics_.mouse_event_count++;
     else if (blink::WebInputEvent::IsKeyboardEventType(event.GetType()))
-      tab_metrics_.page_metrics.key_event_count++;
+      page_metrics_.key_event_count++;
     else if (blink::WebInputEvent::IsTouchEventType(event.GetType()))
-      tab_metrics_.page_metrics.touch_event_count++;
+      page_metrics_.touch_event_count++;
   }
 
   // Iterates through tabstrips to determine the index of |contents| in
@@ -402,27 +399,25 @@
 
   // Returns the tabfeatures of current tab by combining TabMetrics,
   // WindowFeatures and MRUFeatures.
+  // TODO(charleszhao): refactor TabMetricsLogger::GetTabFeatures to return a
+  // full TabFeatures instead of a partial TabFeatures.
   base::Optional<tab_ranker::TabFeatures> GetTabFeatures(
       const tab_ranker::MRUFeatures& mru = tab_ranker::MRUFeatures()) {
-    const Browser* browser = chrome::FindBrowserWithWebContents(web_contents());
-    if (!browser)
-      return base::nullopt;
 
     // For tab features.
-    tab_ranker::TabFeatures tab = TabMetricsLogger::GetTabFeatures(
-        browser, tab_metrics_, NowTicks() - backgrounded_time_);
+    base::Optional<tab_ranker::TabFeatures> tab =
+        TabMetricsLogger::GetTabFeatures(page_metrics_, web_contents());
+    if (!tab.has_value())
+      return tab;
 
-    // For window features.
-    tab_ranker::WindowFeatures window =
-        TabMetricsLogger::CreateWindowFeatures(browser);
-    tab.window_is_active = window.is_active;
-    tab.window_show_state = window.show_state;
-    tab.window_tab_count = window.tab_count;
-    tab.window_type = window.type;
+    tab->time_from_backgrounded =
+        backgrounded_time_.is_null()
+            ? 0
+            : (NowTicks() - backgrounded_time_).InMilliseconds();
 
     // For mru features.
-    tab.mru_index = mru.index;
-    tab.total_tab_count = mru.total;
+    tab->mru_index = mru.index;
+    tab->total_tab_count = mru.total;
     return tab;
   }
 
@@ -475,8 +470,8 @@
   // The last navigation time associated with this tab.
   base::TimeTicks navigation_time_;
 
-  // Stores current stats for the tab.
-  TabMetricsLogger::TabMetrics tab_metrics_;
+  // Stores current page stats for the tab.
+  TabMetricsLogger::PageMetrics page_metrics_;
 
   // Set to true when the WebContents has been detached from its tab.
   bool is_detached_ = false;
diff --git a/chrome/browser/resource_coordinator/tab_metrics_logger.cc b/chrome/browser/resource_coordinator/tab_metrics_logger.cc
index f00efa8..d69fac0 100644
--- a/chrome/browser/resource_coordinator/tab_metrics_logger.cc
+++ b/chrome/browser/resource_coordinator/tab_metrics_logger.cc
@@ -37,8 +37,8 @@
 namespace {
 
 // Populates navigation-related metrics.
-void PopulatePageTransitionFeatures(tab_ranker::TabFeatures* tab,
-                                    ui::PageTransition page_transition) {
+void PopulatePageTransitionFeatures(ui::PageTransition page_transition,
+                                    tab_ranker::TabFeatures* tab) {
   // We only report the following core types.
   // Note: Redirects unrelated to clicking a link still get the "link" type.
   if (ui::PageTransitionCoreTypeIs(page_transition, ui::PAGE_TRANSITION_LINK) ||
@@ -58,33 +58,71 @@
       ui::PageTransitionIsRedirect(page_transition);
 }
 
+// Populates TabFeatures from |page_metrics|.
+void PopulateTabFeaturesFromPageMetrics(
+    const TabMetricsLogger::PageMetrics& page_metrics,
+    tab_ranker::TabFeatures* tab) {
+  static_assert(sizeof(TabMetricsLogger::PageMetrics) ==
+                    sizeof(int) * 4 + sizeof(ui::PageTransition),
+                "Make sure all fields in PageMetrics are considered here.");
+  tab->key_event_count = page_metrics.key_event_count;
+  tab->mouse_event_count = page_metrics.mouse_event_count;
+  tab->num_reactivations = page_metrics.num_reactivations;
+  tab->touch_event_count = page_metrics.touch_event_count;
+
+  PopulatePageTransitionFeatures(page_metrics.page_transition, tab);
+}
+
+// Populates TabFeatures that can be calculated simply from |web_contents|.
+void PopulateTabFeaturesFromWebContents(content::WebContents* web_contents,
+                                        tab_ranker::TabFeatures* tab_features) {
+  tab_features->has_before_unload_handler =
+      web_contents->GetMainFrame()->GetSuddenTerminationDisablerState(
+          blink::kBeforeUnloadHandler);
+  tab_features->has_form_entry =
+      web_contents->GetPageImportanceSignals().had_form_interaction;
+  tab_features->host = web_contents->GetLastCommittedURL().host();
+  tab_features->navigation_entry_count =
+      web_contents->GetController().GetEntryCount();
+
+  if (SiteEngagementService::IsEnabled()) {
+    tab_features->site_engagement_score =
+        TabMetricsLogger::GetSiteEngagementScore(web_contents);
+  }
+
+  // This checks if the tab was audible within the past two seconds, same as the
+  // audio indicator in the tab strip.
+  tab_features->was_recently_audible =
+      RecentlyAudibleHelper::FromWebContents(web_contents)
+          ->WasRecentlyAudible();
+}
+
+// Populates TabFeatures that calculated from |browser| including WindowMetrics
+// and PinState.
+void PopulateTabFeaturesFromBrowser(const Browser* browser,
+                                    content::WebContents* web_contents,
+                                    tab_ranker::TabFeatures* tab_features) {
+  // For pin state.
+  const TabStripModel* tab_strip_model = browser->tab_strip_model();
+  int index = tab_strip_model->GetIndexOfWebContents(web_contents);
+  DCHECK_NE(index, TabStripModel::kNoTab);
+  tab_features->is_pinned = tab_strip_model->IsTabPinned(index);
+
+  // For window features.
+  tab_ranker::WindowFeatures window =
+      TabMetricsLogger::CreateWindowFeatures(browser);
+  tab_features->window_is_active = window.is_active;
+  tab_features->window_show_state = window.show_state;
+  tab_features->window_tab_count = window.tab_count;
+  tab_features->window_type = window.type;
+}
+
 }  // namespace
 
 TabMetricsLogger::TabMetricsLogger() = default;
 TabMetricsLogger::~TabMetricsLogger() = default;
 
 // static
-TabMetricsEvent::ContentType TabMetricsLogger::GetContentTypeFromMimeType(
-    const std::string& mime_type) {
-  // Test for special cases before testing wildcard types.
-  if (mime_type.empty())
-    return TabMetricsEvent::CONTENT_TYPE_UNKNOWN;
-  if (net::MatchesMimeType("text/html", mime_type))
-    return TabMetricsEvent::CONTENT_TYPE_TEXT_HTML;
-  if (net::MatchesMimeType("application/*", mime_type))
-    return TabMetricsEvent::CONTENT_TYPE_APPLICATION;
-  if (net::MatchesMimeType("audio/*", mime_type))
-    return TabMetricsEvent::CONTENT_TYPE_AUDIO;
-  if (net::MatchesMimeType("image/*", mime_type))
-    return TabMetricsEvent::CONTENT_TYPE_IMAGE;
-  if (net::MatchesMimeType("text/*", mime_type))
-    return TabMetricsEvent::CONTENT_TYPE_TEXT;
-  if (net::MatchesMimeType("video/*", mime_type))
-    return TabMetricsEvent::CONTENT_TYPE_VIDEO;
-  return TabMetricsEvent::CONTENT_TYPE_OTHER;
-}
-
-// static
 int TabMetricsLogger::GetSiteEngagementScore(
     content::WebContents* web_contents) {
   if (!SiteEngagementService::IsEnabled())
@@ -104,44 +142,18 @@
 }
 
 // static
-tab_ranker::TabFeatures TabMetricsLogger::GetTabFeatures(
-    const Browser* browser,
-    const TabMetrics& tab_metrics,
-    base::TimeDelta inactive_duration) {
-  DCHECK(browser);
-  const TabStripModel* tab_strip_model = browser->tab_strip_model();
-  content::WebContents* web_contents = tab_metrics.web_contents;
+base::Optional<tab_ranker::TabFeatures> TabMetricsLogger::GetTabFeatures(
+    const PageMetrics& page_metrics,
+    content::WebContents* web_contents) {
+  Browser* browser = chrome::FindBrowserWithWebContents(web_contents);
+  if (!browser)
+    return base::nullopt;
 
   tab_ranker::TabFeatures tab;
+  PopulateTabFeaturesFromWebContents(web_contents, &tab);
+  PopulateTabFeaturesFromBrowser(browser, web_contents, &tab);
+  PopulateTabFeaturesFromPageMetrics(page_metrics, &tab);
 
-  tab.has_before_unload_handler =
-      web_contents->GetMainFrame()->GetSuddenTerminationDisablerState(
-          blink::kBeforeUnloadHandler);
-  tab.has_form_entry =
-      web_contents->GetPageImportanceSignals().had_form_interaction;
-  tab.host = web_contents->GetLastCommittedURL().host();
-
-  int index = tab_strip_model->GetIndexOfWebContents(web_contents);
-  DCHECK_NE(index, TabStripModel::kNoTab);
-  tab.is_pinned = tab_strip_model->IsTabPinned(index);
-
-  tab.key_event_count = tab_metrics.page_metrics.key_event_count;
-  tab.mouse_event_count = tab_metrics.page_metrics.mouse_event_count;
-  tab.navigation_entry_count = web_contents->GetController().GetEntryCount();
-  tab.num_reactivations = tab_metrics.page_metrics.num_reactivations;
-
-  PopulatePageTransitionFeatures(&tab, tab_metrics.page_transition);
-
-  if (SiteEngagementService::IsEnabled())
-    tab.site_engagement_score = GetSiteEngagementScore(web_contents);
-
-  tab.time_from_backgrounded = inactive_duration.InMilliseconds();
-  tab.touch_event_count = tab_metrics.page_metrics.touch_event_count;
-
-  // This checks if the tab was audible within the past two seconds, same as the
-  // audio indicator in the tab strip.
-  auto* audible_helper = RecentlyAudibleHelper::FromWebContents(web_contents);
-  tab.was_recently_audible = audible_helper->WasRecentlyAudible();
   return tab;
 }
 
diff --git a/chrome/browser/resource_coordinator/tab_metrics_logger.h b/chrome/browser/resource_coordinator/tab_metrics_logger.h
index f1f0f0f..bd595ddd 100644
--- a/chrome/browser/resource_coordinator/tab_metrics_logger.h
+++ b/chrome/browser/resource_coordinator/tab_metrics_logger.h
@@ -6,6 +6,7 @@
 #define CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_METRICS_LOGGER_H_
 
 #include "base/macros.h"
+#include "base/optional.h"
 #include "chrome/browser/resource_coordinator/tab_metrics_event.pb.h"
 #include "services/metrics/public/cpp/ukm_source_id.h"
 #include "ui/base/page_transition_types.h"
@@ -40,18 +41,8 @@
     int touch_event_count = 0;
     // Number of times this tab has been reactivated.
     int num_reactivations = 0;
-  };
-
-  // The state of a tab.
-  struct TabMetrics {
-    content::WebContents* web_contents = nullptr;
-
     // Source of the last committed navigation.
     ui::PageTransition page_transition = ui::PAGE_TRANSITION_FIRST;
-
-    // Per-page metrics of the state of the WebContents. Tracked since the
-    // tab's last top-level navigation.
-    PageMetrics page_metrics = {};
   };
 
   // A struct that contains metrics to be logged in ForegroundedOrClosed event.
@@ -84,10 +75,6 @@
   void LogTabLifetime(ukm::SourceId ukm_source_id,
                       base::TimeDelta time_since_navigation);
 
-  // Returns the ContentType that matches |mime_type|.
-  static metrics::TabMetricsEvent::ContentType GetContentTypeFromMimeType(
-      const std::string& mime_type);
-
   // Returns the site engagement score for the WebContents, rounded down to 10s
   // to limit granularity. Returns -1 if site engagement service is disabled.
   static int GetSiteEngagementScore(content::WebContents* web_contents);
@@ -96,10 +83,9 @@
   // A common function for populating these features ensures that the same
   // values are used for logging training examples to UKM and for locally
   // scoring tabs.
-  static tab_ranker::TabFeatures GetTabFeatures(
-      const Browser* browser,
-      const TabMetrics& tab_metrics,
-      base::TimeDelta inactive_duration);
+  static base::Optional<tab_ranker::TabFeatures> GetTabFeatures(
+      const PageMetrics& page_metrics,
+      content::WebContents* web_contents);
 
   // Returns a populated WindowFeatures for the browser.
   static tab_ranker::WindowFeatures CreateWindowFeatures(
diff --git a/chrome/browser/resource_coordinator/tab_metrics_logger_interactive_uitest.cc b/chrome/browser/resource_coordinator/tab_metrics_logger_interactive_uitest.cc
index 68f10a3..d822174 100644
--- a/chrome/browser/resource_coordinator/tab_metrics_logger_interactive_uitest.cc
+++ b/chrome/browser/resource_coordinator/tab_metrics_logger_interactive_uitest.cc
@@ -9,6 +9,7 @@
 #include "base/macros.h"
 #include "build/build_config.h"
 #include "chrome/browser/resource_coordinator/tab_metrics_event.pb.h"
+#include "chrome/browser/resource_coordinator/tab_ranker/tab_features.h"
 #include "chrome/browser/resource_coordinator/tab_ranker/window_features.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_list.h"
@@ -22,12 +23,15 @@
 using tab_ranker::WindowFeatures;
 
 const char* kTestUrl = "https://example.com/";
+constexpr char kBeforeUnloadHtml[] =
+    "data:text/html,<html><body><script>window.onbeforeunload=function(e) {}"
+    "</script></body></html>";
 
 // Tests WindowFeatures generated by TabMetricsLogger::CreateWindowFeatures due
 // to interactive changes to window state.
-class CreateWindowFeaturesTest : public InProcessBrowserTest {
+class TabMetricsLoggerTest : public InProcessBrowserTest {
  protected:
-  CreateWindowFeaturesTest() = default;
+  TabMetricsLoggerTest() = default;
 
   // InProcessBrowserTest:
   void PreRunTestOnMainThread() override {
@@ -49,12 +53,27 @@
 #endif
   }
 
+  // Returns TabFeatures of Tab at |index|.
+  tab_ranker::TabFeatures CurrentTabFeatures(const int index) {
+    auto* web_contents = browser()->tab_strip_model()->GetWebContentsAt(index);
+    return TabMetricsLogger::GetTabFeatures(TabMetricsLogger::PageMetrics(),
+                                            web_contents)
+        .value();
+  }
+
  private:
-  DISALLOW_COPY_AND_ASSIGN(CreateWindowFeaturesTest);
+  DISALLOW_COPY_AND_ASSIGN(TabMetricsLoggerTest);
 };
 
+// Tests before unload handler is calculated correctly.
+IN_PROC_BROWSER_TEST_F(TabMetricsLoggerTest, GetBeforeUnloadHandler) {
+  EXPECT_FALSE(CurrentTabFeatures(0).has_before_unload_handler);
+  ui_test_utils::NavigateToURL(browser(), GURL(kBeforeUnloadHtml));
+  EXPECT_TRUE(CurrentTabFeatures(0).has_before_unload_handler);
+}
+
 // Tests WindowMetrics of the current browser window.
-IN_PROC_BROWSER_TEST_F(CreateWindowFeaturesTest, Basic) {
+IN_PROC_BROWSER_TEST_F(TabMetricsLoggerTest, CreateWindowFeaturesTest) {
   WindowFeatures expected_metrics{WindowMetricsEvent::TYPE_TABBED,
                                   WindowMetricsEvent::SHOW_STATE_NORMAL, true,
                                   1};
@@ -84,7 +103,8 @@
 // TODO(https://crbug.com/51364): Implement BrowserWindow::Deactivate() on Mac.
 #if !defined(OS_MACOSX)
 // Tests WindowMetrics by activating/deactivating the window.
-IN_PROC_BROWSER_TEST_F(CreateWindowFeaturesTest, WindowActivation) {
+IN_PROC_BROWSER_TEST_F(TabMetricsLoggerTest,
+                       CreateWindowFeaturesTestWindowActivation) {
   WindowFeatures expected_metrics{WindowMetricsEvent::TYPE_TABBED,
                                   WindowMetricsEvent::SHOW_STATE_NORMAL, false,
                                   1};
@@ -114,7 +134,8 @@
 }
 
 // Tests WindowMetrics when switching between windows.
-IN_PROC_BROWSER_TEST_F(CreateWindowFeaturesTest, MultipleWindows) {
+IN_PROC_BROWSER_TEST_F(TabMetricsLoggerTest,
+                       CreateWindowFeaturesTestMultipleWindows) {
   // Create a new browser window.
   Browser* browser_2 = CreateBrowser(browser()->profile());
   WindowFeatures expected_metrics{WindowMetricsEvent::TYPE_TABBED,
diff --git a/chrome/browser/resource_coordinator/tab_metrics_logger_unittest.cc b/chrome/browser/resource_coordinator/tab_metrics_logger_unittest.cc
index b36cf31..5a61622 100644
--- a/chrome/browser/resource_coordinator/tab_metrics_logger_unittest.cc
+++ b/chrome/browser/resource_coordinator/tab_metrics_logger_unittest.cc
@@ -25,6 +25,7 @@
 #include "chrome/test/base/testing_profile.h"
 #include "components/ukm/test_ukm_recorder.h"
 #include "content/public/browser/web_contents.h"
+#include "content/public/common/page_importance_signals.h"
 #include "content/public/test/web_contents_tester.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/base/ui_base_types.h"
@@ -33,13 +34,12 @@
 using metrics::WindowMetricsEvent;
 using tab_ranker::WindowFeatures;
 
-// Sanity checks for functions in TabMetricsLogger.
-// See TabActivityWatcherTest for more thorough tab usage UKM tests.
-using TabMetricsLoggerTest = ChromeRenderViewHostTestHarness;
-
 namespace {
 
-const char* kTestUrl = "https://example.com/";
+constexpr char kChromiumUrl[] = "https://www.chromium.org";
+constexpr char kChromiumDomain[] = "www.chromium.org";
+constexpr char kExampleUrl[] = "https://example.com/test.html";
+constexpr char kExampleDomain[] = "example.com";
 
 // TestBrowserWindow whose show state can be modified.
 class FakeBrowserWindow : public TestBrowserWindow {
@@ -100,7 +100,7 @@
   }
 
  private:
-  Browser* browser_;
+  Browser* browser_ = nullptr;
   bool is_active_ = false;
   ui::WindowShowState show_state_ = ui::SHOW_STATE_NORMAL;
 
@@ -109,6 +109,98 @@
 
 }  // namespace
 
+// Sanity checks for functions in TabMetricsLogger.
+// See TabActivityWatcherTest for more thorough tab usage UKM tests.
+class TabMetricsLoggerTest : public ChromeRenderViewHostTestHarness {
+ protected:
+  void SetUp() override {
+    ChromeRenderViewHostTestHarness::SetUp();
+
+    params_ = new Browser::CreateParams(profile(), true);
+    browser_ = CreateBrowserWithTestWindowForParams(params_);
+    tab_strip_model_ = browser_->tab_strip_model();
+
+    // Add a foreground tab.
+    web_contents_ = tab_activity_simulator_.AddWebContentsAndNavigate(
+        tab_strip_model_, GURL(kChromiumUrl));
+    tab_strip_model_->ActivateTabAt(0);
+    web_contents_tester_ = WebContentsTester::For(web_contents_);
+  }
+
+  TabActivitySimulator tab_activity_simulator_;
+  Browser::CreateParams* params_;
+  std::unique_ptr<Browser> browser_;
+  TabStripModel* tab_strip_model_;
+  content::WebContents* web_contents_;
+  content::WebContentsTester* web_contents_tester_;
+  TabMetricsLogger::PageMetrics pg_metrics_;
+
+  void TearDown() override {
+    tab_strip_model_->CloseAllTabs();
+    browser_.reset();
+    ChromeRenderViewHostTestHarness::TearDown();
+  }
+
+  tab_ranker::TabFeatures CurrentTabFeatures() {
+    return TabMetricsLogger::GetTabFeatures(pg_metrics_, web_contents_).value();
+  }
+
+  // Adds a tab and simulates a basic navigation.
+  void AddTab(Browser* browser) {
+    content::WebContentsTester::For(
+        tab_activity_simulator_.AddWebContentsAndNavigate(
+            browser->tab_strip_model(), GURL(kExampleUrl)))
+        ->TestSetIsLoading(false);
+  }
+};
+
+// Tests has_form_entry.
+TEST_F(TabMetricsLoggerTest, GetHasFormEntry) {
+  EXPECT_FALSE(CurrentTabFeatures().has_form_entry);
+  content::PageImportanceSignals signal;
+  signal.had_form_interaction = true;
+  web_contents_tester_->SetPageImportanceSignals(signal);
+  EXPECT_TRUE(CurrentTabFeatures().has_form_entry);
+}
+
+// Tests is_pinned.
+TEST_F(TabMetricsLoggerTest, GetPinState) {
+  EXPECT_FALSE(CurrentTabFeatures().is_pinned);
+  tab_strip_model_->SetTabPinned(0, true);
+  EXPECT_TRUE(CurrentTabFeatures().is_pinned);
+}
+
+// Tests navigation_entry_count.
+TEST_F(TabMetricsLoggerTest, GetNavigationEntryCount) {
+  EXPECT_EQ(CurrentTabFeatures().navigation_entry_count, 1);
+  tab_activity_simulator_.Navigate(web_contents_, GURL(kChromiumUrl),
+                                   pg_metrics_.page_transition);
+  EXPECT_EQ(CurrentTabFeatures().navigation_entry_count, 2);
+  tab_activity_simulator_.Navigate(web_contents_, GURL(kChromiumUrl),
+                                   pg_metrics_.page_transition);
+  EXPECT_EQ(CurrentTabFeatures().navigation_entry_count, 3);
+}
+
+// Tests site_engagement_score.
+TEST_F(TabMetricsLoggerTest, GetSiteEngagementScore) {
+  EXPECT_EQ(CurrentTabFeatures().site_engagement_score, 0);
+  SiteEngagementService::Get(profile())->ResetBaseScoreForURL(
+      GURL(kChromiumUrl), 91);
+  EXPECT_EQ(CurrentTabFeatures().site_engagement_score, 90);
+}
+
+// Tests was_recently_audible.
+TEST_F(TabMetricsLoggerTest, GetAudibleState) {
+  EXPECT_FALSE(CurrentTabFeatures().was_recently_audible);
+  web_contents_tester_->SetIsCurrentlyAudible(true);
+  EXPECT_TRUE(CurrentTabFeatures().was_recently_audible);
+}
+
+// Tests host.
+TEST_F(TabMetricsLoggerTest, GetHost) {
+  EXPECT_EQ(CurrentTabFeatures().host, kChromiumDomain);
+}
+
 // Tests creating a flat TabFeatures structure for logging a tab and its
 // TabMetrics state.
 TEST_F(TabMetricsLoggerTest, GetTabFeatures) {
@@ -125,22 +217,19 @@
 
   // Add a background tab to test.
   content::WebContents* bg_contents =
-      tab_activity_simulator.AddWebContentsAndNavigate(
-          tab_strip_model, GURL("http://example.com/test.html"));
+      tab_activity_simulator.AddWebContentsAndNavigate(tab_strip_model,
+                                                       GURL(kExampleUrl));
   WebContentsTester::For(bg_contents)->TestSetIsLoading(false);
 
   {
-    TabMetricsLogger::TabMetrics bg_metrics;
-    bg_metrics.web_contents = bg_contents;
+    TabMetricsLogger::PageMetrics bg_metrics;
     bg_metrics.page_transition = ui::PAGE_TRANSITION_FORM_SUBMIT;
 
-    base::TimeDelta inactive_duration = base::TimeDelta::FromSeconds(10);
-
-    tab_ranker::TabFeatures bg_features = TabMetricsLogger::GetTabFeatures(
-        browser.get(), bg_metrics, inactive_duration);
+    tab_ranker::TabFeatures bg_features =
+        TabMetricsLogger::GetTabFeatures(bg_metrics, bg_contents).value();
     EXPECT_EQ(bg_features.has_before_unload_handler, false);
     EXPECT_EQ(bg_features.has_form_entry, false);
-    EXPECT_EQ(bg_features.host, "example.com");
+    EXPECT_EQ(bg_features.host, kExampleDomain);
     EXPECT_EQ(bg_features.is_pinned, false);
     EXPECT_EQ(bg_features.key_event_count, 0);
     EXPECT_EQ(bg_features.mouse_event_count, 0);
@@ -152,8 +241,6 @@
     EXPECT_EQ(bg_features.page_transition_is_redirect, false);
     ASSERT_TRUE(bg_features.site_engagement_score.has_value());
     EXPECT_EQ(bg_features.site_engagement_score.value(), 0);
-    EXPECT_EQ(bg_features.time_from_backgrounded,
-              inactive_duration.InMilliseconds());
     EXPECT_EQ(bg_features.touch_event_count, 0);
     EXPECT_EQ(bg_features.was_recently_audible, false);
   }
@@ -161,28 +248,25 @@
   // Update tab features.
   ui::PageTransition page_transition = static_cast<ui::PageTransition>(
       ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR);
-  tab_activity_simulator.Navigate(bg_contents, GURL("https://www.chromium.org"),
+  tab_activity_simulator.Navigate(bg_contents, GURL(kChromiumUrl),
                                   page_transition);
   tab_strip_model->SetTabPinned(1, true);
   SiteEngagementService::Get(profile())->ResetBaseScoreForURL(
-      GURL("https://www.chromium.org"), 91);
+      GURL(kChromiumUrl), 91);
 
   {
-    TabMetricsLogger::TabMetrics bg_metrics;
-    bg_metrics.web_contents = bg_contents;
+    TabMetricsLogger::PageMetrics bg_metrics;
     bg_metrics.page_transition = page_transition;
-    bg_metrics.page_metrics.key_event_count = 3;
-    bg_metrics.page_metrics.mouse_event_count = 42;
-    bg_metrics.page_metrics.num_reactivations = 5;
-    bg_metrics.page_metrics.touch_event_count = 10;
+    bg_metrics.key_event_count = 3;
+    bg_metrics.mouse_event_count = 42;
+    bg_metrics.num_reactivations = 5;
+    bg_metrics.touch_event_count = 10;
 
-    base::TimeDelta inactive_duration = base::TimeDelta::FromSeconds(5);
-
-    tab_ranker::TabFeatures bg_features = TabMetricsLogger::GetTabFeatures(
-        browser.get(), bg_metrics, inactive_duration);
+    tab_ranker::TabFeatures bg_features =
+        TabMetricsLogger::GetTabFeatures(bg_metrics, bg_contents).value();
     EXPECT_EQ(bg_features.has_before_unload_handler, false);
     EXPECT_EQ(bg_features.has_form_entry, false);
-    EXPECT_EQ(bg_features.host, "www.chromium.org");
+    EXPECT_EQ(bg_features.host, kChromiumDomain);
     EXPECT_EQ(bg_features.is_pinned, true);
     EXPECT_EQ(bg_features.key_event_count, 3);
     EXPECT_EQ(bg_features.mouse_event_count, 42);
@@ -195,8 +279,6 @@
     ASSERT_TRUE(bg_features.site_engagement_score.has_value());
     // Site engagement score should round down to the nearest 10.
     EXPECT_EQ(bg_features.site_engagement_score.value(), 90);
-    EXPECT_EQ(bg_features.time_from_backgrounded,
-              inactive_duration.InMilliseconds());
     EXPECT_EQ(bg_features.touch_event_count, 10);
     EXPECT_EQ(bg_features.was_recently_audible, false);
   }
@@ -213,8 +295,7 @@
   // Returns a new source_id associated with the test url.
   ukm::SourceId GetSourceId() {
     const ukm::SourceId source_id = ukm::UkmRecorder::GetNewSourceID();
-    test_ukm_recorder_.UpdateSourceURL(source_id,
-                                       GURL("https://www.chromium.org"));
+    test_ukm_recorder_.UpdateSourceURL(source_id, GURL(kChromiumUrl));
     return source_id;
   }
 
@@ -322,28 +403,8 @@
                             });
 }
 
-// Tests WindowFeatures generated by CreateWindowFeatures.
-class CreateWindowFeaturesTest : public ChromeRenderViewHostTestHarness {
- protected:
-  CreateWindowFeaturesTest() = default;
-  ~CreateWindowFeaturesTest() override = default;
-
-  // Adds a tab and simulates a basic navigation.
-  void AddTab(Browser* browser) {
-    content::WebContentsTester::For(
-        tab_activity_simulator_.AddWebContentsAndNavigate(
-            browser->tab_strip_model(), GURL(kTestUrl)))
-        ->TestSetIsLoading(false);
-  }
-
- private:
-  TabActivitySimulator tab_activity_simulator_;
-
-  DISALLOW_COPY_AND_ASSIGN(CreateWindowFeaturesTest);
-};
-
 // Tests CreateWindowFeatures of two browser windows.
-TEST_F(CreateWindowFeaturesTest, Basic) {
+TEST_F(TabMetricsLoggerTest, CreateWindowFeaturesTest) {
   Browser::CreateParams params(profile(), true);
   std::unique_ptr<Browser> browser =
       FakeBrowserWindow::CreateBrowserWithFakeWindowForParams(&params);
@@ -395,7 +456,7 @@
 }
 
 // Tests moving a tab between browser windows.
-TEST_F(CreateWindowFeaturesTest, MoveTabToOtherWindow) {
+TEST_F(TabMetricsLoggerTest, CreateWindowFeaturesTestMoveTabToOtherWindow) {
   Browser::CreateParams params(profile(), true);
   std::unique_ptr<Browser> starting_browser =
       FakeBrowserWindow::CreateBrowserWithFakeWindowForParams(&params);
@@ -443,7 +504,7 @@
 }
 
 // Tests replacing a tab.
-TEST_F(CreateWindowFeaturesTest, ReplaceTab) {
+TEST_F(TabMetricsLoggerTest, CreateWindowFeaturesTestReplaceTab) {
   Browser::CreateParams params(profile(), true);
   std::unique_ptr<Browser> browser =
       FakeBrowserWindow::CreateBrowserWithFakeWindowForParams(&params);
diff --git a/chrome/browser/resources/chromeos/login/screen_recommend_apps.js b/chrome/browser/resources/chromeos/login/screen_recommend_apps.js
index 9e1f9a2..4eb70a89 100644
--- a/chrome/browser/resources/chromeos/login/screen_recommend_apps.js
+++ b/chrome/browser/resources/chromeos/login/screen_recommend_apps.js
@@ -92,14 +92,20 @@
       // Hide the loading throbber and show the recommend app list.
       this.setThrobberVisible(false);
 
+      // Disable install button until the webview reports that some apps are
+      // selected.
+      $('recommend-apps-screen')
+          .getElement('recommend-apps-install-button')
+          .disabled = true;
+
       const appListView = this.getElement_('app-list-view');
       const subtitle = this.getElement_('subtitle');
       subtitle.innerText = loadTimeData.getStringF(
           'recommendAppsScreenDescription', appList.length);
       appListView.addEventListener('contentload', () => {
-        appListView.contentWindow.postMessage('initialMessage', '*');
-
         appListView.executeScript({file: 'recommend_app_list_view.js'}, () => {
+          appListView.contentWindow.postMessage('initialMessage', '*');
+
           appList.forEach(function(app, index) {
             let generateItemScript = 'generateContents("' + app.icon + '", "' +
                 app.name + '", "' + app.package_name + '");';
@@ -182,4 +188,4 @@
       $('recommend-apps-screen').hidden = visible;
     },
   };
-});
\ No newline at end of file
+});
diff --git a/chrome/browser/resources/settings/privacy_page/security_keys_subpage.html b/chrome/browser/resources/settings/privacy_page/security_keys_subpage.html
index 51277d22..496b5bf 100644
--- a/chrome/browser/resources/settings/privacy_page/security_keys_subpage.html
+++ b/chrome/browser/resources/settings/privacy_page/security_keys_subpage.html
@@ -14,7 +14,6 @@
 
     <cr-link-row
       id="setPINButton"
-      class="hr"
       label="$i18n{securityKeysSetPIN}"
       sub-label="$i18n{securityKeysSetPINDesc}"
       on-click="onSetPIN_"></cr-link-row>
diff --git a/chrome/browser/resources/welcome/onboarding_welcome/set_as_default/nux_set_as_default.js b/chrome/browser/resources/welcome/onboarding_welcome/set_as_default/nux_set_as_default.js
index bb8aa03..eb7ae332 100644
--- a/chrome/browser/resources/welcome/onboarding_welcome/set_as_default/nux_set_as_default.js
+++ b/chrome/browser/resources/welcome/onboarding_welcome/set_as_default/nux_set_as_default.js
@@ -86,6 +86,8 @@
   onDefaultBrowserChange_: function(status) {
     if (status.isDefault) {
       this.browserProxy_.recordSuccessfullySetDefault();
+      // Triggers toast in the containing welcome-app.
+      this.fire('default-browser-change');
       this.finished_();
       return;
     }
diff --git a/chrome/browser/resources/welcome/onboarding_welcome/welcome.html b/chrome/browser/resources/welcome/onboarding_welcome/welcome.html
index 74245cd..d4bb3e8 100644
--- a/chrome/browser/resources/welcome/onboarding_welcome/welcome.html
+++ b/chrome/browser/resources/welcome/onboarding_welcome/welcome.html
@@ -9,7 +9,7 @@
   </head>
   <body>
     <style>
-      html {
+      html[dark] {
         background: var(--md-background-color);
       }
     </style>
diff --git a/chrome/browser/resources/welcome/onboarding_welcome/welcome_app.html b/chrome/browser/resources/welcome/onboarding_welcome/welcome_app.html
index 5aeb85d4..ea2ce1e 100644
--- a/chrome/browser/resources/welcome/onboarding_welcome/welcome_app.html
+++ b/chrome/browser/resources/welcome/onboarding_welcome/welcome_app.html
@@ -1,5 +1,6 @@
 <link rel="import" href="chrome://resources/html/polymer.html">
 
+<link rel="import" href="chrome://resources/cr_elements/cr_toast/cr_toast.html">
 <link rel="import" href="chrome://resources/cr_elements/cr_view_manager/cr_view_manager.html">
 <link rel="import" href="chrome://resources/cr_elements/hidden_style_css.html">
 <link rel="import" href="chrome://resources/html/cr.html">
@@ -35,10 +36,17 @@
         right: initial;
         top: initial;
       }
+
+      cr-toast {
+        min-width: initial;
+      }
     </style>
     <cr-view-manager id="viewManager" hidden="[[!modulesInitialized_]]">
       <landing-view id="step-landing" slot="view" class="active"></landing-view>
     </cr-view-manager>
+    <cr-toast duration="3000">
+      <div>$i18n{defaultBrowserChanged}</div>
+    </cr-toast>
   </template>
   <script src="welcome_app.js"></script>
 </dom-module>
diff --git a/chrome/browser/resources/welcome/onboarding_welcome/welcome_app.js b/chrome/browser/resources/welcome/onboarding_welcome/welcome_app.js
index 1445968d..90e75c3 100644
--- a/chrome/browser/resources/welcome/onboarding_welcome/welcome_app.js
+++ b/chrome/browser/resources/welcome/onboarding_welcome/welcome_app.js
@@ -56,6 +56,10 @@
     },
   },
 
+  listeners: {
+    'default-browser-change': 'onDefaultBrowserChange_',
+  },
+
   /** @override */
   ready: function() {
     this.defaultCheckPromise_ = new PromiseResolver();
@@ -80,6 +84,11 @@
     nux.NuxSetAsDefaultProxyImpl.getInstance().requestDefaultBrowserState();
   },
 
+  /** @private */
+  onDefaultBrowserChange_: function() {
+    this.$$('cr-toast').show();
+  },
+
   /**
    * @param {welcome.Routes} route
    * @param {number} step
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index 532fb5e..7e4fa3a 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -1096,6 +1096,10 @@
       "uma_browsing_activity_observer.h",
       "unload_controller.cc",
       "unload_controller.h",
+      "views/intent_picker_bubble_view.cc",
+      "views/intent_picker_bubble_view.h",
+      "views/location_bar/intent_picker_view.cc",
+      "views/location_bar/intent_picker_view.h",
       "webui/app_launcher_login_handler.cc",
       "webui/app_launcher_login_handler.h",
       "webui/app_management/app_management_page_handler.cc",
@@ -1510,10 +1514,6 @@
       "views/frame/top_controls_slide_controller_chromeos.h",
       "views/ime_driver/input_method_bridge_chromeos.cc",
       "views/ime_driver/input_method_bridge_chromeos.h",
-      "views/intent_picker_bubble_view.cc",
-      "views/intent_picker_bubble_view.h",
-      "views/location_bar/intent_picker_view.cc",
-      "views/location_bar/intent_picker_view.h",
       "views/platform_keys_certificate_selector_chromeos.cc",
       "views/platform_keys_certificate_selector_chromeos.h",
       "views/profiles/profile_indicator_icon.cc",
diff --git a/chrome/browser/ui/browser_window.h b/chrome/browser/ui/browser_window.h
index d628d52..b109b526 100644
--- a/chrome/browser/ui/browser_window.h
+++ b/chrome/browser/ui/browser_window.h
@@ -31,9 +31,9 @@
 #include "chrome/browser/ui/in_product_help/in_product_help.h"
 #endif  // BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP)
 
-#if defined(OS_CHROMEOS)
+#if !defined(OS_ANDROID)
 #include "chrome/browser/apps/intent_helper/apps_navigation_types.h"
-#endif  // defined(OS_CHROMEOS)
+#endif  //  !defined(OS_ANDROID)
 
 class Browser;
 class DownloadShelf;
@@ -317,18 +317,18 @@
   // Shows the Update Recommended dialog box.
   virtual void ShowUpdateChromeDialog() = 0;
 
-#if defined(OS_CHROMEOS)
+#if !defined(OS_ANDROID)
   // Shows the intent picker bubble. |app_info| contains the app candidates to
   // display, |disable_stay_in_chrome| allows to disable 'Stay in Chrome' (used
   // for non-http(s) queries), and |callback| helps to continue the flow back to
   // either AppsNavigationThrottle or ArcExternalProtocolDialog capturing the
   // user's decision and storing UMA metrics.
   virtual void ShowIntentPickerBubble(
-      std::vector<chromeos::IntentPickerAppInfo> app_info,
+      std::vector<apps::IntentPickerAppInfo> app_info,
       bool disable_stay_in_chrome,
       IntentPickerResponse callback) = 0;
   virtual void SetIntentPickerViewVisibility(bool visible) = 0;
-#endif  // defined(OS_CHROMEOS)
+#endif  //  !defined(OS_ANDROID)
 
   // Shows the Bookmark bubble. |url| is the URL being bookmarked,
   // |already_bookmarked| is true if the url is already bookmarked.
diff --git a/chrome/browser/ui/input_method/input_method_engine.cc b/chrome/browser/ui/input_method/input_method_engine.cc
index c00eadd..fa487abf 100644
--- a/chrome/browser/ui/input_method/input_method_engine.cc
+++ b/chrome/browser/ui/input_method/input_method_engine.cc
@@ -107,6 +107,15 @@
   }
 }
 
+void InputMethodEngine::DeleteSurroundingTextToInputContext(
+    int offset,
+    size_t number_of_chars) {
+  ui::IMEInputContextHandlerInterface* input_context =
+      ui::IMEBridge::Get()->GetInputContextHandler();
+  if (input_context)
+    input_context->DeleteSurroundingText(offset, number_of_chars);
+}
+
 bool InputMethodEngine::SendKeyEvent(ui::KeyEvent* event,
                                      const std::string& code) {
   DCHECK(event);
diff --git a/chrome/browser/ui/input_method/input_method_engine.h b/chrome/browser/ui/input_method/input_method_engine.h
index 32197c72..29b3433 100644
--- a/chrome/browser/ui/input_method/input_method_engine.h
+++ b/chrome/browser/ui/input_method/input_method_engine.h
@@ -33,6 +33,8 @@
                          bool is_visible) override;
   void CommitTextToInputContext(int context_id,
                                 const std::string& text) override;
+  void DeleteSurroundingTextToInputContext(int offset,
+                                           size_t number_of_chars) override;
   bool SendKeyEvent(ui::KeyEvent* ui_event, const std::string& code) override;
   bool IsActive() const override;
 
diff --git a/chrome/browser/ui/input_method/input_method_engine_base.cc b/chrome/browser/ui/input_method/input_method_engine_base.cc
index acecc9b79..7d0ae02 100644
--- a/chrome/browser/ui/input_method/input_method_engine_base.cc
+++ b/chrome/browser/ui/input_method/input_method_engine_base.cc
@@ -211,9 +211,8 @@
 void InputMethodEngineBase::Disable() {
   std::string last_component_id{active_component_id_};
   active_component_id_.clear();
-  if (ui::IMEBridge::Get()->GetInputContextHandler())
-    ui::IMEBridge::Get()->GetInputContextHandler()->CommitText(
-        base::UTF16ToUTF8(composition_text_->text));
+  CommitTextToInputContext(context_id_,
+                           base::UTF16ToUTF8(composition_text_->text));
   composition_text_.reset(new ui::CompositionText());
   observer_->OnDeactivated(last_component_id);
 }
@@ -320,10 +319,7 @@
 
   // TODO(nona): Return false if there is ongoing composition.
 
-  ui::IMEInputContextHandlerInterface* input_context =
-      ui::IMEBridge::Get()->GetInputContextHandler();
-  if (input_context)
-    input_context->DeleteSurroundingText(offset, number_of_chars);
+  DeleteSurroundingTextToInputContext(offset, number_of_chars);
 
   return true;
 }
@@ -418,21 +414,14 @@
   handling_key_event_ = false;
   // When finish handling key event, take care of the unprocessed commitText
   // and setComposition calls.
-  ui::IMEInputContextHandlerInterface* input_context =
-      ui::IMEBridge::Get()->GetInputContextHandler();
   if (commit_text_changed_) {
-    if (input_context) {
-      input_context->CommitText(text_);
-    }
+    CommitTextToInputContext(context_id_, text_);
     text_ = "";
     commit_text_changed_ = false;
   }
 
   if (composition_changed_) {
-    if (input_context) {
-      input_context->UpdateCompositionText(
-          composition_, composition_.selection.start(), true);
-    }
+    UpdateComposition(composition_, composition_.selection.start(), true);
     composition_ = ui::CompositionText();
     composition_changed_ = false;
   }
diff --git a/chrome/browser/ui/input_method/input_method_engine_base.h b/chrome/browser/ui/input_method/input_method_engine_base.h
index 59dd38c..201716e 100644
--- a/chrome/browser/ui/input_method/input_method_engine_base.h
+++ b/chrome/browser/ui/input_method/input_method_engine_base.h
@@ -212,6 +212,9 @@
   // Notifies InputContextHanlder to commit |text|.
   virtual void CommitTextToInputContext(int context_id,
                                         const std::string& text) = 0;
+  // Notifies InputContextHandler to delete surrounding text.
+  virtual void DeleteSurroundingTextToInputContext(int offset,
+                                                   size_t number_of_chars) = 0;
   // Sends the key event to the window tree host.
   virtual bool SendKeyEvent(ui::KeyEvent* ui_event,
                             const std::string& code) = 0;
diff --git a/chrome/browser/ui/media_router/presentation_receiver_window_controller.cc b/chrome/browser/ui/media_router/presentation_receiver_window_controller.cc
index 1d592a44..1a5ce1d 100644
--- a/chrome/browser/ui/media_router/presentation_receiver_window_controller.cc
+++ b/chrome/browser/ui/media_router/presentation_receiver_window_controller.cc
@@ -190,9 +190,9 @@
 void PresentationReceiverWindowController::CanDownload(
     const GURL& url,
     const std::string& request_method,
-    const base::Callback<void(bool)>& callback) {
+    base::OnceCallback<void(bool)> callback) {
   // Local presentation pages are not allowed to download files.
-  callback.Run(false);
+  std::move(callback).Run(false);
 }
 
 bool PresentationReceiverWindowController::ShouldCreateWebContents(
diff --git a/chrome/browser/ui/media_router/presentation_receiver_window_controller.h b/chrome/browser/ui/media_router/presentation_receiver_window_controller.h
index 6c8115b..039725f 100644
--- a/chrome/browser/ui/media_router/presentation_receiver_window_controller.h
+++ b/chrome/browser/ui/media_router/presentation_receiver_window_controller.h
@@ -92,7 +92,7 @@
   bool ShouldFocusPageAfterCrash() final;
   void CanDownload(const GURL& url,
                    const std::string& request_method,
-                   const base::Callback<void(bool)>& callback) final;
+                   base::OnceCallback<void(bool)> callback) final;
   bool ShouldCreateWebContents(
       content::WebContents* web_contents,
       content::RenderFrameHost* opener,
diff --git a/chrome/browser/ui/views/autofill/local_card_migration_browsertest.cc b/chrome/browser/ui/views/autofill/local_card_migration_browsertest.cc
index 4ebeb46..d1a3dd0d 100644
--- a/chrome/browser/ui/views/autofill/local_card_migration_browsertest.cc
+++ b/chrome/browser/ui/views/autofill/local_card_migration_browsertest.cc
@@ -15,6 +15,7 @@
 #include "base/run_loop.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
+#include "build/build_config.h"
 #include "chrome/browser/autofill/autofill_uitest_util.h"
 #include "chrome/browser/autofill/personal_data_manager_factory.h"
 #include "chrome/browser/signin/identity_manager_factory.h"
@@ -35,8 +36,10 @@
 #include "chrome/browser/ui/views/autofill/local_card_migration_icon_view.h"
 #include "chrome/browser/ui/views/autofill/migratable_card_view.h"
 #include "chrome/browser/ui/views/autofill/save_card_bubble_views.h"
+#include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/location_bar/location_bar_view.h"
 #include "chrome/browser/ui/views/toolbar/toolbar_page_action_icon_container_view.h"
+#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
 #include "chrome/browser/web_data_service_factory.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/ui_test_utils.h"
@@ -980,8 +983,75 @@
           Bucket(AutofillMetrics::LOCAL_CARD_MIGRATION_BUBBLE_SHOWN, 1)));
 }
 
+#if defined(OS_MACOSX)
+// TODO(crbug.com/823543): Widget activation doesn't work on Mac.
+#define MAYBE_ActivateFirstInactiveBubbleForAccessibility \
+  DISABLED_ActivateFirstInactiveBubbleForAccessibility
+#else
+#define MAYBE_ActivateFirstInactiveBubbleForAccessibility \
+  ActivateFirstInactiveBubbleForAccessibility
+#endif
+IN_PROC_BROWSER_TEST_F(LocalCardMigrationBrowserTestForStatusChip,
+                       MAYBE_ActivateFirstInactiveBubbleForAccessibility) {
+  BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
+  ToolbarView* toolbar_view = browser_view->toolbar();
+  EXPECT_FALSE(toolbar_view->toolbar_page_action_container()
+                   ->ActivateFirstInactiveBubbleForAccessibility());
+
+  SaveLocalCard(kFirstCardNumber);
+  SaveLocalCard(kSecondCardNumber);
+  UseCardAndWaitForMigrationOffer(kFirstCardNumber);
+
+  // Ensures the bubble's widget is visible, but inactive. Active widgets are
+  // focused by accessibility, so not of concern.
+  views::Widget* widget = GetLocalCardMigrationOfferBubbleViews()->GetWidget();
+  widget->Deactivate();
+  widget->ShowInactive();
+  EXPECT_TRUE(widget->IsVisible());
+  EXPECT_FALSE(widget->IsActive());
+
+  EXPECT_TRUE(toolbar_view->toolbar_page_action_container()
+                  ->ActivateFirstInactiveBubbleForAccessibility());
+
+  // Ensure the bubble's widget refreshed appropriately.
+  EXPECT_TRUE(
+      GetLocalCardMigrationIconView(/*icon_in_status_chip=*/true)->visible());
+  EXPECT_TRUE(widget->IsVisible());
+  EXPECT_TRUE(widget->IsActive());
+}
+
+// Ensures the credit card icon updates its visibility when switching between
+// tabs.
+IN_PROC_BROWSER_TEST_F(LocalCardMigrationBrowserTestForStatusChip,
+                       IconAndBubbleVisibilityAfterTabSwitching) {
+  SaveLocalCard(kFirstCardNumber);
+  SaveLocalCard(kSecondCardNumber);
+  UseCardAndWaitForMigrationOffer(kFirstCardNumber);
+
+  // Ensures flow is triggered, and bubble and icon view are visible.
+  EXPECT_TRUE(
+      GetLocalCardMigrationIconView(/*icon_in_status_chip=*/true)->visible());
+  EXPECT_TRUE(GetLocalCardMigrationOfferBubbleViews()->visible());
+
+  AddTabAtIndex(1, GURL("http://example.com/"), ui::PAGE_TRANSITION_TYPED);
+  TabStripModel* tab_model = browser()->tab_strip_model();
+  tab_model->ActivateTabAt(1, {TabStripModel::GestureType::kOther});
+
+  // Ensures bubble and icon go away if user navigates to another tab.
+  EXPECT_FALSE(
+      GetLocalCardMigrationIconView(/*icon_in_status_chip=*/true)->visible());
+  EXPECT_FALSE(GetLocalCardMigrationOfferBubbleViews());
+
+  tab_model->ActivateTabAt(0, {TabStripModel::GestureType::kOther});
+
+  // If the user navigates back, shows only the icon not the bubble.
+  EXPECT_TRUE(
+      GetLocalCardMigrationIconView(/*icon_in_status_chip=*/true)->visible());
+  EXPECT_FALSE(GetLocalCardMigrationOfferBubbleViews());
+}
+
 // TODO(crbug.com/897998):
-// - Update test set-up and add navagation tests.
+// - Update test set-up and add navigation tests.
 // - Add more tests for feedback dialog.
 
 }  // namespace autofill
diff --git a/chrome/browser/ui/views/autofill/save_card_bubble_views_browsertest.cc b/chrome/browser/ui/views/autofill/save_card_bubble_views_browsertest.cc
index 2e03198..4a6393d4c 100644
--- a/chrome/browser/ui/views/autofill/save_card_bubble_views_browsertest.cc
+++ b/chrome/browser/ui/views/autofill/save_card_bubble_views_browsertest.cc
@@ -28,8 +28,10 @@
 #include "chrome/browser/ui/views/autofill/dialog_view_ids.h"
 #include "chrome/browser/ui/views/autofill/save_card_bubble_views.h"
 #include "chrome/browser/ui/views/autofill/save_card_icon_view.h"
+#include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/location_bar/location_bar_view.h"
 #include "chrome/browser/ui/views/toolbar/toolbar_page_action_icon_container_view.h"
+#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/autofill/content/browser/content_autofill_driver.h"
@@ -2779,4 +2781,69 @@
   EXPECT_TRUE(GetSaveCardBubbleViews()->visible());
 }
 
+#if defined(OS_MACOSX)
+// TODO(crbug.com/823543): Widget activation doesn't work on Mac.
+#define MAYBE_ActivateFirstInactiveBubbleForAccessibility \
+  DISABLED_ActivateFirstInactiveBubbleForAccessibility
+#else
+#define MAYBE_ActivateFirstInactiveBubbleForAccessibility \
+  ActivateFirstInactiveBubbleForAccessibility
+#endif
+IN_PROC_BROWSER_TEST_F(SaveCardBubbleViewsFullFormBrowserTestForStatusChip,
+                       MAYBE_ActivateFirstInactiveBubbleForAccessibility) {
+  BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
+  ToolbarView* toolbar_view = browser_view->toolbar();
+  EXPECT_FALSE(toolbar_view->toolbar_page_action_container()
+                   ->ActivateFirstInactiveBubbleForAccessibility());
+
+  ResetEventWaiterForSequence({DialogEvent::OFFERED_LOCAL_SAVE});
+  NavigateTo(kCreditCardUploadForm);
+  FillAndSubmitForm();
+  WaitForObservedEvent();
+
+  // Ensures the bubble's widget is visible, but inactive. Active widgets are
+  // focused by accessibility, so not of concern.
+  views::Widget* widget = GetSaveCardBubbleViews()->GetWidget();
+  widget->Deactivate();
+  widget->ShowInactive();
+  EXPECT_TRUE(widget->IsVisible());
+  EXPECT_FALSE(widget->IsActive());
+
+  EXPECT_TRUE(toolbar_view->toolbar_page_action_container()
+                  ->ActivateFirstInactiveBubbleForAccessibility());
+
+  // Ensure the bubble's widget refreshed appropriately.
+  EXPECT_TRUE(GetSaveCardIconView()->visible());
+  EXPECT_TRUE(widget->IsVisible());
+  EXPECT_TRUE(widget->IsActive());
+}
+
+// Ensures the credit card icon updates its visibility when switching between
+// tabs.
+IN_PROC_BROWSER_TEST_F(SaveCardBubbleViewsFullFormBrowserTestForStatusChip,
+                       IconAndBubbleVisibilityAfterTabSwitching) {
+  ResetEventWaiterForSequence({DialogEvent::OFFERED_LOCAL_SAVE});
+  NavigateTo(kCreditCardUploadForm);
+  FillAndSubmitForm();
+  WaitForObservedEvent();
+
+  // Ensures flow is triggered, and bubble and icon view are visible.
+  EXPECT_TRUE(GetSaveCardIconView()->visible());
+  EXPECT_TRUE(GetSaveCardBubbleViews()->visible());
+
+  AddTabAtIndex(1, GURL("http://example.com/"), ui::PAGE_TRANSITION_TYPED);
+  TabStripModel* tab_model = browser()->tab_strip_model();
+  tab_model->ActivateTabAt(1, {TabStripModel::GestureType::kOther});
+
+  // Ensures bubble and icon go away if user navigates to another tab.
+  EXPECT_FALSE(GetSaveCardIconView()->visible());
+  EXPECT_FALSE(GetSaveCardBubbleViews());
+
+  tab_model->ActivateTabAt(0, {TabStripModel::GestureType::kOther});
+
+  // If the user navigates back, shows only the icon not the bubble.
+  EXPECT_TRUE(GetSaveCardIconView()->visible());
+  EXPECT_FALSE(GetSaveCardBubbleViews());
+}
+
 }  // namespace autofill
diff --git a/chrome/browser/ui/views/collected_cookies_views.cc b/chrome/browser/ui/views/collected_cookies_views.cc
index 8519ed1..e1b1dee 100644
--- a/chrome/browser/ui/views/collected_cookies_views.cc
+++ b/chrome/browser/ui/views/collected_cookies_views.cc
@@ -402,10 +402,10 @@
 
   // Add margin above the content. The left, right, and bottom margins are added
   // by the content itself.
-  set_margins(
+  SetBorder(views::CreateEmptyBorder(
       gfx::Insets(provider->GetDistanceMetric(
                       views::DISTANCE_DIALOG_CONTENT_MARGIN_TOP_CONTROL),
-                  0, 0, 0));
+                  0, 0, 0)));
 
   const int single_column_layout_id = 0;
   views::ColumnSet* column_set = layout->AddColumnSet(single_column_layout_id);
diff --git a/chrome/browser/ui/views/extensions/extensions_menu_view.cc b/chrome/browser/ui/views/extensions/extensions_menu_view.cc
index 2c7ca38..a4cda46 100644
--- a/chrome/browser/ui/views/extensions/extensions_menu_view.cc
+++ b/chrome/browser/ui/views/extensions/extensions_menu_view.cc
@@ -4,17 +4,52 @@
 
 #include "chrome/browser/ui/views/extensions/extensions_menu_view.h"
 
+#include "base/memory/ptr_util.h"
+#include "chrome/app/vector_icons/vector_icons.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/chrome_pages.h"
 #include "chrome/browser/ui/toolbar/toolbar_action_view_controller.h"
 #include "chrome/browser/ui/views/chrome_layout_provider.h"
 #include "chrome/browser/ui/views/extensions/extensions_menu_button.h"
 #include "chrome/grit/generated_resources.h"
+#include "third_party/skia/include/core/SkPath.h"
 #include "ui/base/l10n/l10n_util.h"
+#include "ui/views/controls/button/image_button.h"
+#include "ui/views/controls/button/image_button_factory.h"
 #include "ui/views/layout/box_layout.h"
+#include "ui/views/layout/flex_layout.h"
+#include "ui/views/view_class_properties.h"
 
 namespace {
 ExtensionsMenuView* g_extensions_dialog = nullptr;
+
+constexpr int EXTENSIONS_SETTINGS_ID = 42;
+
+std::unique_ptr<views::View> CreateHeaderView(const base::string16& title) {
+  auto container = std::make_unique<views::View>();
+
+  auto* layout_manager =
+      container->SetLayoutManager(std::make_unique<views::FlexLayout>());
+  layout_manager->SetOrientation(views::LayoutOrientation::kHorizontal)
+      .SetCrossAxisAlignment(views::LayoutAlignment::kCenter);
+
+  gfx::Insets header_insets =
+      ChromeLayoutProvider::Get()->GetInsetsMetric(views::INSETS_DIALOG);
+  container->SetProperty(views::kMarginsKey, new gfx::Insets(header_insets));
+
+  views::Label* title_label =
+      new views::Label(title, views::style::CONTEXT_DIALOG_TITLE);
+  title_label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
+  title_label->SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
+
+  container->AddChildView(title_label);
+  layout_manager->SetFlexForView(title_label,
+                                 views::FlexSpecification::ForSizeRule(
+                                     views::MinimumFlexSizeRule::kPreferred,
+                                     views::MaximumFlexSizeRule::kUnbounded));
+  return container;
+}
 }  // namespace
 
 ExtensionsMenuView::ExtensionsMenuView(views::View* anchor_view,
@@ -40,6 +75,13 @@
   g_extensions_dialog = nullptr;
 }
 
+void ExtensionsMenuView::ButtonPressed(views::Button* sender,
+                                       const ui::Event& event) {
+  if (sender->id() != EXTENSIONS_SETTINGS_ID)
+    return;
+  chrome::ShowExtensions(browser_, std::string());
+}
+
 base::string16 ExtensionsMenuView::GetAccessibleWindowTitle() const {
   // TODO(pbos): Revisit this when subpanes exist so that the title read by a11y
   // tools are in sync with the current visuals.
@@ -66,10 +108,15 @@
 }
 
 void ExtensionsMenuView::Repopulate() {
-  // TODO(pbos): Add a header that displays the menu title. This cannot use
-  // ::GetWindowTitle() as we need it to belong to the displayed panel and not
-  // the BubbleFrameView.
   RemoveAllChildViews(true);
+
+  auto header =
+      CreateHeaderView(l10n_util::GetStringUTF16(IDS_EXTENSIONS_MENU_TITLE));
+  header->AddChildView(CreateImageButtonForHeader(
+      kSettingsIcon, EXTENSIONS_SETTINGS_ID,
+      l10n_util::GetStringUTF16(IDS_EXTENSIONS_MENU_SETTINGS_TOOLTIP)));
+  AddChildView(std::move(header));
+
   for (auto action_id : model_->action_ids()) {
     AddChildView(std::make_unique<ExtensionsMenuButton>(
         browser_, model_->CreateActionForId(browser_, nullptr, action_id)));
@@ -137,3 +184,25 @@
 ExtensionsMenuView* ExtensionsMenuView::GetExtensionsMenuViewForTesting() {
   return g_extensions_dialog;
 }
+
+std::unique_ptr<views::ImageButton>
+ExtensionsMenuView::CreateImageButtonForHeader(const gfx::VectorIcon& icon,
+                                               int id,
+                                               const base::string16& tooltip) {
+  views::ImageButton* image_button = views::CreateVectorImageButton(this);
+  views::SetImageFromVectorIconWithColor(
+      image_button, icon,
+      GetNativeTheme()->SystemDarkModeEnabled()
+          ? SkColorSetA(SK_ColorWHITE, 0xDD)
+          : gfx::kGoogleGrey700);
+  image_button->set_id(id);
+  image_button->SetTooltipText(tooltip);
+  image_button->SizeToPreferredSize();
+
+  // Let the settings button use a circular inkdrop shape.
+  auto highlight_path = std::make_unique<SkPath>();
+  highlight_path->addOval(gfx::RectToSkRect(gfx::Rect(image_button->size())));
+  image_button->SetProperty(views::kHighlightPathKey, highlight_path.release());
+
+  return base::WrapUnique<views::ImageButton>(image_button);
+}
diff --git a/chrome/browser/ui/views/extensions/extensions_menu_view.h b/chrome/browser/ui/views/extensions/extensions_menu_view.h
index 4dea9d4..ec99a5cf 100644
--- a/chrome/browser/ui/views/extensions/extensions_menu_view.h
+++ b/chrome/browser/ui/views/extensions/extensions_menu_view.h
@@ -5,17 +5,25 @@
 #ifndef CHROME_BROWSER_UI_VIEWS_EXTENSIONS_EXTENSIONS_MENU_VIEW_H_
 #define CHROME_BROWSER_UI_VIEWS_EXTENSIONS_EXTENSIONS_MENU_VIEW_H_
 
+#include <memory>
+
 #include "chrome/browser/ui/toolbar/toolbar_actions_model.h"
 #include "ui/views/bubble/bubble_dialog_delegate_view.h"
+#include "ui/views/controls/button/button.h"
+
+namespace gfx {
+struct VectorIcon;
+}  // namespace gfx
 
 namespace views {
-class View;
+class ImageButton;
 }  // namespace views
 
 // This bubble view displays a list of user extensions.
 // TODO(pbos): Once there's more functionality in here (getting to
 // chrome://extensions, pinning, extension settings), update this comment.
-class ExtensionsMenuView : public views::BubbleDialogDelegateView,
+class ExtensionsMenuView : public views::ButtonListener,
+                           public views::BubbleDialogDelegateView,
                            public ToolbarActionsModel::Observer {
  public:
   ExtensionsMenuView(views::View* anchor_view, Browser* browser);
@@ -26,6 +34,9 @@
   static void Hide();
   static ExtensionsMenuView* GetExtensionsMenuViewForTesting();
 
+  // views::ButtonListener:
+  void ButtonPressed(views::Button* sender, const ui::Event& event) override;
+
   // views::BubbleDialogDelegateView:
   base::string16 GetAccessibleWindowTitle() const override;
   bool AcceleratorPressed(const ui::Accelerator& accelerator) override;
@@ -49,6 +60,11 @@
  private:
   void Repopulate();
 
+  std::unique_ptr<views::ImageButton> CreateImageButtonForHeader(
+      const gfx::VectorIcon& icon,
+      int id,
+      const base::string16& tooltip);
+
   Browser* const browser_;
   ToolbarActionsModel* const model_;
   ScopedObserver<ToolbarActionsModel, ToolbarActionsModel::Observer>
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_mac.mm b/chrome/browser/ui/views/frame/browser_non_client_frame_view_mac.mm
index 8bc61a2..740b04a 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_mac.mm
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_mac.mm
@@ -37,6 +37,14 @@
 constexpr int kFramePaddingLeft = 75;
 constexpr double kTitlePaddingWidthFraction = 0.1;
 
+FullscreenToolbarStyle GetUserPreferredToolbarStyle(bool always_show) {
+  // In Kiosk mode, we don't show top Chrome UI.
+  if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode))
+    return FullscreenToolbarStyle::TOOLBAR_NONE;
+  return always_show ? FullscreenToolbarStyle::TOOLBAR_PRESENT
+                     : FullscreenToolbarStyle::TOOLBAR_HIDDEN;
+}
+
 }  // namespace
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -55,9 +63,8 @@
         [[FullscreenToolbarControllerViews alloc]
             initWithBrowserView:browser_view]);
     [fullscreen_toolbar_controller_
-        setToolbarStyle:*show_fullscreen_toolbar_
-                            ? FullscreenToolbarStyle::TOOLBAR_PRESENT
-                            : FullscreenToolbarStyle::TOOLBAR_HIDDEN];
+        setToolbarStyle:GetUserPreferredToolbarStyle(
+                            *show_fullscreen_toolbar_)];
   }
 
   if (browser_view->IsBrowserTypeHostedApp()) {
@@ -184,9 +191,7 @@
       needs_check_tab_fullscreen) {
     new_style = FullscreenToolbarStyle::TOOLBAR_NONE;
   } else {
-    new_style = *show_fullscreen_toolbar_
-                    ? FullscreenToolbarStyle::TOOLBAR_PRESENT
-                    : FullscreenToolbarStyle::TOOLBAR_HIDDEN;
+    new_style = GetUserPreferredToolbarStyle(*show_fullscreen_toolbar_);
   }
   [fullscreen_toolbar_controller_ setToolbarStyle:new_style];
 
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc
index c3b2fa20..e60b53e 100644
--- a/chrome/browser/ui/views/frame/browser_view.cc
+++ b/chrome/browser/ui/views/frame/browser_view.cc
@@ -91,6 +91,7 @@
 #include "chrome/browser/ui/views/hats/hats_bubble_view.h"
 #include "chrome/browser/ui/views/ime/ime_warning_bubble_view.h"
 #include "chrome/browser/ui/views/infobars/infobar_container_view.h"
+#include "chrome/browser/ui/views/location_bar/intent_picker_view.h"
 #include "chrome/browser/ui/views/location_bar/location_bar_view.h"
 #include "chrome/browser/ui/views/location_bar/star_view.h"
 #include "chrome/browser/ui/views/omnibox/omnibox_view_views.h"
@@ -169,7 +170,6 @@
 #include "chrome/browser/ui/ash/ash_util.h"
 #include "chrome/browser/ui/ash/window_properties.h"
 #include "chrome/browser/ui/views/frame/top_controls_slide_controller_chromeos.h"
-#include "chrome/browser/ui/views/location_bar/intent_picker_view.h"
 #include "chrome/grit/chrome_unscaled_resources.h"
 #include "ui/base/ui_base_features.h"
 #else
@@ -1205,6 +1205,12 @@
   if (GetLocationBarView()->ActivateFirstInactiveBubbleForAccessibility())
     return;
 
+  if (toolbar_ && toolbar_->toolbar_page_action_container() &&
+      toolbar_->toolbar_page_action_container()
+          ->ActivateFirstInactiveBubbleForAccessibility()) {
+    return;
+  }
+
   if (infobar_container_->child_count() > 0)
     infobar_container_->SetPaneFocusAndFocusDefault();
 }
@@ -1293,7 +1299,6 @@
   UpdateRecommendedMessageBox::Show(GetNativeWindow());
 }
 
-#if defined(OS_CHROMEOS)
 void BrowserView::ShowIntentPickerBubble(
     std::vector<IntentPickerBubbleView::AppInfo> app_info,
     bool disable_stay_in_chrome,
@@ -1313,7 +1318,6 @@
     location_bar->Layout();
   }
 }
-#endif  // defined(OS_CHROMEOS)
 
 void BrowserView::ShowBookmarkBubble(const GURL& url, bool already_bookmarked) {
   toolbar_->ShowBookmarkBubble(url, already_bookmarked,
diff --git a/chrome/browser/ui/views/frame/browser_view.h b/chrome/browser/ui/views/frame/browser_view.h
index bbe01ee..9cf89c2 100644
--- a/chrome/browser/ui/views/frame/browser_view.h
+++ b/chrome/browser/ui/views/frame/browser_view.h
@@ -33,6 +33,7 @@
 #include "chrome/browser/ui/views/frame/immersive_mode_controller.h"
 #include "chrome/browser/ui/views/frame/top_controls_slide_controller.h"
 #include "chrome/browser/ui/views/frame/web_contents_close_handler.h"
+#include "chrome/browser/ui/views/intent_picker_bubble_view.h"
 #include "chrome/browser/ui/views/load_complete_listener.h"
 #include "chrome/browser/ui/views/tabs/tab.h"
 #include "chrome/browser/ui/views/tabs/tab_renderer_data.h"
@@ -47,10 +48,6 @@
 #include "ui/views/widget/widget_observer.h"
 #include "ui/views/window/client_view.h"
 
-#if defined(OS_CHROMEOS)
-#include "chrome/browser/ui/views/intent_picker_bubble_view.h"
-#endif  // defined(OS_CHROMEOS)
-
 #if BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP)
 #include "chrome/browser/ui/views/feature_promos/reopen_tab_promo_controller.h"
 #endif  // BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP)
@@ -364,13 +361,11 @@
   bool IsToolbarVisible() const override;
   bool IsToolbarShowing() const override;
   void ShowUpdateChromeDialog() override;
-#if defined(OS_CHROMEOS)
   void ShowIntentPickerBubble(
       std::vector<IntentPickerBubbleView::AppInfo> app_info,
       bool disable_stay_in_chrome,
       IntentPickerResponse callback) override;
   void SetIntentPickerViewVisibility(bool visible) override;
-#endif  // defined(OS_CHROMEOS)
   void ShowBookmarkBubble(const GURL& url, bool already_bookmarked) override;
   autofill::SaveCardBubbleView* ShowSaveCreditCardBubble(
       content::WebContents* contents,
diff --git a/chrome/browser/ui/views/intent_picker_bubble_view.cc b/chrome/browser/ui/views/intent_picker_bubble_view.cc
index 7872380..564402e 100644
--- a/chrome/browser/ui/views/intent_picker_bubble_view.cc
+++ b/chrome/browser/ui/views/intent_picker_bubble_view.cc
@@ -10,13 +10,13 @@
 #include "base/strings/string_piece.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/apps/intent_helper/apps_navigation_throttle.h"
+#include "chrome/browser/platform_util.h"
 #include "chrome/browser/ui/browser_dialogs.h"
 #include "chrome/browser/ui/browser_finder.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/toolbar/toolbar_ink_drop_util.h"
 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
 #include "chrome/grit/generated_resources.h"
-#include "components/arc/intent_helper/arc_intent_helper_bridge.h"
 #include "content/public/browser/navigation_handle.h"
 #include "third_party/skia/include/core/SkColor.h"
 #include "ui/base/l10n/l10n_util.h"
@@ -33,13 +33,16 @@
 #include "ui/views/layout/grid_layout.h"
 #include "ui/views/window/dialog_client_view.h"
 
+#if defined(OS_CHROMEOS)
+#include "components/arc/intent_helper/arc_intent_helper_bridge.h"
+#endif  // defined(OS_CHROMEOS)
+
 namespace {
 
 // TODO(djacobo): Replace this limit to correctly reflect the UI mocks, which
 // now instead of limiting the results to 3.5 will allow whatever fits in 256pt.
 // Using |kMaxAppResults| as a measure of how many apps we want to show.
-constexpr size_t kMaxAppResults =
-    chromeos::AppsNavigationThrottle::kMaxAppResults;
+constexpr size_t kMaxAppResults = apps::AppsNavigationThrottle::kMaxAppResults;
 // Main components sizes
 constexpr int kTitlePadding = 16;
 constexpr int kRowHeight = 32;
@@ -129,7 +132,7 @@
   if (!browser || !BrowserView::GetBrowserViewForBrowser(browser)) {
     std::move(intent_picker_cb)
         .Run(kInvalidLaunchName, apps::mojom::AppType::kUnknown,
-             chromeos::IntentPickerCloseReason::ERROR, false);
+             apps::IntentPickerCloseReason::PICKER_ERROR, false);
     return nullptr;
   }
   BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser);
@@ -142,7 +145,8 @@
     intent_picker_bubble_->SetAnchorView(anchor_view);
     intent_picker_bubble_->SetArrow(views::BubbleBorder::TOP_RIGHT);
   } else {
-    intent_picker_bubble_->set_parent_window(browser_view->GetNativeWindow());
+    intent_picker_bubble_->set_parent_window(
+        platform_util::GetViewForWindow(browser_view->GetNativeWindow()));
     // Using the TopContainerBoundsInScreen Rect to specify an anchor for the
     // the UI. Rect allow us to set the coordinates(x,y), the width and height
     // for the new Rectangle.
@@ -201,15 +205,20 @@
 bool IntentPickerBubbleView::Accept() {
   RunCallback(app_info_[selected_app_tag_].launch_name,
               app_info_[selected_app_tag_].type,
-              chromeos::IntentPickerCloseReason::OPEN_APP,
+              apps::IntentPickerCloseReason::OPEN_APP,
               remember_selection_checkbox_->checked());
   return true;
 }
 
 bool IntentPickerBubbleView::Cancel() {
-  RunCallback(arc::ArcIntentHelperBridge::kArcIntentHelperPackageName,
-              apps::mojom::AppType::kUnknown,
-              chromeos::IntentPickerCloseReason::STAY_IN_CHROME,
+  const char* launch_name =
+#if defined(OS_CHROMEOS)
+      arc::ArcIntentHelperBridge::kArcIntentHelperPackageName;
+#else
+      kInvalidLaunchName;
+#endif
+  RunCallback(launch_name, apps::mojom::AppType::kUnknown,
+              apps::IntentPickerCloseReason::STAY_IN_CHROME,
               remember_selection_checkbox_->checked());
   return true;
 }
@@ -218,7 +227,7 @@
   // Whenever closing the bubble without pressing |Just once| or |Always| we
   // need to report back that the user didn't select anything.
   RunCallback(kInvalidLaunchName, apps::mojom::AppType::kUnknown,
-              chromeos::IntentPickerCloseReason::DIALOG_DEACTIVATED, false);
+              apps::IntentPickerCloseReason::DIALOG_DEACTIVATED, false);
   return true;
 }
 
@@ -238,11 +247,13 @@
   size_t i = 0;
   size_t to_erase = app_info_.size();
   for (const auto& app_info : app_info_) {
+#if defined(OS_CHROMEOS)
     if (arc::ArcIntentHelperBridge::IsIntentHelperPackage(
             app_info.launch_name)) {
       to_erase = i;
       continue;
     }
+#endif  // defined(OS_CHROMEOS)
     IntentPickerLabelButton* app_button = new IntentPickerLabelButton(
         this, &app_info.icon, app_info.launch_name, app_info.display_name);
     app_button->set_tag(i);
@@ -343,7 +354,7 @@
 // the callback so the caller can Resume the navigation.
 void IntentPickerBubbleView::OnWidgetDestroying(views::Widget* widget) {
   RunCallback(kInvalidLaunchName, apps::mojom::AppType::kUnknown,
-              chromeos::IntentPickerCloseReason::DIALOG_DEACTIVATED, false);
+              apps::IntentPickerCloseReason::DIALOG_DEACTIVATED, false);
 }
 
 void IntentPickerBubbleView::ButtonPressed(views::Button* sender,
@@ -398,7 +409,7 @@
 void IntentPickerBubbleView::RunCallback(
     const std::string& launch_name,
     apps::mojom::AppType app_type,
-    chromeos::IntentPickerCloseReason close_reason,
+    apps::IntentPickerCloseReason close_reason,
     bool should_persist) {
   if (!intent_picker_cb_.is_null()) {
     // Calling Run() will make |intent_picker_cb_| null.
diff --git a/chrome/browser/ui/views/intent_picker_bubble_view.h b/chrome/browser/ui/views/intent_picker_bubble_view.h
index e5556ca..4e493a3 100644
--- a/chrome/browser/ui/views/intent_picker_bubble_view.h
+++ b/chrome/browser/ui/views/intent_picker_bubble_view.h
@@ -58,7 +58,7 @@
 class IntentPickerBubbleView : public LocationBarBubbleDelegateView,
                                public views::ButtonListener {
  public:
-  using AppInfo = chromeos::IntentPickerAppInfo;
+  using AppInfo = apps::IntentPickerAppInfo;
 
   ~IntentPickerBubbleView() override;
   static views::Widget* ShowBubble(views::View* anchor_view,
@@ -126,7 +126,7 @@
   IntentPickerLabelButton* GetIntentPickerLabelButtonAt(size_t index);
   void RunCallback(const std::string& launch_name,
                    apps::mojom::AppType app_type,
-                   chromeos::IntentPickerCloseReason close_reason,
+                   apps::IntentPickerCloseReason close_reason,
                    bool should_persist);
 
   // Returns true if this picker has candidates for the user to choose from, and
diff --git a/chrome/browser/ui/views/intent_picker_bubble_view_browsertest.cc b/chrome/browser/ui/views/intent_picker_bubble_view_browsertest.cc
index 74403a4..d45c8ca 100644
--- a/chrome/browser/ui/views/intent_picker_bubble_view_browsertest.cc
+++ b/chrome/browser/ui/views/intent_picker_bubble_view_browsertest.cc
@@ -15,12 +15,12 @@
       public ::testing::WithParamInterface<std::string> {
  public:
   void SetUp() override {
-    extensions::test::BookmarkAppNavigationBrowserTest::SetUp();
-
     // Link capturing disables showing the intent picker.
     scoped_feature_list_.InitWithFeatures(
-        {features::kDesktopPWAWindowing},
+        {features::kDesktopPWAWindowing, features::kIntentPicker},
         {features::kDesktopPWAsLinkCapturing});
+
+    extensions::test::BookmarkAppNavigationBrowserTest::SetUp();
   }
 
  private:
diff --git a/chrome/browser/ui/views/intent_picker_bubble_view_unittest.cc b/chrome/browser/ui/views/intent_picker_bubble_view_unittest.cc
index 6748b98..097ada5 100644
--- a/chrome/browser/ui/views/intent_picker_bubble_view_unittest.cc
+++ b/chrome/browser/ui/views/intent_picker_bubble_view_unittest.cc
@@ -23,7 +23,7 @@
 #include "ui/views/resources/grit/views_resources.h"
 #include "url/gurl.h"
 
-using AppInfo = chromeos::IntentPickerAppInfo;
+using AppInfo = apps::IntentPickerAppInfo;
 using content::WebContents;
 using content::OpenURLParams;
 using content::Referrer;
@@ -89,7 +89,7 @@
   // Dummy method to be called upon bubble closing.
   void OnBubbleClosed(const std::string& selected_app_package,
                       apps::mojom::AppType app_type,
-                      chromeos::IntentPickerCloseReason close_reason,
+                      apps::IntentPickerCloseReason close_reason,
                       bool should_persist) {}
 
   std::unique_ptr<IntentPickerBubbleView> bubble_;
diff --git a/chrome/browser/ui/views/location_bar/intent_picker_view.cc b/chrome/browser/ui/views/location_bar/intent_picker_view.cc
index 88b2da2..b9daf2a 100644
--- a/chrome/browser/ui/views/location_bar/intent_picker_view.cc
+++ b/chrome/browser/ui/views/location_bar/intent_picker_view.cc
@@ -15,6 +15,10 @@
 #include "components/omnibox/browser/vector_icons.h"
 #include "ui/base/l10n/l10n_util.h"
 
+#if defined(OS_CHROMEOS)
+#include "chrome/browser/chromeos/apps/intent_helper/chromeos_apps_navigation_throttle.h"
+#endif  //  defined(OS_CHROMEOS)
+
 namespace content {
 class WebContents;
 }
@@ -24,7 +28,7 @@
     : PageActionIconView(nullptr, 0, delegate), browser_(browser) {
   if (browser_) {
     intent_picker_controller_ =
-        std::make_unique<arc::IntentPickerController>(browser_);
+        std::make_unique<apps::IntentPickerController>(browser_);
   }
 }
 
@@ -47,9 +51,13 @@
     content::WebContents* web_contents =
         browser_->tab_strip_model()->GetActiveWebContents();
     const GURL& url = chrome::GetURLToBookmark(web_contents);
-
-    chromeos::AppsNavigationThrottle::ShowIntentPickerBubble(
+#if defined(OS_CHROMEOS)
+    chromeos::ChromeOsAppsNavigationThrottle::ShowIntentPickerBubble(
         web_contents, /*ui_auto_display_service=*/nullptr, url);
+#else
+    apps::AppsNavigationThrottle::ShowIntentPickerBubble(
+        web_contents, /*ui_auto_display_service=*/nullptr, url);
+#endif  //  defined(OS_CHROMEOS)
   } else {
     SetVisible(false);
   }
diff --git a/chrome/browser/ui/views/location_bar/intent_picker_view.h b/chrome/browser/ui/views/location_bar/intent_picker_view.h
index 60adf1d..758e4e7 100644
--- a/chrome/browser/ui/views/location_bar/intent_picker_view.h
+++ b/chrome/browser/ui/views/location_bar/intent_picker_view.h
@@ -10,9 +10,9 @@
 #include "base/macros.h"
 #include "chrome/browser/ui/views/page_action/page_action_icon_view.h"
 
-namespace arc {
+namespace apps {
 class IntentPickerController;
-}  // namespace arc
+}  // namespace apps
 
 class Browser;
 
@@ -35,7 +35,7 @@
  private:
   bool IsIncognitoMode();
 
-  std::unique_ptr<arc::IntentPickerController> intent_picker_controller_;
+  std::unique_ptr<apps::IntentPickerController> intent_picker_controller_;
 
   Browser* const browser_;
 
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc
index 1c925da..a20a1a9 100644
--- a/chrome/browser/ui/views/location_bar/location_bar_view.cc
+++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc
@@ -48,6 +48,7 @@
 #include "chrome/browser/ui/views/chrome_typography.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/location_bar/content_setting_image_view.h"
+#include "chrome/browser/ui/views/location_bar/intent_picker_view.h"
 #include "chrome/browser/ui/views/location_bar/keyword_hint_view.h"
 #include "chrome/browser/ui/views/location_bar/location_bar_layout.h"
 #include "chrome/browser/ui/views/location_bar/location_icon_view.h"
@@ -111,10 +112,6 @@
 #include "ui/views/controls/label.h"
 #include "ui/views/widget/widget.h"
 
-#if defined(OS_CHROMEOS)
-#include "chrome/browser/ui/views/location_bar/intent_picker_view.h"
-#endif
-
 namespace {
 
 // This feature shows the full URL when the user focuses the omnibox via
@@ -255,10 +252,8 @@
       page_action_icons_.push_back(local_card_migration_icon_view_);
     }
 
-#if defined(OS_CHROMEOS)
     page_action_icons_.push_back(intent_picker_view_ =
                                      new IntentPickerView(browser_, this));
-#endif
 
     page_action_icons_.push_back(
         star_view_ = new StarView(command_updater(), browser_, this));
@@ -547,10 +542,8 @@
   if (star_view_)
     add_trailing_decoration(star_view_);
   add_trailing_decoration(page_action_icon_container_view_);
-#if defined(OS_CHROMEOS)
   if (intent_picker_view_)
     add_trailing_decoration(intent_picker_view_);
-#endif
   if (save_credit_card_icon_view_)
     add_trailing_decoration(save_credit_card_icon_view_);
   if (local_card_migration_icon_view_)
@@ -775,9 +768,7 @@
       IncrementalMinimumWidth(save_credit_card_icon_view_) +
       IncrementalMinimumWidth(local_card_migration_icon_view_);
 
-#if defined(OS_CHROMEOS)
   trailing_width += IncrementalMinimumWidth(intent_picker_view_);
-#endif  // defined(OS_CHROMEOS)
 
   for (auto* content_setting_view : content_setting_views_)
     trailing_width += IncrementalMinimumWidth(content_setting_view);
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.h b/chrome/browser/ui/views/location_bar/location_bar_view.h
index 0173842d..1880f5e 100644
--- a/chrome/browser/ui/views/location_bar/location_bar_view.h
+++ b/chrome/browser/ui/views/location_bar/location_bar_view.h
@@ -144,11 +144,9 @@
   // Toggles the star on or off.
   void SetStarToggled(bool on);
 
-#if defined(OS_CHROMEOS)
   // The intent picker, should not always be visible.  It will be null when
   // |browser_| is null.
   IntentPickerView* intent_picker_view() { return intent_picker_view_; }
-#endif  // defined(OS_CHROMEOS)
 
   // The star. It may not be visible.  It will be null when |browser_| is null.
   StarView* star_view() { return star_view_; }
@@ -412,11 +410,9 @@
   autofill::LocalCardMigrationIconView* local_card_migration_icon_view_ =
       nullptr;
 
-#if defined(OS_CHROMEOS)
-  // The intent picker for accessing ARC's apps.  It will be null when
+  // The intent picker for accessing apps.  It will be null when
   // |browser_| is null.
   IntentPickerView* intent_picker_view_ = nullptr;
-#endif  // defined(OS_CHROMEOS)
 
   // The star for bookmarking.  It will be null when |browser_| is null.
   StarView* star_view_ = nullptr;
diff --git a/chrome/browser/ui/views/page_action/page_action_icon_view.cc b/chrome/browser/ui/views/page_action/page_action_icon_view.cc
index 8f1ba0a..d554d2c 100644
--- a/chrome/browser/ui/views/page_action/page_action_icon_view.cc
+++ b/chrome/browser/ui/views/page_action/page_action_icon_view.cc
@@ -65,10 +65,13 @@
   return false;
 }
 
+SkColor PageActionIconView::GetLabelColorForTesting() const {
+  return label()->enabled_color();
+}
+
 SkColor PageActionIconView::GetTextColor() const {
-  // Returns the color of the label shown during animation.
   return GetNativeTheme()->GetSystemColor(
-      ui::NativeTheme::kColorId_LabelDisabledColor);
+      ui::NativeTheme::kColorId_TextfieldDefaultColor);
 }
 
 void PageActionIconView::GetAccessibleNodeData(ui::AXNodeData* node_data) {
@@ -144,6 +147,7 @@
 }
 
 void PageActionIconView::OnNativeThemeChanged(const ui::NativeTheme* theme) {
+  IconLabelBubbleView::OnNativeThemeChanged(theme);
   UpdateIconImage();
 }
 
diff --git a/chrome/browser/ui/views/page_action/page_action_icon_view.h b/chrome/browser/ui/views/page_action/page_action_icon_view.h
index 6b89965..aefa154 100644
--- a/chrome/browser/ui/views/page_action/page_action_icon_view.h
+++ b/chrome/browser/ui/views/page_action/page_action_icon_view.h
@@ -59,6 +59,8 @@
   // Retrieve the text to be used for a tooltip or accessible name.
   virtual base::string16 GetTextForTooltipAndAccessibleName() const = 0;
 
+  SkColor GetLabelColorForTesting() const;
+
  protected:
   enum ExecuteSource {
     EXECUTE_SOURCE_MOUSE,
diff --git a/chrome/browser/ui/views/page_action/pwa_install_view_browsertest.cc b/chrome/browser/ui/views/page_action/pwa_install_view_browsertest.cc
index 1f522fca..7e00cff 100644
--- a/chrome/browser/ui/views/page_action/pwa_install_view_browsertest.cc
+++ b/chrome/browser/ui/views/page_action/pwa_install_view_browsertest.cc
@@ -19,6 +19,7 @@
 #include "chrome/test/base/ui_test_utils.h"
 #include "content/public/common/referrer.h"
 #include "services/network/public/cpp/network_switches.h"
+#include "ui/gfx/color_utils.h"
 
 class PwaInstallViewBrowserTest : public InProcessBrowserTest {
  public:
@@ -219,3 +220,22 @@
   EXPECT_TRUE(pwa_install_view_->visible());
   EXPECT_TRUE(pwa_install_view_->is_animating_label());
 }
+
+// Tests that the icon label is visible against the omnibox background after the
+// native widget becomes active.
+IN_PROC_BROWSER_TEST_F(PwaInstallViewBrowserTest, TextContrast) {
+  NavigateToURL(GetInstallableAppURL());
+  ASSERT_TRUE(app_banner_manager_->WaitForInstallableCheck());
+  EXPECT_TRUE(pwa_install_view_->visible());
+  EXPECT_TRUE(pwa_install_view_->is_animating_label());
+
+  pwa_install_view_->GetWidget()->OnNativeWidgetActivationChanged(true);
+
+  BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
+  SkColor omnibox_background = browser_view->GetLocationBarView()->GetColor(
+      OmniboxPart::LOCATION_BAR_BACKGROUND);
+  SkColor label_color = pwa_install_view_->GetLabelColorForTesting();
+  EXPECT_EQ(SkColorGetA(label_color), SK_AlphaOPAQUE);
+  EXPECT_GT(color_utils::GetContrastRatio(omnibox_background, label_color),
+            color_utils::kMinimumReadableContrastRatio);
+}
diff --git a/chrome/browser/ui/views/toolbar/toolbar_page_action_icon_container_view.cc b/chrome/browser/ui/views/toolbar/toolbar_page_action_icon_container_view.cc
index 1491e3b..6dbdf475 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_page_action_icon_container_view.cc
+++ b/chrome/browser/ui/views/toolbar/toolbar_page_action_icon_container_view.cc
@@ -9,6 +9,8 @@
 #include "chrome/browser/ui/views/autofill/save_card_icon_view.h"
 #include "chrome/browser/ui/views/chrome_layout_provider.h"
 #include "chrome/browser/ui/views/chrome_typography.h"
+#include "ui/views/bubble/bubble_dialog_delegate_view.h"
+#include "ui/views/widget/widget.h"
 
 ToolbarPageActionIconContainerView::ToolbarPageActionIconContainerView(
     CommandUpdater* command_updater,
@@ -20,8 +22,7 @@
       // what we want here. Put placeholders for now.
       views::style::GetFont(CONTEXT_TOOLBAR_BUTTON,
                             views::style::STYLE_PRIMARY));
-  local_card_migration_icon_view_->SetVisible(false);
-  AddChildView(local_card_migration_icon_view_);
+  page_action_icons_.push_back(local_card_migration_icon_view_);
 
   save_card_icon_view_ = new autofill::SaveCardIconView(
       command_updater, browser, this,
@@ -29,19 +30,20 @@
       // what we want here. Put placeholders for now.
       views::style::GetFont(CONTEXT_TOOLBAR_BUTTON,
                             views::style::STYLE_PRIMARY));
-  save_card_icon_view_->SetVisible(false);
-  AddChildView(save_card_icon_view_);
+  page_action_icons_.push_back(save_card_icon_view_);
+
+  for (PageActionIconView* icon_view : page_action_icons_) {
+    icon_view->SetVisible(false);
+    AddChildView(icon_view);
+  }
 }
 
 ToolbarPageActionIconContainerView::~ToolbarPageActionIconContainerView() =
     default;
 
 void ToolbarPageActionIconContainerView::UpdateAllIcons() {
-  if (local_card_migration_icon_view_)
-    local_card_migration_icon_view_->Update();
-
-  if (save_card_icon_view_)
-    save_card_icon_view_->Update();
+  for (PageActionIconView* icon_view : page_action_icons_)
+    icon_view->Update();
 }
 
 PageActionIconView* ToolbarPageActionIconContainerView::GetIconView(
@@ -57,6 +59,15 @@
   }
 }
 
+bool ToolbarPageActionIconContainerView::
+    ActivateFirstInactiveBubbleForAccessibility() {
+  for (PageActionIconView* icon_view : page_action_icons_) {
+    if (FocusInactiveBubbleForIcon(icon_view))
+      return true;
+  }
+  return false;
+}
+
 void ToolbarPageActionIconContainerView::UpdatePageActionIcon(
     PageActionIconType icon_type) {
   PageActionIconView* icon = GetIconView(icon_type);
@@ -73,3 +84,16 @@
 ToolbarPageActionIconContainerView::GetWebContentsForPageActionIconView() {
   return browser_->tab_strip_model()->GetActiveWebContents();
 }
+
+bool ToolbarPageActionIconContainerView::FocusInactiveBubbleForIcon(
+    PageActionIconView* icon_view) {
+  if (!icon_view->visible() || !icon_view->GetBubble())
+    return false;
+
+  views::Widget* widget = icon_view->GetBubble()->GetWidget();
+  if (widget && widget->IsVisible() && !widget->IsActive()) {
+    widget->Show();
+    return true;
+  }
+  return false;
+}
diff --git a/chrome/browser/ui/views/toolbar/toolbar_page_action_icon_container_view.h b/chrome/browser/ui/views/toolbar/toolbar_page_action_icon_container_view.h
index 62018c7f..b55c66cf 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_page_action_icon_container_view.h
+++ b/chrome/browser/ui/views/toolbar/toolbar_page_action_icon_container_view.h
@@ -32,6 +32,10 @@
 
   PageActionIconView* GetIconView(PageActionIconType icon_type);
 
+  // Activate the first visible but inactive PageActionIconView for
+  // accessibility.
+  bool ActivateFirstInactiveBubbleForAccessibility();
+
   // ToolbarIconContainerView:
   void UpdateAllIcons() override;
 
@@ -51,10 +55,14 @@
   }
 
  private:
+  bool FocusInactiveBubbleForIcon(PageActionIconView* icon_view);
+
   autofill::LocalCardMigrationIconView* local_card_migration_icon_view_ =
       nullptr;
   autofill::SaveCardIconView* save_card_icon_view_ = nullptr;
 
+  std::vector<PageActionIconView*> page_action_icons_;
+
   Browser* const browser_;
 
   DISALLOW_COPY_AND_ASSIGN(ToolbarPageActionIconContainerView);
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.cc b/chrome/browser/ui/views/toolbar/toolbar_view.cc
index bc309e41..1754917e 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_view.cc
+++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc
@@ -37,6 +37,8 @@
 #include "chrome/browser/ui/views/bookmarks/bookmark_bubble_view.h"
 #include "chrome/browser/ui/views/extensions/extension_popup.h"
 #include "chrome/browser/ui/views/extensions/extensions_toolbar_button.h"
+#include "chrome/browser/ui/views/frame/browser_view.h"
+#include "chrome/browser/ui/views/location_bar/intent_picker_view.h"
 #include "chrome/browser/ui/views/location_bar/star_view.h"
 #include "chrome/browser/ui/views/media_router/cast_toolbar_button.h"
 #include "chrome/browser/ui/views/tabs/tab_strip.h"
@@ -87,14 +89,9 @@
 #include "chrome/browser/ui/views/critical_notification_bubble_view.h"
 #endif
 
-#if defined(OS_CHROMEOS)
-#include "chrome/browser/ui/views/location_bar/intent_picker_view.h"
-#else
+#if !defined(OS_CHROMEOS)
 #include "chrome/browser/signin/signin_global_error_factory.h"
 #include "chrome/browser/ui/bookmarks/bookmark_bubble_sign_in_delegate.h"
-#endif
-
-#if !defined(OS_CHROMEOS)
 #include "chrome/browser/ui/views/outdated_upgrade_bubble_view.h"
 #endif
 
@@ -324,10 +321,15 @@
 void ToolbarView::Update(WebContents* tab) {
   if (location_bar_)
     location_bar_->Update(tab);
+
   if (browser_actions_)
     browser_actions_->RefreshToolbarActionViews();
+
   if (reload_)
     reload_->set_menu_enabled(chrome::IsDebuggerAttachedToCurrentTab(browser_));
+
+  if (toolbar_page_action_container_)
+    toolbar_page_action_container_->UpdateAllIcons();
 }
 
 void ToolbarView::SetToolbarVisibility(bool visible) {
@@ -368,7 +370,6 @@
   return app_menu_button_ && app_menu_button_->HasFocus();
 }
 
-#if defined(OS_CHROMEOS)
 void ToolbarView::ShowIntentPickerBubble(
     std::vector<IntentPickerBubbleView::AppInfo> app_info,
     bool disable_stay_in_chrome,
@@ -385,7 +386,6 @@
         disable_stay_in_chrome, std::move(callback));
   }
 }
-#endif  // defined(OS_CHROMEOS)
 
 void ToolbarView::ShowBookmarkBubble(
     const GURL& url,
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.h b/chrome/browser/ui/views/toolbar/toolbar_view.h
index 6a1edcd..dac4531 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_view.h
+++ b/chrome/browser/ui/views/toolbar/toolbar_view.h
@@ -16,6 +16,7 @@
 #include "chrome/browser/ui/toolbar/back_forward_menu_model.h"
 #include "chrome/browser/ui/views/frame/browser_root_view.h"
 #include "chrome/browser/ui/views/frame/toolbar_button_provider.h"
+#include "chrome/browser/ui/views/intent_picker_bubble_view.h"
 #include "chrome/browser/ui/views/location_bar/custom_tab_bar_view.h"
 #include "chrome/browser/ui/views/location_bar/location_bar_view.h"
 #include "chrome/browser/ui/views/profiles/avatar_toolbar_button.h"
@@ -31,7 +32,6 @@
 
 #if defined(OS_CHROMEOS)
 #include "chrome/browser/chromeos/arc/intent_helper/arc_intent_picker_app_fetcher.h"
-#include "chrome/browser/ui/views/intent_picker_bubble_view.h"
 #include "components/arc/common/intent_helper.mojom.h"  // nogncheck https://crbug.com/784179
 #include "components/arc/intent_helper/arc_intent_helper_bridge.h"
 #endif  // defined(OS_CHROMEOS)
@@ -112,12 +112,10 @@
   // Returns true if the app menu is focused.
   bool IsAppMenuFocused();
 
-#if defined(OS_CHROMEOS)
   void ShowIntentPickerBubble(
       std::vector<IntentPickerBubbleView::AppInfo> app_info,
       bool disable_stay_in_chrome,
       IntentPickerResponse callback);
-#endif  // defined(OS_CHROMEOS)
 
   // Shows a bookmark bubble and anchors it appropriately.
   void ShowBookmarkBubble(const GURL& url,
diff --git a/chrome/browser/ui/views/webview_accessibility_browsertest.cc b/chrome/browser/ui/views/webview_accessibility_browsertest.cc
new file mode 100644
index 0000000..1e368996
--- /dev/null
+++ b/chrome/browser/ui/views/webview_accessibility_browsertest.cc
@@ -0,0 +1,106 @@
+// Copyright (c) 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/logging.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/tabs/tab_strip_model.h"
+#include "chrome/browser/ui/views/frame/browser_view.h"
+#include "chrome/test/base/in_process_browser_test.h"
+#include "chrome/test/base/ui_test_utils.h"
+#include "content/public/browser/browser_context.h"
+#include "content/public/test/browser_test_utils.h"
+#include "content/public/test/content_browser_test_utils.h"
+#include "net/test/embedded_test_server/embedded_test_server.h"
+#include "net/test/embedded_test_server/request_handler_util.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/accessibility/ax_tree.h"
+#include "ui/views/controls/webview/webview.h"
+#include "url/gurl.h"
+
+constexpr base::FilePath::CharType kDocRoot[] =
+    FILE_PATH_LITERAL("chrome/test/data/accessibility");
+
+namespace {
+
+int CountOffscreenButtons(const ui::AXTree* tree, const ui::AXNode* node) {
+  int count = 0;
+  if (node->data().role == ax::mojom::Role::kButton) {
+    bool offscreen = false;
+    tree->GetTreeBounds(node, &offscreen, /* clip = */ true);
+    if (offscreen)
+      count++;
+  }
+
+  for (int i = 0; i < node->child_count(); i++)
+    count += CountOffscreenButtons(tree, node->children()[i]);
+
+  return count;
+}
+
+int CountOffscreenButtons(const ui::AXTreeUpdate& tree_update) {
+  ui::AXTree tree(tree_update);
+  DCHECK(tree.root());
+  return CountOffscreenButtons(&tree, tree.root());
+}
+
+}  // namespace
+
+class WebViewBrowserTest : public InProcessBrowserTest {
+ public:
+  WebViewBrowserTest() : https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {
+    https_server_.AddDefaultHandlers(base::FilePath(kDocRoot));
+  }
+
+ protected:
+  void SetUpOnMainThread() override {
+    InProcessBrowserTest::SetUpOnMainThread();
+
+    ASSERT_TRUE(https_server_.Start());
+
+    content::WebContents* web_contents =
+        browser()->tab_strip_model()->GetActiveWebContents();
+
+    ui::AXMode mode = ui::kAXModeComplete;
+    mode.set_mode(ui::AXMode::kLabelImages, true);
+    web_contents->SetAccessibilityMode(mode);
+  }
+
+ protected:
+  net::EmbeddedTestServer https_server_;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(WebViewBrowserTest);
+};
+
+IN_PROC_BROWSER_TEST_F(WebViewBrowserTest, ResizeWebView) {
+  ui_test_utils::NavigateToURL(
+      browser(), https_server_.GetURL("/fixed_size_document.html"));
+
+  content::WebContents* web_contents =
+      browser()->tab_strip_model()->GetActiveWebContents();
+
+  BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
+  views::WebView* contents_web_view = browser_view->contents_web_view();
+
+  // Resize the web view so that only one of the two buttons fits.
+  contents_web_view->SetSize(gfx::Size(300, 140));
+
+  content::WaitForAccessibilityTreeToContainNodeWithName(web_contents,
+                                                         "Button 2");
+
+  // Wait for just one button to be offscreen
+  while (1 != CountOffscreenButtons(
+                  content::GetAccessibilityTreeSnapshot(web_contents))) {
+    content::WaitForAccessibilityTreeToChange(web_contents);
+  }
+
+  // Now resize the frame to be large enough for both buttons.
+  contents_web_view->SetSize(gfx::Size(300, 500));
+
+  // Now no buttons should be offscreen.
+  while (0 != CountOffscreenButtons(
+                  content::GetAccessibilityTreeSnapshot(web_contents))) {
+    content::WaitForAccessibilityTreeToChange(web_contents);
+  }
+}
diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
index 10c13ed..2327bcf 100644
--- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
+++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
@@ -897,6 +897,10 @@
   if (page_url.host_piece() == chrome::kChromeUIManagementHost)
     return ManagementUI::GetFaviconResourceBytes(scale_factor);
 
+  // Android doesn't use the App Management page.
+  if (page_url.host_piece() == chrome::kChromeUIAppManagementHost)
+    return settings_utils::GetFaviconResourceBytes(scale_factor);
+
 #if BUILDFLAG(ENABLE_EXTENSIONS)
   if (page_url.host_piece() == chrome::kChromeUIExtensionsHost) {
     return extensions::ExtensionsUI::GetFaviconResourceBytes(scale_factor);
diff --git a/chrome/browser/ui/webui/welcome/welcome_ui.cc b/chrome/browser/ui/webui/welcome/welcome_ui.cc
index b6abe2b..4eeda0c 100644
--- a/chrome/browser/ui/webui/welcome/welcome_ui.cc
+++ b/chrome/browser/ui/webui/welcome/welcome_ui.cc
@@ -82,6 +82,7 @@
       {"bookmarkRemoved", IDS_ONBOARDING_WELCOME_BOOKMARK_REMOVED},
       {"bookmarksRemoved", IDS_ONBOARDING_WELCOME_BOOKMARKS_REMOVED},
       {"bookmarkReplaced", IDS_ONBOARDING_WELCOME_BOOKMARK_REPLACED},
+      {"defaultBrowserChanged", IDS_ONBOARDING_DEFAULT_BROWSER_CHANGED},
       {"getStarted", IDS_ONBOARDING_WELCOME_GET_STARTED},
       {"headerText", IDS_WELCOME_HEADER},
       {"next", IDS_ONBOARDING_WELCOME_NEXT},
diff --git a/chrome/browser/vr/model/capturing_state_model.h b/chrome/browser/vr/model/capturing_state_model.h
index 367c960..6e5f0d25 100644
--- a/chrome/browser/vr/model/capturing_state_model.h
+++ b/chrome/browser/vr/model/capturing_state_model.h
@@ -5,6 +5,8 @@
 #ifndef CHROME_BROWSER_VR_MODEL_CAPTURING_STATE_MODEL_H_
 #define CHROME_BROWSER_VR_MODEL_CAPTURING_STATE_MODEL_H_
 
+#include <string>
+
 #include "chrome/browser/vr/vr_base_export.h"
 
 namespace vr {
@@ -15,6 +17,24 @@
   bool screen_capture_enabled = false;
   bool location_access_enabled = false;
   bool bluetooth_connected = false;
+
+  bool operator==(const CapturingStateModel& rhs) const {
+    return audio_capture_enabled == rhs.audio_capture_enabled &&
+           video_capture_enabled == rhs.video_capture_enabled &&
+           screen_capture_enabled == rhs.screen_capture_enabled &&
+           location_access_enabled == rhs.location_access_enabled &&
+           bluetooth_connected == rhs.bluetooth_connected;
+  }
+
+  bool operator!=(const CapturingStateModel& rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool IsAnyCapturingEnabled() const {
+    return audio_capture_enabled || video_capture_enabled ||
+           screen_capture_enabled || location_access_enabled ||
+           bluetooth_connected;
+  }
 };
 
 typedef bool CapturingStateModel::*CapturingStateModelMemberPtr;
diff --git a/chrome/browser/vr/test/ui_utils.cc b/chrome/browser/vr/test/ui_utils.cc
index 79ee450..6d7f8e1 100644
--- a/chrome/browser/vr/test/ui_utils.cc
+++ b/chrome/browser/vr/test/ui_utils.cc
@@ -75,9 +75,8 @@
 
   main_thread_task_runner_->PostTask(
       FROM_HERE,
-      base::BindOnce(
-          &BrowserRenderer::WatchElementForVisibilityStatusForTesting,
-          base::Unretained(GetBrowserRenderer()), visibility_expectation));
+      base::BindOnce(&UiUtils::WatchElementForVisibilityStatusForTesting,
+                     base::Unretained(this), visibility_expectation));
 
   wait_loop.Run();
 
@@ -88,6 +87,19 @@
       << UiTestOperationResultToString(result) << "'";
 }
 
+void UiUtils::WatchElementForVisibilityStatusForTesting(
+    VisibilityChangeExpectation visibility_expectation) {
+  BrowserRenderer* browser_renderer = UiUtils::GetBrowserRenderer();
+  if (browser_renderer) {
+    interface_ =
+        std::make_unique<BrowserTestBrowserRendererBrowserInterface>(this);
+    browser_renderer->SetBrowserRendererBrowserInterfaceForTesting(
+        interface_.get());
+    browser_renderer->WatchElementForVisibilityStatusForTesting(
+        visibility_expectation);
+  }
+}
+
 void UiUtils::ReportUiOperationResult(const UiTestOperationType& action_type,
                                       const UiTestOperationResult& result) {
   ui_operation_results_[static_cast<int>(action_type)] = result;
diff --git a/chrome/browser/vr/test/ui_utils.h b/chrome/browser/vr/test/ui_utils.h
index 3b4f68b2..7838f53b 100644
--- a/chrome/browser/vr/test/ui_utils.h
+++ b/chrome/browser/vr/test/ui_utils.h
@@ -55,6 +55,8 @@
   static VRBrowserRendererThreadWin* GetRendererThread();
   static BrowserRenderer* GetBrowserRenderer();
 
+  void WatchElementForVisibilityStatusForTesting(
+      VisibilityChangeExpectation visibility_expectation);
   std::string UiTestOperationResultToString(UiTestOperationResult& result);
 
   std::unique_ptr<BrowserTestBrowserRendererBrowserInterface> interface_;
diff --git a/chrome/browser/vr/ui_host/vr_ui_host_impl.cc b/chrome/browser/vr/ui_host/vr_ui_host_impl.cc
index 73ed60b..0febaa4 100644
--- a/chrome/browser/vr/ui_host/vr_ui_host_impl.cc
+++ b/chrome/browser/vr/ui_host/vr_ui_host_impl.cc
@@ -7,18 +7,21 @@
 #include <memory>
 
 #include "base/task/post_task.h"
+#include "chrome/browser/content_settings/tab_specific_content_settings.h"
+#include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h"
+#include "chrome/browser/media/webrtc/media_stream_capture_indicator.h"
+#include "chrome/browser/permissions/permission_manager.h"
+#include "chrome/browser/permissions/permission_result.h"
 #include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ssl/security_state_tab_helper.h"
 #include "chrome/browser/vr/metrics/session_metrics_helper.h"
 #include "chrome/browser/vr/service/browser_xr_runtime.h"
 #include "chrome/browser/vr/service/xr_runtime_manager.h"
 #include "chrome/browser/vr/vr_tab_helper.h"
 #include "chrome/browser/vr/win/vr_browser_renderer_thread_win.h"
-#include "components/strings/grit/components_strings.h"
-#include "content/public/browser/navigation_controller.h"
 #include "content/public/browser/navigation_entry.h"
-#include "content/public/browser/render_process_host.h"
-#include "content/public/browser/render_view_host.h"
+#include "content/public/common/service_manager_connection.h"
+#include "services/device/public/mojom/constants.mojom.h"
+#include "services/service_manager/public/cpp/connector.h"
 #include "ui/base/l10n/l10n_util.h"
 
 namespace vr {
@@ -26,11 +29,18 @@
 namespace {
 static constexpr base::TimeDelta kPermissionPromptTimeout =
     base::TimeDelta::FromSeconds(5);
+
+static constexpr base::TimeDelta kPollCapturingStateInterval =
+    base::TimeDelta::FromSecondsD(0.2);
+
+const CapturingStateModel g_default_capturing_state;
 }  // namespace
 
 VRUiHostImpl::VRUiHostImpl(device::mojom::XRDeviceId device_id,
                            device::mojom::XRCompositorHostPtr compositor)
-    : compositor_(std::move(compositor)), weak_ptr_factory_(this) {
+    : compositor_(std::move(compositor)),
+      main_thread_task_runner_(base::ThreadTaskRunnerHandle::Get()),
+      weak_ptr_factory_(this) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DVLOG(1) << __func__;
 
@@ -39,6 +49,10 @@
   if (runtime) {
     runtime->AddObserver(this);
   }
+
+  auto* connector =
+      content::ServiceManagerConnection::GetForProcess()->GetConnector();
+  connector->BindInterface(device::mojom::kServiceName, &geolocation_config_);
 }
 
 VRUiHostImpl::~VRUiHostImpl() {
@@ -109,8 +123,11 @@
   web_contents_ = contents;
   if (contents) {
     StartUiRendering();
+    InitCapturingStates();
     ui_rendering_thread_->SetWebXrPresenting(true);
 
+    PollCapturingState();
+
     PermissionRequestManager::CreateForWebContents(contents);
     permission_request_manager_ =
         PermissionRequestManager::FromWebContents(contents);
@@ -129,6 +146,8 @@
       DVLOG(1) << __func__ << ": No PermissionRequestManager";
     }
   } else {
+    poll_capturing_state_task_.Cancel();
+
     if (ui_rendering_thread_)
       ui_rendering_thread_->SetWebXrPresenting(false);
     StopUiRendering();
@@ -159,6 +178,7 @@
 void VRUiHostImpl::StopUiRendering() {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DVLOG(1) << __func__;
+
   ui_rendering_thread_ = nullptr;
 }
 
@@ -185,30 +205,130 @@
 
   SetLocationInfoOnUi();
 
+  if (indicators_visible_) {
+    indicators_visible_ = false;
+    ui_rendering_thread_->SetIndicatorsVisible(false);
+  }
+
   ui_rendering_thread_->SetVisibleExternalPromptNotification(
       ExternalPromptNotificationType::kPromptGenericPermission);
 
-  is_prompt_showing_in_headset_ = true;
-  current_prompt_sequence_num_++;
-  base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
-      FROM_HERE,
-      base::BindOnce(&VRUiHostImpl::RemoveHeadsetNotificationPrompt,
-                     weak_ptr_factory_.GetWeakPtr(),
-                     current_prompt_sequence_num_),
+  is_external_prompt_showing_in_headset_ = true;
+  external_prompt_timeout_task_.Reset(
+      base::BindRepeating(&VRUiHostImpl::RemoveHeadsetNotificationPrompt,
+                          weak_ptr_factory_.GetWeakPtr()));
+  main_thread_task_runner_->PostDelayedTask(
+      FROM_HERE, external_prompt_timeout_task_.callback(),
       kPermissionPromptTimeout);
 }
 
 void VRUiHostImpl::OnBubbleRemoved() {
-  RemoveHeadsetNotificationPrompt(current_prompt_sequence_num_);
+  external_prompt_timeout_task_.Cancel();
+  RemoveHeadsetNotificationPrompt();
 }
 
-void VRUiHostImpl::RemoveHeadsetNotificationPrompt(int prompt_sequence_num) {
-  if (!is_prompt_showing_in_headset_)
+void VRUiHostImpl::RemoveHeadsetNotificationPrompt() {
+  if (!is_external_prompt_showing_in_headset_)
     return;
-  if (prompt_sequence_num != current_prompt_sequence_num_)
-    return;
-  is_prompt_showing_in_headset_ = false;
+  is_external_prompt_showing_in_headset_ = false;
   ui_rendering_thread_->SetVisibleExternalPromptNotification(
       ExternalPromptNotificationType::kPromptNone);
+  indicators_shown_start_time_ = base::Time::Now();
 }
+
+void VRUiHostImpl::InitCapturingStates() {
+  active_capturing_ = g_default_capturing_state;
+  potential_capturing_ = g_default_capturing_state;
+
+  DCHECK(web_contents_);
+  PermissionManager* permission_manager = PermissionManager::Get(
+      Profile::FromBrowserContext(web_contents_->GetBrowserContext()));
+  const GURL& origin = web_contents_->GetLastCommittedURL();
+  content::RenderFrameHost* rfh = web_contents_->GetMainFrame();
+  potential_capturing_.audio_capture_enabled =
+      permission_manager
+          ->GetPermissionStatusForFrame(
+              ContentSettingsType::CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, rfh,
+              origin)
+          .content_setting == CONTENT_SETTING_ALLOW;
+  potential_capturing_.video_capture_enabled =
+      permission_manager
+          ->GetPermissionStatusForFrame(
+              ContentSettingsType::CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA,
+              rfh, origin)
+          .content_setting == CONTENT_SETTING_ALLOW;
+  potential_capturing_.location_access_enabled =
+      permission_manager
+          ->GetPermissionStatusForFrame(
+              ContentSettingsType::CONTENT_SETTINGS_TYPE_GEOLOCATION, rfh,
+              origin)
+          .content_setting == CONTENT_SETTING_ALLOW;
+
+  indicators_shown_start_time_ = base::Time::Now();
+  indicators_visible_ = false;
+}
+
+void VRUiHostImpl::PollCapturingState() {
+  poll_capturing_state_task_.Reset(base::BindRepeating(
+      &VRUiHostImpl::PollCapturingState, base::Unretained(this)));
+  main_thread_task_runner_->PostDelayedTask(
+      FROM_HERE, poll_capturing_state_task_.callback(),
+      kPollCapturingStateInterval);
+
+  // Microphone, Camera, location.
+  CapturingStateModel active_capturing = active_capturing_;
+  TabSpecificContentSettings* settings =
+      TabSpecificContentSettings::FromWebContents(web_contents_);
+  if (settings) {
+    const ContentSettingsUsagesState& usages_state =
+        settings->geolocation_usages_state();
+    if (!usages_state.state_map().empty()) {
+      unsigned int state_flags = 0;
+      usages_state.GetDetailedInfo(nullptr, &state_flags);
+      active_capturing.location_access_enabled = !!(
+          state_flags & ContentSettingsUsagesState::TABSTATE_HAS_ANY_ALLOWED);
+    }
+    active_capturing.audio_capture_enabled =
+        (settings->GetMicrophoneCameraState() &
+         TabSpecificContentSettings::MICROPHONE_ACCESSED) &&
+        !(settings->GetMicrophoneCameraState() &
+          TabSpecificContentSettings::MICROPHONE_BLOCKED);
+    active_capturing.video_capture_enabled =
+        (settings->GetMicrophoneCameraState() &
+         TabSpecificContentSettings::CAMERA_ACCESSED) &
+        !(settings->GetMicrophoneCameraState() &
+          TabSpecificContentSettings::CAMERA_BLOCKED);
+  }
+
+  // Screen capture, bluetooth.
+  scoped_refptr<MediaStreamCaptureIndicator> indicator =
+      MediaCaptureDevicesDispatcher::GetInstance()
+          ->GetMediaStreamCaptureIndicator();
+  active_capturing.screen_capture_enabled =
+      indicator->IsBeingMirrored(web_contents_);
+  active_capturing.bluetooth_connected =
+      web_contents_->IsConnectedToBluetoothDevice();
+
+  if (active_capturing_ != active_capturing) {
+    indicators_shown_start_time_ = base::Time::Now();
+  }
+
+  active_capturing_ = active_capturing;
+  ui_rendering_thread_->SetCapturingState(
+      active_capturing_, g_default_capturing_state, potential_capturing_);
+
+  if (indicators_shown_start_time_ + kPermissionPromptTimeout >
+      base::Time::Now()) {
+    if (!indicators_visible_ && !is_external_prompt_showing_in_headset_) {
+      indicators_visible_ = true;
+      ui_rendering_thread_->SetIndicatorsVisible(true);
+    }
+  } else {
+    if (indicators_visible_) {
+      indicators_visible_ = false;
+      ui_rendering_thread_->SetIndicatorsVisible(false);
+    }
+  }
+}
+
 }  // namespace vr
diff --git a/chrome/browser/vr/ui_host/vr_ui_host_impl.h b/chrome/browser/vr/ui_host/vr_ui_host_impl.h
index 03f3bd8..07d12bb 100644
--- a/chrome/browser/vr/ui_host/vr_ui_host_impl.h
+++ b/chrome/browser/vr/ui_host/vr_ui_host_impl.h
@@ -5,13 +5,17 @@
 #ifndef CHROME_BROWSER_VR_UI_HOST_VR_UI_HOST_IMPL_H_
 #define CHROME_BROWSER_VR_UI_HOST_VR_UI_HOST_IMPL_H_
 
+#include "base/callback.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
+#include "base/single_thread_task_runner.h"
 #include "base/threading/thread_checker.h"
 #include "chrome/browser/permissions/permission_request_manager.h"
+#include "chrome/browser/vr/model/capturing_state_model.h"
 #include "chrome/browser/vr/service/browser_xr_runtime.h"
 #include "chrome/browser/vr/service/vr_ui_host.h"
 #include "content/public/browser/web_contents.h"
+#include "services/device/public/mojom/geolocation_config.mojom.h"
 
 namespace vr {
 
@@ -46,17 +50,28 @@
   void OnBubbleAdded() override;
   void OnBubbleRemoved() override;
 
-  void RemoveHeadsetNotificationPrompt(int prompt_sequence_num);
+  void RemoveHeadsetNotificationPrompt();
   void SetLocationInfoOnUi();
 
+  void InitCapturingStates();
+  void PollCapturingState();
+
   device::mojom::XRCompositorHostPtr compositor_;
   std::unique_ptr<VRBrowserRendererThreadWin> ui_rendering_thread_;
   device::mojom::VRDisplayInfoPtr info_;
   content::WebContents* web_contents_ = nullptr;
   PermissionRequestManager* permission_request_manager_ = nullptr;
+  scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner_;
 
-  bool is_prompt_showing_in_headset_ = false;
-  int current_prompt_sequence_num_ = 0;
+  base::CancelableClosure external_prompt_timeout_task_;
+  bool is_external_prompt_showing_in_headset_ = false;
+
+  CapturingStateModel active_capturing_;
+  CapturingStateModel potential_capturing_;
+  device::mojom::GeolocationConfigPtr geolocation_config_;
+  base::CancelableClosure poll_capturing_state_task_;
+  base::Time indicators_shown_start_time_;
+  bool indicators_visible_ = false;
 
   THREAD_CHECKER(thread_checker_);
 
diff --git a/chrome/browser/vr/ui_scene_creator.cc b/chrome/browser/vr/ui_scene_creator.cc
index 984ddb62..58329c02c 100644
--- a/chrome/browser/vr/ui_scene_creator.cc
+++ b/chrome/browser/vr/ui_scene_creator.cc
@@ -685,8 +685,9 @@
 
 std::unique_ptr<UiElement> CreateWebVrIndicator(Model* model,
                                                 UiBrowserInterface* browser,
-                                                IndicatorSpec spec) {
-  auto container = Create<Rect>(spec.webvr_name, kPhaseOverlayForeground);
+                                                IndicatorSpec spec,
+                                                DrawPhase phase) {
+  auto container = Create<Rect>(spec.webvr_name, phase);
   VR_BIND_COLOR(model, container.get(),
                 &ColorScheme::webvr_permission_background, &Rect::SetColor);
   container->set_corner_radius(kWebVrPermissionCornerRadius);
@@ -699,7 +700,7 @@
   auto layout = Create<LinearLayout>(kNone, kPhaseNone, LinearLayout::kRight);
   layout->set_margin(kWebVrPermissionMargin);
 
-  auto icon_element = Create<VectorIcon>(kNone, kPhaseOverlayForeground, 128);
+  auto icon_element = Create<VectorIcon>(kNone, phase, 128);
   VR_BIND_COLOR(model, icon_element.get(),
                 &ColorScheme::webvr_permission_foreground,
                 &VectorIcon::SetColor);
@@ -717,12 +718,12 @@
   std::unique_ptr<UiElement> description_element;
   if (spec.is_url) {
     auto url_text = Create<UrlText>(
-        kNone, kPhaseOverlayForeground, kWebVrPermissionFontHeight,
+        kNone, phase, kWebVrPermissionFontHeight,
         base::BindRepeating(&UiBrowserInterface::OnUnsupportedMode,
                             base::Unretained(browser),
                             UiUnsupportedMode::kUnhandledCodePoint)
 
-            );
+    );
     url_text->SetFieldWidth(kWebVrPermissionTextWidth);
     url_text->AddBinding(VR_BIND_FUNC(GURL, Model, model,
                                       model->location_bar_state.gurl, UrlText,
@@ -736,8 +737,7 @@
     description_element = std::move(url_text);
 
   } else {
-    auto text_element = Create<Text>(kNone, kPhaseOverlayForeground,
-                                     kWebVrPermissionFontHeight);
+    auto text_element = Create<Text>(kNone, phase, kWebVrPermissionFontHeight);
     text_element->SetLayoutMode(kMultiLineFixedWidth);
     text_element->SetAlignment(kTextAlignmentLeft);
     text_element->SetColor(SK_ColorWHITE);
@@ -758,12 +758,11 @@
   return container;
 }
 
-std::unique_ptr<UiElement> CreateHostedUi(
-    Model* model,
-    UiBrowserInterface* browser,
-    UiElementName name,
-    UiElementName element_name,
-    float distance) {
+std::unique_ptr<UiElement> CreateHostedUi(Model* model,
+                                          UiBrowserInterface* browser,
+                                          UiElementName name,
+                                          UiElementName element_name,
+                                          float distance) {
   auto hosted_ui = Create<PlatformUiElement>(element_name, kPhaseForeground);
   hosted_ui->SetSize(kContentWidth * kHostedUiWidthRatio,
                      kContentHeight * kHostedUiHeightRatio);
@@ -942,6 +941,178 @@
   return parent;
 }
 
+#if defined(OS_WIN)
+void BindIndicatorTranscienceForWin(
+    TransientElement* e,
+    Model* model,
+    UiScene* scene,
+    const base::Optional<
+        std::tuple<bool, CapturingStateModel, CapturingStateModel>>& last_value,
+    const std::tuple<bool, CapturingStateModel, CapturingStateModel>& value) {
+  const bool in_web_vr_presentation = model->web_vr_enabled() &&
+                                      model->web_vr.IsImmersiveWebXrVisible() &&
+                                      model->web_vr.has_received_permissions;
+
+  const CapturingStateModel active_capture = std::get<1>(value);
+  const CapturingStateModel potential_capture = std::get<2>(value);
+  const CapturingStateModel last_active_capture =
+      last_value ? std::get<1>(last_value.value()) : CapturingStateModel();
+  const CapturingStateModel last_potential_capture =
+      last_value ? std::get<2>(last_value.value()) : CapturingStateModel();
+
+  // Update the visibility state of the indicators based on the capturing state
+  // diff. potential_capture represents the permissions granted to the site
+  // before the presentation. active_capture members are set when a relevant
+  // device starts to get used.
+  // When the session starts, indicators display which permissions are granted
+  // upfront (struct potential_capture). Then, when a device gets accessed,
+  // an indicator notifies the user about its usage.
+  // The below logic tries to capture this logic.
+  bool initial_toasts = !active_capture.IsAnyCapturingEnabled();
+  if (active_capture != last_active_capture ||
+      potential_capture != last_potential_capture) {
+    auto specs = GetIndicatorSpecs();
+    for (const auto& spec : specs) {
+      bool allowed = potential_capture.*spec.signal;
+      bool triggered =
+          !(last_active_capture.*spec.signal) && (active_capture.*spec.signal);
+      bool show_ui = initial_toasts ? allowed : triggered;
+      SetVisibleInLayout(scene->GetUiElementByName(spec.webvr_name), show_ui);
+    }
+  }
+
+  if (!in_web_vr_presentation) {
+    e->SetVisibleImmediately(false);
+    return;
+  }
+
+  e->SetVisible(true);
+  e->RefreshVisible();
+  SetVisibleInLayout(scene->GetUiElementByName(kWebVrExclusiveScreenToast),
+                     !model->browsing_disabled);
+
+  e->RemoveKeyframeModels(TRANSFORM);
+
+  e->SetTranslate(0, kWebVrPermissionOffsetStart, 0);
+
+  // Build up a keyframe model for the initial transition.
+  std::unique_ptr<cc::KeyframedTransformAnimationCurve> curve(
+      cc::KeyframedTransformAnimationCurve::Create());
+
+  cc::TransformOperations value_1;
+  value_1.AppendTranslate(0, kWebVrPermissionOffsetStart, 0);
+  curve->AddKeyframe(cc::TransformKeyframe::Create(
+      base::TimeDelta(), value_1,
+      cc::CubicBezierTimingFunction::CreatePreset(
+          cc::CubicBezierTimingFunction::EaseType::EASE)));
+
+  cc::TransformOperations value_2;
+  value_2.AppendTranslate(0, kWebVrPermissionOffsetOvershoot, 0);
+  curve->AddKeyframe(cc::TransformKeyframe::Create(
+      base::TimeDelta::FromMilliseconds(kWebVrPermissionOffsetMs), value_2,
+      cc::CubicBezierTimingFunction::CreatePreset(
+          cc::CubicBezierTimingFunction::EaseType::EASE)));
+
+  cc::TransformOperations value_3;
+  value_3.AppendTranslate(0, kWebVrPermissionOffsetFinal, 0);
+  curve->AddKeyframe(cc::TransformKeyframe::Create(
+      base::TimeDelta::FromMilliseconds(kWebVrPermissionAnimationDurationMs),
+      value_3,
+      cc::CubicBezierTimingFunction::CreatePreset(
+          cc::CubicBezierTimingFunction::EaseType::EASE)));
+
+  e->AddKeyframeModel(cc::KeyframeModel::Create(
+      std::move(curve), Animation::GetNextKeyframeModelId(),
+      Animation::GetNextGroupId(), TRANSFORM));
+}
+
+#else
+
+void BindIndicatorTranscience(
+    TransientElement* e,
+    Model* model,
+    UiScene* scene,
+    const base::Optional<std::tuple<bool, bool, bool>>& last_value,
+    const std::tuple<bool, bool, bool>& value) {
+  const bool in_web_vr_presentation = std::get<0>(value);
+  const bool in_long_press = std::get<1>(value);
+  const bool showing_hosted_ui = std::get<2>(value);
+  const bool was_in_long_press = last_value && std::get<1>(last_value.value());
+  const bool was_showing_hosted_ui =
+      last_value && std::get<2>(last_value.value());
+
+  if (!in_web_vr_presentation) {
+    e->SetVisibleImmediately(false);
+    return;
+  }
+
+  // The reason we need the previous state is to disguish the
+  // situation where the app button has been released after a long
+  // press, and the situation when we want to initially show the
+  // indicators.
+  if (was_in_long_press && !in_long_press)
+    return;
+
+  // Similarly, we need to know when we've finished presenting hosted
+  // ui because we should not show indicators then.
+  if (was_showing_hosted_ui && !showing_hosted_ui)
+    return;
+
+  e->SetVisible(true);
+  e->RefreshVisible();
+  SetVisibleInLayout(scene->GetUiElementByName(kWebVrExclusiveScreenToast),
+                     !model->browsing_disabled && !in_long_press);
+
+  auto specs = GetIndicatorSpecs();
+  for (const auto& spec : specs) {
+    SetVisibleInLayout(scene->GetUiElementByName(spec.webvr_name),
+                       model->active_capturing.*spec.signal ||
+                           model->potential_capturing.*spec.signal ||
+                           model->background_capturing.*spec.signal);
+  }
+
+  e->RemoveKeyframeModels(TRANSFORM);
+  if (in_long_press) {
+    // We do not do a translation animation for long press.
+    e->SetTranslate(0, 0, 0);
+    return;
+  }
+
+  e->SetTranslate(0, kWebVrPermissionOffsetStart, 0);
+
+  // Build up a keyframe model for the initial transition.
+  std::unique_ptr<cc::KeyframedTransformAnimationCurve> curve(
+      cc::KeyframedTransformAnimationCurve::Create());
+
+  cc::TransformOperations value_1;
+  value_1.AppendTranslate(0, kWebVrPermissionOffsetStart, 0);
+  curve->AddKeyframe(cc::TransformKeyframe::Create(
+      base::TimeDelta(), value_1,
+      cc::CubicBezierTimingFunction::CreatePreset(
+          cc::CubicBezierTimingFunction::EaseType::EASE)));
+
+  cc::TransformOperations value_2;
+  value_2.AppendTranslate(0, kWebVrPermissionOffsetOvershoot, 0);
+  curve->AddKeyframe(cc::TransformKeyframe::Create(
+      base::TimeDelta::FromMilliseconds(kWebVrPermissionOffsetMs), value_2,
+      cc::CubicBezierTimingFunction::CreatePreset(
+          cc::CubicBezierTimingFunction::EaseType::EASE)));
+
+  cc::TransformOperations value_3;
+  value_3.AppendTranslate(0, kWebVrPermissionOffsetFinal, 0);
+  curve->AddKeyframe(cc::TransformKeyframe::Create(
+      base::TimeDelta::FromMilliseconds(kWebVrPermissionAnimationDurationMs),
+      value_3,
+      cc::CubicBezierTimingFunction::CreatePreset(
+          cc::CubicBezierTimingFunction::EaseType::EASE)));
+
+  e->AddKeyframeModel(cc::KeyframeModel::Create(
+      std::move(curve), Animation::GetNextKeyframeModelId(),
+      Animation::GetNextGroupId(), TRANSFORM));
+}
+
+#endif
+
 }  // namespace
 
 UiSceneCreator::UiSceneCreator(UiBrowserInterface* browser,
@@ -1845,8 +2016,7 @@
       float, Model, model_,
       model->reposition_window_enabled() ? kRepositionContentOpacity : 1.0f,
       UiElement, content_toggle.get(), SetOpacity));
-  scene_->AddParentUiElement(k2dBrowsingForeground,
-                             std::move(content_toggle));
+  scene_->AddParentUiElement(k2dBrowsingForeground, std::move(content_toggle));
 
   auto hit_plane =
       Create<InvisibleHitTarget>(kContentRepositionHitPlane, kPhaseForeground);
@@ -2311,7 +2481,8 @@
   };
   std::vector<MenuItem> menu_items = {
       {
-          kOverflowMenuNewIncognitoTabItem, new_incognito_tab_res_id,
+          kOverflowMenuNewIncognitoTabItem,
+          new_incognito_tab_res_id,
           base::BindRepeating(
               [](UiBrowserInterface* browser) { browser->OpenNewTab(true); }),
           base::BindRepeating([](Model* m) { return !m->incognito; }),
@@ -2803,6 +2974,8 @@
   indicators->SetTranslate(0, 0, kWebVrPermissionDepth);
   indicators->set_margin(kWebVrPermissionOuterMargin);
 
+  DrawPhase phase = kPhaseOverlayForeground;
+
   IndicatorSpec app_button_spec = {kNone,
                                    kWebVrExclusiveScreenToast,
                                    GetVrIcon(kVrRemoveCircleOutlineIcon),
@@ -2811,15 +2984,34 @@
                                    0,
                                    nullptr,
                                    false};
-  indicators->AddChild(CreateWebVrIndicator(model_, browser_, app_button_spec));
+  indicators->AddChild(
+      CreateWebVrIndicator(model_, browser_, app_button_spec, phase));
 
   auto specs = GetIndicatorSpecs();
   for (const auto& spec : specs) {
-    indicators->AddChild(CreateWebVrIndicator(model_, browser_, spec));
+    indicators->AddChild(CreateWebVrIndicator(model_, browser_, spec, phase));
   }
 
   auto parent = CreateTransientParent(kWebVrIndicatorTransience,
                                       kToastTimeoutSeconds, true);
+#if defined(OS_WIN)
+  parent->AddBinding(
+      std::make_unique<
+          Binding<std::tuple<bool, CapturingStateModel, CapturingStateModel>>>(
+          VR_BIND_LAMBDA(
+              [](Model* model) {
+                return std::tuple<bool, CapturingStateModel,
+                                  CapturingStateModel>(
+                    model->web_vr_enabled() &&
+                        model->web_vr.IsImmersiveWebXrVisible() &&
+                        model->web_vr.has_received_permissions,
+                    model->active_capturing, model->potential_capturing);
+              },
+              base::Unretained(model_)),
+          VR_BIND_LAMBDA(BindIndicatorTranscienceForWin,
+                         base::Unretained(parent.get()),
+                         base::Unretained(model_), base::Unretained(scene_))));
+#else
   parent->AddBinding(std::make_unique<Binding<std::tuple<bool, bool, bool>>>(
       VR_BIND_LAMBDA(
           [](Model* model) {
@@ -2831,93 +3023,9 @@
                 model->web_vr.showing_hosted_ui);
           },
           base::Unretained(model_)),
-      VR_BIND_LAMBDA(
-          [](TransientElement* e, Model* model, UiScene* scene,
-             const base::Optional<std::tuple<bool, bool, bool>>& last_value,
-             const std::tuple<bool, bool, bool>& value) {
-            const bool in_web_vr_presentation = std::get<0>(value);
-            const bool in_long_press = std::get<1>(value);
-            const bool showing_hosted_ui = std::get<2>(value);
-            const bool was_in_long_press =
-                last_value && std::get<1>(last_value.value());
-            const bool was_showing_hosted_ui =
-                last_value && std::get<2>(last_value.value());
-
-            if (!in_web_vr_presentation) {
-              e->SetVisibleImmediately(false);
-              return;
-            }
-
-            // The reason we need the previous state is to disguish the
-            // situation where the app button has been released after a long
-            // press, and the situation when we want to initially show the
-            // indicators.
-            if (was_in_long_press && !in_long_press)
-              return;
-
-            // Similarly, we need to know when we've finished presenting hosted
-            // ui because we should not show indicators then.
-            if (was_showing_hosted_ui && !showing_hosted_ui)
-              return;
-
-            e->SetVisible(true);
-            e->RefreshVisible();
-            SetVisibleInLayout(
-                scene->GetUiElementByName(kWebVrExclusiveScreenToast),
-                !model->browsing_disabled && !in_long_press);
-
-            auto specs = GetIndicatorSpecs();
-            for (const auto& spec : specs) {
-              SetVisibleInLayout(
-                  scene->GetUiElementByName(spec.webvr_name),
-                  model->active_capturing.*spec.signal ||
-                      model->potential_capturing.*spec.signal ||
-                      model->background_capturing.*spec.signal);
-            }
-
-            e->RemoveKeyframeModels(TRANSFORM);
-            if (in_long_press) {
-              // We do not do a translation animation for long press.
-              e->SetTranslate(0, 0, 0);
-              return;
-            }
-
-            e->SetTranslate(0, kWebVrPermissionOffsetStart, 0);
-
-            // Build up a keyframe model for the initial transition.
-            std::unique_ptr<cc::KeyframedTransformAnimationCurve> curve(
-                cc::KeyframedTransformAnimationCurve::Create());
-
-            cc::TransformOperations value_1;
-            value_1.AppendTranslate(0, kWebVrPermissionOffsetStart, 0);
-            curve->AddKeyframe(cc::TransformKeyframe::Create(
-                base::TimeDelta(), value_1,
-                cc::CubicBezierTimingFunction::CreatePreset(
-                    cc::CubicBezierTimingFunction::EaseType::EASE)));
-
-            cc::TransformOperations value_2;
-            value_2.AppendTranslate(0, kWebVrPermissionOffsetOvershoot, 0);
-            curve->AddKeyframe(cc::TransformKeyframe::Create(
-                base::TimeDelta::FromMilliseconds(kWebVrPermissionOffsetMs),
-                value_2,
-                cc::CubicBezierTimingFunction::CreatePreset(
-                    cc::CubicBezierTimingFunction::EaseType::EASE)));
-
-            cc::TransformOperations value_3;
-            value_3.AppendTranslate(0, kWebVrPermissionOffsetFinal, 0);
-            curve->AddKeyframe(cc::TransformKeyframe::Create(
-                base::TimeDelta::FromMilliseconds(
-                    kWebVrPermissionAnimationDurationMs),
-                value_3,
-                cc::CubicBezierTimingFunction::CreatePreset(
-                    cc::CubicBezierTimingFunction::EaseType::EASE)));
-
-            e->AddKeyframeModel(cc::KeyframeModel::Create(
-                std::move(curve), Animation::GetNextKeyframeModelId(),
-                Animation::GetNextGroupId(), TRANSFORM));
-          },
-          base::Unretained(parent.get()), base::Unretained(model_),
-          base::Unretained(scene_))));
+      VR_BIND_LAMBDA(BindIndicatorTranscience, base::Unretained(parent.get()),
+                     base::Unretained(model_), base::Unretained(scene_))));
+#endif
 
   auto scaler = std::make_unique<ScaledDepthAdjuster>(kWebVrToastDistance);
   scaler->AddChild(std::move(indicators));
diff --git a/chrome/browser/vr/ui_unittest.cc b/chrome/browser/vr/ui_unittest.cc
index e494271..070be975 100644
--- a/chrome/browser/vr/ui_unittest.cc
+++ b/chrome/browser/vr/ui_unittest.cc
@@ -1307,6 +1307,7 @@
 
 // Ensures that permissions do not appear after showing hosted UI.
 TEST_F(UiTest, DoNotShowIndicatorsAfterHostedUi) {
+#if !defined(OS_WIN)
   CreateScene(kInWebVr);
   auto browser_ui = ui_->GetBrowserUiWeakPtr();
   browser_ui->SetWebVrMode(true);
@@ -1323,12 +1324,14 @@
   model_->web_vr.showing_hosted_ui = false;
   OnBeginFrame();
   EXPECT_FALSE(IsVisible(kWebVrExclusiveScreenToast));
+#endif
 }
 
 // Ensures that permissions appear on long press, and that when the menu button
 // is released that we do not show the exclusive screen toast. Distinguishing
 // these cases requires knowledge of the previous state.
 TEST_F(UiTest, LongPressMenuButtonInWebVrMode) {
+#if !defined(OS_WIN)
   CreateScene(kInWebVr);
   auto browser_ui = ui_->GetBrowserUiWeakPtr();
   browser_ui->SetWebVrMode(true);
@@ -1360,6 +1363,7 @@
       std::make_unique<InputEvent>(InputEvent::kMenuButtonLongPressEnd));
   ui_->HandleMenuButtonEvents(&events);
   EXPECT_FALSE(model_->menu_button_long_pressed);
+#endif
 }
 
 TEST_F(UiTest, MenuItems) {
diff --git a/chrome/browser/vr/win/graphics_delegate_win.cc b/chrome/browser/vr/win/graphics_delegate_win.cc
index e156569..2a6627e 100644
--- a/chrome/browser/vr/win/graphics_delegate_win.cc
+++ b/chrome/browser/vr/win/graphics_delegate_win.cc
@@ -304,7 +304,7 @@
 }
 
 void GraphicsDelegateWin::PrepareBufferForBrowserUi() {
-  gl_->ClearColor(0, 1, 0, 1);
+  gl_->ClearColor(0, 0, 0, 0);
   gl_->Clear(GL_COLOR_BUFFER_BIT);
 
   DCHECK(prepared_drawing_buffer_ == DrawingBufferMode::kNone);
diff --git a/chrome/browser/vr/win/scheduler_delegate_win.cc b/chrome/browser/vr/win/scheduler_delegate_win.cc
index 271224d..3d171cc8 100644
--- a/chrome/browser/vr/win/scheduler_delegate_win.cc
+++ b/chrome/browser/vr/win/scheduler_delegate_win.cc
@@ -13,13 +13,14 @@
 
 void SchedulerDelegateWin::OnPose(base::OnceCallback<void()> on_frame_ended,
                                   gfx::Transform head_pose,
+                                  bool draw_overlay,
                                   bool draw_ui) {
   on_frame_ended_ = std::move(on_frame_ended);
   base::TimeTicks now = base::TimeTicks::Now();
-  if (draw_ui)
-    browser_renderer_->DrawBrowserFrame(now);
-  else
+  if (draw_overlay)
     browser_renderer_->DrawWebXrFrame(now, head_pose);
+  else if (draw_ui)
+    browser_renderer_->DrawBrowserFrame(now);
 }
 
 void SchedulerDelegateWin::OnPause() {
diff --git a/chrome/browser/vr/win/scheduler_delegate_win.h b/chrome/browser/vr/win/scheduler_delegate_win.h
index 1c0c120..f2e0945 100644
--- a/chrome/browser/vr/win/scheduler_delegate_win.h
+++ b/chrome/browser/vr/win/scheduler_delegate_win.h
@@ -17,6 +17,7 @@
   // Tell browser when poses available, when we rendered, etc.
   void OnPose(base::OnceCallback<void()> on_frame_ended,
               gfx::Transform head_pose,
+              bool draw_overlay,
               bool draw_ui);
 
  private:
diff --git a/chrome/browser/vr/win/vr_browser_renderer_thread_win.cc b/chrome/browser/vr/win/vr_browser_renderer_thread_win.cc
index 16d329e..1501421e 100644
--- a/chrome/browser/vr/win/vr_browser_renderer_thread_win.cc
+++ b/chrome/browser/vr/win/vr_browser_renderer_thread_win.cc
@@ -57,6 +57,8 @@
   started_ = false;
   graphics_ = nullptr;
   scheduler_ = nullptr;
+  ui_ = nullptr;
+  scheduler_ui_ = nullptr;
 }
 
 void VRBrowserRendererThreadWin::SetVRDisplayInfo(
@@ -115,6 +117,13 @@
   OnSpinnerVisibilityChanged(false);
 }
 
+int VRBrowserRendererThreadWin::GetNextRequestId() {
+  current_request_id_++;
+  if (current_request_id_ >= 0x10000)
+    current_request_id_ = 0;
+  return current_request_id_;
+}
+
 void VRBrowserRendererThreadWin::OnWebXrTimeoutImminent() {
   OnSpinnerVisibilityChanged(true);
   scheduler_ui_->OnWebXrTimeoutImminent();
@@ -135,16 +144,48 @@
 
   ui_->SetVisibleExternalPromptNotification(prompt);
 
-  overlay_->SetOverlayAndWebXRVisibility(draw_state_.ShouldDrawUI(),
-                                         draw_state_.ShouldDrawWebXR());
+  if (overlay_)
+    overlay_->SetOverlayAndWebXRVisibility(draw_state_.ShouldDrawUI(),
+                                           draw_state_.ShouldDrawWebXR());
   if (draw_state_.ShouldDrawUI()) {
-    overlay_->RequestNextOverlayPose(base::BindOnce(
-        &VRBrowserRendererThreadWin::OnPose, base::Unretained(this)));
+    if (overlay_)  // False only while testing
+      overlay_->RequestNextOverlayPose(
+          base::BindOnce(&VRBrowserRendererThreadWin::OnPose,
+                         base::Unretained(this), GetNextRequestId()));
   } else {
     StopOverlay();
   }
 }
 
+void VRBrowserRendererThreadWin::SetIndicatorsVisible(bool visible) {
+  if (!draw_state_.SetIndicatorsVisible(visible))
+    return;
+
+  if (draw_state_.ShouldDrawUI())
+    StartOverlay();
+
+  if (overlay_)
+    overlay_->SetOverlayAndWebXRVisibility(draw_state_.ShouldDrawUI(),
+                                           draw_state_.ShouldDrawWebXR());
+  if (draw_state_.ShouldDrawUI()) {
+    if (overlay_)  // False only while testing
+      overlay_->RequestNextOverlayPose(
+          base::BindOnce(&VRBrowserRendererThreadWin::OnPose,
+                         base::Unretained(this), GetNextRequestId()));
+  } else {
+    StopOverlay();
+  }
+}
+
+void VRBrowserRendererThreadWin::SetCapturingState(
+    const CapturingStateModel& active_capturing,
+    const CapturingStateModel& background_capturing,
+    const CapturingStateModel& potential_capturing) {
+  if (ui_)
+    ui_->SetCapturingState(active_capturing, background_capturing,
+                           potential_capturing);
+}
+
 VRBrowserRendererThreadWin*
 VRBrowserRendererThreadWin::GetInstanceForTesting() {
   return instance_for_testing_;
@@ -263,22 +304,24 @@
 }
 
 void VRBrowserRendererThreadWin::OnSpinnerVisibilityChanged(bool visible) {
-  if (draw_state_.SetSpinnerVisible(visible)) {
-    if (draw_state_.ShouldDrawUI()) {
-      StartOverlay();
-    }
+  if (!draw_state_.SetSpinnerVisible(visible))
+    return;
+  if (draw_state_.ShouldDrawUI()) {
+    StartOverlay();
+  }
 
-    if (overlay_) {
-      overlay_->SetOverlayAndWebXRVisibility(draw_state_.ShouldDrawUI(),
-                                             draw_state_.ShouldDrawWebXR());
-    }
+  if (overlay_) {
+    overlay_->SetOverlayAndWebXRVisibility(draw_state_.ShouldDrawUI(),
+                                           draw_state_.ShouldDrawWebXR());
+  }
 
-    if (draw_state_.ShouldDrawUI()) {
-      overlay_->RequestNextOverlayPose(base::BindOnce(
-          &VRBrowserRendererThreadWin::OnPose, base::Unretained(this)));
-    } else {
-      StopOverlay();
-    }
+  if (draw_state_.ShouldDrawUI()) {
+    if (overlay_)  // False only while testing.
+      overlay_->RequestNextOverlayPose(
+          base::BindOnce(&VRBrowserRendererThreadWin::OnPose,
+                         base::Unretained(this), GetNextRequestId()));
+  } else {
+    StopOverlay();
   }
 }
 
@@ -288,12 +331,16 @@
   StopWebXrTimeout();
 }
 
-void VRBrowserRendererThreadWin::OnPose(device::mojom::XRFrameDataPtr data) {
+void VRBrowserRendererThreadWin::OnPose(int request_id,
+                                        device::mojom::XRFrameDataPtr data) {
+  if (request_id != current_request_id_) {
+    // Old request. Do nothing.
+    return;
+  }
   if (!draw_state_.ShouldDrawUI()) {
     // We shouldn't be showing UI.
     overlay_->SetOverlayAndWebXRVisibility(draw_state_.ShouldDrawUI(),
                                            draw_state_.ShouldDrawWebXR());
-
     if (graphics_)
       graphics_->ResetMemoryBuffer();
     return;
@@ -330,7 +377,8 @@
   // calling the callback if we are destroyed.
   scheduler_->OnPose(base::BindOnce(&VRBrowserRendererThreadWin::SubmitFrame,
                                     base::Unretained(this), std::move(data)),
-                     head_from_world, draw_state_.ShouldDrawUI());
+                     head_from_world, draw_state_.ShouldDrawWebXR(),
+                     draw_state_.ShouldDrawUI());
 }
 
 void VRBrowserRendererThreadWin::SubmitFrame(
@@ -345,24 +393,28 @@
 }
 
 void VRBrowserRendererThreadWin::SubmitResult(bool success) {
-  if (!success) {
+  if (!success && graphics_) {
     graphics_->ResetMemoryBuffer();
   }
+  if (scheduler_ui_ && success)
+    scheduler_ui_->OnWebXrFrameAvailable();
   if (draw_state_.ShouldDrawUI() && started_) {
-    overlay_->RequestNextOverlayPose(base::BindOnce(
-        &VRBrowserRendererThreadWin::OnPose, base::Unretained(this)));
+    overlay_->RequestNextOverlayPose(
+        base::BindOnce(&VRBrowserRendererThreadWin::OnPose,
+                       base::Unretained(this), GetNextRequestId()));
   }
 }
 
 // VRBrowserRendererThreadWin::DrawContentType functions.
 bool VRBrowserRendererThreadWin::DrawState::ShouldDrawUI() {
   return prompt_ != ExternalPromptNotificationType::kPromptNone ||
-         spinner_visible_;
+         spinner_visible_ || indicators_visible_;
 }
 
 bool VRBrowserRendererThreadWin::DrawState::ShouldDrawWebXR() {
-  return prompt_ == ExternalPromptNotificationType::kPromptNone &&
-         !spinner_visible_;
+  return (prompt_ == ExternalPromptNotificationType::kPromptNone &&
+          !spinner_visible_) ||
+         indicators_visible_;
 }
 
 bool VRBrowserRendererThreadWin::DrawState::SetPrompt(
@@ -380,4 +432,11 @@
   return old_ui != ShouldDrawUI() || old_webxr != ShouldDrawWebXR();
 }
 
+bool VRBrowserRendererThreadWin::DrawState::SetIndicatorsVisible(bool visible) {
+  bool old_ui = ShouldDrawUI();
+  bool old_webxr = ShouldDrawWebXR();
+  indicators_visible_ = visible;
+  return old_ui != ShouldDrawUI() || old_webxr != ShouldDrawWebXR();
+}
+
 }  // namespace vr
diff --git a/chrome/browser/vr/win/vr_browser_renderer_thread_win.h b/chrome/browser/vr/win/vr_browser_renderer_thread_win.h
index 8204a03..a8675ee 100644
--- a/chrome/browser/vr/win/vr_browser_renderer_thread_win.h
+++ b/chrome/browser/vr/win/vr_browser_renderer_thread_win.h
@@ -9,6 +9,7 @@
 
 #include "base/threading/thread.h"
 #include "chrome/browser/vr/browser_renderer.h"
+#include "chrome/browser/vr/model/capturing_state_model.h"
 #include "chrome/browser/vr/model/web_vr_model.h"
 #include "chrome/browser/vr/service/browser_xr_runtime.h"
 #include "chrome/browser/vr/vr_export.h"
@@ -37,6 +38,10 @@
   // The below function(s) affect(s) whether UI is drawn or not.
   void SetVisibleExternalPromptNotification(
       ExternalPromptNotificationType prompt);
+  void SetIndicatorsVisible(bool visible);
+  void SetCapturingState(const CapturingStateModel& active_capturing,
+                         const CapturingStateModel& background_capturing,
+                         const CapturingStateModel& potential_capturing);
 
   static VRBrowserRendererThreadWin* GetInstanceForTesting();
   BrowserRenderer* GetBrowserRendererForTesting();
@@ -48,6 +53,7 @@
     // State changing methods.
     bool SetPrompt(ExternalPromptNotificationType prompt);
     bool SetSpinnerVisible(bool visible);
+    bool SetIndicatorsVisible(bool visible);
 
     // State querying methods.
     bool ShouldDrawUI();
@@ -58,9 +64,10 @@
         ExternalPromptNotificationType::kPromptNone;
 
     bool spinner_visible_ = false;
+    bool indicators_visible_ = false;
   };
 
-  void OnPose(device::mojom::XRFrameDataPtr data);
+  void OnPose(int request_id, device::mojom::XRFrameDataPtr data);
   void SubmitResult(bool success);
   void SubmitFrame(device::mojom::XRFrameDataPtr data);
   void StartOverlay();
@@ -71,6 +78,7 @@
   void OnWebXrTimedOut();
   void StartWebXrTimeout();
   void StopWebXrTimeout();
+  int GetNextRequestId();
 
   // We need to do some initialization of GraphicsDelegateWin before
   // browser_renderer_, so we first store it in a unique_ptr, then transition
@@ -94,6 +102,7 @@
   DrawState draw_state_;
   bool started_ = false;
   bool webxr_presenting_ = false;
+  int current_request_id_ = 0;
 
   device::mojom::ImmersiveOverlayPtr overlay_;
   device::mojom::VRDisplayInfoPtr display_info_;
diff --git a/chrome/common/extensions/api/top_sites.json b/chrome/common/extensions/api/top_sites.json
index 3a8ece8..b1bd3cf3 100644
--- a/chrome/common/extensions/api/top_sites.json
+++ b/chrome/common/extensions/api/top_sites.json
@@ -5,12 +5,12 @@
 [
   {
     "namespace": "topSites",
-    "description": "Use the <code>chrome.topSites</code> API to access the top sites that are displayed on the new tab page.",
+    "description": "Use the <code>chrome.topSites</code> API to access the top sites (i.e. most visited) that are displayed on the new tab page. These do not include shortcuts customized by the user.",
     "types": [
       {
         "id": "MostVisitedURL",
         "type": "object",
-        "description": "An object encapsulating a most visited URL, such as the URLs on the new tab page.",
+        "description": "An object encapsulating a most visited URL, such as the default shortcuts on the new tab page.",
         "properties": {
           "url": {"type": "string", "description": "The most visited URL."},
           "title": {"type": "string", "description": "The title of the page"}
diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc
index a7ebeaf..65f05bc 100644
--- a/chrome/common/webui_url_constants.cc
+++ b/chrome/common/webui_url_constants.cc
@@ -22,6 +22,7 @@
 const char kChromeUIAppIconHost[] = "app-icon";
 const char kChromeUIAppIconURL[] = "chrome://app-icon/";
 const char kChromeUIAppLauncherPageHost[] = "apps";
+const char kChromeUIAppManagementHost[] = "apps";
 const char kChromeUIAppsURL[] = "chrome://apps/";
 const char kChromeUIAutofillInternalsHost[] = "autofill-internals";
 const char kChromeUIBluetoothInternalsHost[] = "bluetooth-internals";
diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h
index a57a969..002c96b 100644
--- a/chrome/common/webui_url_constants.h
+++ b/chrome/common/webui_url_constants.h
@@ -29,6 +29,7 @@
 extern const char kChromeUIAppIconHost[];
 extern const char kChromeUIAppIconURL[];
 extern const char kChromeUIAppLauncherPageHost[];
+extern const char kChromeUIAppManagementHost[];
 extern const char kChromeUIAppsURL[];
 extern const char kChromeUIAutofillInternalsHost[];
 extern const char kChromeUIBluetoothInternalsHost[];
diff --git a/chrome/renderer/chrome_render_thread_observer.cc b/chrome/renderer/chrome_render_thread_observer.cc
index 27f5b5e6..d2cc601 100644
--- a/chrome/renderer/chrome_render_thread_observer.cc
+++ b/chrome/renderer/chrome_render_thread_observer.cc
@@ -87,7 +87,6 @@
 
   std::unique_ptr<content::RequestPeer> OnRequestComplete(
       std::unique_ptr<content::RequestPeer> current_peer,
-      content::ResourceType resource_type,
       int error_code) override {
     // Update the browser about our cache.
     // Rate limit informing the host of our cache stats.
@@ -105,7 +104,7 @@
 
     // Resource canceled with a specific error are filtered.
     return SecurityFilterPeer::CreateSecurityFilterPeerForDeniedRequest(
-        resource_type, std::move(current_peer), error_code);
+        std::move(current_peer), error_code);
   }
 
   std::unique_ptr<content::RequestPeer> OnReceivedResponse(
diff --git a/chrome/renderer/security_filter_peer.cc b/chrome/renderer/security_filter_peer.cc
index 335bb02..c87308c 100644
--- a/chrome/renderer/security_filter_peer.cc
+++ b/chrome/renderer/security_filter_peer.cc
@@ -9,26 +9,18 @@
 #include <utility>
 
 #include "base/memory/ptr_util.h"
-#include "base/strings/stringprintf.h"
-#include "chrome/grit/generated_resources.h"
-#include "content/public/renderer/fixed_received_data.h"
-#include "net/base/escape.h"
 #include "net/base/net_errors.h"
 #include "net/http/http_response_headers.h"
 #include "services/network/public/cpp/url_loader_completion_status.h"
-#include "ui/base/l10n/l10n_util.h"
 
 SecurityFilterPeer::SecurityFilterPeer(
-    std::unique_ptr<content::RequestPeer> peer,
-    const std::string& mime_type,
-    const std::string& data)
-    : original_peer_(std::move(peer)), mime_type_(mime_type), data_(data) {}
+    std::unique_ptr<content::RequestPeer> peer)
+    : original_peer_(std::move(peer)) {}
 SecurityFilterPeer::~SecurityFilterPeer() {}
 
 // static
 std::unique_ptr<content::RequestPeer>
 SecurityFilterPeer::CreateSecurityFilterPeerForDeniedRequest(
-    content::ResourceType resource_type,
     std::unique_ptr<content::RequestPeer> peer,
     int os_error) {
   // Create a filter for SSL and CERT errors.
@@ -46,24 +38,8 @@
     case net::ERR_CERT_WEAK_KEY:
     case net::ERR_CERT_NAME_CONSTRAINT_VIOLATION:
     case net::ERR_INSECURE_RESPONSE:
-    case net::ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN: {
-      std::string mime_type;
-      std::string data;
-      if (content::IsResourceTypeFrame(resource_type)) {
-        // TODO(jcampan): use a different message when getting a
-        // phishing/malware error.
-        data = base::StringPrintf(
-            "<html><meta charset='UTF-8'>"
-            "<body style='background-color:#990000;color:white;'>"
-            "%s</body></html>",
-            net::EscapeForHTML(
-                l10n_util::GetStringUTF8(IDS_UNSAFE_FRAME_MESSAGE))
-                .c_str());
-        mime_type = "text/html";
-      }
-      return base::WrapUnique(
-          new SecurityFilterPeer(std::move(peer), mime_type, data));
-    }
+    case net::ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN:
+      return base::WrapUnique(new SecurityFilterPeer(std::move(peer)));
     default:
       // For other errors, we use our normal error handling.
       return peer;
@@ -102,14 +78,9 @@
 void SecurityFilterPeer::OnCompletedRequest(
     const network::URLLoaderCompletionStatus& status) {
   network::ResourceResponseInfo info;
-  info.mime_type = mime_type_;
-  info.headers = CreateHeaders(mime_type_);
-  info.content_length = static_cast<int>(data_.size());
+  info.headers = CreateHeaders();
+  info.content_length = 0;
   original_peer_->OnReceivedResponse(info);
-  if (!data_.empty()) {
-    original_peer_->OnReceivedData(std::make_unique<content::FixedReceivedData>(
-        data_.data(), data_.size()));
-  }
   network::URLLoaderCompletionStatus ok_status(status);
   ok_status.error_code = net::OK;
   original_peer_->OnCompletedRequest(ok_status);
@@ -119,8 +90,7 @@
   return original_peer_->GetTaskRunner();
 }
 
-scoped_refptr<net::HttpResponseHeaders> SecurityFilterPeer::CreateHeaders(
-    const std::string& mime_type) {
+scoped_refptr<net::HttpResponseHeaders> SecurityFilterPeer::CreateHeaders() {
   std::string raw_headers;
   raw_headers.append("HTTP/1.1 200 OK");
   raw_headers.push_back('\0');
@@ -130,11 +100,6 @@
   // resource).
   raw_headers.append("cache-control: no-cache");
   raw_headers.push_back('\0');
-  if (!mime_type.empty()) {
-    raw_headers.append("content-type: ");
-    raw_headers.append(mime_type);
-    raw_headers.push_back('\0');
-  }
   raw_headers.push_back('\0');
   return base::MakeRefCounted<net::HttpResponseHeaders>(raw_headers);
 }
diff --git a/chrome/renderer/security_filter_peer.h b/chrome/renderer/security_filter_peer.h
index 81e94a8..f69e224 100644
--- a/chrome/renderer/security_filter_peer.h
+++ b/chrome/renderer/security_filter_peer.h
@@ -11,7 +11,6 @@
 #include <string>
 
 #include "base/macros.h"
-#include "content/public/common/resource_type.h"
 #include "content/public/renderer/request_peer.h"
 #include "services/network/public/cpp/resource_response_info.h"
 
@@ -29,7 +28,6 @@
 
   static std::unique_ptr<content::RequestPeer>
   CreateSecurityFilterPeerForDeniedRequest(
-      content::ResourceType resource_type,
       std::unique_ptr<content::RequestPeer> peer,
       int os_error);
 
@@ -47,16 +45,11 @@
   scoped_refptr<base::TaskRunner> GetTaskRunner() override;
 
  private:
-  SecurityFilterPeer(std::unique_ptr<content::RequestPeer> peer,
-                     const std::string& mime_type,
-                     const std::string& data);
+  explicit SecurityFilterPeer(std::unique_ptr<content::RequestPeer> peer);
 
-  static scoped_refptr<net::HttpResponseHeaders> CreateHeaders(
-      const std::string& mime_type);
+  static scoped_refptr<net::HttpResponseHeaders> CreateHeaders();
 
   std::unique_ptr<content::RequestPeer> original_peer_;
-  std::string mime_type_;
-  std::string data_;
 
   DISALLOW_COPY_AND_ASSIGN(SecurityFilterPeer);
 };
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 45bedc9..95974f2 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -1032,8 +1032,10 @@
       "../browser/ui/views/content_test_utils.h",
       "../browser/ui/views/device_chooser_browsertest.cc",
       "../browser/ui/views/hats/hats_browsertest.cc",
+      "../browser/ui/views/intent_picker_bubble_view_browsertest.cc",
       "../browser/ui/views/try_chrome_dialog_win/try_chrome_dialog_browsertest.cc",
       "../browser/ui/views/webauthn/authenticator_dialog_view_browsertest.cc",
+      "../browser/ui/views/webview_accessibility_browsertest.cc",
       "../browser/ui/web_applications/bookmark_app_browsertest.cc",
       "../browser/ui/webauthn/authenticator_dialog_browsertest.cc",
       "../browser/ui/webui/bookmarks/bookmarks_browsertest.cc",
@@ -1287,7 +1289,6 @@
       if (is_chromeos) {
         sources += [
           "../browser/ui/views/extensions/request_file_system_dialog_browsertest.cc",
-          "../browser/ui/views/intent_picker_bubble_view_browsertest.cc",
           "//third_party/liblouis/wasm/liblouis_wrapper_browsertest.cc",
         ]
         deps += [ "//chrome/browser/chromeos" ]
@@ -1874,6 +1875,7 @@
         "../browser/chromeos/login/screens/mock_wrong_hwid_screen.cc",
         "../browser/chromeos/login/screens/mock_wrong_hwid_screen.h",
         "../browser/chromeos/login/screens/network_screen_browsertest.cc",
+        "../browser/chromeos/login/screens/recommend_apps_screen_browsertest.cc",
         "../browser/chromeos/login/screens/update_screen_browsertest.cc",
         "../browser/chromeos/login/screens/user_selection_screen_browsertest.cc",
         "../browser/chromeos/login/screenshot_testing/SkDiffPixelsMetric.h",
@@ -3557,6 +3559,8 @@
   if (!is_android) {
     sources += [
       "../browser/apps/app_service/app_service_proxy_unittest.cc",
+      "../browser/apps/intent_helper/apps_navigation_throttle_unittest.cc",
+      "../browser/apps/intent_helper/page_transition_util_unittest.cc",
       "../browser/devtools/devtools_file_system_indexer_unittest.cc",
       "../browser/devtools/devtools_file_watcher_unittest.cc",
       "../browser/devtools/devtools_ui_bindings_unittest.cc",
@@ -3690,8 +3694,6 @@
       "../browser/ui/window_sizer/window_sizer_unittest.cc",
     ]
     sources += [
-      "../browser/apps/intent_helper/apps_navigation_throttle_unittest.cc",
-      "../browser/apps/intent_helper/page_transition_util_unittest.cc",
       "../browser/chromeos/crostini/crostini_mime_types_service_unittest.cc",
       "../browser/chromeos/crostini/crostini_registry_service_unittest.cc",
       "../browser/chromeos/crostini/crostini_reporting_util_unittest.cc",
diff --git a/chrome/test/base/test_browser_window.h b/chrome/test/base/test_browser_window.h
index 22aae8c0..f339ac8 100644
--- a/chrome/test/base/test_browser_window.h
+++ b/chrome/test/base/test_browser_window.h
@@ -19,9 +19,9 @@
 #include "chrome/browser/ui/page_action/page_action_icon_container.h"
 #include "chrome/common/buildflags.h"
 
-#if defined(OS_CHROMEOS)
+#if !defined(OS_ANDROID)
 #include "chrome/browser/apps/intent_helper/apps_navigation_types.h"
-#endif  // defined(OS_CHROMEOS)
+#endif  //  !defined(OS_ANDROID)
 
 class LocationBarTesting;
 class OmniboxView;
@@ -115,13 +115,12 @@
   bool IsToolbarShowing() const override;
   void ShowUpdateChromeDialog() override {}
   void ShowBookmarkBubble(const GURL& url, bool already_bookmarked) override {}
-#if defined(OS_CHROMEOS)
-  void ShowIntentPickerBubble(
-      std::vector<chromeos::IntentPickerAppInfo> app_info,
-      bool disable_stay_in_chrome,
-      IntentPickerResponse callback) override {}
+#if !defined(OS_ANDROID)
+  void ShowIntentPickerBubble(std::vector<apps::IntentPickerAppInfo> app_info,
+                              bool disable_stay_in_chrome,
+                              IntentPickerResponse callback) override {}
   void SetIntentPickerViewVisibility(bool visible) override {}
-#endif
+#endif  //  !define(OS_ANDROID)
   autofill::SaveCardBubbleView* ShowSaveCreditCardBubble(
       content::WebContents* contents,
       autofill::SaveCardBubbleController* controller,
diff --git a/chrome/test/chromedriver/window_commands.cc b/chrome/test/chromedriver/window_commands.cc
index 6991024..b29e583e 100644
--- a/chrome/test/chromedriver/window_commands.cc
+++ b/chrome/test/chromedriver/window_commands.cc
@@ -235,8 +235,7 @@
   return dict;
 }
 
-Status GetVisibleCookies(Session* session,
-                         WebView* web_view,
+Status GetVisibleCookies(WebView* web_view,
                          std::list<Cookie>* cookies) {
   std::string current_page_url;
   Status status = GetUrl(web_view, std::string(), &current_page_url);
@@ -258,10 +257,6 @@
     cookie_dict->GetString("value", &value);
     std::string domain;
     cookie_dict->GetString("domain", &domain);
-    if (session->w3c_compliant) {
-      if (domain[0] == '.')
-        domain.erase(0, 1);
-    }
     std::string path;
     cookie_dict->GetString("path", &path);
     double expiry = 0;
@@ -1779,12 +1774,14 @@
                          std::unique_ptr<base::Value>* value,
                          Timeout* timeout) {
   std::list<Cookie> cookies;
-  Status status = GetVisibleCookies(session, web_view, &cookies);
+  Status status = GetVisibleCookies(web_view, &cookies);
   if (status.IsError())
     return status;
   std::unique_ptr<base::ListValue> cookie_list(new base::ListValue());
-  for (std::list<Cookie>::const_iterator it = cookies.begin();
+  for (std::list<Cookie>::iterator it = cookies.begin();
        it != cookies.end(); ++it) {
+    if (session->w3c_compliant && it->domain[0] == '.')
+      it->domain.erase(0, 1);
     cookie_list->Append(CreateDictionaryFrom(*it));
   }
   *value = std::move(cookie_list);
@@ -1801,13 +1798,15 @@
     return Status(kInvalidArgument, "missing 'cookie name'");
 
   std::list<Cookie> cookies;
-  Status status = GetVisibleCookies(session, web_view, &cookies);
+  Status status = GetVisibleCookies(web_view, &cookies);
   if (status.IsError())
     return status;
 
-  for (std::list<Cookie>::const_iterator it = cookies.begin();
+  for (std::list<Cookie>::iterator it = cookies.begin();
        it != cookies.end(); ++it) {
     if (name == it->name) {
+      if (session->w3c_compliant && it->domain[0] == '.')
+        it->domain.erase(0, 1);
       value->reset(CreateDictionaryFrom(*it)->DeepCopy());
       return Status(kOk);
     }
@@ -1888,7 +1887,7 @@
     return status;
 
   std::list<Cookie> cookies;
-  status = GetVisibleCookies(session, web_view, &cookies);
+  status = GetVisibleCookies(web_view, &cookies);
   if (status.IsError())
     return status;
 
@@ -1909,7 +1908,7 @@
                                std::unique_ptr<base::Value>* value,
                                Timeout* timeout) {
   std::list<Cookie> cookies;
-  Status status = GetVisibleCookies(session, web_view, &cookies);
+  Status status = GetVisibleCookies(web_view, &cookies);
   if (status.IsError())
     return status;
 
diff --git a/chrome/test/data/accessibility/fixed_size_document.html b/chrome/test/data/accessibility/fixed_size_document.html
new file mode 100644
index 0000000..12f3d2a
--- /dev/null
+++ b/chrome/test/data/accessibility/fixed_size_document.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <style>
+    body {
+      width: 300px;
+      height: 300px;
+      overflow: hidden;
+      margin: 0;
+      padding: 0;
+    }
+    button {
+      display: block;
+      margin: 0;
+      padding: 0;
+      border: 0;
+      width: 100px;
+      height: 50px;
+      position: absolute;
+    }
+    #b1 {
+      left: 0;
+      top: 0;
+      background-color: #090;
+    }
+    #b2 {
+      left: 0;
+      top: 150px;
+      background-color: #900;
+    }
+  </style>
+</head>
+<body><button id="b1" aria-label="Button 1"></button><button id="b2" aria-label="Button 2"></button></body>
diff --git a/chrome/test/data/autofill/captured_sites/cipd.yaml b/chrome/test/data/autofill/captured_sites/cipd.yaml
index 0b561961..ee29656 100644
--- a/chrome/test/data/autofill/captured_sites/cipd.yaml
+++ b/chrome/test/data/autofill/captured_sites/cipd.yaml
@@ -15,29 +15,206 @@
 description: captured sites test archives and recipes.
 install_mode: copy
 data:
+  - file: 1aauto
+  - file: 1aauto.test
+  - file: aarons
+  - file: aarons.test
+  - file: academy
+  - file: academy.test
+  - file: accesscorrections
+  - file: accesscorrections.test
   - file: amazon
   - file: amazon.test
-  - file: bestbuy
-  - file: bestbuy.test
-  - file: etsy
-  - file: etsy.test
+  - file: apmex
+  - file: apmex.test
+  - file: apple
+  - file: apple.test
+  - file: autoanything
+  - file: autoanything.test
+  - file: bath_and_body_works
+  - file: bath_and_body_works.test
+  - file: bodybuilding
+  - file: bodybuilding.test
+  - file: boostmobile
+  - file: boostmobile.test
+  - file: brandfactoryonline
+  - file: brandfactoryonline.test
+  - file: bricklink
+  - file: bricklink.test
+  - file: broadway
+  - file: broadway.test
+  - file: cabelas
+  - file: cabelas.test
+  - file: cafe_press
+  - file: cafe_press.test
+  - file: cargurus
+  - file: cargurus.test
+  - file: carid
+  - file: carid.test
+  - file: carmax
+  - file: carmax.test
+  - file: cars
+  - file: cars.test
+  - file: carsforsale
+  - file: carsforsale.test
+  - file: carters
+  - file: carters.test
+  - file: catch
+  - file: catch.test
+  - file: cdbaby
+  - file: cdbaby.test
+  - file: cdjapan
+  - file: cdjapan.test
+  - file: cduniverse
+  - file: cduniverse.test
+  - file: channelfireball
+  - file: channelfireball.test
+  - file: chewy
+  - file: chewy.test
+  - file: cinemark
+  - file: cinemark.test
+  - file: coach
+  - file: coach.test
+  - file: coolstuffinc
+  - file: coolstuffinc.test
+  - file: creditonebank
+  - file: creditonebank.test
+  - file: cricketwireless
+  - file: cricketwireless.test
+  - file: crutch_field
+  - file: crutch_field.test
+  - file: customink
+  - file: customink.test
+  - file: davidsbridal
+  - file: davidsbridal.test
+  - file: dell
+  - file: dell.test
+  - file: dickblick
+  - file: dickblick.test
+  - file: dish
+  - file: dish.test
+  - file: eddiebauer
+  - file: eddiebauer.test
+  - file: evo
+  - file: evo.test
+  - file: expedia
+  - file: expedia.test
+  - file: fanatics
+  - file: fanatics.test
+  - file: fender
+  - file: fender.test
+  - file: findmeagift
+  - file: findmeagift.test
+  - file: fingerhut
+  - file: fingerhut.test
+  - file: finish_line
+  - file: finish_line.test
+  - file: fromyouflowers
+  - file: fromyouflowers.test
+  - file: frys
+  - file: frys.test
+  - file: gamestop
+  - file: gamestop.test
+  - file: globalcashcard
+  - file: globalcashcard.test
+  - file: gnc
+  - file: gnc.test
+  - file: gofreecredit
+  - file: gofreecredit.test
+  - file: golookup
+  - file: golookup.test
+  - file: graze
+  - file: graze.test
+  - file: greendot_create_user
+  - file: greendot_create_user.test
   - file: groupon
   - file: groupon.test
-  - file: home_depot
-  - file: home_depot.test
-  - file: jet
-  - file: jet.test
-  - file: macys
-  - file: macys.test
-  - file: newegg
-  - file: newegg.test
-  - file: qvc
-  - file: qvc.test
-  - file: walmart
-  - file: walmart.test
-  - file: wayfair
-  - file: wayfair.test
-  - file: zappos
-  - file: zappos.test
-  - file: zulily
-  - file: zulily.test
\ No newline at end of file
+  - file: harbor_freight
+  - file: harbor_freight.test
+  - file: hobbylobby
+  - file: hobbylobby.test
+  - file: horizoncardservices
+  - file: horizoncardservices.test
+  - file: jetspizza
+  - file: jetspizza.test
+  - file: jetstar
+  - file: jetstar.test
+  - file: joann
+  - file: joann.test
+  - file: jostens
+  - file: jostens.test
+  - file: juno
+  - file: juno.test
+  - file: just_fab
+  - file: just_fab.test
+  - file: levi
+  - file: levi.test
+  - file: living_social
+  - file: living_social.test
+  - file: mango
+  - file: mango.test
+  - file: mapsofindia
+  - file: mapsofindia.test
+  - file: mercurypay
+  - file: mercurypay.test
+  - file: modcloth
+  - file: modcloth.test
+  - file: moma
+  - file: moma.test
+  - file: monoprice
+  - file: monoprice.test
+  - file: movietickets
+  - file: movietickets.test
+  - file: musicians_friend
+  - file: musicians_friend.test
+  - file: neiman_marcus
+  - file: neiman_marcus.test
+  - file: net_a_porter
+  - file: net_a_porter.test
+  - file: netfirstplatinum
+  - file: netfirstplatinum.test
+  - file: netspend
+  - file: netspend.test
+  - file: newlook
+  - file: newlook.test
+  - file: nflshop
+  - file: nflshop.test
+  - file: northerntool
+  - file: northerntool.test
+  - file: notonthehighstreet
+  - file: notonthehighstreet.test
+  - file: opticsplanet
+  - file: opticsplanet.test
+  - file: overstock
+  - file: overstock.test
+  - file: pac_sun
+  - file: pac_sun.test
+  - file: palmettostatearmory
+  - file: palmettostatearmory.test
+  - file: pandora
+  - file: pandora.test
+  - file: pets_mart
+  - file: pets_mart.test
+  - file: pier1
+  - file: pier1.test
+  - file: pizzahut_uk
+  - file: pizzahut_uk.test
+  - file: polar
+  - file: polar.test
+  - file: pottery_barn
+  - file: pottery_barn.test
+  - file: prima_games
+  - file: prima_games.test
+  - file: represent
+  - file: represent.test
+  - file: rock_auto
+  - file: rock_auto.test
+  - file: rue21
+  - file: rue21.test
+  - file: safishing
+  - file: safishing.test
+  - file: sheetmusicplus
+  - file: sheetmusicplus.test
+  - file: sierra_trading_post
+  - file: sierra_trading_post.test
+
diff --git a/chrome/test/data/webui/welcome/nux_set_as_default_test.js b/chrome/test/data/webui/welcome/nux_set_as_default_test.js
index f76a7ea..2f470fb4 100644
--- a/chrome/test/data/webui/welcome/nux_set_as_default_test.js
+++ b/chrome/test/data/webui/welcome/nux_set_as_default_test.js
@@ -46,10 +46,14 @@
             testSetAsDefaultProxy.whenCalled('setAsDefault'),
           ]);
 
+          const notifyPromise =
+              test_util.eventToPromise('default-browser-change', testElement);
+
           cr.webUIListenerCallback(
               'browser-default-state-changed', {isDefault: true});
 
           return Promise.all([
+            notifyPromise,
             testSetAsDefaultProxy.whenCalled('recordSuccessfullySetDefault'),
             navigatedPromise
           ]);
diff --git a/chrome/test/data/webui/welcome/onboarding_welcome_browsertest.js b/chrome/test/data/webui/welcome/onboarding_welcome_browsertest.js
index cbb3b65..8633b077 100644
--- a/chrome/test/data/webui/welcome/onboarding_welcome_browsertest.js
+++ b/chrome/test/data/webui/welcome/onboarding_welcome_browsertest.js
@@ -166,6 +166,7 @@
   /** @override */
   get extraLibraries() {
     return super.extraLibraries.concat([
+      '../settings/test_util.js',
       'nux_set_as_default_test.js',
       'test_nux_set_as_default_proxy.js',
     ]);
diff --git a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsActivity.java b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsActivity.java
index 88f0be96..65b666d 100644
--- a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsActivity.java
+++ b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsActivity.java
@@ -10,6 +10,7 @@
 import android.graphics.Color;
 import android.media.AudioManager;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.view.KeyEvent;
@@ -112,8 +113,7 @@
                     // Set flags to both exit sleep mode when this activity starts and
                     // avoid entering sleep mode while playing media. If an app that shouldn't turn
                     // on the screen is launching, we don't add TURN_SCREEN_ON.
-                    if (CastWebContentsIntentUtils.shouldTurnOnScreen(intent))
-                        window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
+                    if (CastWebContentsIntentUtils.shouldTurnOnScreen(intent)) turnScreenOn();
                     window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
                 })));
 
@@ -290,6 +290,14 @@
         return false;
     }
 
+    private void turnScreenOn() {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
+            setTurnScreenOn(true);
+        } else {
+            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
+        }
+    }
+
     @RemovableInRelease
     public void finishForTesting() {
         mIsFinishingState.set("Finish for testing");
diff --git a/chromecast/browser/android/junit/src/org/chromium/chromecast/shell/CastWebContentsActivityTest.java b/chromecast/browser/android/junit/src/org/chromium/chromecast/shell/CastWebContentsActivityTest.java
index 400b847d..b5d6bfef 100644
--- a/chromecast/browser/android/junit/src/org/chromium/chromecast/shell/CastWebContentsActivityTest.java
+++ b/chromecast/browser/android/junit/src/org/chromium/chromecast/shell/CastWebContentsActivityTest.java
@@ -12,8 +12,10 @@
 import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.verify;
 
+import android.app.Activity;
 import android.content.Intent;
 import android.media.AudioManager;
+import android.os.Build;
 import android.view.KeyEvent;
 import android.view.WindowManager;
 
@@ -28,6 +30,9 @@
 import org.robolectric.Shadows;
 import org.robolectric.android.controller.ActivityController;
 import org.robolectric.annotation.Config;
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.shadow.api.Shadow;
 import org.robolectric.shadows.ShadowActivity;
 
 import org.chromium.content_public.browser.WebContents;
@@ -41,6 +46,20 @@
 @RunWith(LocalRobolectricTestRunner.class)
 @Config(manifest = Config.NONE)
 public class CastWebContentsActivityTest {
+    @Implements(Activity.class)
+    public static class ExtendedShadowActivity extends ShadowActivity {
+        private boolean mTurnScreenOn;
+
+        public boolean getTurnScreenOn() {
+            return mTurnScreenOn;
+        }
+
+        @Implementation
+        public void setTurnScreenOn(boolean turnScreenOn) {
+            mTurnScreenOn = turnScreenOn;
+        }
+    }
+
     private ActivityController<CastWebContentsActivity> mActivityLifecycle;
     private CastWebContentsActivity mActivity;
     private ShadowActivity mShadowActivity;
@@ -151,13 +170,27 @@
     }
 
     @Test
+    @Config(shadows = {ExtendedShadowActivity.class})
     public void testTurnsScreenOnIfTurnOnScreen() {
         mActivityLifecycle = Robolectric.buildActivity(CastWebContentsActivity.class,
                 CastWebContentsIntentUtils.requestStartCastActivity(
                         RuntimeEnvironment.application, mWebContents, true, false, true, "0"));
         mActivity = mActivityLifecycle.get();
         mActivity.testingModeForTesting();
-        mShadowActivity = Shadows.shadowOf(mActivity);
+        ExtendedShadowActivity shadowActivity = (ExtendedShadowActivity) Shadow.extract(mActivity);
+        mActivityLifecycle.create();
+
+        Assert.assertTrue(shadowActivity.getTurnScreenOn());
+    }
+
+    @Test
+    @Config(sdk = {Build.VERSION_CODES.O})
+    public void testTurnsScreenOnIfTurnOnScreen_AndroidO() {
+        mActivityLifecycle = Robolectric.buildActivity(CastWebContentsActivity.class,
+                CastWebContentsIntentUtils.requestStartCastActivity(
+                        RuntimeEnvironment.application, mWebContents, true, false, true, "0"));
+        mActivity = mActivityLifecycle.get();
+        mActivity.testingModeForTesting();
         mActivityLifecycle.create();
 
         Assert.assertTrue(Shadows.shadowOf(mActivity.getWindow())
@@ -165,17 +198,31 @@
     }
 
     @Test
+    @Config(shadows = {ExtendedShadowActivity.class})
     public void testDoesNotTurnScreenOnIfNotTurnOnScreen() {
         mActivityLifecycle = Robolectric.buildActivity(CastWebContentsActivity.class,
                 CastWebContentsIntentUtils.requestStartCastActivity(
                         RuntimeEnvironment.application, mWebContents, true, false, false, "0"));
         mActivity = mActivityLifecycle.get();
         mActivity.testingModeForTesting();
-        mShadowActivity = Shadows.shadowOf(mActivity);
+        ExtendedShadowActivity shadowActivity = (ExtendedShadowActivity) Shadow.extract(mActivity);
         mActivityLifecycle.create();
 
-        Assert.assertFalse(Shadows.shadowOf(mActivity.getWindow())
-                                   .getFlag(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON));
+        Assert.assertFalse(shadowActivity.getTurnScreenOn());
+    }
+
+    @Test
+    @Config(sdk = {Build.VERSION_CODES.O})
+    public void testDoesNotTurnScreenOnIfNotTurnOnScreen_AndroidO() {
+        mActivityLifecycle = Robolectric.buildActivity(CastWebContentsActivity.class,
+                CastWebContentsIntentUtils.requestStartCastActivity(
+                        RuntimeEnvironment.application, mWebContents, true, false, true, "0"));
+        mActivity = mActivityLifecycle.get();
+        mActivity.testingModeForTesting();
+        mActivityLifecycle.create();
+
+        Assert.assertTrue(Shadows.shadowOf(mActivity.getWindow())
+                                  .getFlag(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON));
     }
 
     @Test
diff --git a/chromeos/services/assistant/assistant_manager_service_impl.cc b/chromeos/services/assistant/assistant_manager_service_impl.cc
index 79af8e7a..b074a96 100644
--- a/chromeos/services/assistant/assistant_manager_service_impl.cc
+++ b/chromeos/services/assistant/assistant_manager_service_impl.cc
@@ -1492,6 +1492,16 @@
 }
 
 void AssistantManagerServiceImpl::UpdateMediaState() {
+  if (media_session_info_ptr_ &&
+      media_session_info_ptr_->state ==
+          media_session::mojom::MediaSessionInfo::SessionState::kSuspended &&
+      media_session_info_ptr_->playback_state ==
+          media_session::mojom::MediaPlaybackState::kPlaying) {
+    // It is a intermediate state caused by some providers override the playback
+    // state. We considered it as invalid and skip reporting the state.
+    return;
+  }
+
   // TODO(llin): MediaSession Integrated providers (include the libassistant
   // internal media provider) will trigger media state change event. Only
   // update the external media status if the state changes is triggered by
diff --git a/components/autofill/core/browser/BUILD.gn b/components/autofill/core/browser/BUILD.gn
index d8d463f..406d655 100644
--- a/components/autofill/core/browser/BUILD.gn
+++ b/components/autofill/core/browser/BUILD.gn
@@ -487,6 +487,7 @@
   testonly = true
   sources = [
     "address_combobox_model_unittest.cc",
+    "address_contact_form_label_formatter_unittest.cc",
     "address_email_form_label_formatter_unittest.cc",
     "address_field_unittest.cc",
     "address_form_label_formatter_unittest.cc",
diff --git a/components/autofill/core/browser/address_contact_form_label_formatter.cc b/components/autofill/core/browser/address_contact_form_label_formatter.cc
index de5ad387b..b74e75a 100644
--- a/components/autofill/core/browser/address_contact_form_label_formatter.cc
+++ b/components/autofill/core/browser/address_contact_form_label_formatter.cc
@@ -4,21 +4,123 @@
 
 #include "components/autofill/core/browser/address_contact_form_label_formatter.h"
 
+#include "components/autofill/core/browser/label_formatter_utils.h"
+
 namespace autofill {
 
 AddressContactFormLabelFormatter::AddressContactFormLabelFormatter(
     const std::string& app_locale,
     ServerFieldType focused_field_type,
     const std::vector<ServerFieldType>& field_types)
-    : LabelFormatter(app_locale, focused_field_type, field_types) {}
+    : LabelFormatter(app_locale, focused_field_type, field_types),
+      form_has_street_address_(HasStreetAddress(field_types_for_labels())) {}
 
 AddressContactFormLabelFormatter::~AddressContactFormLabelFormatter() {}
 
 base::string16 AddressContactFormLabelFormatter::GetLabelForFocusedGroup(
     const AutofillProfile& profile,
     FieldTypeGroup group) const {
-  // TODO(crbug.com/936168): Implement GetLabelForFocusedGroup().
-  return base::string16();
+  return group == NAME || group == ADDRESS_HOME
+             ? GetLabelForProfileOnFocusedNameOrAddress(profile, group)
+             : GetLabelForProfileOnFocusedPhoneOrEmail(profile, group);
+}
+
+// Note that the order in which parts of the label are added--national address
+// or name and partial address in the top line followed by phone and email in
+// the bottom line--ensures that the label is formatted correctly for
+// |focused_group|, |focused_field_type_|, and for this kind of formatter.
+//
+// To format the address part of the label correctly, either the national
+// address or a short form of the address is used.
+//
+// When a user is focused on a name field, the label has the national address:
+// Name: |_________________________________________|
+//       | Sarah Revere                            |
+//       | 19 North Sq, Boston, MA 02113           |
+//       | (617) 722-2000 • sarah1775@gmail.com    |
+//       +-----------------------------------------+
+//
+// When a user is focused on an address field, the label has a short form of the
+// address (A) to avoid showing data that also appears in the top line and (B)
+// to reduce the width of the dropdown.
+//
+// The part that is displayed depends on whether |focused_field_type_| is
+// related to street addresses.
+//
+// Address: |_________________________________________|
+//          | 19 North Sq                             |
+//          | Sarah Revere • Boston, MA 02113         |
+//          | (617) 722-2000 • sarah1775@gmail.com    |
+//          +-----------------------------------------+
+//
+// City: |_________________________________________|
+//       | Boston                                  |
+//       | Sarah Revere • 19 North Sq              |
+//       | (617) 722-2000 • sarah1775@gmail.com    |
+//       +-----------------------------------------+
+base::string16
+AddressContactFormLabelFormatter::GetLabelForProfileOnFocusedNameOrAddress(
+    const AutofillProfile& profile,
+    FieldTypeGroup focused_group) const {
+  std::vector<base::string16> top_line_label_parts;
+
+  if (focused_group != ADDRESS_HOME) {
+    AddLabelPartIfNotEmpty(GetLabelNationalAddress(profile, app_locale(),
+                                                   field_types_for_labels()),
+                           &top_line_label_parts);
+  }
+
+  if (focused_group != NAME) {
+    AddLabelPartIfNotEmpty(GetLabelName(profile, app_locale()),
+                           &top_line_label_parts);
+    AddLabelPartIfNotEmpty(GetLabelForFocusedAddress(
+                               focused_field_type(), form_has_street_address_,
+                               profile, app_locale(), field_types_for_labels()),
+                           &top_line_label_parts);
+  }
+
+  std::vector<base::string16> bottom_line_label_parts;
+  AddLabelPartIfNotEmpty(GetLabelPhone(profile, app_locale()),
+                         &bottom_line_label_parts);
+  AddLabelPartIfNotEmpty(GetLabelEmail(profile, app_locale()),
+                         &bottom_line_label_parts);
+
+  return ConstructLabelLines(ConstructLabelLine(top_line_label_parts),
+                             ConstructLabelLine(bottom_line_label_parts));
+}
+
+// Note that the order in which parts of the label are added--name, phone and
+// email in the top line followed by the national address in the bottom
+// line--ensures that the label is formatted correctly for |focused_group| and
+// for this kind of formatter.
+base::string16
+AddressContactFormLabelFormatter::GetLabelForProfileOnFocusedPhoneOrEmail(
+    const AutofillProfile& profile,
+    FieldTypeGroup focused_group) const {
+  std::vector<base::string16> top_line_label_parts;
+
+  AddLabelPartIfNotEmpty(GetLabelName(profile, app_locale()),
+                         &top_line_label_parts);
+
+  if (focused_group != PHONE_HOME) {
+    AddLabelPartIfNotEmpty(GetLabelPhone(profile, app_locale()),
+                           &top_line_label_parts);
+  }
+
+  if (focused_group != EMAIL) {
+    AddLabelPartIfNotEmpty(GetLabelEmail(profile, app_locale()),
+                           &top_line_label_parts);
+  }
+
+  // ExtractAddressFieldTypes ensures that name-related information is not
+  // included in the result. National addresses have recipient names, e.g.
+  // Sarah Revere, 19 North Sq, Boston, MA 02113. However, for this part of the
+  // label, only 19 North Sq, Boston, MA 02113 is wanted.
+  return ConstructLabelLines(
+      ConstructLabelLine(top_line_label_parts),
+      GetLabelNationalAddress(
+          profile, app_locale(),
+          ExtractAddressFieldTypes(field_types_for_labels())));
 }
 
 }  // namespace autofill
diff --git a/components/autofill/core/browser/address_contact_form_label_formatter.h b/components/autofill/core/browser/address_contact_form_label_formatter.h
index ff3fed2..958eba3 100644
--- a/components/autofill/core/browser/address_contact_form_label_formatter.h
+++ b/components/autofill/core/browser/address_contact_form_label_formatter.h
@@ -28,6 +28,27 @@
 
   base::string16 GetLabelForFocusedGroup(const AutofillProfile& profile,
                                          FieldTypeGroup group) const override;
+
+ private:
+  // Returns a label to show the user when |focused_field_type_| belongs to the
+  // name or address groups. The elements of the label and their ordering
+  // depend on the data in |profile| and on |focused_group|.
+  base::string16 GetLabelForProfileOnFocusedNameOrAddress(
+      const AutofillProfile& profile,
+      FieldTypeGroup focused_group) const;
+
+  // Returns a label to show the user when |focused_field_type_| belongs to the
+  // phone or email groups. The elements of the label and their ordering depend
+  // on the data in |profile| and on |focused_group|.
+  base::string16 GetLabelForProfileOnFocusedPhoneOrEmail(
+      const AutofillProfile& profile,
+      FieldTypeGroup focused_group) const;
+
+  // True if this formatter's associated form has a street address field. A
+  // form may have an address-related field, e.g. zip code, without having a
+  // street address field. If a form does not include a street address field,
+  // street addresses should not appear in labels.
+  bool form_has_street_address_;
 };
 
 }  // namespace autofill
diff --git a/components/autofill/core/browser/address_contact_form_label_formatter_unittest.cc b/components/autofill/core/browser/address_contact_form_label_formatter_unittest.cc
new file mode 100644
index 0000000..16e0dbe
--- /dev/null
+++ b/components/autofill/core/browser/address_contact_form_label_formatter_unittest.cc
@@ -0,0 +1,512 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/autofill/core/browser/address_contact_form_label_formatter.h"
+
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "base/guid.h"
+#include "base/strings/string16.h"
+#include "base/strings/utf_string_conversions.h"
+#include "components/autofill/core/browser/autofill_profile.h"
+#include "components/autofill/core/browser/autofill_test_utils.h"
+#include "components/autofill/core/browser/field_types.h"
+#include "components/autofill/core/browser/label_formatter_test_utils.h"
+#include "components/autofill/core/browser/label_formatter_utils.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+using testing::ElementsAre;
+
+namespace autofill {
+namespace {
+
+std::vector<ServerFieldType> GetFieldTypes() {
+  return {NO_SERVER_DATA,
+          NAME_BILLING_FULL,
+          EMAIL_ADDRESS,
+          ADDRESS_BILLING_LINE1,
+          ADDRESS_BILLING_LINE2,
+          ADDRESS_BILLING_DEPENDENT_LOCALITY,
+          ADDRESS_BILLING_CITY,
+          ADDRESS_BILLING_STATE,
+          ADDRESS_BILLING_ZIP,
+          ADDRESS_BILLING_COUNTRY,
+          PHONE_BILLING_WHOLE_NUMBER};
+}
+
+TEST(AddressContactFormLabelFormatterTest, GetLabelsWithMissingProfiles) {
+  const std::unique_ptr<LabelFormatter> formatter =
+      LabelFormatter::Create("en-US", NAME_BILLING_FULL, GetFieldTypes());
+  EXPECT_TRUE(formatter->GetLabels(std::vector<AutofillProfile*>()).empty());
+}
+
+TEST(AddressContactFormLabelFormatterTest,
+     GetLabelsForUSProfilesAndFocusedName) {
+  AutofillProfile profile1 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile1, "Sarah", "", "Revere", "sarah.revere@aol.com",
+                       "", "19 North Sq", "", "Boston", "MA", "02113", "US",
+                       "16175232338");
+
+  AutofillProfile profile2 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile2, "Jackie", "L", "Kennedy", "", "",
+                       "151 Irving Ave", "", "Hyannis", "MA", "02601", "US",
+                       "6175141600");
+
+  AutofillProfile profile3 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile3, "Paul", "", "Revere", "paul1775@gmail.com",
+                       "", "19 North Sq", "", "Boston", "MA", "02113", "US",
+                       "");
+
+  AutofillProfile profile4 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile4, "Dina", "", "Katabi", "dina@mit.edu", "", "",
+                       "", "", "", "", "US", "6173240000");
+
+  AutofillProfile profile5 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile5, "", "", "", "", "", "Old North Church",
+                       "193 Salem St", "Boston", "MA", "02113", "US", "");
+
+  AutofillProfile profile6 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile6, "", "", "", "", "", "", "", "", "", "", "US",
+                       "");
+
+  const std::unique_ptr<LabelFormatter> formatter =
+      LabelFormatter::Create("en-US", NAME_BILLING_FULL, GetFieldTypes());
+
+  EXPECT_THAT(
+      formatter->GetLabels(std::vector<AutofillProfile*>{
+          &profile1, &profile2, &profile3, &profile4, &profile5, &profile6}),
+      ElementsAre(
+          ConstructLabelLines(
+              base::ASCIIToUTF16("19 North Sq, Boston, MA 02113"),
+              FormatExpectedLabel("(617) 523-2338", "sarah.revere@aol.com")),
+          ConstructLabelLines(
+              base::ASCIIToUTF16("151 Irving Ave, Hyannis, MA 02601"),
+              base::ASCIIToUTF16("(617) 514-1600")),
+          ConstructLabelLines(
+              base::ASCIIToUTF16("19 North Sq, Boston, MA 02113"),
+              base::ASCIIToUTF16("paul1775@gmail.com")),
+          FormatExpectedLabel("(617) 324-0000", "dina@mit.edu"),
+          base::ASCIIToUTF16(
+              "Old North Church, 193 Salem St, Boston, MA 02113"),
+          base::string16()));
+}
+
+TEST(AddressContactFormLabelFormatterTest,
+     GetLabelsForUSProfilesAndFocusedStreetAddress) {
+  AutofillProfile profile1 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile1, "Sarah", "", "Revere", "sarah.revere@aol.com",
+                       "", "19 North Sq", "", "Boston", "MA", "02113", "US",
+                       "16175232338");
+
+  AutofillProfile profile2 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile2, "Jackie", "L", "Kennedy", "", "",
+                       "151 Irving Ave", "", "Hyannis", "MA", "02601", "US",
+                       "6175141600");
+
+  AutofillProfile profile3 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile3, "Paul", "", "Revere", "paul1775@gmail.com",
+                       "", "19 North Sq", "", "Boston", "MA", "02113", "US",
+                       "");
+
+  AutofillProfile profile4 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile4, "Dina", "", "Katabi", "dina@mit.edu", "", "",
+                       "", "", "", "", "US", "6173240000");
+
+  AutofillProfile profile5 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile5, "", "", "", "", "", "Old North Church",
+                       "193 Salem St", "Boston", "MA", "02113", "US", "");
+
+  AutofillProfile profile6 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile6, "", "", "", "", "", "", "", "", "", "", "US",
+                       "");
+
+  const std::unique_ptr<LabelFormatter> formatter =
+      LabelFormatter::Create("en-US", ADDRESS_BILLING_LINE1, GetFieldTypes());
+
+  EXPECT_THAT(
+      formatter->GetLabels(std::vector<AutofillProfile*>{
+          &profile1, &profile2, &profile3, &profile4, &profile5, &profile6}),
+      ElementsAre(
+          ConstructLabelLines(
+              FormatExpectedLabel("Sarah Revere", "Boston, MA 02113"),
+              FormatExpectedLabel("(617) 523-2338", "sarah.revere@aol.com")),
+          ConstructLabelLines(
+              FormatExpectedLabel("Jackie L Kennedy", "Hyannis, MA 02601"),
+              base::ASCIIToUTF16("(617) 514-1600")),
+          ConstructLabelLines(
+              FormatExpectedLabel("Paul Revere", "Boston, MA 02113"),
+              base::ASCIIToUTF16("paul1775@gmail.com")),
+          ConstructLabelLines(
+              base::ASCIIToUTF16("Dina Katabi"),
+              FormatExpectedLabel("(617) 324-0000", "dina@mit.edu")),
+          base::ASCIIToUTF16("Boston, MA 02113"), base::string16()));
+}
+
+TEST(AddressContactFormLabelFormatterTest,
+     GetLabelsForUSProfilesAndFocusedNonStreetAddress) {
+  AutofillProfile profile1 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile1, "Sarah", "", "Revere", "sarah.revere@aol.com",
+                       "", "19 North Sq", "", "Boston", "MA", "02113", "US",
+                       "16175232338");
+
+  AutofillProfile profile2 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile2, "Jackie", "L", "Kennedy", "", "",
+                       "151 Irving Ave", "", "Hyannis", "MA", "02601", "US",
+                       "6175141600");
+
+  AutofillProfile profile3 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile3, "Paul", "", "Revere", "paul1775@gmail.com",
+                       "", "19 North Sq", "", "Boston", "MA", "02113", "US",
+                       "");
+
+  AutofillProfile profile4 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile4, "Dina", "", "Katabi", "dina@mit.edu", "", "",
+                       "", "", "", "", "US", "6173240000");
+
+  AutofillProfile profile5 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile5, "", "", "", "", "", "Old North Church",
+                       "193 Salem St", "Boston", "MA", "02113", "US", "");
+
+  AutofillProfile profile6 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile6, "", "", "", "", "", "", "", "", "", "", "US",
+                       "");
+
+  const std::unique_ptr<LabelFormatter> formatter =
+      LabelFormatter::Create("en-US", ADDRESS_BILLING_CITY, GetFieldTypes());
+
+  EXPECT_THAT(
+      formatter->GetLabels(std::vector<AutofillProfile*>{
+          &profile1, &profile2, &profile3, &profile4, &profile5, &profile6}),
+      ElementsAre(
+          ConstructLabelLines(
+              FormatExpectedLabel("Sarah Revere", "19 North Sq"),
+              FormatExpectedLabel("(617) 523-2338", "sarah.revere@aol.com")),
+          ConstructLabelLines(
+              FormatExpectedLabel("Jackie L Kennedy", "151 Irving Ave"),
+              base::ASCIIToUTF16("(617) 514-1600")),
+          ConstructLabelLines(FormatExpectedLabel("Paul Revere", "19 North Sq"),
+                              base::ASCIIToUTF16("paul1775@gmail.com")),
+          ConstructLabelLines(
+              base::ASCIIToUTF16("Dina Katabi"),
+              FormatExpectedLabel("(617) 324-0000", "dina@mit.edu")),
+          base::ASCIIToUTF16("Old North Church, 193 Salem St"),
+          base::string16()));
+}
+
+TEST(AddressContactFormLabelFormatterTest,
+     GetLabelsForUSProfilesAndFocusedEmail) {
+  AutofillProfile profile1 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile1, "Sarah", "", "Revere", "sarah.revere@aol.com",
+                       "", "19 North Sq", "", "Boston", "MA", "02113", "US",
+                       "16175232338");
+
+  AutofillProfile profile2 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile2, "Jackie", "L", "Kennedy", "", "",
+                       "151 Irving Ave", "", "Hyannis", "MA", "02601", "US",
+                       "6175141600");
+
+  AutofillProfile profile3 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile3, "Paul", "", "Revere", "paul1775@gmail.com",
+                       "", "19 North Sq", "", "Boston", "MA", "02113", "US",
+                       "");
+
+  AutofillProfile profile4 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile4, "Dina", "", "Katabi", "dina@mit.edu", "", "",
+                       "", "", "", "", "US", "6173240000");
+
+  AutofillProfile profile5 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile5, "", "", "", "", "", "Old North Church",
+                       "193 Salem St", "Boston", "MA", "02113", "US", "");
+
+  AutofillProfile profile6 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile6, "", "", "", "", "", "", "", "", "", "", "US",
+                       "");
+
+  const std::unique_ptr<LabelFormatter> formatter =
+      LabelFormatter::Create("en-US", EMAIL_ADDRESS, GetFieldTypes());
+
+  EXPECT_THAT(
+      formatter->GetLabels(std::vector<AutofillProfile*>{
+          &profile1, &profile2, &profile3, &profile4, &profile5, &profile6}),
+      ElementsAre(ConstructLabelLines(
+                      FormatExpectedLabel("Sarah Revere", "(617) 523-2338"),
+                      base::ASCIIToUTF16("19 North Sq, Boston, MA 02113")),
+                  ConstructLabelLines(
+                      FormatExpectedLabel("Jackie L Kennedy", "(617) 514-1600"),
+                      base::ASCIIToUTF16("151 Irving Ave, Hyannis, MA 02601")),
+                  ConstructLabelLines(
+                      base::ASCIIToUTF16("Paul Revere"),
+                      base::ASCIIToUTF16("19 North Sq, Boston, MA 02113")),
+                  FormatExpectedLabel("Dina Katabi", "(617) 324-0000"),
+                  base::ASCIIToUTF16(
+                      "Old North Church, 193 Salem St, Boston, MA 02113"),
+                  base::string16()));
+}
+
+TEST(AddressContactFormLabelFormatterTest,
+     GetLabelsForUSProfilesAndFocusedPhone) {
+  AutofillProfile profile1 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile1, "Sarah", "", "Revere", "sarah.revere@aol.com",
+                       "", "19 North Sq", "", "Boston", "MA", "02113", "US",
+                       "16175232338");
+
+  AutofillProfile profile2 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile2, "Jackie", "L", "Kennedy", "", "",
+                       "151 Irving Ave", "", "Hyannis", "MA", "02601", "US",
+                       "6175141600");
+
+  AutofillProfile profile3 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile3, "Paul", "", "Revere", "paul1775@gmail.com",
+                       "", "19 North Sq", "", "Boston", "MA", "02113", "US",
+                       "");
+
+  AutofillProfile profile4 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile4, "Dina", "", "Katabi", "dina@mit.edu", "", "",
+                       "", "", "", "", "US", "6173240000");
+
+  AutofillProfile profile5 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile5, "", "", "", "", "", "Old North Church",
+                       "193 Salem St", "Boston", "MA", "02113", "US", "");
+
+  AutofillProfile profile6 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile6, "", "", "", "", "", "", "", "", "", "", "US",
+                       "");
+
+  const std::unique_ptr<LabelFormatter> formatter = LabelFormatter::Create(
+      "en-US", PHONE_BILLING_WHOLE_NUMBER, GetFieldTypes());
+
+  EXPECT_THAT(
+      formatter->GetLabels(std::vector<AutofillProfile*>{
+          &profile1, &profile2, &profile3, &profile4, &profile5, &profile6}),
+      ElementsAre(
+          ConstructLabelLines(
+              FormatExpectedLabel("Sarah Revere", "sarah.revere@aol.com"),
+              base::ASCIIToUTF16("19 North Sq, Boston, MA 02113")),
+          ConstructLabelLines(
+              base::ASCIIToUTF16("Jackie L Kennedy"),
+              base::ASCIIToUTF16("151 Irving Ave, Hyannis, MA 02601")),
+          ConstructLabelLines(
+              FormatExpectedLabel("Paul Revere", "paul1775@gmail.com"),
+              base::ASCIIToUTF16("19 North Sq, Boston, MA 02113")),
+          FormatExpectedLabel("Dina Katabi", "dina@mit.edu"),
+          base::ASCIIToUTF16(
+              "Old North Church, 193 Salem St, Boston, MA 02113"),
+          base::string16()));
+}
+
+TEST(AddressContactFormLabelFormatterTest,
+     GetLabelsForBRProfilesAndFocusedName) {
+  AutofillProfile profile1 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile1, "Tarsila", "do", "Amaral", "tarsila@aol.com",
+                       "", "Av. Pedro Álvares Cabral, 1301", "", "Vila Mariana",
+                       "São Paulo", " SP ", " 04094-050 ", "BR",
+                       "+55 11 2648-0254");
+
+  AutofillProfile profile2 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile2, "Artur", "", "Avila", "aavila@uol.com.br", "",
+                       "Estr. Dona Castorina, 110", "", "Jardim Botânico",
+                       "Rio de Janeiro", "RJ", "22460-320", "BR",
+                       "21987650000");
+
+  const std::unique_ptr<LabelFormatter> formatter =
+      LabelFormatter::Create("pt-BR", NAME_BILLING_FULL, GetFieldTypes());
+
+  EXPECT_THAT(
+      formatter->GetLabels(std::vector<AutofillProfile*>{&profile1, &profile2}),
+      ElementsAre(
+          ConstructLabelLines(
+              base::UTF8ToUTF16("Av. Pedro Álvares Cabral, 1301, Vila Mariana, "
+                                "São Paulo-SP, 04094-050"),
+              FormatExpectedLabel("(11) 2648-0254", "tarsila@aol.com")),
+          ConstructLabelLines(
+              base::UTF8ToUTF16("Estr. Dona Castorina, 110, Jardim Botânico, "
+                                "Rio de Janeiro-RJ, 22460-320"),
+              FormatExpectedLabel("(21) 98765-0000", "aavila@uol.com.br"))));
+}
+
+TEST(AddressContactFormLabelFormatterTest,
+     GetLabelsForBRProfilesAndFocusedStreetAddress) {
+  AutofillProfile profile1 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile1, "Tarsila", "do", "Amaral", "tarsila@aol.com",
+                       "", "Av. Pedro Álvares Cabral, 1301", "", "Vila Mariana",
+                       "São Paulo", " SP ", " 04094-050 ", "BR",
+                       "+55 11 2648-0254");
+
+  AutofillProfile profile2 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile2, "Artur", "", "Avila", "aavila@uol.com.br", "",
+                       "Estr. Dona Castorina, 110", "", "Jardim Botânico",
+                       "Rio de Janeiro", "RJ", "22460-320", "BR",
+                       "21987650000");
+
+  const std::unique_ptr<LabelFormatter> formatter =
+      LabelFormatter::Create("pt-BR", ADDRESS_BILLING_LINE1, GetFieldTypes());
+
+  EXPECT_THAT(
+      formatter->GetLabels(std::vector<AutofillProfile*>{&profile1, &profile2}),
+      ElementsAre(
+          ConstructLabelLines(
+              FormatExpectedLabel("Tarsila do Amaral",
+                                  "Vila Mariana, São Paulo-SP, 04094-050"),
+              FormatExpectedLabel("(11) 2648-0254", "tarsila@aol.com")),
+          ConstructLabelLines(
+              FormatExpectedLabel(
+                  "Artur Avila",
+                  "Jardim Botânico, Rio de Janeiro-RJ, 22460-320"),
+              FormatExpectedLabel("(21) 98765-0000", "aavila@uol.com.br"))));
+}
+
+TEST(AddressContactFormLabelFormatterTest,
+     GetLabelsForBRProfilesAndFocusedNonStreetAddress) {
+  AutofillProfile profile1 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile1, "Tarsila", "do", "Amaral", "tarsila@aol.com",
+                       "", "Av. Pedro Álvares Cabral, 1301", "", "Vila Mariana",
+                       "São Paulo", " SP ", " 04094-050 ", "BR",
+                       "+55 11 2648-0254");
+
+  AutofillProfile profile2 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile2, "Artur", "", "Avila", "aavila@uol.com.br", "",
+                       "Estr. Dona Castorina, 110", "", "Jardim Botânico",
+                       "Rio de Janeiro", "RJ", "22460-320", "BR",
+                       "21987650000");
+
+  const std::unique_ptr<LabelFormatter> formatter =
+      LabelFormatter::Create("pt-BR", ADDRESS_BILLING_ZIP, GetFieldTypes());
+
+  EXPECT_THAT(
+      formatter->GetLabels(std::vector<AutofillProfile*>{&profile1, &profile2}),
+      ElementsAre(
+          ConstructLabelLines(
+              FormatExpectedLabel("Tarsila do Amaral",
+                                  "Av. Pedro Álvares Cabral, 1301"),
+              FormatExpectedLabel("(11) 2648-0254", "tarsila@aol.com")),
+          ConstructLabelLines(
+              FormatExpectedLabel("Artur Avila", "Estr. Dona Castorina, 110"),
+              FormatExpectedLabel("(21) 98765-0000", "aavila@uol.com.br"))));
+}
+
+TEST(AddressContactFormLabelFormatterTest,
+     GetLabelsForBRProfilesAndFocusedEmail) {
+  AutofillProfile profile1 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile1, "Tarsila", "do", "Amaral", "tarsila@aol.com",
+                       "", "Av. Pedro Álvares Cabral, 1301", "", "Vila Mariana",
+                       "São Paulo", " SP ", " 04094-050 ", "BR",
+                       "+55 11 2648-0254");
+
+  AutofillProfile profile2 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile2, "Artur", "", "Avila", "aavila@uol.com.br", "",
+                       "Estr. Dona Castorina, 110", "", "Jardim Botânico",
+                       "Rio de Janeiro", "RJ", "22460-320", "BR",
+                       "21987650000");
+
+  const std::unique_ptr<LabelFormatter> formatter =
+      LabelFormatter::Create("pt-BR", EMAIL_ADDRESS, GetFieldTypes());
+
+  EXPECT_THAT(
+      formatter->GetLabels(std::vector<AutofillProfile*>{&profile1, &profile2}),
+      ElementsAre(
+          ConstructLabelLines(
+              FormatExpectedLabel("Tarsila do Amaral", "(11) 2648-0254"),
+              base::UTF8ToUTF16("Av. Pedro Álvares Cabral, 1301, Vila Mariana, "
+                                "São Paulo-SP, 04094-050")),
+          ConstructLabelLines(
+              FormatExpectedLabel("Artur Avila", "(21) 98765-0000"),
+              base::UTF8ToUTF16("Estr. Dona Castorina, 110, Jardim Botânico, "
+                                "Rio de Janeiro-RJ, 22460-320"))));
+}
+
+TEST(AddressContactFormLabelFormatterTest,
+     GetLabelsForBRProfilesAndFocusedPhone) {
+  AutofillProfile profile1 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile1, "Tarsila", "do", "Amaral", "tarsila@aol.com",
+                       "", "Av. Pedro Álvares Cabral, 1301", "", "Vila Mariana",
+                       "São Paulo", " SP ", " 04094-050 ", "BR",
+                       "+55 11 2648-0254");
+
+  AutofillProfile profile2 =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile2, "Artur", "", "Avila", "aavila@uol.com.br", "",
+                       "Estr. Dona Castorina, 110", "", "Jardim Botânico",
+                       "Rio de Janeiro", "RJ", "22460-320", "BR",
+                       "21987650000");
+
+  const std::unique_ptr<LabelFormatter> formatter = LabelFormatter::Create(
+      "pt-BR", PHONE_BILLING_WHOLE_NUMBER, GetFieldTypes());
+
+  EXPECT_THAT(
+      formatter->GetLabels(std::vector<AutofillProfile*>{&profile1, &profile2}),
+      ElementsAre(
+          ConstructLabelLines(
+              FormatExpectedLabel("Tarsila do Amaral", "tarsila@aol.com"),
+              base::UTF8ToUTF16("Av. Pedro Álvares Cabral, 1301, Vila Mariana, "
+                                "São Paulo-SP, 04094-050")),
+          ConstructLabelLines(
+              FormatExpectedLabel("Artur Avila", "aavila@uol.com.br"),
+              base::UTF8ToUTF16("Estr. Dona Castorina, 110, Jardim Botânico, "
+                                "Rio de Janeiro-RJ, 22460-320"))));
+}
+
+TEST(AddressContactFormLabelFormatterTest,
+     GetLabelsForFormWithPartialAddressFields) {
+  AutofillProfile profile =
+      AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&profile, "Sarah", "", "Revere", "sarah.revere@aol.com",
+                       "", "19 North Sq", "", "Boston", "MA", "02113", "US",
+                       "16175232338");
+
+  const std::unique_ptr<LabelFormatter> formatter =
+      LabelFormatter::Create("en-US", EMAIL_ADDRESS,
+                             {NAME_BILLING_FULL, EMAIL_ADDRESS,
+                              ADDRESS_BILLING_ZIP, PHONE_BILLING_WHOLE_NUMBER});
+
+  // Checks that only address fields in the form are shown in the label.
+  EXPECT_THAT(formatter->GetLabels(std::vector<AutofillProfile*>{&profile}),
+              ElementsAre(ConstructLabelLines(
+                  FormatExpectedLabel("Sarah Revere", "(617) 523-2338"),
+                  base::ASCIIToUTF16("02113"))));
+}
+
+}  // namespace
+}  // namespace autofill
diff --git a/components/autofill/core/browser/label_formatter.h b/components/autofill/core/browser/label_formatter.h
index 656de9a..71cc68f 100644
--- a/components/autofill/core/browser/label_formatter.h
+++ b/components/autofill/core/browser/label_formatter.h
@@ -40,6 +40,8 @@
   // Returns a label to show the user. The elements of the label and their
   // ordering depend on the kind of LabelFormatter, the data in |profile|, and
   // on the focused |group|.
+  // Subclasses may return labels that span one or two lines. If a label is
+  // intended to span two lines, then it contains a kMultilineLabelDelimiter.
   virtual base::string16 GetLabelForFocusedGroup(
       const AutofillProfile& profile,
       FieldTypeGroup group) const = 0;
diff --git a/components/autofill/core/browser/label_formatter_test_utils.cc b/components/autofill/core/browser/label_formatter_test_utils.cc
index 83244f47..2410cd71 100644
--- a/components/autofill/core/browser/label_formatter_test_utils.cc
+++ b/components/autofill/core/browser/label_formatter_test_utils.cc
@@ -4,6 +4,7 @@
 
 #include "components/autofill/core/browser/label_formatter_test_utils.h"
 
+#include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "components/grit/components_scaled_resources.h"
 #include "components/strings/grit/components_strings.h"
diff --git a/components/autofill/core/browser/label_formatter_utils.cc b/components/autofill/core/browser/label_formatter_utils.cc
index 1f54772..233af12 100644
--- a/components/autofill/core/browser/label_formatter_utils.cc
+++ b/components/autofill/core/browser/label_formatter_utils.cc
@@ -99,6 +99,21 @@
   return extracted_address_types;
 }
 
+std::vector<ServerFieldType> ExtractAddressFieldTypes(
+    const std::vector<ServerFieldType>& types) {
+  std::vector<ServerFieldType> only_address_types;
+
+  // Note that GetStorableType maps billing fields to their corresponding non-
+  // billing fields, e.g. ADDRESS_HOME_ZIP is mapped to ADDRESS_BILLING_ZIP.
+  std::copy_if(
+      types.begin(), types.end(), std::back_inserter(only_address_types),
+      [](ServerFieldType type) {
+        return AutofillType(AutofillType(type).GetStorableType()).group() ==
+               ADDRESS_HOME;
+      });
+  return only_address_types;
+}
+
 void AddLabelPartIfNotEmpty(const base::string16& part,
                             std::vector<base::string16>* parts) {
   if (!part.empty()) {
@@ -113,6 +128,18 @@
              : base::JoinString(parts, base::string16());
 }
 
+base::string16 ConstructLabelLines(const base::string16& top_line,
+                                   const base::string16& bottom_line) {
+  if (top_line.empty()) {
+    return bottom_line;
+  }
+  if (bottom_line.empty()) {
+    return top_line;
+  }
+  return base::JoinString({top_line, bottom_line},
+                          base::ASCIIToUTF16(kMultilineLabelDelimiter));
+}
+
 AutofillProfile MakeTrimmedProfile(const AutofillProfile& profile,
                                    const std::string& app_locale,
                                    const std::vector<ServerFieldType>& types) {
diff --git a/components/autofill/core/browser/label_formatter_utils.h b/components/autofill/core/browser/label_formatter_utils.h
index 54cf32d2..64b282a 100644
--- a/components/autofill/core/browser/label_formatter_utils.h
+++ b/components/autofill/core/browser/label_formatter_utils.h
@@ -32,6 +32,10 @@
 
 const size_t kMaxNumberOfParts = 2;
 
+// Indicates where to split the label text when the label spans two lines.
+// This is used in the kAutofillUseImprovedLabelDisambiguation feature.
+constexpr char kMultilineLabelDelimiter[] = "\n";
+
 // Returns true if kName is set in |groups|.
 bool ContainsName(uint32_t groups);
 
@@ -63,6 +67,11 @@
     bool extract_street_address_types,
     const std::vector<ServerFieldType>& types);
 
+// Returns a collection of the types in |types| that belong to the
+// ADDRESS_HOME or ADDRESS_BILLING FieldTypeGroups.
+std::vector<ServerFieldType> ExtractAddressFieldTypes(
+    const std::vector<ServerFieldType>& types);
+
 // Adds |part| to |parts| if |part| is not an empty string.
 void AddLabelPartIfNotEmpty(const base::string16& part,
                             std::vector<base::string16>* parts);
@@ -79,6 +88,16 @@
 // (B) the user with this profile interacts with a contact form.
 base::string16 ConstructLabelLine(const std::vector<base::string16>& parts);
 
+// Returns the text to be displayed in a multiline label plus maybe a
+// delimiting character. If |top_line| and |bottom_line| are both non-empty,
+// then a delimiter is placed between them.
+//
+// Suppose kMultilineLabelDelimiter is "\n", |top_line| is "Elena Barulina",
+// and |bottom_line| is "(845) 269-25-32 • ebarulina@saratov.edu". In this
+// case, "Elena Barulina\n(845) 269-25-32 • ebarulina@saratov.edu" is returned.
+base::string16 ConstructLabelLines(const base::string16& top_line,
+                                   const base::string16& bottom_line);
+
 // Returns a pared down copy of |profile|. The copy has the same guid, origin,
 // country and language codes, and |field_types| as |profile|.
 AutofillProfile MakeTrimmedProfile(const AutofillProfile& profile,
diff --git a/components/autofill_assistant/browser/actions/set_form_field_value_action.cc b/components/autofill_assistant/browser/actions/set_form_field_value_action.cc
index 1b49379d..427ae88f 100644
--- a/components/autofill_assistant/browser/actions/set_form_field_value_action.cc
+++ b/components/autofill_assistant/browser/actions/set_form_field_value_action.cc
@@ -41,9 +41,6 @@
     return;
   }
 
-  // TODO(crbug.com/806868): Add flag to allow simulating key presses to set
-  // field value.
-
   // Start with first value, then call OnSetFieldValue() recursively until done.
   OnSetFieldValue(delegate, std::move(callback), /* next = */ 0,
                   OkClientStatus());
@@ -66,10 +63,11 @@
     case SetFormFieldValueProto_KeyPress::kText:
       delegate->SetFieldValue(
           selector, key_field.text(),
-          /* simulate_key_presses = */ false,
+          proto_.set_form_value().simulate_key_presses(),
           base::BindOnce(&SetFormFieldValueAction::OnSetFieldValue,
                          weak_ptr_factory_.GetWeakPtr(), delegate,
-                         std::move(callback), /* next = */ next + 1));
+                         std::move(callback),
+                         /* next = */ next + 1));
       break;
     case SetFormFieldValueProto_KeyPress::kKeycode:
       // DEPRECATED: the field `keycode' used to contain a single character to
@@ -81,7 +79,8 @@
             selector, {std::string(1, char(key_field.keycode()))},
             base::BindOnce(&SetFormFieldValueAction::OnSetFieldValue,
                            weak_ptr_factory_.GetWeakPtr(), delegate,
-                           std::move(callback), /* next = */ next + 1));
+                           std::move(callback),
+                           /* next = */ next + 1));
       } else {
         DVLOG(3)
             << "SetFormFieldValueProto_KeyPress: field `keycode' is deprecated "
@@ -96,7 +95,8 @@
           selector, {key_field.keyboard_input()},
           base::BindOnce(&SetFormFieldValueAction::OnSetFieldValue,
                          weak_ptr_factory_.GetWeakPtr(), delegate,
-                         std::move(callback), /* next = */ next + 1));
+                         std::move(callback),
+                         /* next = */ next + 1));
       break;
     default:
       DVLOG(1) << "Unrecognized field for SetFormFieldValueProto_KeyPress";
diff --git a/components/autofill_assistant/browser/service.proto b/components/autofill_assistant/browser/service.proto
index 0cc8f201..be41ad6 100644
--- a/components/autofill_assistant/browser/service.proto
+++ b/components/autofill_assistant/browser/service.proto
@@ -807,6 +807,9 @@
 
   // The value to set.
   repeated KeyPress value = 2;
+
+  // Whether to send key press events when setting values to HTML fields.
+  optional bool simulate_key_presses = 5;
 }
 
 // Set an element attribute to a specific value.
diff --git a/components/download/public/common/download_features.cc b/components/download/public/common/download_features.cc
index 979637b..6929f5a 100644
--- a/components/download/public/common/download_features.cc
+++ b/components/download/public/common/download_features.cc
@@ -15,7 +15,7 @@
 const base::Feature kDownloadAutoResumptionNative {
   "DownloadsAutoResumptionNative",
 #if defined(OS_ANDROID)
-      base::FEATURE_ENABLED_BY_DEFAULT
+      base::FEATURE_DISABLED_BY_DEFAULT
 #else
       base::FEATURE_DISABLED_BY_DEFAULT
 #endif
diff --git a/components/offline_pages/content/background_loader/background_loader_contents.cc b/components/offline_pages/content/background_loader/background_loader_contents.cc
index 2c67abca..fba1d59 100644
--- a/components/offline_pages/content/background_loader/background_loader_contents.cc
+++ b/components/offline_pages/content/background_loader/background_loader_contents.cc
@@ -4,6 +4,8 @@
 
 #include "components/offline_pages/content/background_loader/background_loader_contents.h"
 
+#include <utility>
+
 #include "content/public/browser/web_contents.h"
 
 namespace background_loader {
@@ -64,12 +66,12 @@
 void BackgroundLoaderContents::CanDownload(
     const GURL& url,
     const std::string& request_method,
-    const base::Callback<void(bool)>& callback) {
+    base::OnceCallback<void(bool)> callback) {
   if (delegate_) {
-    delegate_->CanDownload(callback);
+    delegate_->CanDownload(std::move(callback));
   } else {
     // Do not download anything if there's no delegate.
-    callback.Run(false);
+    std::move(callback).Run(false);
   }
 }
 
diff --git a/components/offline_pages/content/background_loader/background_loader_contents.h b/components/offline_pages/content/background_loader/background_loader_contents.h
index 0660eb2e..cbed236 100644
--- a/components/offline_pages/content/background_loader/background_loader_contents.h
+++ b/components/offline_pages/content/background_loader/background_loader_contents.h
@@ -28,7 +28,7 @@
     // start if a page initiates it. Callback can be called
     // synchronously. Returning true to the callback will initiate
     // the single file download. Assumes delegate will appropriately clean up.
-    virtual void CanDownload(const base::Callback<void(bool)>& callback) = 0;
+    virtual void CanDownload(base::OnceCallback<void(bool)> callback) = 0;
   };
 
   // Creates BackgroundLoaderContents with specified |browser_context|. Uses
@@ -54,7 +54,7 @@
   bool ShouldFocusPageAfterCrash() override;
   void CanDownload(const GURL& url,
                    const std::string& request_method,
-                   const base::Callback<void(bool)>& callback) override;
+                   base::OnceCallback<void(bool)> callback) override;
 
   bool ShouldCreateWebContents(
       content::WebContents* web_contents,
diff --git a/components/offline_pages/content/background_loader/background_loader_contents_unittest.cc b/components/offline_pages/content/background_loader/background_loader_contents_unittest.cc
index a139e12..d758e02 100644
--- a/components/offline_pages/content/background_loader/background_loader_contents_unittest.cc
+++ b/components/offline_pages/content/background_loader/background_loader_contents_unittest.cc
@@ -4,6 +4,8 @@
 
 #include "components/offline_pages/content/background_loader/background_loader_contents.h"
 
+#include <utility>
+
 #include "base/bind.h"
 #include "base/synchronization/waitable_event.h"
 #include "content/public/browser/web_contents.h"
@@ -22,7 +24,7 @@
   void SetUp() override;
   void TearDown() override;
 
-  void CanDownload(const base::Callback<void(bool)>& callback) override;
+  void CanDownload(base::OnceCallback<void(bool)> callback) override;
 
   BackgroundLoaderContents* contents() { return contents_.get(); }
 
@@ -71,9 +73,9 @@
 }
 
 void BackgroundLoaderContentsTest::CanDownload(
-    const base::Callback<void(bool)>& callback) {
+    base::OnceCallback<void(bool)> callback) {
   delegate_called_ = true;
-  callback.Run(true);
+  std::move(callback).Run(true);
 }
 
 void BackgroundLoaderContentsTest::DownloadCallback(bool download) {
@@ -110,8 +112,8 @@
 TEST_F(BackgroundLoaderContentsTest, CannotDownloadNoDelegate) {
   contents()->CanDownload(
       GURL::EmptyGURL(), std::string(),
-      base::BindRepeating(&BackgroundLoaderContentsTest::DownloadCallback,
-                          base::Unretained(this)));
+      base::BindOnce(&BackgroundLoaderContentsTest::DownloadCallback,
+                     base::Unretained(this)));
   WaitForSignal();
   ASSERT_FALSE(download());
   ASSERT_FALSE(can_download_delegate_called());
@@ -121,8 +123,8 @@
   SetDelegate();
   contents()->CanDownload(
       GURL::EmptyGURL(), std::string(),
-      base::BindRepeating(&BackgroundLoaderContentsTest::DownloadCallback,
-                          base::Unretained(this)));
+      base::BindOnce(&BackgroundLoaderContentsTest::DownloadCallback,
+                     base::Unretained(this)));
   WaitForSignal();
   ASSERT_TRUE(download());
   ASSERT_TRUE(can_download_delegate_called());
diff --git a/components/omnibox/browser/autocomplete_provider_unittest.cc b/components/omnibox/browser/autocomplete_provider_unittest.cc
index a992d95..1f5b82f 100644
--- a/components/omnibox/browser/autocomplete_provider_unittest.cc
+++ b/components/omnibox/browser/autocomplete_provider_unittest.cc
@@ -396,8 +396,8 @@
   provider1->set_listener(controller_.get());
   provider2->set_listener(controller_.get());
 
-  client_->set_closure(base::Bind(&AutocompleteProviderTest::CopyResults,
-                                  base::Unretained(this)));
+  client_->set_closure(base::BindRepeating(
+      &AutocompleteProviderTest::CopyResults, base::Unretained(this)));
 
   if (provider1_ptr)
     *provider1_ptr = provider1;
diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omnibox/browser/base_search_provider.cc
index 0b7878c..c62ff4f 100644
--- a/components/omnibox/browser/base_search_provider.cc
+++ b/components/omnibox/browser/base_search_provider.cc
@@ -213,8 +213,8 @@
   if (!match.GetAdditionalInfo(BaseSearchProvider::kDeletionUrlKey).empty()) {
     deletion_handlers_.push_back(std::make_unique<SuggestionDeletionHandler>(
         client(), match.GetAdditionalInfo(BaseSearchProvider::kDeletionUrlKey),
-        base::Bind(&BaseSearchProvider::OnDeletionComplete,
-                   base::Unretained(this))));
+        base::BindRepeating(&BaseSearchProvider::OnDeletionComplete,
+                            base::Unretained(this))));
   }
 
   const TemplateURL* template_url =
diff --git a/components/omnibox/browser/history_url_provider.cc b/components/omnibox/browser/history_url_provider.cc
index 0495c7f..243810d 100644
--- a/components/omnibox/browser/history_url_provider.cc
+++ b/components/omnibox/browser/history_url_provider.cc
@@ -582,7 +582,7 @@
     params_ = params.release();  // This object will be destroyed in
                                  // QueryComplete() once we're done with it.
     history_service->ScheduleAutocomplete(
-        base::Bind(&HistoryURLProvider::ExecuteWithDB, this, params_));
+        base::BindRepeating(&HistoryURLProvider::ExecuteWithDB, this, params_));
   }
 }
 
diff --git a/components/omnibox/browser/in_memory_url_index.cc b/components/omnibox/browser/in_memory_url_index.cc
index cf293ec..e99dc70 100644
--- a/components/omnibox/browser/in_memory_url_index.cc
+++ b/components/omnibox/browser/in_memory_url_index.cc
@@ -248,10 +248,9 @@
   }
 
   base::PostTaskAndReplyWithResult(
-      task_runner_.get(),
-      FROM_HERE,
-      base::Bind(&URLIndexPrivateData::RestoreFromFile, path),
-      base::Bind(&InMemoryURLIndex::OnCacheLoadDone, AsWeakPtr()));
+      task_runner_.get(), FROM_HERE,
+      base::BindOnce(&URLIndexPrivateData::RestoreFromFile, path),
+      base::BindOnce(&InMemoryURLIndex::OnCacheLoadDone, AsWeakPtr()));
 }
 
 void InMemoryURLIndex::OnCacheLoadDone(
@@ -352,11 +351,10 @@
     scoped_refptr<URLIndexPrivateData> private_data_copy =
         private_data_->Duplicate();
     base::PostTaskAndReplyWithResult(
-        task_runner_.get(),
-        FROM_HERE,
-        base::Bind(&URLIndexPrivateData::WritePrivateDataToCacheFileTask,
-                   private_data_copy, path),
-        base::Bind(&InMemoryURLIndex::OnCacheSaveDone, AsWeakPtr()));
+        task_runner_.get(), FROM_HERE,
+        base::BindOnce(&URLIndexPrivateData::WritePrivateDataToCacheFileTask,
+                       private_data_copy, path),
+        base::BindOnce(&InMemoryURLIndex::OnCacheSaveDone, AsWeakPtr()));
   } else {
     // If there is no data in our index then delete any existing cache file.
     task_runner_->PostTask(
diff --git a/components/omnibox/browser/omnibox_controller.cc b/components/omnibox/browser/omnibox_controller.cc
index 759e5b0..a86a4c5 100644
--- a/components/omnibox/browser/omnibox_controller.cc
+++ b/components/omnibox/browser/omnibox_controller.cc
@@ -77,8 +77,8 @@
   // passed in to eliminate the potential for crashes on shutdown.
   client_->OnResultChanged(
       result(), default_match_changed,
-      base::Bind(&OmniboxController::SetRichSuggestionBitmap,
-                 weak_ptr_factory_.GetWeakPtr()));
+      base::BindRepeating(&OmniboxController::SetRichSuggestionBitmap,
+                          weak_ptr_factory_.GetWeakPtr()));
 }
 
 void OmniboxController::InvalidateCurrentMatch() {
diff --git a/components/omnibox/browser/omnibox_metrics_provider.cc b/components/omnibox/browser/omnibox_metrics_provider.cc
index 7d38b8d..b43cccc 100644
--- a/components/omnibox/browser/omnibox_metrics_provider.cc
+++ b/components/omnibox/browser/omnibox_metrics_provider.cc
@@ -100,8 +100,8 @@
 
 void OmniboxMetricsProvider::OnRecordingEnabled() {
   subscription_ = OmniboxEventGlobalTracker::GetInstance()->RegisterCallback(
-      base::Bind(&OmniboxMetricsProvider::OnURLOpenedFromOmnibox,
-                 base::Unretained(this)));
+      base::BindRepeating(&OmniboxMetricsProvider::OnURLOpenedFromOmnibox,
+                          base::Unretained(this)));
 }
 
 void OmniboxMetricsProvider::OnRecordingDisabled() {
diff --git a/components/omnibox/browser/shortcuts_database.cc b/components/omnibox/browser/shortcuts_database.cc
index f66bd2e7..2e5a919 100644
--- a/components/omnibox/browser/shortcuts_database.cc
+++ b/components/omnibox/browser/shortcuts_database.cc
@@ -153,7 +153,7 @@
 
   // To recover from corruption.
   db_.set_error_callback(
-      base::Bind(&DatabaseErrorCallback, &db_, database_path_));
+      base::BindRepeating(&DatabaseErrorCallback, &db_, database_path_));
 
   // Set the database page size to something a little larger to give us
   // better performance (we're typically seek rather than bandwidth limited).
diff --git a/components/omnibox/browser/zero_suggest_provider.cc b/components/omnibox/browser/zero_suggest_provider.cc
index 624728d7..ca1f05e 100644
--- a/components/omnibox/browser/zero_suggest_provider.cc
+++ b/components/omnibox/browser/zero_suggest_provider.cc
@@ -172,9 +172,9 @@
       return;
     }
 
-    ts->GetMostVisitedURLs(
-        base::Bind(&ZeroSuggestProvider::OnMostVisitedUrlsAvailable,
-                   weak_ptr_factory_.GetWeakPtr(), most_visited_request_num_));
+    ts->GetMostVisitedURLs(base::BindRepeating(
+        &ZeroSuggestProvider::OnMostVisitedUrlsAvailable,
+        weak_ptr_factory_.GetWeakPtr(), most_visited_request_num_));
     return;
   }
 
diff --git a/components/sync/engine_impl/loopback_server/persistent_tombstone_entity.cc b/components/sync/engine_impl/loopback_server/persistent_tombstone_entity.cc
index 931983e..99c8b66b3 100644
--- a/components/sync/engine_impl/loopback_server/persistent_tombstone_entity.cc
+++ b/components/sync/engine_impl/loopback_server/persistent_tombstone_entity.cc
@@ -24,8 +24,8 @@
 // static
 std::unique_ptr<LoopbackServerEntity> PersistentTombstoneEntity::CreateNew(
     const std::string& id,
-    const std::string& client_defined_unique_tag) {
-  return CreateNewInternal(id, 0, client_defined_unique_tag);
+    const std::string& client_tag_hash) {
+  return CreateNewInternal(id, 0, client_tag_hash);
 }
 
 // static
@@ -33,24 +33,24 @@
 PersistentTombstoneEntity::CreateNewInternal(
     const std::string& id,
     int64_t version,
-    const std::string& client_defined_unique_tag) {
+    const std::string& client_tag_hash) {
   const ModelType model_type = LoopbackServerEntity::GetModelTypeFromId(id);
   if (model_type == syncer::UNSPECIFIED) {
     DLOG(WARNING) << "Invalid ID was given: " << id;
     return nullptr;
   }
 
-  return base::WrapUnique(new PersistentTombstoneEntity(
-      id, version, model_type, client_defined_unique_tag));
+  return base::WrapUnique(
+      new PersistentTombstoneEntity(id, version, model_type, client_tag_hash));
 }
 
 PersistentTombstoneEntity::PersistentTombstoneEntity(
     const string& id,
     int64_t version,
     const ModelType& model_type,
-    const std::string& client_defined_unique_tag)
+    const std::string& client_tag_hash)
     : LoopbackServerEntity(id, model_type, version, string()),
-      client_defined_unique_tag_(client_defined_unique_tag) {
+      client_tag_hash_(client_tag_hash) {
   sync_pb::EntitySpecifics specifics;
   AddDefaultFieldValue(model_type, &specifics);
   SetSpecifics(specifics);
@@ -67,8 +67,8 @@
 void PersistentTombstoneEntity::SerializeAsProto(
     sync_pb::SyncEntity* proto) const {
   LoopbackServerEntity::SerializeBaseProtoFields(proto);
-  if (!client_defined_unique_tag_.empty())
-    proto->set_client_defined_unique_tag(client_defined_unique_tag_);
+  if (!client_tag_hash_.empty())
+    proto->set_client_defined_unique_tag(client_tag_hash_);
 }
 
 bool PersistentTombstoneEntity::IsDeleted() const {
diff --git a/components/sync/engine_impl/loopback_server/persistent_tombstone_entity.h b/components/sync/engine_impl/loopback_server/persistent_tombstone_entity.h
index 985fc69..0f2accc 100644
--- a/components/sync/engine_impl/loopback_server/persistent_tombstone_entity.h
+++ b/components/sync/engine_impl/loopback_server/persistent_tombstone_entity.h
@@ -25,7 +25,7 @@
 
   static std::unique_ptr<LoopbackServerEntity> CreateNew(
       const std::string& id,
-      const std::string& client_defined_unique_tag);
+      const std::string& client_tag_hash);
 
   // LoopbackServerEntity implementation.
   bool RequiresParentId() const override;
@@ -39,15 +39,15 @@
   static std::unique_ptr<LoopbackServerEntity> CreateNewInternal(
       const std::string& id,
       int64_t version,
-      const std::string& client_defined_unique_tag);
+      const std::string& client_tag_hash);
 
   PersistentTombstoneEntity(const std::string& id,
                             int64_t version,
                             const syncer::ModelType& model_type,
-                            const std::string& client_defined_unique_tag);
+                            const std::string& client_tag_hash);
 
-  // The tag for this entity.
-  const std::string client_defined_unique_tag_;
+  // The tag hash for this entity.
+  const std::string client_tag_hash_;
 };
 
 }  // namespace syncer
diff --git a/components/sync/test/fake_server/android/fake_server_helper_android.cc b/components/sync/test/fake_server/android/fake_server_helper_android.cc
index e33467be..b09ccd9 100644
--- a/components/sync/test/fake_server/android/fake_server_helper_android.cc
+++ b/components/sync/test/fake_server/android/fake_server_helper_android.cc
@@ -323,13 +323,12 @@
     const JavaParamRef<jobject>& obj,
     jlong fake_server,
     const JavaParamRef<jstring>& id,
-    const base::android::JavaParamRef<jstring>& client_defined_unique_tag) {
+    const base::android::JavaParamRef<jstring>& client_tag_hash) {
   fake_server::FakeServer* fake_server_ptr =
       reinterpret_cast<fake_server::FakeServer*>(fake_server);
   std::string native_id = base::android::ConvertJavaStringToUTF8(env, id);
   fake_server_ptr->InjectEntity(syncer::PersistentTombstoneEntity::CreateNew(
-      native_id,
-      base::android::ConvertJavaStringToUTF8(env, client_defined_unique_tag)));
+      native_id, base::android::ConvertJavaStringToUTF8(env, client_tag_hash)));
 }
 
 void FakeServerHelperAndroid::ClearServerData(JNIEnv* env,
diff --git a/components/sync/test/fake_server/android/fake_server_helper_android.h b/components/sync/test/fake_server/android/fake_server_helper_android.h
index 2f1f4de24..89f2d78 100644
--- a/components/sync/test/fake_server/android/fake_server_helper_android.h
+++ b/components/sync/test/fake_server/android/fake_server_helper_android.h
@@ -136,7 +136,7 @@
       const base::android::JavaParamRef<jobject>& obj,
       jlong fake_server,
       const base::android::JavaParamRef<jstring>& id,
-      const base::android::JavaParamRef<jstring>& client_defined_unique_tag);
+      const base::android::JavaParamRef<jstring>& client_tag_hash);
 
   // Simulates a dashboard stop and clear.
   void ClearServerData(JNIEnv* env,
diff --git a/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.page_info_visible_browser_ui.Pixel_XL-25.png.sha1 b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.page_info_visible_browser_ui.Pixel_XL-25.png.sha1
deleted file mode 100644
index 845bac2..0000000
--- a/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.page_info_visible_browser_ui.Pixel_XL-25.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-52541d2087d794f97ed191d74efd366c77012645
\ No newline at end of file
diff --git a/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.page_info_visible_browser_ui.Pixel_XL-26.png.sha1 b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.page_info_visible_browser_ui.Pixel_XL-26.png.sha1
deleted file mode 100644
index 6f61104..0000000
--- a/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.page_info_visible_browser_ui.Pixel_XL-26.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-6c96578e1028dcd05b3fa204af5cf17a9e75fd26
\ No newline at end of file
diff --git a/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_http_popup.Pixel_XL-25.png.sha1 b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_http_popup.Pixel_XL-25.png.sha1
new file mode 100644
index 0000000..d27a97a
--- /dev/null
+++ b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_http_popup.Pixel_XL-25.png.sha1
@@ -0,0 +1 @@
+d227fb8426ac42742dc2edb1947be83db684617a
\ No newline at end of file
diff --git a/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_http_popup.Pixel_XL-26.png.sha1 b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_http_popup.Pixel_XL-26.png.sha1
new file mode 100644
index 0000000..5f6b506
--- /dev/null
+++ b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_http_popup.Pixel_XL-26.png.sha1
@@ -0,0 +1 @@
+15c8f8f4a2cafd01d203390758d38e8b2460e093
\ No newline at end of file
diff --git a/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_http_url_bar_token.Pixel_XL-25.png.sha1 b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_http_url_bar_token.Pixel_XL-25.png.sha1
new file mode 100644
index 0000000..db75e8d
--- /dev/null
+++ b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_http_url_bar_token.Pixel_XL-25.png.sha1
@@ -0,0 +1 @@
+60ea6cc503152ff293f976031c4337986a33c847
\ No newline at end of file
diff --git a/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_http_url_bar_token.Pixel_XL-26.png.sha1 b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_http_url_bar_token.Pixel_XL-26.png.sha1
new file mode 100644
index 0000000..3441b9c
--- /dev/null
+++ b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_http_url_bar_token.Pixel_XL-26.png.sha1
@@ -0,0 +1 @@
+620fa12072273cea0a9005ff5eface2cd28a6fbf
\ No newline at end of file
diff --git a/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_bad_cert_popup.Pixel_XL-25.png.sha1 b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_bad_cert_popup.Pixel_XL-25.png.sha1
new file mode 100644
index 0000000..d69ac12
--- /dev/null
+++ b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_bad_cert_popup.Pixel_XL-25.png.sha1
@@ -0,0 +1 @@
+43ee9975eb933c684d4608c2a6852e69c433d45c
\ No newline at end of file
diff --git a/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_bad_cert_popup.Pixel_XL-26.png.sha1 b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_bad_cert_popup.Pixel_XL-26.png.sha1
new file mode 100644
index 0000000..9b6da7f
--- /dev/null
+++ b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_bad_cert_popup.Pixel_XL-26.png.sha1
@@ -0,0 +1 @@
+15c6c3a2524a6ff05f9361bc8c7c4c267f913098
\ No newline at end of file
diff --git a/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_bad_cert_url_bar_token.Pixel_XL-25.png.sha1 b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_bad_cert_url_bar_token.Pixel_XL-25.png.sha1
new file mode 100644
index 0000000..de7cd10c
--- /dev/null
+++ b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_bad_cert_url_bar_token.Pixel_XL-25.png.sha1
@@ -0,0 +1 @@
+654341b07d9d0357fe08bae2a70adbc018f1c2aa
\ No newline at end of file
diff --git a/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_bad_cert_url_bar_token.Pixel_XL-26.png.sha1 b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_bad_cert_url_bar_token.Pixel_XL-26.png.sha1
new file mode 100644
index 0000000..fc871dd
--- /dev/null
+++ b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_bad_cert_url_bar_token.Pixel_XL-26.png.sha1
@@ -0,0 +1 @@
+f6afd282616fe6ef74628bf76748ae5c52634636
\ No newline at end of file
diff --git a/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_popup.Pixel_XL-25.png.sha1 b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_popup.Pixel_XL-25.png.sha1
new file mode 100644
index 0000000..870d216
--- /dev/null
+++ b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_popup.Pixel_XL-25.png.sha1
@@ -0,0 +1 @@
+c14ee554d3f0afd15b1e3bb33730fd26347e7062
\ No newline at end of file
diff --git a/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_popup.Pixel_XL-26.png.sha1 b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_popup.Pixel_XL-26.png.sha1
new file mode 100644
index 0000000..89c15bee
--- /dev/null
+++ b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_popup.Pixel_XL-26.png.sha1
@@ -0,0 +1 @@
+971c391fabde3702fe093d5d4b874dda06b2c693
\ No newline at end of file
diff --git a/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_url_bar_token.Pixel_XL-25.png.sha1 b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_url_bar_token.Pixel_XL-25.png.sha1
new file mode 100644
index 0000000..53d2aeb
--- /dev/null
+++ b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_url_bar_token.Pixel_XL-25.png.sha1
@@ -0,0 +1 @@
+8ecf718060f3ca31dc4387704b40d734463a892a
\ No newline at end of file
diff --git a/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_url_bar_token.Pixel_XL-26.png.sha1 b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_url_bar_token.Pixel_XL-26.png.sha1
new file mode 100644
index 0000000..427f4a4
--- /dev/null
+++ b/components/test/data/vr_browser_ui/render_tests/VrBrowserNativeUiTest.security_token_https_url_bar_token.Pixel_XL-26.png.sha1
@@ -0,0 +1 @@
+d8ebd0621cb8c77f71b7ebcf6b4a5a836b5909de
\ No newline at end of file
diff --git a/components/viz/service/display/gl_renderer.cc b/components/viz/service/display/gl_renderer.cc
index 00a5835e..9724764 100644
--- a/components/viz/service/display/gl_renderer.cc
+++ b/components/viz/service/display/gl_renderer.cc
@@ -1532,8 +1532,11 @@
   }
 
   SetShaderOpacity(params->quad->shared_quad_state->opacity);
-  SetShaderRoundedCorner(params->quad->shared_quad_state->rounded_corner_bounds,
-                         params->window_matrix * params->projection_matrix);
+  if (current_program_->rounded_corner_rect_location() != -1) {
+    SetShaderRoundedCorner(
+        params->quad->shared_quad_state->rounded_corner_bounds,
+        params->window_matrix * params->projection_matrix);
+  }
   SetShaderQuadF(params->surface_quad);
 }
 
@@ -1868,9 +1871,11 @@
                 quad_color_space,
                 current_frame()->current_render_pass->color_space);
   SetShaderColor(color, opacity);
-  SetShaderRoundedCorner(
-      quad->shared_quad_state->rounded_corner_bounds,
-      current_frame()->window_matrix * current_frame()->projection_matrix);
+  if (current_program_->rounded_corner_rect_location() != -1) {
+    SetShaderRoundedCorner(
+        quad->shared_quad_state->rounded_corner_bounds,
+        current_frame()->window_matrix * current_frame()->projection_matrix);
+  }
 
   if (current_program_->tint_color_matrix_location() != -1) {
     auto matrix = cc::DebugColors::TintCompositedContentColorTransformMatrix();
@@ -2041,9 +2046,11 @@
   // Blending is required for antialiasing.
   SetBlendEnabled(true);
   SetShaderOpacity(quad->shared_quad_state->opacity);
-  SetShaderRoundedCorner(
-      quad->shared_quad_state->rounded_corner_bounds,
-      current_frame()->window_matrix * current_frame()->projection_matrix);
+  if (current_program_->rounded_corner_rect_location() != -1) {
+    SetShaderRoundedCorner(
+        quad->shared_quad_state->rounded_corner_bounds,
+        current_frame()->window_matrix * current_frame()->projection_matrix);
+  }
   DCHECK(CanApplyBlendModeUsingBlendFunc(quad->shared_quad_state->blend_mode));
   ApplyBlendModeUsingBlendFunc(quad->shared_quad_state->blend_mode);
 
@@ -2138,9 +2145,11 @@
   ApplyBlendModeUsingBlendFunc(quad->shared_quad_state->blend_mode);
 
   SetShaderOpacity(quad->shared_quad_state->opacity);
-  SetShaderRoundedCorner(
-      quad->shared_quad_state->rounded_corner_bounds,
-      current_frame()->window_matrix * current_frame()->projection_matrix);
+  if (current_program_->rounded_corner_rect_location() != -1) {
+    SetShaderRoundedCorner(
+        quad->shared_quad_state->rounded_corner_bounds,
+        current_frame()->window_matrix * current_frame()->projection_matrix);
+  }
 
   // Pass quad coordinates to the uniform in the same order as GeometryBinding
   // does, then vertices will match the texture mapping in the vertex buffer.
@@ -2260,6 +2269,12 @@
                           false, matrix.data());
   }
 
+  if (current_program_->rounded_corner_rect_location() != -1) {
+    SetShaderRoundedCorner(
+        quad->shared_quad_state->rounded_corner_bounds,
+        current_frame()->window_matrix * current_frame()->projection_matrix);
+  }
+
   gfx::SizeF ya_tex_scale(1.0f, 1.0f);
   gfx::SizeF uv_tex_scale(1.0f, 1.0f);
   if (sampler != SAMPLER_TYPE_2D_RECT) {
@@ -2429,6 +2444,12 @@
   SetUseProgram(draw_cache_.program_key, locked_quad.color_space(),
                 current_frame()->current_render_pass->color_space);
 
+  if (current_program_->rounded_corner_rect_location() != -1) {
+    SetShaderRoundedCorner(
+        draw_cache_.rounded_corner_bounds,
+        current_frame()->window_matrix * current_frame()->projection_matrix);
+  }
+
   DCHECK_EQ(GL_TEXTURE0, GetActiveTextureUnit(gl_));
   gl_->BindTexture(locked_quad.target(), locked_quad.texture_id());
 
@@ -2530,16 +2551,14 @@
       tint_gl_composited_content_, ShouldUseRoundedCornerShader(quad));
   int resource_id = quad->resource_id();
 
-  SetShaderRoundedCorner(
-      quad->shared_quad_state->rounded_corner_bounds,
-      current_frame()->window_matrix * current_frame()->projection_matrix);
-
   size_t max_quads = StaticGeometryBinding::NUM_QUADS;
   if (draw_cache_.is_empty || draw_cache_.program_key != program_key ||
       draw_cache_.resource_id != resource_id ||
       draw_cache_.needs_blending != quad->ShouldDrawWithBlending() ||
       draw_cache_.nearest_neighbor != quad->nearest_neighbor ||
       draw_cache_.background_color != quad->background_color ||
+      draw_cache_.rounded_corner_bounds !=
+          quad->shared_quad_state->rounded_corner_bounds ||
       draw_cache_.matrix_data.size() >= max_quads) {
     FlushTextureQuadCache(SHARED_BINDING);
     draw_cache_.is_empty = false;
@@ -2548,6 +2567,8 @@
     draw_cache_.needs_blending = quad->ShouldDrawWithBlending();
     draw_cache_.nearest_neighbor = quad->nearest_neighbor;
     draw_cache_.background_color = quad->background_color;
+    draw_cache_.rounded_corner_bounds =
+        quad->shared_quad_state->rounded_corner_bounds;
   }
 
   // Generate the uv-transform
@@ -2786,14 +2807,12 @@
 void GLRenderer::SetShaderRoundedCorner(
     const gfx::RRectF& rounded_corner_bounds,
     const gfx::Transform& screen_transform) {
-  if (!current_program_ ||
-      current_program_->rounded_corner_rect_location() == -1 ||
-      current_program_->rounded_corner_radius_location() == -1 ||
-      rounded_corner_bounds.IsEmpty()) {
-    return;
-  }
-
+  DCHECK(current_program_);
+  DCHECK(!rounded_corner_bounds.IsEmpty());
+  DCHECK_NE(current_program_->rounded_corner_rect_location(), -1);
+  DCHECK_NE(current_program_->rounded_corner_radius_location(), -1);
   DCHECK(screen_transform.IsScaleOrTranslation());
+
   const gfx::Vector2dF& translate = screen_transform.To2dTranslation();
   const gfx::Vector2dF& scale = screen_transform.Scale2d();
   gfx::RRectF bounds_in_screen = rounded_corner_bounds;
diff --git a/components/viz/service/display/gl_renderer_draw_cache.h b/components/viz/service/display/gl_renderer_draw_cache.h
index e81f88f15..0f025f3 100644
--- a/components/viz/service/display/gl_renderer_draw_cache.h
+++ b/components/viz/service/display/gl_renderer_draw_cache.h
@@ -10,6 +10,7 @@
 #include "base/macros.h"
 #include "components/viz/service/display/program_binding.h"
 #include "third_party/skia/include/core/SkColor.h"
+#include "ui/gfx/rrect_f.h"
 
 namespace viz {
 
@@ -38,6 +39,7 @@
   bool needs_blending = false;
   bool nearest_neighbor = false;
   SkColor background_color = 0;
+  gfx::RRectF rounded_corner_bounds;
 
   // A cache for the coalesced quad data.
   std::vector<Float4> uv_xform_data;
diff --git a/components/viz/service/display/renderer_pixeltest.cc b/components/viz/service/display/renderer_pixeltest.cc
index 95ba3b9..d3f13bd8 100644
--- a/components/viz/service/display/renderer_pixeltest.cc
+++ b/components/viz/service/display/renderer_pixeltest.cc
@@ -4285,7 +4285,7 @@
                                  cc::ExactPixelComparator(true)));
 }
 
-TYPED_TEST(GLOnlyRendererPixelTest, RoundedCornerSimple) {
+TYPED_TEST(GLOnlyRendererPixelTest, RoundedCornerSimpleSolidDrawQuad) {
   gfx::Rect viewport_rect(this->device_viewport_size_);
   constexpr int kInset = 20;
   constexpr int kCornerRadius = 20;
@@ -4323,6 +4323,65 @@
       cc::ExactPixelComparator(true)));
 }
 
+TYPED_TEST(GLOnlyRendererPixelTest, RoundedCornerSimpleTextureDrawQuad) {
+  gfx::Rect viewport_rect(this->device_viewport_size_);
+  constexpr int kInset = 20;
+  constexpr int kCornerRadius = 20;
+
+  int root_pass_id = 1;
+  std::unique_ptr<RenderPass> root_pass =
+      CreateTestRootRenderPass(root_pass_id, viewport_rect);
+
+  gfx::Transform quad_to_target_transform;
+  gfx::Rect blue_rect(0, 0, this->device_viewport_size_.width(),
+                      this->device_viewport_size_.height());
+  gfx::Rect red_rect = blue_rect;
+  blue_rect.Inset(kInset, kInset);
+
+  gfx::RRectF rounded_corner_rrect(gfx::RectF(blue_rect), kCornerRadius);
+  SharedQuadState* shared_state_rounded =
+      CreateTestSharedQuadState(quad_to_target_transform, viewport_rect,
+                                root_pass.get(), rounded_corner_rrect);
+
+  const uint8_t colors[] = {0, 0, 255, 255, 0, 0, 255, 255,
+                            0, 0, 255, 255, 0, 0, 255, 255};
+  ResourceId resource = CreateGpuResource(
+      this->child_context_provider_, this->child_resource_provider_.get(),
+      gfx::Size(2, 2), RGBA_8888, gfx::ColorSpace(), colors);
+
+  std::unordered_map<ResourceId, ResourceId> resource_map =
+      cc::SendResourceAndGetChildToParentMap(
+          {resource}, this->resource_provider_.get(),
+          this->child_resource_provider_.get(),
+          this->child_context_provider_.get());
+  ResourceId mapped_resource = resource_map[resource];
+  bool needs_blending = true;
+  const gfx::PointF uv_top_left(0.0f, 0.0f);
+  const gfx::PointF uv_bottom_right(1.0f, 1.0f);
+  const bool flipped = false;
+  const bool nearest_neighbor = false;
+  auto* blue = root_pass->CreateAndAppendDrawQuad<TextureDrawQuad>();
+  float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f};
+  blue->SetNew(shared_state_rounded, blue_rect, blue_rect, needs_blending,
+               mapped_resource, true, uv_top_left, uv_bottom_right,
+               SK_ColorBLACK, vertex_opacity, flipped, nearest_neighbor,
+               /*secure_output_only=*/false, ui::ProtectedVideoType::kClear);
+
+  SharedQuadState* shared_state_normal = CreateTestSharedQuadState(
+      quad_to_target_transform, viewport_rect, root_pass.get(), gfx::RRectF());
+
+  auto* white = root_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
+  white->SetNew(shared_state_normal, red_rect, red_rect, SK_ColorWHITE, false);
+
+  RenderPassList pass_list;
+  pass_list.push_back(std::move(root_pass));
+
+  EXPECT_TRUE(this->RunPixelTest(
+      &pass_list,
+      base::FilePath(FILE_PATH_LITERAL("rounded_corner_simple.png")),
+      cc::ExactPixelComparator(true)));
+}
+
 // This draws a render pass with 2 solid color quads one of which has a rounded
 // corner. The render pass itself also has a rounded corner.
 TYPED_TEST(GLOnlyRendererPixelTest, RoundedCornerOnRenderPass) {
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_non_ddl.cc b/components/viz/service/display_embedder/skia_output_surface_impl_non_ddl.cc
index d278bb4..097075d 100644
--- a/components/viz/service/display_embedder/skia_output_surface_impl_non_ddl.cc
+++ b/components/viz/service/display_embedder/skia_output_surface_impl_non_ddl.cc
@@ -484,8 +484,8 @@
 
 sk_sp<SkImage> SkiaOutputSurfaceImplNonDDL::MakeSkImageFromSharedImage(
     const ResourceMetadata& metadata) {
-  auto representation =
-      sir_factory_->ProduceSkia(metadata.mailbox_holder.mailbox);
+  auto representation = sir_factory_->ProduceSkia(
+      metadata.mailbox_holder.mailbox, shared_context_state_.get());
   if (!representation) {
     DLOG(ERROR) << "Failed to make the SkImage - SharedImage mailbox not "
                    "found in SharedImageManager.";
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
index 27172362..8bf4c2c07d 100644
--- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
+++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
@@ -656,7 +656,7 @@
   if (!*shared_image_out && mailbox_holder.mailbox.IsSharedImage()) {
     std::unique_ptr<gpu::SharedImageRepresentationSkia> shared_image =
         shared_image_representation_factory_->ProduceSkia(
-            mailbox_holder.mailbox);
+            mailbox_holder.mailbox, context_state_.get());
     if (!shared_image) {
       DLOG(ERROR) << "Failed to fulfill the promise texture - SharedImage "
                      "mailbox not found in SharedImageManager.";
diff --git a/content/browser/accessibility/accessibility_event_recorder.cc b/content/browser/accessibility/accessibility_event_recorder.cc
index 8e149f8..744cc39 100644
--- a/content/browser/accessibility/accessibility_event_recorder.cc
+++ b/content/browser/accessibility/accessibility_event_recorder.cc
@@ -26,16 +26,16 @@
 }
 
 // static
-std::vector<AccessibilityEventRecorder::EventRecorderFactory>
+std::vector<AccessibilityEventRecorder::TestPass>
 AccessibilityEventRecorder::GetTestPasses() {
 #if defined(OS_ANDROID)
   // Note: Android doesn't do a "blink" pass; the blink tree is different on
   // Android because we exclude inline text boxes, for performance.
-  return {&AccessibilityEventRecorder::Create};
+  return {{"android", &AccessibilityEventRecorder::Create}};
 #else   // defined(OS_ANDROID)
   return {
-      &AccessibilityEventRecorder::Create,
-      &AccessibilityEventRecorder::Create,
+      {"blink", &AccessibilityEventRecorder::Create},
+      {"native", &AccessibilityEventRecorder::Create},
   };
 #endif  // defined(OS_ANDROID)
 }
diff --git a/content/browser/accessibility/accessibility_event_recorder.h b/content/browser/accessibility/accessibility_event_recorder.h
index 6e12f95..d9ee28c 100644
--- a/content/browser/accessibility/accessibility_event_recorder.h
+++ b/content/browser/accessibility/accessibility_event_recorder.h
@@ -50,7 +50,11 @@
       BrowserAccessibilityManager* manager,
       base::ProcessId pid,
       const base::StringPiece& application_name_match_pattern);
-  static std::vector<EventRecorderFactory> GetTestPasses();
+  struct TestPass {
+    const char* name;
+    EventRecorderFactory create_recorder;
+  };
+  static std::vector<TestPass> GetTestPasses();
 
   AccessibilityEventRecorder(BrowserAccessibilityManager* manager);
   virtual ~AccessibilityEventRecorder();
diff --git a/content/browser/accessibility/accessibility_event_recorder_auralinux.cc b/content/browser/accessibility/accessibility_event_recorder_auralinux.cc
index e2091f3d..8683b727 100644
--- a/content/browser/accessibility/accessibility_event_recorder_auralinux.cc
+++ b/content/browser/accessibility/accessibility_event_recorder_auralinux.cc
@@ -97,12 +97,12 @@
       manager, pid, application_name_match_pattern);
 }
 
-std::vector<AccessibilityEventRecorder::EventRecorderFactory>
+std::vector<AccessibilityEventRecorder::TestPass>
 AccessibilityEventRecorder::GetTestPasses() {
   // Both the Blink pass and native pass use the same recorder
   return {
-      &AccessibilityEventRecorder::Create,
-      &AccessibilityEventRecorder::Create,
+      {"blink", &AccessibilityEventRecorder::Create},
+      {"linux", &AccessibilityEventRecorder::Create},
   };
 }
 
diff --git a/content/browser/accessibility/accessibility_event_recorder_mac.mm b/content/browser/accessibility/accessibility_event_recorder_mac.mm
index 002aa65..bb92209 100644
--- a/content/browser/accessibility/accessibility_event_recorder_mac.mm
+++ b/content/browser/accessibility/accessibility_event_recorder_mac.mm
@@ -72,12 +72,12 @@
   return std::make_unique<AccessibilityEventRecorderMac>(manager, pid);
 }
 
-std::vector<AccessibilityEventRecorder::EventRecorderFactory>
+std::vector<AccessibilityEventRecorder::TestPass>
 AccessibilityEventRecorder::GetTestPasses() {
   // Both the Blink pass and native pass use the same recorder
   return {
-      &AccessibilityEventRecorder::Create,
-      &AccessibilityEventRecorder::Create,
+      {"blink", &AccessibilityEventRecorder::Create},
+      {"mac", &AccessibilityEventRecorder::Create},
   };
 }
 
diff --git a/content/browser/accessibility/accessibility_event_recorder_win.cc b/content/browser/accessibility/accessibility_event_recorder_win.cc
index 4855000..f4fcad0 100644
--- a/content/browser/accessibility/accessibility_event_recorder_win.cc
+++ b/content/browser/accessibility/accessibility_event_recorder_win.cc
@@ -136,15 +136,15 @@
       manager, pid, application_name_match_pattern);
 }
 
-std::vector<AccessibilityEventRecorder::EventRecorderFactory>
+std::vector<AccessibilityEventRecorder::TestPass>
 AccessibilityEventRecorder::GetTestPasses() {
   // In addition to the 'Blink' pass, Windows includes two accessibility APIs
   // that need to be tested independently (MSAA & UIA); the Blink pass uses the
   // same recorder as the MSAA pass.
   return {
-      &AccessibilityEventRecorder::Create,
-      &AccessibilityEventRecorder::Create,
-      &AccessibilityEventRecorderUia::CreateUia,
+      {"blink", &AccessibilityEventRecorder::Create},
+      {"win", &AccessibilityEventRecorder::Create},
+      {"uia", &AccessibilityEventRecorderUia::CreateUia},
   };
 }
 
diff --git a/content/browser/accessibility/accessibility_tree_formatter.cc b/content/browser/accessibility/accessibility_tree_formatter.cc
index 8647fbe..2169274 100644
--- a/content/browser/accessibility/accessibility_tree_formatter.cc
+++ b/content/browser/accessibility/accessibility_tree_formatter.cc
@@ -223,9 +223,6 @@
   property_filters->push_back(PropertyFilter(base::ASCIIToUTF16(filter), type));
 }
 
-void AccessibilityTreeFormatter::SetUpCommandLineForTestPass(
-    base::CommandLine* command_line) {}
-
 void AccessibilityTreeFormatter::AddDefaultFilters(
     std::vector<PropertyFilter>* property_filters) {}
 }  // namespace content
diff --git a/content/browser/accessibility/accessibility_tree_formatter.h b/content/browser/accessibility/accessibility_tree_formatter.h
index d13c39aa..45d934c 100644
--- a/content/browser/accessibility/accessibility_tree_formatter.h
+++ b/content/browser/accessibility/accessibility_tree_formatter.h
@@ -71,10 +71,13 @@
   // Get a set of factory methods to create tree-formatters, one for each test
   // pass; see |DumpAccessibilityTestBase|.
   using FormatterFactory = std::unique_ptr<AccessibilityTreeFormatter> (*)();
-  static std::vector<FormatterFactory> GetTestPasses();
-
-  // Called to allow each test pass to alter the command-line
-  virtual void SetUpCommandLineForTestPass(base::CommandLine* command_line);
+  using CommandLineHelper = void (*)(base::CommandLine* command_line);
+  struct TestPass {
+    const char* name;
+    FormatterFactory create_formatter;
+    CommandLineHelper set_up_command_line;
+  };
+  static std::vector<TestPass> GetTestPasses();
 
   virtual void AddDefaultFilters(std::vector<PropertyFilter>* property_filters);
 
diff --git a/content/browser/accessibility/accessibility_tree_formatter_android.cc b/content/browser/accessibility/accessibility_tree_formatter_android.cc
index 3ac10a8..9c7856ee 100644
--- a/content/browser/accessibility/accessibility_tree_formatter_android.cc
+++ b/content/browser/accessibility/accessibility_tree_formatter_android.cc
@@ -91,12 +91,12 @@
 }
 
 // static
-std::vector<AccessibilityTreeFormatter::FormatterFactory>
+std::vector<AccessibilityTreeFormatter::TestPass>
 AccessibilityTreeFormatter::GetTestPasses() {
   // Note: Android doesn't do a "blink" pass; the blink tree is different on
   // Android because we exclude inline text boxes, for performance.
   return {
-      &AccessibilityTreeFormatter::Create,
+      {"android", &AccessibilityTreeFormatter::Create},
   };
 }
 
diff --git a/content/browser/accessibility/accessibility_tree_formatter_auralinux.cc b/content/browser/accessibility/accessibility_tree_formatter_auralinux.cc
index 7dbee99..5c0013aa 100644
--- a/content/browser/accessibility/accessibility_tree_formatter_auralinux.cc
+++ b/content/browser/accessibility/accessibility_tree_formatter_auralinux.cc
@@ -67,11 +67,11 @@
 }
 
 // static
-std::vector<AccessibilityTreeFormatter::FormatterFactory>
+std::vector<AccessibilityTreeFormatter::TestPass>
 AccessibilityTreeFormatter::GetTestPasses() {
   return {
-      &AccessibilityTreeFormatterBlink::CreateBlink,
-      &AccessibilityTreeFormatter::Create,
+      {"blink", &AccessibilityTreeFormatterBlink::CreateBlink},
+      {"linux", &AccessibilityTreeFormatter::Create},
   };
 }
 
diff --git a/content/browser/accessibility/accessibility_tree_formatter_mac.mm b/content/browser/accessibility/accessibility_tree_formatter_mac.mm
index e2ce770..8a4fbbc 100644
--- a/content/browser/accessibility/accessibility_tree_formatter_mac.mm
+++ b/content/browser/accessibility/accessibility_tree_formatter_mac.mm
@@ -244,11 +244,11 @@
 }
 
 // static
-std::vector<AccessibilityTreeFormatter::FormatterFactory>
+std::vector<AccessibilityTreeFormatter::TestPass>
 AccessibilityTreeFormatter::GetTestPasses() {
   return {
-      &AccessibilityTreeFormatterBlink::CreateBlink,
-      &AccessibilityTreeFormatter::Create,
+      {"blink", &AccessibilityTreeFormatterBlink::CreateBlink},
+      {"mac", &AccessibilityTreeFormatter::Create},
   };
 }
 
diff --git a/content/browser/accessibility/accessibility_tree_formatter_stub.cc b/content/browser/accessibility/accessibility_tree_formatter_stub.cc
index 580db24a..4e174b58 100644
--- a/content/browser/accessibility/accessibility_tree_formatter_stub.cc
+++ b/content/browser/accessibility/accessibility_tree_formatter_stub.cc
@@ -35,11 +35,11 @@
 }
 
 // static
-std::vector<AccessibilityTreeFormatter::FormatterFactory>
+std::vector<AccessibilityTreeFormatter::TestPass>
 AccessibilityTreeFormatter::GetTestPasses() {
   return {
-      &AccessibilityTreeFormatterBlink::CreateBlink,
-      &AccessibilityTreeFormatter::Create,
+      {"blink", &AccessibilityTreeFormatterBlink::CreateBlink},
+      {"native", &AccessibilityTreeFormatter::Create},
   };
 }
 #endif
diff --git a/content/browser/accessibility/accessibility_tree_formatter_uia_win.cc b/content/browser/accessibility/accessibility_tree_formatter_uia_win.cc
index 0bae7f8..b8e78ee 100644
--- a/content/browser/accessibility/accessibility_tree_formatter_uia_win.cc
+++ b/content/browser/accessibility/accessibility_tree_formatter_uia_win.cc
@@ -242,10 +242,11 @@
   AddPropertyFilter(property_filters, "IsDataValidForForm=true");
   AddPropertyFilter(property_filters, "IsRequiredForForm=true");
 }
+
+// static
 void AccessibilityTreeFormatterUia::SetUpCommandLineForTestPass(
     base::CommandLine* command_line) {
-  base::CommandLine::ForCurrentProcess()->AppendSwitch(
-      ::switches::kEnableExperimentalUIAutomation);
+  command_line->AppendSwitch(::switches::kEnableExperimentalUIAutomation);
 }
 
 std::unique_ptr<base::DictionaryValue>
diff --git a/content/browser/accessibility/accessibility_tree_formatter_uia_win.h b/content/browser/accessibility/accessibility_tree_formatter_uia_win.h
index 04913df..544d8b5a 100644
--- a/content/browser/accessibility/accessibility_tree_formatter_uia_win.h
+++ b/content/browser/accessibility/accessibility_tree_formatter_uia_win.h
@@ -27,7 +27,7 @@
   void AddDefaultFilters(
       std::vector<PropertyFilter>* property_filters) override;
 
-  void SetUpCommandLineForTestPass(base::CommandLine* command_line) override;
+  static void SetUpCommandLineForTestPass(base::CommandLine* command_line);
 
   const base::FilePath::StringType GetExpectedFileSuffix() override;
 
diff --git a/content/browser/accessibility/accessibility_tree_formatter_win.cc b/content/browser/accessibility/accessibility_tree_formatter_win.cc
index 18e24c7..077eb10 100644
--- a/content/browser/accessibility/accessibility_tree_formatter_win.cc
+++ b/content/browser/accessibility/accessibility_tree_formatter_win.cc
@@ -55,7 +55,7 @@
       LONG window_x = 0,
       LONG window_y = 0);
 
-  void SetUpCommandLineForTestPass(base::CommandLine* command_line) override;
+  static void SetUpCommandLineForTestPass(base::CommandLine* command_line);
   void AddDefaultFilters(
       std::vector<PropertyFilter>* property_filters) override;
 
@@ -108,21 +108,22 @@
 }
 
 // static
-std::vector<AccessibilityTreeFormatter::FormatterFactory>
+std::vector<AccessibilityTreeFormatter::TestPass>
 AccessibilityTreeFormatter::GetTestPasses() {
   // In addition to the 'Blink' pass, Windows includes two accessibility APIs
   // that need to be tested independently (MSAA & UIA).
   return {
-      &AccessibilityTreeFormatterBlink::CreateBlink,
-      &AccessibilityTreeFormatter::Create,
-      &AccessibilityTreeFormatterUia::CreateUia,
+      {"blink", &AccessibilityTreeFormatterBlink::CreateBlink, nullptr},
+      {"win", &AccessibilityTreeFormatter::Create,
+       &AccessibilityTreeFormatterWin::SetUpCommandLineForTestPass},
+      {"uia", &AccessibilityTreeFormatterUia::CreateUia,
+       &AccessibilityTreeFormatterUia::SetUpCommandLineForTestPass},
   };
 }
 
 void AccessibilityTreeFormatterWin::SetUpCommandLineForTestPass(
     base::CommandLine* command_line) {
-  base::CommandLine::ForCurrentProcess()->RemoveSwitch(
-      ::switches::kEnableExperimentalUIAutomation);
+  command_line->RemoveSwitch(::switches::kEnableExperimentalUIAutomation);
 }
 
 void AccessibilityTreeFormatterWin::AddDefaultFilters(
diff --git a/content/browser/accessibility/dump_accessibility_browsertest_base.cc b/content/browser/accessibility/dump_accessibility_browsertest_base.cc
index bb43d97a..8fd4f5b 100644
--- a/content/browser/accessibility/dump_accessibility_browsertest_base.cc
+++ b/content/browser/accessibility/dump_accessibility_browsertest_base.cc
@@ -90,6 +90,13 @@
 void DumpAccessibilityTestBase::SetUpCommandLine(
     base::CommandLine* command_line) {
   IsolateAllSitesForTesting(command_line);
+
+  // Each test pass might require custom command-line setup
+  auto passes = AccessibilityTreeFormatter::GetTestPasses();
+  size_t current_pass = GetParam();
+  CHECK_LT(current_pass, passes.size());
+  if (passes[current_pass].set_up_command_line)
+    passes[current_pass].set_up_command_line(command_line);
 }
 
 void DumpAccessibilityTestBase::SetUpOnMainThread() {
@@ -201,14 +208,19 @@
   // Get all the tree formatters; the test is run independently on each one.
   auto formatters = AccessibilityTreeFormatter::GetTestPasses();
   auto event_recorders = AccessibilityEventRecorder::GetTestPasses();
-  DCHECK(event_recorders.size() == formatters.size());
+  CHECK(event_recorders.size() == formatters.size());
 
-  int pass_count = formatters.size();
-  for (int pass = 0; pass < pass_count; ++pass) {
-    formatter_factory_ = formatters[pass];
-    event_recorder_factory_ = event_recorders[pass];
-    RunTestForPlatform(file_path, file_dir);
-  }
+  // The current test number is supplied as a test parameter.
+  size_t current_pass = GetParam();
+  CHECK_LT(current_pass, formatters.size());
+  CHECK_EQ(std::string(formatters[current_pass].name),
+           std::string(event_recorders[current_pass].name));
+
+  formatter_factory_ = formatters[current_pass].create_formatter;
+  event_recorder_factory_ = event_recorders[current_pass].create_recorder;
+
+  RunTestForPlatform(file_path, file_dir);
+
   formatter_factory_ = nullptr;
   event_recorder_factory_ = nullptr;
 }
@@ -218,10 +230,6 @@
     const char* file_dir) {
   formatter_ = formatter_factory_();
 
-  base::test::ScopedCommandLine scoped_command_line;
-  formatter_->SetUpCommandLineForTestPass(
-      scoped_command_line.GetProcessCommandLine());
-
   // Disable the "hot tracked" state (set when the mouse is hovering over
   // an object) because it makes test output change based on the mouse position.
   BrowserAccessibilityStateImpl::GetInstance()
diff --git a/content/browser/accessibility/dump_accessibility_browsertest_base.h b/content/browser/accessibility/dump_accessibility_browsertest_base.h
index 135fc57..1241435 100644
--- a/content/browser/accessibility/dump_accessibility_browsertest_base.h
+++ b/content/browser/accessibility/dump_accessibility_browsertest_base.h
@@ -26,7 +26,8 @@
 // testing accessibility in Chromium.
 //
 // See content/test/data/accessibility/readme.md for an overview.
-class DumpAccessibilityTestBase : public ContentBrowserTest {
+class DumpAccessibilityTestBase : public ContentBrowserTest,
+                                  public ::testing::WithParamInterface<size_t> {
  public:
   DumpAccessibilityTestBase();
   ~DumpAccessibilityTestBase() override;
diff --git a/content/browser/accessibility/dump_accessibility_events_browsertest.cc b/content/browser/accessibility/dump_accessibility_events_browsertest.cc
index cb0b5f8a..228f418 100644
--- a/content/browser/accessibility/dump_accessibility_events_browsertest.cc
+++ b/content/browser/accessibility/dump_accessibility_events_browsertest.cc
@@ -71,6 +71,9 @@
     property_filters->push_back(
         PropertyFilter(base::ASCIIToUTF16("EVENT_OBJECT_FOCUS*DOCUMENT*"),
                        PropertyFilter::DENY));
+    property_filters->push_back(
+        PropertyFilter(base::ASCIIToUTF16("AutomationFocusChanged*document*"),
+                       PropertyFilter::DENY));
   }
 
   std::vector<std::string> Dump(std::vector<std::string>& run_until) override;
@@ -206,291 +209,307 @@
   RunTest(event_file, "accessibility/event");
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+// Parameterize the tests so that each test-pass is run independently.
+struct DumpAccessibilityEventsTestPassToString {
+  std::string operator()(const ::testing::TestParamInfo<size_t>& i) const {
+    auto passes = AccessibilityEventRecorder::GetTestPasses();
+    CHECK_LT(i.param, passes.size());
+    return passes[i.param].name;
+  }
+};
+
+INSTANTIATE_TEST_SUITE_P(
+    ,
+    DumpAccessibilityEventsTest,
+    ::testing::Range(size_t{0},
+                     AccessibilityEventRecorder::GetTestPasses().size()),
+    DumpAccessibilityEventsTestPassToString());
+
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAriaBusyChanged) {
   RunEventTest(FILE_PATH_LITERAL("aria-busy-changed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAriaComboBoxCollapse) {
   RunEventTest(FILE_PATH_LITERAL("aria-combo-box-collapse.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAriaComboBoxExpand) {
   RunEventTest(FILE_PATH_LITERAL("aria-combo-box-expand.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAriaTreeCollapse) {
   RunEventTest(FILE_PATH_LITERAL("aria-tree-collapse.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAriaTreeExpand) {
   RunEventTest(FILE_PATH_LITERAL("aria-tree-expand.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAriaTreeItemFocus) {
   RunEventTest(FILE_PATH_LITERAL("aria-treeitem-focus.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAriaComboBoxFocus) {
   RunEventTest(FILE_PATH_LITERAL("aria-combo-box-focus.html"));
 }
 
 // TODO(aboxhall): Fix flaky test
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        DISABLED_AccessibilityEventsAriaComboBoxDelayAddList) {
   RunEventTest(FILE_PATH_LITERAL("aria-combo-box-delay-add-list.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAriaComboBoxDelayShowList) {
   RunEventTest(FILE_PATH_LITERAL("aria-combo-box-delay-show-list.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAriaComboBoxNext) {
   RunEventTest(FILE_PATH_LITERAL("aria-combo-box-next.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAriaSliderValueBothChange) {
   RunEventTest(FILE_PATH_LITERAL("aria-slider-value-both-change.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAriaSliderValueChange) {
   RunEventTest(FILE_PATH_LITERAL("aria-slider-value-change.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAriaSliderValueTextChange) {
   RunEventTest(FILE_PATH_LITERAL("aria-slider-valuetext-change.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAriaSpinButtonValueBothChange) {
   RunEventTest(FILE_PATH_LITERAL("aria-spinbutton-value-both-change.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAriaSpinButtonValueChange) {
   RunEventTest(FILE_PATH_LITERAL("aria-spinbutton-value-change.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAriaSpinButtonValueTextChange) {
   RunEventTest(FILE_PATH_LITERAL("aria-spinbutton-valuetext-change.html"));
 }
 
 // https://crbug.com/941919
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        DISABLED_AccessibilityEventsAddAlert) {
   RunEventTest(FILE_PATH_LITERAL("add-alert.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAddChildOfBody) {
   RunEventTest(FILE_PATH_LITERAL("add-child-of-body.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAddHiddenAttribute) {
   RunEventTest(FILE_PATH_LITERAL("add-hidden-attribute.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAddHiddenAttributeSubtree) {
   RunEventTest(FILE_PATH_LITERAL("add-hidden-attribute-subtree.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAddSubtree) {
   RunEventTest(FILE_PATH_LITERAL("add-subtree.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsCheckedStateChanged) {
   RunEventTest(FILE_PATH_LITERAL("checked-state-changed.html"));
 }
 
 // http:/crbug.com/889013
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        DISABLED_AccessibilityEventsCaretHide) {
   RunEventTest(FILE_PATH_LITERAL("caret-hide.html"));
 }
 
 // http:/crbug.com/889013
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        DISABLED_AccessibilityEventsCaretMove) {
   RunEventTest(FILE_PATH_LITERAL("caret-move.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsCheckboxValidity) {
   RunEventTest(FILE_PATH_LITERAL("checkbox-validity.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsCSSDisplay) {
   RunEventTest(FILE_PATH_LITERAL("css-display.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsCSSVisibility) {
   RunEventTest(FILE_PATH_LITERAL("css-visibility.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsDescriptionChange) {
   RunEventTest(FILE_PATH_LITERAL("description-change.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsDescriptionChangeIndirect) {
   RunEventTest(FILE_PATH_LITERAL("description-change-indirect.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsDisabledStateChanged) {
   RunEventTest(FILE_PATH_LITERAL("disabled-state-changed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsExpandedChange) {
   RunEventTest(FILE_PATH_LITERAL("expanded-change.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsFormRequiredChanged) {
   RunEventTest(FILE_PATH_LITERAL("form-required-changed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsInnerHtmlChange) {
   RunEventTest(FILE_PATH_LITERAL("inner-html-change.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsInputTypeTextValueChanged) {
   RunEventTest(FILE_PATH_LITERAL("input-type-text-value-changed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsInvalidStatusChange) {
   RunEventTest(FILE_PATH_LITERAL("invalid-status-change.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsListboxFocus) {
   RunEventTest(FILE_PATH_LITERAL("listbox-focus.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsListboxNext) {
   RunEventTest(FILE_PATH_LITERAL("listbox-next.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsLiveRegionAdd) {
   RunEventTest(FILE_PATH_LITERAL("live-region-add.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsLiveRegionAddLiveAttribute) {
   RunEventTest(FILE_PATH_LITERAL("live-region-add-live-attribute.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsLiveRegionChange) {
   RunEventTest(FILE_PATH_LITERAL("live-region-change.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsLiveRegionCreate) {
   RunEventTest(FILE_PATH_LITERAL("live-region-create.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsLiveRegionOff) {
   RunEventTest(FILE_PATH_LITERAL("live-region-off.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsLiveRegionElemReparent) {
   RunEventTest(FILE_PATH_LITERAL("live-region-elem-reparent.html"));
 }
 
 // TODO(aboxhall): Fix flakiness.
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        DISABLED_AccessibilityEventsLiveRegionIgnoresClick) {
   RunEventTest(FILE_PATH_LITERAL("live-region-ignores-click.html"));
 }
 
 // http:/crbug.com/786848
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        DISABLED_AccessibilityEventsLiveRegionRemove) {
   RunEventTest(FILE_PATH_LITERAL("live-region-remove.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsMenuListCollapse) {
   RunEventTest(FILE_PATH_LITERAL("menulist-collapse.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsMenuListCollapseNext) {
   RunEventTest(FILE_PATH_LITERAL("menulist-collapse-next.html"));
 }
 
 // https://crbug.com/719030
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        DISABLED_AccessibilityEventsMenuListExpand) {
   RunEventTest(FILE_PATH_LITERAL("menulist-expand.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsMenuListFocus) {
   RunEventTest(FILE_PATH_LITERAL("menulist-focus.html"));
 }
 
 // https://crbug.com/719030
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        DISABLED_AccessibilityEventsMenuListNext) {
   RunEventTest(FILE_PATH_LITERAL("menulist-next.html"));
 }
 
 // http://crbug.com/719030
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        DISABLED_AccessibilityEventsMenuListPopup) {
   RunEventTest(FILE_PATH_LITERAL("menulist-popup.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsNameChange) {
   RunEventTest(FILE_PATH_LITERAL("name-change.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsNameChangeIndirect) {
   RunEventTest(FILE_PATH_LITERAL("name-change-indirect.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsDocumentTitleChange) {
   RunEventTest(FILE_PATH_LITERAL("document-title-change.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsRemoveChild) {
   RunEventTest(FILE_PATH_LITERAL("remove-child.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsRemoveHiddenAttribute) {
   RunEventTest(FILE_PATH_LITERAL("remove-hidden-attribute.html"));
 }
@@ -503,88 +522,88 @@
 #define MAYBE_AccessibilityEventsReportValidityInvalidField \
   AccessibilityEventsReportValidityInvalidField
 #endif
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        MAYBE_AccessibilityEventsReportValidityInvalidField) {
   RunEventTest(FILE_PATH_LITERAL("report-validity-invalid-field.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsRemoveHiddenAttributeSubtree) {
   RunEventTest(FILE_PATH_LITERAL("remove-hidden-attribute-subtree.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsScrollHorizontalScrollPercentChange) {
   RunEventTest(
       FILE_PATH_LITERAL("scroll-horizontal-scroll-percent-change.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsScrollVerticalScrollPercentChange) {
   RunEventTest(FILE_PATH_LITERAL("scroll-vertical-scroll-percent-change.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsTabindexAddedOnPlainDiv) {
   RunEventTest(FILE_PATH_LITERAL("tabindex-added-on-plain-div.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsTabindexAddedOnAriaHidden) {
   RunEventTest(FILE_PATH_LITERAL("tabindex-added-on-aria-hidden.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsTabindexRemovedOnPlainDiv) {
   RunEventTest(FILE_PATH_LITERAL("tabindex-removed-on-plain-div.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsTabindexRemovedOnAriaHidden) {
   RunEventTest(FILE_PATH_LITERAL("tabindex-removed-on-aria-hidden.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsTableColumnHidden) {
   RunEventTest(FILE_PATH_LITERAL("table-column-hidden.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsTextChanged) {
   RunEventTest(FILE_PATH_LITERAL("text-changed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAriaCheckedChanged) {
   RunEventTest(FILE_PATH_LITERAL("aria-checked-changed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAriaMultiselectableChanged) {
   RunEventTest(FILE_PATH_LITERAL("aria-multiselectable-changed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAriaRequiredChanged) {
   RunEventTest(FILE_PATH_LITERAL("aria-required-changed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsAriaPressedChanged) {
   RunEventTest(FILE_PATH_LITERAL("aria-pressed-changed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsTheadFocus) {
   RunEventTest(FILE_PATH_LITERAL("thead-focus.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsTfootFocus) {
   RunEventTest(FILE_PATH_LITERAL("tfoot-focus.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsTbodyFocus) {
   RunEventTest(FILE_PATH_LITERAL("tbody-focus.html"));
 }
@@ -599,46 +618,46 @@
 #define MAYBE_AccessibilityEventsAriaSelectedChanged \
   AccessibilityEventsAriaSelectedChanged
 #endif
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        MAYBE_AccessibilityEventsAriaSelectedChanged) {
   RunEventTest(FILE_PATH_LITERAL("aria-selected-changed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsButtonClick) {
   RunEventTest(FILE_PATH_LITERAL("button-click.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        RangeValueIsReadonlyChanged) {
   RunEventTest(FILE_PATH_LITERAL("range-value-is-readonly-changed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest, RangeValueMaximumChanged) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest, RangeValueMaximumChanged) {
   RunEventTest(FILE_PATH_LITERAL("range-value-maximum-changed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest, RangeValueMinimumChanged) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest, RangeValueMinimumChanged) {
   RunEventTest(FILE_PATH_LITERAL("range-value-minimum-changed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest, RangeValueStepChanged) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest, RangeValueStepChanged) {
   RunEventTest(FILE_PATH_LITERAL("range-value-step-changed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest, RangeValueValueChanged) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest, RangeValueValueChanged) {
   RunEventTest(FILE_PATH_LITERAL("range-value-value-changed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest, ValueIsReadOnlyChanged) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest, ValueIsReadOnlyChanged) {
   RunEventTest(FILE_PATH_LITERAL("value-is-readonly-changed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest, ValueValueChanged) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest, ValueValueChanged) {
   RunEventTest(FILE_PATH_LITERAL("value-value-changed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
                        AccessibilityEventsMenuOpenedClosed) {
   RunEventTest(FILE_PATH_LITERAL("menu-opened-closed.html"));
 }
diff --git a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
index 0bc3c0f..c31a4ee 100644
--- a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
+++ b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
@@ -196,932 +196,948 @@
   AddPropertyFilter(property_filters, "name=*", PropertyFilter::ALLOW_EMPTY);
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityCSSColor) {
+// Parameterize the tests so that each test-pass is run independently.
+struct DumpAccessibilityTreeTestPassToString {
+  std::string operator()(const ::testing::TestParamInfo<size_t>& i) const {
+    auto passes = AccessibilityTreeFormatter::GetTestPasses();
+    CHECK_LT(i.param, passes.size());
+    return passes[i.param].name;
+  }
+};
+
+INSTANTIATE_TEST_SUITE_P(
+    ,
+    DumpAccessibilityTreeTest,
+    ::testing::Range(size_t{0},
+                     AccessibilityTreeFormatter::GetTestPasses().size()),
+    DumpAccessibilityTreeTestPassToString());
+
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityCSSColor) {
   RunCSSTest(FILE_PATH_LITERAL("color.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityCSSFontStyle) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityCSSFontStyle) {
   RunCSSTest(FILE_PATH_LITERAL("font-style.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityCSSFontFamily) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityCSSFontFamily) {
   RunCSSTest(FILE_PATH_LITERAL("font-family.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityCSSDisplayToInline) {
   RunCSSTest(FILE_PATH_LITERAL("display-to-inline.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityCSSDisplayToBlock) {
   RunCSSTest(FILE_PATH_LITERAL("display-to-block.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityCSSInlinePositionRelative) {
   RunCSSTest(FILE_PATH_LITERAL("inline-position-relative.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityCSSLanguage) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityCSSLanguage) {
   RunCSSTest(FILE_PATH_LITERAL("language.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityCSSTableIncomplete) {
   RunCSSTest(FILE_PATH_LITERAL("table-incomplete.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityCSSTransform) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityCSSTransform) {
   RunCSSTest(FILE_PATH_LITERAL("transform.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityA) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityA) {
   RunHtmlTest(FILE_PATH_LITERAL("a.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAbbr) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAbbr) {
   RunHtmlTest(FILE_PATH_LITERAL("abbr.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAbsoluteOffscreen) {
   RunHtmlTest(FILE_PATH_LITERAL("absolute-offscreen.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityActionVerbs) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityActionVerbs) {
   RunHtmlTest(FILE_PATH_LITERAL("action-verbs.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityActions) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityActions) {
   RunHtmlTest(FILE_PATH_LITERAL("actions.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAddClickListener) {
   RunHtmlTest(FILE_PATH_LITERAL("add-click-listener.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAddress) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAddress) {
   RunHtmlTest(FILE_PATH_LITERAL("address.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityArea) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityArea) {
   RunHtmlTest(FILE_PATH_LITERAL("area.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAName) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAName) {
   RunHtmlTest(FILE_PATH_LITERAL("a-name.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityANameCalc) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityANameCalc) {
   RunHtmlTest(FILE_PATH_LITERAL("a-name-calc.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityANoText) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityANoText) {
   RunHtmlTest(FILE_PATH_LITERAL("a-no-text.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAOnclick) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAOnclick) {
   RunHtmlTest(FILE_PATH_LITERAL("a-onclick.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAIsInteresting) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAIsInteresting) {
   RunHtmlTest(FILE_PATH_LITERAL("isInteresting.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityClickableAncestor) {
   RunHtmlTest(FILE_PATH_LITERAL("clickable-ancestor.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAomBusy) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAomBusy) {
   RunAomTest(FILE_PATH_LITERAL("aom-busy.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAomChecked) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAomChecked) {
   RunAomTest(FILE_PATH_LITERAL("aom-checked.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaActivedescendant) {
   RunAriaTest(FILE_PATH_LITERAL("aria-activedescendant.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaAlert) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaAlert) {
   RunAriaTest(FILE_PATH_LITERAL("aria-alert.html"));
 }
 
 #if defined(OS_WIN)
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        DISABLED_AccessibilityAriaAlertDialog) {
   RunAriaTest(FILE_PATH_LITERAL("aria-alertdialog.html"));
 }
 #else
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaAlertDialog) {
   RunAriaTest(FILE_PATH_LITERAL("aria-alertdialog.html"));
 }
 #endif
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaAnyUnignored) {
   RunAriaTest(FILE_PATH_LITERAL("aria-any-unignored.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaApplication) {
   RunAriaTest(FILE_PATH_LITERAL("aria-application.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaArticle) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaArticle) {
   RunAriaTest(FILE_PATH_LITERAL("aria-article.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaAtomic) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaAtomic) {
   RunAriaTest(FILE_PATH_LITERAL("aria-atomic.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaAutocomplete) {
   RunAriaTest(FILE_PATH_LITERAL("aria-autocomplete.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaBanner) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaBanner) {
   RunAriaTest(FILE_PATH_LITERAL("aria-banner.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaBlockquote) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaBlockquote) {
   RunAriaTest(FILE_PATH_LITERAL("aria-blockquote.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaBusy) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaBusy) {
   RunAriaTest(FILE_PATH_LITERAL("aria-busy.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaButton) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaButton) {
   RunAriaTest(FILE_PATH_LITERAL("aria-button.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaCaption) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaCaption) {
   RunAriaTest(FILE_PATH_LITERAL("aria-caption.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaCell) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaCell) {
   RunAriaTest(FILE_PATH_LITERAL("aria-cell.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaCheckBox) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaCheckBox) {
   RunAriaTest(FILE_PATH_LITERAL("aria-checkbox.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaChecked) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaChecked) {
   RunAriaTest(FILE_PATH_LITERAL("aria-checked.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaColAttr) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaColAttr) {
   RunAriaTest(FILE_PATH_LITERAL("aria-col-attr.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaColumnHeader) {
   RunAriaTest(FILE_PATH_LITERAL("aria-columnheader.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaCombobox) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaCombobox) {
   RunAriaTest(FILE_PATH_LITERAL("aria-combobox.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaOnePointOneCombobox) {
   RunAriaTest(FILE_PATH_LITERAL("aria1.1-combobox.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaComplementary) {
   RunAriaTest(FILE_PATH_LITERAL("aria-complementary.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaContentInfo) {
   RunAriaTest(FILE_PATH_LITERAL("aria-contentinfo.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaControls) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaControls) {
   RunAriaTest(FILE_PATH_LITERAL("aria-controls.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaCurrent) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaCurrent) {
   RunAriaTest(FILE_PATH_LITERAL("aria-current.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaDefinition) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaDefinition) {
   RunAriaTest(FILE_PATH_LITERAL("aria-definition.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaDescribedBy) {
   RunAriaTest(FILE_PATH_LITERAL("aria-describedby.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaDescribedByUpdates) {
   RunAriaTest(FILE_PATH_LITERAL("aria-describedby-updates.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaDetails) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaDetails) {
   RunAriaTest(FILE_PATH_LITERAL("aria-details.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaDialog) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaDialog) {
   RunAriaTest(FILE_PATH_LITERAL("aria-dialog.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaDirectory) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaDirectory) {
   RunAriaTest(FILE_PATH_LITERAL("aria-directory.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaDisabled) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaDisabled) {
   RunAriaTest(FILE_PATH_LITERAL("aria-disabled.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaDocument) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaDocument) {
   RunAriaTest(FILE_PATH_LITERAL("aria-document.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaDropEffect) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaDropEffect) {
   RunAriaTest(FILE_PATH_LITERAL("aria-dropeffect.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaEditable) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaEditable) {
   RunAriaTest(FILE_PATH_LITERAL("aria-editable.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaErrorMessage) {
   RunAriaTest(FILE_PATH_LITERAL("aria-errormessage.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaExpanded) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaExpanded) {
   RunAriaTest(FILE_PATH_LITERAL("aria-expanded.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaFeed) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaFeed) {
   RunAriaTest(FILE_PATH_LITERAL("aria-feed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaFigure) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaFigure) {
   RunAriaTest(FILE_PATH_LITERAL("aria-figure.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaHasPopup) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaHasPopup) {
   RunAriaTest(FILE_PATH_LITERAL("aria-haspopup.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaHeading) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaHeading) {
   RunAriaTest(FILE_PATH_LITERAL("aria-heading.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaHidden) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaHidden) {
   RunAriaTest(FILE_PATH_LITERAL("aria-hidden.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaHiddenDescendants) {
   RunAriaTest(FILE_PATH_LITERAL("aria-hidden-descendants.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaHiddenDescendantTabindexChange) {
   RunAriaTest(FILE_PATH_LITERAL("aria-hidden-descendant-tabindex-change.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaHiddenIframeBody) {
   RunAriaTest(FILE_PATH_LITERAL("aria-hidden-iframe-body.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        MAYBE(AccessibilityAriaFlowto)) {
   RunAriaTest(FILE_PATH_LITERAL("aria-flowto.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        MAYBE(AccessibilityAriaFlowtoMultiple)) {
   RunAriaTest(FILE_PATH_LITERAL("aria-flowto-multiple.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaForm) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaForm) {
   RunAriaTest(FILE_PATH_LITERAL("aria-form.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaGrabbed) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaGrabbed) {
   RunAriaTest(FILE_PATH_LITERAL("aria-grabbed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaGrid) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaGrid) {
   RunAriaTest(FILE_PATH_LITERAL("aria-grid.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaGridDynamicAddRow) {
   RunAriaTest(FILE_PATH_LITERAL("aria-grid-dynamic-add-row.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaGridExtraWrapElems) {
   RunAriaTest(FILE_PATH_LITERAL("aria-grid-extra-wrap-elems.html"));
 }
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaGridCell) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaGridCell) {
   RunAriaTest(FILE_PATH_LITERAL("aria-gridcell.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaGroup) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaGroup) {
   RunAriaTest(FILE_PATH_LITERAL("aria-group.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaIllegalVal) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaIllegalVal) {
   RunAriaTest(FILE_PATH_LITERAL("aria-illegal-val.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaImg) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaImg) {
   RunAriaTest(FILE_PATH_LITERAL("aria-img.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaInsertionDeletion) {
   RunAriaTest(FILE_PATH_LITERAL("aria-insertion-deletion.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaInvalid) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaInvalid) {
   RunAriaTest(FILE_PATH_LITERAL("aria-invalid.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaKeyShortcuts) {
   RunAriaTest(FILE_PATH_LITERAL("aria-keyshortcuts.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaLabel) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaLabel) {
   RunAriaTest(FILE_PATH_LITERAL("aria-label.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaLabelledByHeading) {
   RunAriaTest(FILE_PATH_LITERAL("aria-labelledby-heading.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaLabelledByUpdates) {
   RunAriaTest(FILE_PATH_LITERAL("aria-labelledby-updates.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaLevel) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaLevel) {
   RunAriaTest(FILE_PATH_LITERAL("aria-level.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaLink) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaLink) {
   RunAriaTest(FILE_PATH_LITERAL("aria-link.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaList) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaList) {
   RunAriaTest(FILE_PATH_LITERAL("aria-list.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaListBox) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaListBox) {
   RunAriaTest(FILE_PATH_LITERAL("aria-listbox.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaListBoxActiveDescendant) {
   RunAriaTest(FILE_PATH_LITERAL("aria-listbox-activedescendant.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaListBoxAriaSelected) {
   RunAriaTest(FILE_PATH_LITERAL("aria-listbox-aria-selected.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaListBoxChildFocus) {
   RunAriaTest(FILE_PATH_LITERAL("aria-listbox-childfocus.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaListItem) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaListItem) {
   RunAriaTest(FILE_PATH_LITERAL("aria-listitem.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaLive) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaLive) {
   RunAriaTest(FILE_PATH_LITERAL("aria-live.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaLiveNested) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaLiveNested) {
   RunAriaTest(FILE_PATH_LITERAL("aria-live-nested.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaLiveWithContent) {
   RunAriaTest(FILE_PATH_LITERAL("aria-live-with-content.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaLog) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaLog) {
   RunAriaTest(FILE_PATH_LITERAL("aria-log.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaMain) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaMain) {
   RunAriaTest(FILE_PATH_LITERAL("aria-main.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaMarquee) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaMarquee) {
   RunAriaTest(FILE_PATH_LITERAL("aria-marquee.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaMenu) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaMenu) {
   RunAriaTest(FILE_PATH_LITERAL("aria-menu.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaMenuBar) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaMenuBar) {
   RunAriaTest(FILE_PATH_LITERAL("aria-menubar.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaMenuItem) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaMenuItem) {
   RunAriaTest(FILE_PATH_LITERAL("aria-menuitem.html"));
 }
 
 // crbug.com/442278 will stop creating new text elements representing title.
 // Re-baseline after the Blink change goes in
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaMenuItemCheckBox) {
   RunAriaTest(FILE_PATH_LITERAL("aria-menuitemcheckbox.html"));
 }
 
 // crbug.com/442278 will stop creating new text elements representing title.
 // Re-baseline after the Blink change goes in
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaMenuItemRadio) {
   RunAriaTest(FILE_PATH_LITERAL("aria-menuitemradio.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaMismatchedTableAttr) {
   RunHtmlTest(FILE_PATH_LITERAL("aria-mismatched-table-attr.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaModal) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaModal) {
   RunAriaTest(FILE_PATH_LITERAL("aria-modal.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaMultiline) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaMultiline) {
   RunAriaTest(FILE_PATH_LITERAL("aria-multiline.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaMultiselectable) {
   RunAriaTest(FILE_PATH_LITERAL("aria-multiselectable.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaNavigation) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaNavigation) {
   RunAriaTest(FILE_PATH_LITERAL("aria-navigation.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaNote) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaNote) {
   RunAriaTest(FILE_PATH_LITERAL("aria-note.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaOrientation) {
   RunAriaTest(FILE_PATH_LITERAL("aria-orientation.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaOwns) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaOwns) {
   RunAriaTest(FILE_PATH_LITERAL("aria-owns.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaOwnsList) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaOwnsList) {
   RunAriaTest(FILE_PATH_LITERAL("aria-owns-list.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaMath) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaMath) {
   RunAriaTest(FILE_PATH_LITERAL("aria-math.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaNone) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaNone) {
   RunAriaTest(FILE_PATH_LITERAL("aria-none.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaOption) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaOption) {
   RunAriaTest(FILE_PATH_LITERAL("aria-option.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaParagraph) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaParagraph) {
   RunAriaTest(FILE_PATH_LITERAL("aria-paragraph.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaPosinset) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaPosinset) {
   RunAriaTest(FILE_PATH_LITERAL("aria-posinset.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaArticlePosInSetSetSize) {
   RunAriaTest(FILE_PATH_LITERAL("aria-article-posinset-setsize.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaPresentation) {
   RunAriaTest(FILE_PATH_LITERAL("aria-presentation.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaPressed) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaPressed) {
   RunAriaTest(FILE_PATH_LITERAL("aria-pressed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaProgressbar) {
   RunAriaTest(FILE_PATH_LITERAL("aria-progressbar.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaRadio) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaRadio) {
   RunAriaTest(FILE_PATH_LITERAL("aria-radio.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaRadiogroup) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaRadiogroup) {
   RunAriaTest(FILE_PATH_LITERAL("aria-radiogroup.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaReadonly) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaReadonly) {
   RunAriaTest(FILE_PATH_LITERAL("aria-readonly.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaRegion) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaRegion) {
   RunAriaTest(FILE_PATH_LITERAL("aria-region.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaRelevant) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaRelevant) {
   RunAriaTest(FILE_PATH_LITERAL("aria-relevant.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaRequired) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaRequired) {
   RunAriaTest(FILE_PATH_LITERAL("aria-required.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaRoleDescription) {
   RunAriaTest(FILE_PATH_LITERAL("aria-roledescription.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaRow) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaRow) {
   RunAriaTest(FILE_PATH_LITERAL("aria-row.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaRowAttr) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaRowAttr) {
   RunAriaTest(FILE_PATH_LITERAL("aria-row-attr.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaRowGroup) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaRowGroup) {
   RunAriaTest(FILE_PATH_LITERAL("aria-rowgroup.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaRowHeader) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaRowHeader) {
   RunAriaTest(FILE_PATH_LITERAL("aria-rowheader.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaRowText) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaRowText) {
   RunAriaTest(FILE_PATH_LITERAL("aria-rowtext.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaScrollbar) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaScrollbar) {
   RunAriaTest(FILE_PATH_LITERAL("aria-scrollbar.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaSearch) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaSearch) {
   RunAriaTest(FILE_PATH_LITERAL("aria-search.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaSearchbox) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaSearchbox) {
   RunAriaTest(FILE_PATH_LITERAL("aria-searchbox.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        DISABLED_AccessibilityAriaSearchboxWithSelection) {
   RunAriaTest(FILE_PATH_LITERAL("aria-searchbox-with-selection.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaSelected) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaSelected) {
   RunAriaTest(FILE_PATH_LITERAL("aria-selected.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaSeparator) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaSeparator) {
   RunAriaTest(FILE_PATH_LITERAL("aria-separator.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaSetsize) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaSetsize) {
   RunAriaTest(FILE_PATH_LITERAL("aria-setsize.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaSetCountsWithHiddenItems) {
   RunAriaTest(FILE_PATH_LITERAL("aria-set-counts-with-hidden-items.html"));
 }
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaSlider) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaSlider) {
   RunAriaTest(FILE_PATH_LITERAL("aria-slider.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaSortOnAriaGrid) {
   RunAriaTest(FILE_PATH_LITERAL("aria-sort-aria-grid.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaSetCountsWithTreeLevels) {
   RunAriaTest(FILE_PATH_LITERAL("aria-set-counts-with-tree-levels.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaSortOnHtmlTable) {
   RunAriaTest(FILE_PATH_LITERAL("aria-sort-html-table.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaSpinButton) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaSpinButton) {
   RunAriaTest(FILE_PATH_LITERAL("aria-spinbutton.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaStatus) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaStatus) {
   RunAriaTest(FILE_PATH_LITERAL("aria-status.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaSwitch) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaSwitch) {
   RunAriaTest(FILE_PATH_LITERAL("aria-switch.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaTab) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaTab) {
   RunAriaTest(FILE_PATH_LITERAL("aria-tab.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaTable) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaTable) {
   RunAriaTest(FILE_PATH_LITERAL("aria-table.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaTabList) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaTabList) {
   RunAriaTest(FILE_PATH_LITERAL("aria-tablist.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaTabPanel) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaTabPanel) {
   RunAriaTest(FILE_PATH_LITERAL("aria-tabpanel.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaTerm) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaTerm) {
   RunAriaTest(FILE_PATH_LITERAL("aria-term.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaTextbox) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaTextbox) {
   RunAriaTest(FILE_PATH_LITERAL("aria-textbox.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaTextboxWithRichText) {
   RunAriaTest(FILE_PATH_LITERAL("aria-textbox-with-rich-text.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        DISABLED_AccessibilityAriaTextboxWithSelection) {
   RunAriaTest(FILE_PATH_LITERAL("aria-textbox-with-selection.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaTimer) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaTimer) {
   RunAriaTest(FILE_PATH_LITERAL("aria-timer.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaToggleButton) {
   RunAriaTest(FILE_PATH_LITERAL("aria-togglebutton.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaToolbar) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaToolbar) {
   RunAriaTest(FILE_PATH_LITERAL("aria-toolbar.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaTooltip) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaTooltip) {
   RunAriaTest(FILE_PATH_LITERAL("aria-tooltip.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaTree) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaTree) {
   RunAriaTest(FILE_PATH_LITERAL("aria-tree.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaTreeGrid) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaTreeGrid) {
   RunAriaTest(FILE_PATH_LITERAL("aria-treegrid.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaUndefined) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaUndefined) {
   RunAriaTest(FILE_PATH_LITERAL("aria-undefined.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaUndefinedLiteral) {
   RunAriaTest(FILE_PATH_LITERAL("aria-undefined-literal.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaEmptyString) {
   RunAriaTest(FILE_PATH_LITERAL("aria-empty-string.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaValueMin) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaValueMin) {
   RunAriaTest(FILE_PATH_LITERAL("aria-valuemin.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaValueMax) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaValueMax) {
   RunAriaTest(FILE_PATH_LITERAL("aria-valuemax.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaValueNow) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaValueNow) {
   RunAriaTest(FILE_PATH_LITERAL("aria-valuenow.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAriaValueText) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaValueText) {
   RunAriaTest(FILE_PATH_LITERAL("aria-valuetext.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityInputTextARIAPlaceholder) {
   RunAriaTest(FILE_PATH_LITERAL("input-text-aria-placeholder.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityTableColumnHidden) {
   RunAriaTest(FILE_PATH_LITERAL("table-column-hidden.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityLabelWithSelectedAriaOption) {
   RunAriaTest(FILE_PATH_LITERAL("label-with-selected-option.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityArticle) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityArticle) {
   RunHtmlTest(FILE_PATH_LITERAL("article.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAside) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAside) {
   RunHtmlTest(FILE_PATH_LITERAL("aside.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAudio) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAudio) {
   // https://crbug.com/923993
   // Super flaky with NetworkService.
   if (!base::FeatureList::IsEnabled(network::features::kNetworkService))
     RunHtmlTest(FILE_PATH_LITERAL("audio.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityAWithImg) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAWithImg) {
   RunHtmlTest(FILE_PATH_LITERAL("a-with-img.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityB) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityB) {
   RunHtmlTest(FILE_PATH_LITERAL("b.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityBase) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityBase) {
   RunHtmlTest(FILE_PATH_LITERAL("base.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityBdo) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityBdo) {
   RunHtmlTest(FILE_PATH_LITERAL("bdo.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityBlockquote) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityBlockquote) {
   RunHtmlTest(FILE_PATH_LITERAL("blockquote.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityBlockquoteLevels) {
   RunHtmlTest(FILE_PATH_LITERAL("blockquote-levels.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityBody) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityBody) {
   RunHtmlTest(FILE_PATH_LITERAL("body.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityBodyTabIndex) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityBodyTabIndex) {
   RunHtmlTest(FILE_PATH_LITERAL("body-tabindex.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityBoundsInherits) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityBoundsInherits) {
   RunHtmlTest(FILE_PATH_LITERAL("bounds-inherits.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityBoundsClips) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityBoundsClips) {
   RunHtmlTest(FILE_PATH_LITERAL("bounds-clips.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityBoundsAbsolute) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityBoundsAbsolute) {
   RunHtmlTest(FILE_PATH_LITERAL("bounds-absolute.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessiblitiyBoundsFixed) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessiblitiyBoundsFixed) {
   RunHtmlTest(FILE_PATH_LITERAL("bounds-fixed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityBR) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityBR) {
   RunHtmlTest(FILE_PATH_LITERAL("br.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityButton) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityButton) {
   RunHtmlTest(FILE_PATH_LITERAL("button.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityButtonSubmit) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityButtonSubmit) {
   RunHtmlTest(FILE_PATH_LITERAL("button-submit.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityButtonAltChanged) {
   RunHtmlTest(FILE_PATH_LITERAL("button-alt-changed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityButtonContentChanged) {
   RunHtmlTest(FILE_PATH_LITERAL("button-content-changed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityButtonNameCalc) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityButtonNameCalc) {
   RunHtmlTest(FILE_PATH_LITERAL("button-name-calc.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityCanvas) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityCanvas) {
   RunHtmlTest(FILE_PATH_LITERAL("canvas.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityCaption) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityCaption) {
   RunHtmlTest(FILE_PATH_LITERAL("caption.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityCharacterLocations) {
   RunHtmlTest(FILE_PATH_LITERAL("character-locations.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityCheckboxNameCalc) {
   RunHtmlTest(FILE_PATH_LITERAL("checkbox-name-calc.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityCite) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityCite) {
   RunHtmlTest(FILE_PATH_LITERAL("cite.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityCode) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityCode) {
   RunHtmlTest(FILE_PATH_LITERAL("code.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityCol) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityCol) {
   RunHtmlTest(FILE_PATH_LITERAL("col.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityColgroup) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityColgroup) {
   RunHtmlTest(FILE_PATH_LITERAL("colgroup.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityDd) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityDd) {
   RunHtmlTest(FILE_PATH_LITERAL("dd.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityDel) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityDel) {
   RunHtmlTest(FILE_PATH_LITERAL("del.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityDetails) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityDetails) {
   RunHtmlTest(FILE_PATH_LITERAL("details.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityDfn) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityDfn) {
   RunHtmlTest(FILE_PATH_LITERAL("dfn.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityDialog) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityDialog) {
   RunHtmlTest(FILE_PATH_LITERAL("dialog.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityDisabled) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityDisabled) {
   RunHtmlTest(FILE_PATH_LITERAL("disabled.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityDiv) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityDiv) {
   RunHtmlTest(FILE_PATH_LITERAL("div.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityDl) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityDl) {
   RunHtmlTest(FILE_PATH_LITERAL("dl.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityDt) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityDt) {
   RunHtmlTest(FILE_PATH_LITERAL("dt.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityDpubRoles) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityDpubRoles) {
   RunAriaTest(FILE_PATH_LITERAL("dpub-roles.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityGraphicsRoles) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityGraphicsRoles) {
   RunAriaTest(FILE_PATH_LITERAL("graphics-roles.html"));
 }
 
@@ -1134,12 +1150,12 @@
 #define MAYBE_AccessibilityContenteditableDescendants \
   AccessibilityContenteditableDescendants
 #endif
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        MAYBE_AccessibilityContenteditableDescendants) {
   RunHtmlTest(FILE_PATH_LITERAL("contenteditable-descendants.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityElementClassIdSrcAttr) {
   RunHtmlTest(FILE_PATH_LITERAL("element-class-id-src-attr.html"));
 }
@@ -1153,7 +1169,7 @@
 #define MAYBE_AccessibilityContenteditableDescendantsWithSelection \
   AccessibilityContenteditableDescendantsWithSelection
 #endif
-IN_PROC_BROWSER_TEST_F(
+IN_PROC_BROWSER_TEST_P(
     DumpAccessibilityTreeTest,
     MAYBE_AccessibilityContenteditableDescendantsWithSelection) {
   RunHtmlTest(
@@ -1168,575 +1184,575 @@
 #define MAYBE_AccessibilityContenteditableWithEmbeddedContenteditables \
   AccessibilityContenteditableWithEmbeddedContenteditables
 #endif
-IN_PROC_BROWSER_TEST_F(
+IN_PROC_BROWSER_TEST_P(
     DumpAccessibilityTreeTest,
     MAYBE_AccessibilityContenteditableWithEmbeddedContenteditables) {
   RunHtmlTest(
       FILE_PATH_LITERAL("contenteditable-with-embedded-contenteditables.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityContenteditableWithNoDescendants) {
   RunHtmlTest(FILE_PATH_LITERAL("contenteditable-with-no-descendants.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityEm) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityEm) {
   RunHtmlTest(FILE_PATH_LITERAL("em.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityEmbed) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityEmbed) {
   RunHtmlTest(FILE_PATH_LITERAL("embed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityFieldset) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityFieldset) {
   RunHtmlTest(FILE_PATH_LITERAL("fieldset.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityFigcaption) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityFigcaption) {
   RunHtmlTest(FILE_PATH_LITERAL("figcaption.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityFigure) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityFigure) {
   RunHtmlTest(FILE_PATH_LITERAL("figure.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityFooter) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityFooter) {
   RunHtmlTest(FILE_PATH_LITERAL("footer.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityFooterInsideOtherSection) {
   RunHtmlTest(FILE_PATH_LITERAL("footer-inside-other-section.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityForm) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityForm) {
   RunHtmlTest(FILE_PATH_LITERAL("form.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityFormValidationMessage) {
   RunHtmlTest(FILE_PATH_LITERAL("form-validation-message.html"));
 }
 
 // https://crbug.com/944519
-IN_PROC_BROWSER_TEST_F(
+IN_PROC_BROWSER_TEST_P(
     DumpAccessibilityTreeTest,
     DISABLED_AccessibilityFormValidationMessageRemovedAfterErrorCorrected) {
   RunHtmlTest(FILE_PATH_LITERAL(
       "form-validation-message-removed-after-error-corrected.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityFormValidationMessageAfterHideTimeout) {
   RunHtmlTest(
       FILE_PATH_LITERAL("form-validation-message-after-hide-timeout.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityFrameset) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityFrameset) {
   RunHtmlTest(FILE_PATH_LITERAL("frameset.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityFramesetPostEnable) {
   enable_accessibility_after_navigating_ = true;
   RunHtmlTest(FILE_PATH_LITERAL("frameset.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityHead) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityHead) {
   RunHtmlTest(FILE_PATH_LITERAL("head.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityHeader) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityHeader) {
   RunHtmlTest(FILE_PATH_LITERAL("header.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityHeaderInsideOtherSection) {
   RunHtmlTest(FILE_PATH_LITERAL("header-inside-other-section.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityHeading) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityHeading) {
   RunHtmlTest(FILE_PATH_LITERAL("heading.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityHR) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityHR) {
   RunHtmlTest(FILE_PATH_LITERAL("hr.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityHTML) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityHTML) {
   RunHtmlTest(FILE_PATH_LITERAL("html.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityI) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityI) {
   RunHtmlTest(FILE_PATH_LITERAL("i.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityIframe) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityIframe) {
   RunHtmlTest(FILE_PATH_LITERAL("iframe.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityIframePostEnable) {
   enable_accessibility_after_navigating_ = true;
   RunHtmlTest(FILE_PATH_LITERAL("iframe.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityIframeCrossProcess) {
   RunHtmlTest(FILE_PATH_LITERAL("iframe-cross-process.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityIframeCoordinates) {
   RunHtmlTest(FILE_PATH_LITERAL("iframe-coordinates.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityIframeCoordinatesCrossProcess) {
   RunHtmlTest(FILE_PATH_LITERAL("iframe-coordinates-cross-process.html"));
 }
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityIframePadding) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityIframePadding) {
   RunHtmlTest(FILE_PATH_LITERAL("iframe-padding.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityIframePresentational) {
   RunHtmlTest(FILE_PATH_LITERAL("iframe-presentational.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityIframeTransform) {
   RunHtmlTest(FILE_PATH_LITERAL("iframe-transform.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityIframeTransformCrossProcess) {
   RunHtmlTest(FILE_PATH_LITERAL("iframe-transform-cross-process.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityIframeTransformNested) {
   RunHtmlTest(FILE_PATH_LITERAL("iframe-transform-nested.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityIframeTransformNestedCrossProcess) {
   RunHtmlTest(FILE_PATH_LITERAL("iframe-transform-nested-cross-process.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityIframeTransformScrolled) {
   RunHtmlTest(FILE_PATH_LITERAL("iframe-transform-scrolled.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityImg) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityImg) {
   RunHtmlTest(FILE_PATH_LITERAL("img.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityImgEmptyAlt) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityImgEmptyAlt) {
   RunHtmlTest(FILE_PATH_LITERAL("img-empty-alt.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityImgLinkEmptyAlt) {
   RunHtmlTest(FILE_PATH_LITERAL("img-link-empty-alt.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInPageLinks) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInPageLinks) {
   RunHtmlTest(FILE_PATH_LITERAL("in-page-links.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputButton) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputButton) {
   RunHtmlTest(FILE_PATH_LITERAL("input-button.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityInputButtonInMenu) {
   RunHtmlTest(FILE_PATH_LITERAL("input-button-in-menu.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputCheckBox) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputCheckBox) {
   RunHtmlTest(FILE_PATH_LITERAL("input-checkbox.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityInputCheckBoxInMenu) {
   RunHtmlTest(FILE_PATH_LITERAL("input-checkbox-in-menu.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityInputCheckBoxLabel) {
   RunHtmlTest(FILE_PATH_LITERAL("input-checkbox-label.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputColor) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputColor) {
   RunHtmlTest(FILE_PATH_LITERAL("input-color.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputDate) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputDate) {
   RunHtmlTest(FILE_PATH_LITERAL("input-date.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputDateTime) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputDateTime) {
   RunHtmlTest(FILE_PATH_LITERAL("input-datetime.html"));
 }
 
 // Fails on OS X 10.9 and higher <https://crbug.com/430622>.
 #if !defined(OS_MACOSX)
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityInputDateTimeLocal) {
   RunHtmlTest(FILE_PATH_LITERAL("input-datetime-local.html"));
 }
 #endif
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputEmail) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputEmail) {
   RunHtmlTest(FILE_PATH_LITERAL("input-email.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputFile) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputFile) {
   RunHtmlTest(FILE_PATH_LITERAL("input-file.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputHidden) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputHidden) {
   RunHtmlTest(FILE_PATH_LITERAL("input-hidden.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputImage) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputImage) {
   RunHtmlTest(FILE_PATH_LITERAL("input-image.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityInputImageButtonInMenu) {
   RunHtmlTest(FILE_PATH_LITERAL("input-image-button-in-menu.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputList) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputList) {
   RunHtmlTest(FILE_PATH_LITERAL("input-list.html"));
 }
 
 // crbug.com/423675 - AX tree is different for Win7 and Win8.
 #if defined(OS_WIN)
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        DISABLED_AccessibilityInputMonth) {
   RunHtmlTest(FILE_PATH_LITERAL("input-month.html"));
 }
 #else
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputMonth) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputMonth) {
   RunHtmlTest(FILE_PATH_LITERAL("input-month.html"));
 }
 #endif
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputNumber) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputNumber) {
   RunHtmlTest(FILE_PATH_LITERAL("input-number.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputPassword) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputPassword) {
   RunHtmlTest(FILE_PATH_LITERAL("input-password.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputRadio) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputRadio) {
   RunHtmlTest(FILE_PATH_LITERAL("input-radio.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityInputRadioInMenu) {
   RunHtmlTest(FILE_PATH_LITERAL("input-radio-in-menu.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputRange) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputRange) {
   RunHtmlTest(FILE_PATH_LITERAL("input-range.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputReset) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputReset) {
   RunHtmlTest(FILE_PATH_LITERAL("input-reset.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputSearch) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputSearch) {
   RunHtmlTest(FILE_PATH_LITERAL("input-search.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityScrollableInput) {
   RunHtmlTest(FILE_PATH_LITERAL("scrollable-input.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityScrollableOverflow) {
   RunHtmlTest(FILE_PATH_LITERAL("scrollable-overflow.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityScrollableTextarea) {
   RunHtmlTest(FILE_PATH_LITERAL("scrollable-textarea.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilitySmall) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilitySmall) {
   RunHtmlTest(FILE_PATH_LITERAL("small.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputSubmit) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputSubmit) {
   RunHtmlTest(FILE_PATH_LITERAL("input-submit.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityInputSuggestionsSourceElement) {
   RunHtmlTest(FILE_PATH_LITERAL("input-suggestions-source-element.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputTel) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputTel) {
   RunHtmlTest(FILE_PATH_LITERAL("input-tel.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputText) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputText) {
   RunHtmlTest(FILE_PATH_LITERAL("input-text.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityInputTextReadOnly) {
   RunHtmlTest(FILE_PATH_LITERAL("input-text-read-only.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityInputTextNameCalc) {
   RunHtmlTest(FILE_PATH_LITERAL("input-text-name-calc.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputTextValue) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputTextValue) {
   RunHtmlTest(FILE_PATH_LITERAL("input-text-value.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityInputTextValueChanged) {
   RunHtmlTest(FILE_PATH_LITERAL("input-text-value-changed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityInputTextWithSelection) {
   RunHtmlTest(FILE_PATH_LITERAL("input-text-with-selection.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputTime) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputTime) {
   RunHtmlTest(FILE_PATH_LITERAL("input-time.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputTypes) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputTypes) {
   RunHtmlTest(FILE_PATH_LITERAL("input-types.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputUrl) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputUrl) {
   RunHtmlTest(FILE_PATH_LITERAL("input-url.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityInputWeek) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityInputWeek) {
   RunHtmlTest(FILE_PATH_LITERAL("input-week.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityId) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityId) {
   RunHtmlTest(FILE_PATH_LITERAL("id.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityIns) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityIns) {
   RunHtmlTest(FILE_PATH_LITERAL("ins.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityLabel) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityLabel) {
   RunHtmlTest(FILE_PATH_LITERAL("label.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityLabelUpdates) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityLabelUpdates) {
   RunHtmlTest(FILE_PATH_LITERAL("label-updates.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityLandmark) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityLandmark) {
   RunHtmlTest(FILE_PATH_LITERAL("landmark.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityLayoutTableInButton) {
   RunHtmlTest(FILE_PATH_LITERAL("layout-table-in-button.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityLegend) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityLegend) {
   RunHtmlTest(FILE_PATH_LITERAL("legend.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityLi) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityLi) {
   RunHtmlTest(FILE_PATH_LITERAL("li.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityLink) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityLink) {
   RunHtmlTest(FILE_PATH_LITERAL("link.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityLinkInsideHeading) {
   RunHtmlTest(FILE_PATH_LITERAL("link-inside-heading.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityList) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityList) {
   RunHtmlTest(FILE_PATH_LITERAL("list.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityListMarkers) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityListMarkers) {
   RunHtmlTest(FILE_PATH_LITERAL("list-markers.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityLongText) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityLongText) {
   RunHtmlTest(FILE_PATH_LITERAL("long-text.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityMain) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityMain) {
   RunHtmlTest(FILE_PATH_LITERAL("main.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityMark) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityMark) {
   RunHtmlTest(FILE_PATH_LITERAL("mark.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityMath) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityMath) {
   RunHtmlTest(FILE_PATH_LITERAL("math.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityMenutypecontext) {
   RunHtmlTest(FILE_PATH_LITERAL("menu-type-context.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityMeta) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityMeta) {
   RunHtmlTest(FILE_PATH_LITERAL("meta.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityMeter) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityMeter) {
   RunHtmlTest(FILE_PATH_LITERAL("meter.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityModalDialogClosed) {
   RunHtmlTest(FILE_PATH_LITERAL("modal-dialog-closed.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityModalDialogOpened) {
   RunHtmlTest(FILE_PATH_LITERAL("modal-dialog-opened.html"));
 }
 
 // http://crbug.com/738497
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        DISABLED_AccessibilityModalDialogInIframeClosed) {
   RunHtmlTest(FILE_PATH_LITERAL("modal-dialog-in-iframe-closed.html"));
 }
 
 // Disabled because it is flaky in several platforms
 /*
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityModalDialogInIframeOpened) {
   RunHtmlTest(FILE_PATH_LITERAL("modal-dialog-in-iframe-opened.html"));
 }
 */
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityModalDialogStack) {
   RunHtmlTest(FILE_PATH_LITERAL("modal-dialog-stack.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityNavigation) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityNavigation) {
   RunHtmlTest(FILE_PATH_LITERAL("navigation.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityNoscript) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityNoscript) {
   RunHtmlTest(FILE_PATH_LITERAL("noscript.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityOl) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityOl) {
   RunHtmlTest(FILE_PATH_LITERAL("ol.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityObject) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityObject) {
   RunHtmlTest(FILE_PATH_LITERAL("object.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityOffscreen) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityOffscreen) {
   RunHtmlTest(FILE_PATH_LITERAL("offscreen.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityOffscreenIframe) {
   RunHtmlTest(FILE_PATH_LITERAL("offscreen-iframe.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityOffscreenScroll) {
   RunHtmlTest(FILE_PATH_LITERAL("offscreen-scroll.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityOffscreenSelect) {
   RunHtmlTest(FILE_PATH_LITERAL("offscreen-select.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityOptgroup) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityOptgroup) {
   RunHtmlTest(FILE_PATH_LITERAL("optgroup.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityOptionindatalist) {
   RunHtmlTest(FILE_PATH_LITERAL("option-in-datalist.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        DISABLED_AccessibilityOutput) {
   RunHtmlTest(FILE_PATH_LITERAL("output.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityP) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityP) {
   RunHtmlTest(FILE_PATH_LITERAL("p.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityParam) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityParam) {
   RunHtmlTest(FILE_PATH_LITERAL("param.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityPre) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityPre) {
   RunHtmlTest(FILE_PATH_LITERAL("pre.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityProgress) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityProgress) {
   RunHtmlTest(FILE_PATH_LITERAL("progress.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityQ) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityQ) {
   RunHtmlTest(FILE_PATH_LITERAL("q.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityReparentCrash) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityReparentCrash) {
   RunHtmlTest(FILE_PATH_LITERAL("reparent-crash.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityReplaceData) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityReplaceData) {
   RunHtmlTest(FILE_PATH_LITERAL("replace-data.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityRuby) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityRuby) {
   RunHtmlTest(FILE_PATH_LITERAL("ruby.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityS) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityS) {
   RunHtmlTest(FILE_PATH_LITERAL("s.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilitySamp) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilitySamp) {
   RunHtmlTest(FILE_PATH_LITERAL("samp.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityScript) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityScript) {
   RunHtmlTest(FILE_PATH_LITERAL("script.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilitySection) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilitySection) {
   RunHtmlTest(FILE_PATH_LITERAL("section.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilitySelect) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilitySelect) {
   RunHtmlTest(FILE_PATH_LITERAL("select.html"));
 }
 
@@ -1745,117 +1761,117 @@
 #else
 #define MAYBE_AccessibilitySource AccessibilitySource
 #endif
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, MAYBE_AccessibilitySource) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, MAYBE_AccessibilitySource) {
   RunHtmlTest(FILE_PATH_LITERAL("source.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilitySpan) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilitySpan) {
   RunHtmlTest(FILE_PATH_LITERAL("span.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilitySpanLineBreak) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilitySpanLineBreak) {
   RunHtmlTest(FILE_PATH_LITERAL("span-line-break.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityStrong) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityStrong) {
   RunHtmlTest(FILE_PATH_LITERAL("strong.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityStyle) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityStyle) {
   RunHtmlTest(FILE_PATH_LITERAL("style.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilitySub) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilitySub) {
   RunHtmlTest(FILE_PATH_LITERAL("sub.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilitySup) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilitySup) {
   RunHtmlTest(FILE_PATH_LITERAL("sup.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilitySummary) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilitySummary) {
   RunHtmlTest(FILE_PATH_LITERAL("summary.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilitySvg) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilitySvg) {
   RunHtmlTest(FILE_PATH_LITERAL("svg.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityTableSimple) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityTableSimple) {
   RunHtmlTest(FILE_PATH_LITERAL("table-simple.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityTableLayout) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityTableLayout) {
   RunHtmlTest(FILE_PATH_LITERAL("table-layout.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityTablePresentation) {
   RunHtmlTest(FILE_PATH_LITERAL("table-presentation.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityTableThColHeader) {
   RunHtmlTest(FILE_PATH_LITERAL("table-th-colheader.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityTableThRowHeader) {
   RunHtmlTest(FILE_PATH_LITERAL("table-th-rowheader.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityTableTbodyTfoot) {
   RunHtmlTest(FILE_PATH_LITERAL("table-thead-tbody-tfoot.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityTableFocusableSections) {
   RunHtmlTest(FILE_PATH_LITERAL("table-focusable-sections.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityTableSpans) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityTableSpans) {
   RunHtmlTest(FILE_PATH_LITERAL("table-spans.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityTableHeadersEmptyFirstCell) {
   RunHtmlTest(FILE_PATH_LITERAL("table-headers-empty-first-cell.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityTableHeadersOnAllSides) {
   RunHtmlTest(FILE_PATH_LITERAL("table-headers-on-all-sides.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityTableMultipleRowAndColumnHeaders) {
   RunHtmlTest(FILE_PATH_LITERAL("table-multiple-row-and-column-headers.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityTextarea) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityTextarea) {
   RunHtmlTest(FILE_PATH_LITERAL("textarea.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityTextareaReadOnly) {
   RunHtmlTest(FILE_PATH_LITERAL("textarea-read-only.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityTextareaWithSelection) {
   RunHtmlTest(FILE_PATH_LITERAL("textarea-with-selection.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityTime) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityTime) {
   RunHtmlTest(FILE_PATH_LITERAL("time.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityTitle) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityTitle) {
   RunHtmlTest(FILE_PATH_LITERAL("title.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityTitleChanged) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityTitleChanged) {
   RunHtmlTest(FILE_PATH_LITERAL("title-changed.html"));
 }
 
@@ -1865,70 +1881,70 @@
 #else
 #define MAYBE_AccessibilityTransition AccessibilityTransition
 #endif
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        MAYBE_AccessibilityTransition) {
   RunHtmlTest(FILE_PATH_LITERAL("transition.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityTruncateLabel) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityTruncateLabel) {
   RunHtmlTest(FILE_PATH_LITERAL("truncate-label.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityUl) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityUl) {
   RunHtmlTest(FILE_PATH_LITERAL("ul.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityVar) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityVar) {
   RunHtmlTest(FILE_PATH_LITERAL("var.html"));
 }
 
 // crbug.com/281952
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, DISABLED_AccessibilityVideo) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, DISABLED_AccessibilityVideo) {
   RunHtmlTest(FILE_PATH_LITERAL("video.html"));
 }
 
 // TODO(crbug.com/916003): Fix race condition.
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        DISABLED_AccessibilityNoSourceVideo) {
   RunHtmlTest(FILE_PATH_LITERAL("no-source-video.html"));
 }
 
 // TODO(crbug.com/916003): Fix race condition.
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        DISABLED_AccessibilityVideoControls) {
   RunHtmlTest(FILE_PATH_LITERAL("video-controls.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityWbr) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityWbr) {
   RunHtmlTest(FILE_PATH_LITERAL("wbr.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityWindowCropsItems) {
   RunHtmlTest(FILE_PATH_LITERAL("window-crops-items.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityInputInsideLabel) {
   RunHtmlTest(FILE_PATH_LITERAL("input-inside-label.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityInputImageWithTitle) {
   RunHtmlTest(FILE_PATH_LITERAL("input-image-with-title.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityLabelWithSelectedOption) {
   RunHtmlTest(FILE_PATH_LITERAL("label-with-selected-option.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityLabelWithPresentationalChild) {
   RunHtmlTest(FILE_PATH_LITERAL("label-with-presentational-child.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityNestedList) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityNestedList) {
   RunHtmlTest(FILE_PATH_LITERAL("nestedlist.html"));
 }
 
@@ -1938,26 +1954,26 @@
 // in the past.
 //
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, XmlInIframeCrash) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, XmlInIframeCrash) {
   RunRegressionTest(FILE_PATH_LITERAL("xml-in-iframe-crash.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        LanguageDetectionLangAttribute) {
   RunLanguageDetectionTest(FILE_PATH_LITERAL("lang-attribute.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        LanguageDetectionLangAttributeNested) {
   RunLanguageDetectionTest(FILE_PATH_LITERAL("lang-attribute-nested.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        LanguageDetectionLangAttributeSwitching) {
   RunLanguageDetectionTest(FILE_PATH_LITERAL("lang-attribute-switching.html"));
 }
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        LanguageDetectionLangDetectionBasic) {
   RunLanguageDetectionTest(FILE_PATH_LITERAL("basic.html"));
 }
@@ -1966,7 +1982,7 @@
 // These tests cover features of the testing infrastructure itself.
 //
 
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, DenyNode) {
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, DenyNode) {
   RunTestHarnessTest(FILE_PATH_LITERAL("deny-node.html"));
 }
 
diff --git a/content/browser/indexed_db/indexed_db_factory_impl.cc b/content/browser/indexed_db/indexed_db_factory_impl.cc
index 3673d230..daec254 100644
--- a/content/browser/indexed_db/indexed_db_factory_impl.cc
+++ b/content/browser/indexed_db/indexed_db_factory_impl.cc
@@ -132,24 +132,6 @@
 IndexedDBFactoryImpl::~IndexedDBFactoryImpl() {
 }
 
-void IndexedDBFactoryImpl::RemoveDatabaseFromMaps(
-    const IndexedDBDatabase::Identifier& identifier) {
-  auto it = database_map_.find(identifier);
-  DCHECK(it != database_map_.end());
-  IndexedDBDatabase* database = it->second;
-  database_map_.erase(it);
-
-  std::pair<OriginDBMap::iterator, OriginDBMap::iterator> range =
-      origin_dbs_.equal_range(database->identifier().first);
-  DCHECK(range.first != range.second);
-  for (auto it2 = range.first; it2 != range.second; ++it2) {
-    if (it2->second == database) {
-      origin_dbs_.erase(it2);
-      break;
-    }
-  }
-}
-
 void IndexedDBFactoryImpl::ReleaseDatabase(
     const IndexedDBDatabase::Identifier& identifier,
     bool forced_close) {
@@ -163,252 +145,6 @@
   ReleaseBackingStore(identifier.first, forced_close);
 }
 
-void IndexedDBFactoryImpl::ReleaseBackingStore(const Origin& origin,
-                                               bool immediate) {
-  if (!base::ContainsKey(backing_store_map_, origin))
-    return;
-  if (immediate) {
-    auto it = backing_stores_with_active_blobs_.find(origin);
-    if (it != backing_stores_with_active_blobs_.end()) {
-      it->second->active_blob_registry()->ForceShutdown();
-      backing_stores_with_active_blobs_.erase(it);
-    }
-  }
-
-  // Only close if this is the last reference.
-  if (!HasLastBackingStoreReference(origin))
-    return;
-
-  // If this factory does hold the last reference to the backing store, it can
-  // be closed - but unless requested to close it immediately, keep it around
-  // for a short period so that a re-open is fast.
-  if (immediate) {
-    CloseBackingStore(origin);
-    return;
-  }
-
-  if (base::CommandLine::ForCurrentProcess()->HasSwitch(
-          kIDBCloseImmediatelySwitch)) {
-    MaybeCloseBackingStore(origin);
-    return;
-  }
-
-  // Start a timer to close the backing store, unless something else opens it
-  // in the mean time.
-  DCHECK(!backing_store_map_[origin]->close_timer()->IsRunning());
-  backing_store_map_[origin]->close_timer()->Start(
-      FROM_HERE, base::TimeDelta::FromSeconds(kBackingStoreGracePeriodSeconds),
-      base::BindOnce(&IndexedDBFactoryImpl::MaybeStartPreCloseTasks, this,
-                     origin));
-}
-
-void IndexedDBFactoryImpl::MaybeStartPreCloseTasks(const Origin& origin) {
-  if (!base::ContainsKey(backing_store_map_, origin))
-    return;
-  // Another reference may have been created since the maybe-close was posted,
-  // so it is necessary to check again.
-  if (!HasLastBackingStoreReference(origin))
-    return;
-
-  base::ScopedClosureRunner maybe_close_backing_store_runner(
-      base::BindOnce(&IndexedDBFactoryImpl::MaybeCloseBackingStore,
-                     base::Unretained(this), origin));
-
-  base::Time now = clock_->Now();
-
-  // Check that the last sweep hasn't run too recently.
-  if (earliest_sweep_ > now)
-    return;
-
-  bool tombstone_stats_enabled =
-      base::FeatureList::IsEnabled(kIDBTombstoneStatistics);
-  bool tombstone_deletion_enabled =
-      base::FeatureList::IsEnabled(kIDBTombstoneDeletion);
-
-  // After this check, exactly one of the flags must be true.
-  if (tombstone_stats_enabled == tombstone_deletion_enabled)
-    return;
-
-  scoped_refptr<IndexedDBBackingStore> store = backing_store_map_[origin];
-
-  base::Time origin_earliest_sweep;
-  leveldb::Status s =
-      indexed_db::GetEarliestSweepTime(store->db(), &origin_earliest_sweep);
-  // TODO(dmurph): Log this or report to UMA.
-  if (!s.ok())
-    return;
-
-  // This origin hasn't been swept too recently.
-  if (origin_earliest_sweep > now)
-    return;
-
-  // A sweep will happen now, so reset the sweep timers.
-  earliest_sweep_ = GenerateNextGlobalSweepTime(now);
-  scoped_refptr<LevelDBTransaction> txn =
-      IndexedDBClassFactory::Get()->CreateLevelDBTransaction(store->db());
-  indexed_db::SetEarliestSweepTime(txn.get(), GenerateNextOriginSweepTime(now));
-  s = txn->Commit();
-
-  // TODO(dmurph): Log this or report to UMA.
-  if (!s.ok())
-    return;
-
-  std::list<std::unique_ptr<PreCloseTask>> tasks;
-  IndexedDBTombstoneSweeper::Mode mode =
-      tombstone_stats_enabled ? IndexedDBTombstoneSweeper::Mode::STATISTICS
-                              : IndexedDBTombstoneSweeper::Mode::DELETION;
-  tasks.push_back(std::make_unique<IndexedDBTombstoneSweeper>(
-      mode, kTombstoneSweeperRoundIterations, kTombstoneSweeperMaxIterations,
-      store->db()->db()));
-  // TODO(dmurph): Add compaction task that compacts all indexes if we have
-  // more than X deletions.
-
-  store->SetPreCloseTaskList(std::make_unique<IndexedDBPreCloseTaskQueue>(
-      std::move(tasks), maybe_close_backing_store_runner.Release(),
-      base::TimeDelta::FromSeconds(kPreCloseTasksMaxRunPeriodSeconds),
-      std::make_unique<base::OneShotTimer>()));
-  store->StartPreCloseTasks();
-}
-
-void IndexedDBFactoryImpl::MaybeCloseBackingStore(const Origin& origin) {
-  auto it = backing_store_map_.find(origin);
-  if (it == backing_store_map_.end())
-    return;
-
-  IndexedDBBackingStore* backing_store = it->second.get();
-  backing_store->SetPreCloseTaskList(nullptr);
-  // Another reference may have opened since the maybe-close was posted, so it
-  // is necessary to check again.
-  if (HasLastBackingStoreReference(origin))
-    CloseBackingStore(origin);
-}
-
-void IndexedDBFactoryImpl::CloseBackingStore(const Origin& origin) {
-  auto it = backing_store_map_.find(origin);
-  if (it == backing_store_map_.end())
-    return;
-  // Stop the timer and pre close tasks (if they are running) - this may happen
-  // if the timer was started and then a forced close occurs.
-  IndexedDBBackingStore* backing_store = it->second.get();
-  backing_store->close_timer()->Stop();
-  backing_store->SetPreCloseTaskList(nullptr);
-
-  if (backing_store->IsBlobCleanupPending())
-    backing_store->ForceRunBlobCleanup();
-
-  backing_store_map_.erase(it);
-}
-
-bool IndexedDBFactoryImpl::HasLastBackingStoreReference(
-    const Origin& origin) const {
-  auto it = backing_store_map_.find(origin);
-  if (it == backing_store_map_.end())
-    return false;
-  return it->second->HasOneRef();
-}
-
-leveldb::Status IndexedDBFactoryImpl::AbortTransactions(const Origin& origin) {
-  auto it = backing_store_map_.find(origin);
-  if (it == backing_store_map_.end()) {
-    return leveldb::Status::IOError(
-        "Internal error opening backing store for "
-        "indexedDB.abortTransactions.");
-  }
-  IndexedDBBackingStore* backing_store = it->second.get();
-
-  leveldb::Status get_names_status;
-  IndexedDBMetadataCoding metadata_coding;
-  std::vector<base::string16> db_names;
-  get_names_status = metadata_coding.ReadDatabaseNames(
-      backing_store->db(), backing_store->origin_identifier(), &db_names);
-  if (!get_names_status.ok()) {
-    return leveldb::Status::IOError(
-        "Internal error getting origin database names for "
-        "indexedDB.abortTransactions.");
-  }
-
-  for (base::string16& name : db_names) {
-    const scoped_refptr<IndexedDBDatabase>& db =
-        database_map_[std::make_pair(origin, name)];
-    db->AbortAllTransactionsForConnections();
-  }
-
-  return leveldb::Status::OK();
-}
-
-void IndexedDBFactoryImpl::ForceClose(const Origin& origin,
-                                      bool delete_in_memory_store) {
-  OriginDBs range = GetOpenDatabasesForOrigin(origin);
-
-  while (range.first != range.second) {
-    IndexedDBDatabase* db = range.first->second;
-    ++range.first;
-    db->ForceClose();
-  }
-
-  auto it = backing_store_map_.find(origin);
-  if (it != backing_store_map_.end()) {
-    if (delete_in_memory_store)
-      in_memory_backing_stores_.erase(it->second);
-
-    ReleaseBackingStore(origin, true /* immediate */);
-  }
-}
-
-void IndexedDBFactoryImpl::ForceSchemaDowngrade(const Origin& origin) {
-  auto it = backing_store_map_.find(origin);
-  if (it == backing_store_map_.end())
-    return;
-
-  IndexedDBBackingStore* backing_store = it->second.get();
-  leveldb::Status s = backing_store->RevertSchemaToV2();
-  DLOG_IF(ERROR, !s.ok()) << "Unable to force downgrade: " << s.ToString();
-}
-
-V2SchemaCorruptionStatus IndexedDBFactoryImpl::HasV2SchemaCorruption(
-    const Origin& origin) {
-  auto it = backing_store_map_.find(origin);
-  if (it == backing_store_map_.end())
-    return V2SchemaCorruptionStatus::kUnknown;
-
-  IndexedDBBackingStore* backing_store = it->second.get();
-  return backing_store->HasV2SchemaCorruption();
-}
-
-void IndexedDBFactoryImpl::ContextDestroyed() {
-  // Timers on backing stores hold a reference to this factory. When the
-  // context (which nominally owns this factory) is destroyed during thread
-  // termination the timers must be stopped so that this factory and the
-  // stores can be disposed of.
-  for (const auto& origin_backing_store_pair : backing_store_map_) {
-    origin_backing_store_pair.second->close_timer()->Stop();
-    origin_backing_store_pair.second->SetPreCloseTaskList(nullptr);
-  }
-  backing_store_map_.clear();
-  backing_stores_with_active_blobs_.clear();
-  context_ = nullptr;
-}
-
-void IndexedDBFactoryImpl::ReportOutstandingBlobs(const Origin& origin,
-                                                  bool blobs_outstanding) {
-  if (!context_)
-    return;
-  if (blobs_outstanding) {
-    DCHECK(!backing_stores_with_active_blobs_.count(origin));
-    auto it = backing_store_map_.find(origin);
-    if (it != backing_store_map_.end())
-      backing_stores_with_active_blobs_.insert(*it);
-    else
-      DCHECK(false);
-  } else {
-    auto it = backing_stores_with_active_blobs_.find(origin);
-    if (it != backing_stores_with_active_blobs_.end()) {
-      backing_stores_with_active_blobs_.erase(it);
-      ReleaseBackingStore(origin, false /* immediate */);
-    }
-  }
-}
-
 void IndexedDBFactoryImpl::GetDatabaseInfo(
     scoped_refptr<IndexedDBCallbacks> callbacks,
     const Origin& origin,
@@ -496,6 +232,68 @@
   ReleaseBackingStore(origin, false /* immediate */);
 }
 
+void IndexedDBFactoryImpl::Open(
+    const base::string16& name,
+    std::unique_ptr<IndexedDBPendingConnection> connection,
+    const Origin& origin,
+    const base::FilePath& data_directory) {
+  IDB_TRACE("IndexedDBFactoryImpl::Open");
+  IndexedDBDatabase::Identifier unique_identifier(origin, name);
+  auto it = database_map_.find(unique_identifier);
+  if (it != database_map_.end()) {
+    it->second->OpenConnection(std::move(connection));
+    return;
+  }
+  leveldb::Status s;
+  scoped_refptr<IndexedDBBackingStore> backing_store;
+  bool disk_full;
+  std::tie(backing_store, s, connection->data_loss_info, disk_full) =
+      OpenBackingStore(origin, data_directory);
+  if (!backing_store) {
+    if (disk_full) {
+      connection->callbacks->OnError(IndexedDBDatabaseError(
+          blink::kWebIDBDatabaseExceptionQuotaError,
+          ASCIIToUTF16("Encountered full disk while opening "
+                       "backing store for indexedDB.open.")));
+      return;
+    }
+    IndexedDBDatabaseError error(
+        blink::kWebIDBDatabaseExceptionUnknownError,
+        ASCIIToUTF16("Internal error opening backing store"
+                     " for indexedDB.open."));
+    connection->callbacks->OnError(error);
+    if (s.IsCorruption()) {
+      HandleBackingStoreCorruption(origin, error);
+    }
+    return;
+  }
+
+  scoped_refptr<IndexedDBDatabase> database;
+  std::tie(database, s) = IndexedDBDatabase::Create(
+      name, backing_store.get(), this,
+      std::make_unique<IndexedDBMetadataCoding>(), unique_identifier,
+      backing_store->lock_manager());
+  if (!database.get()) {
+    DLOG(ERROR) << "Unable to create the database";
+    IndexedDBDatabaseError error(blink::kWebIDBDatabaseExceptionUnknownError,
+                                 ASCIIToUTF16("Internal error creating "
+                                              "database backend for "
+                                              "indexedDB.open."));
+    connection->callbacks->OnError(error);
+    if (s.IsCorruption()) {
+      backing_store = nullptr;  // Closes the LevelDB so that it can be deleted
+      HandleBackingStoreCorruption(origin, error);
+    }
+    return;
+  }
+
+  database->OpenConnection(std::move(connection));
+  if (database->ConnectionCount() > 0) {
+    database_map_[unique_identifier] = database.get();
+    origin_dbs_.insert(std::make_pair(origin, database.get()));
+  }
+}
+
 void IndexedDBFactoryImpl::DeleteDatabase(
     const base::string16& name,
     scoped_refptr<IndexedDBCallbacks> callbacks,
@@ -581,21 +379,6 @@
   ReleaseBackingStore(origin, false /* immediate */);
 }
 
-void IndexedDBFactoryImpl::DatabaseDeleted(
-    const IndexedDBDatabase::Identifier& identifier) {
-  // NULL after ContextDestroyed() called, and in some unit tests.
-  if (!context_)
-    return;
-  context_->DatabaseDeleted(identifier.first);
-}
-
-void IndexedDBFactoryImpl::BlobFilesCleaned(const url::Origin& origin) {
-  // NULL after ContextDestroyed() called, and in some unit tests.
-  if (!context_)
-    return;
-  context_->BlobFilesCleaned(origin);
-}
-
 void IndexedDBFactoryImpl::AbortTransactionsAndCompactDatabase(
     base::OnceCallback<void(leveldb::Status)> callback,
     const Origin& origin) {
@@ -663,23 +446,143 @@
       leveldb_env::LEVELDB_STATUS_MAX);
 }
 
-bool IndexedDBFactoryImpl::IsDatabaseOpen(const Origin& origin,
-                                          const base::string16& name) const {
-  return base::ContainsKey(database_map_,
-                           IndexedDBDatabase::Identifier(origin, name));
+std::pair<IndexedDBFactoryImpl::OriginDBMapIterator,
+          IndexedDBFactoryImpl::OriginDBMapIterator>
+IndexedDBFactoryImpl::GetOpenDatabasesForOrigin(const Origin& origin) const {
+  return origin_dbs_.equal_range(origin);
 }
 
-bool IndexedDBFactoryImpl::IsBackingStoreOpen(const Origin& origin) const {
-  return base::ContainsKey(backing_store_map_, origin);
+void IndexedDBFactoryImpl::ForceClose(const Origin& origin,
+                                      bool delete_in_memory_store) {
+  OriginDBs range = GetOpenDatabasesForOrigin(origin);
+
+  while (range.first != range.second) {
+    IndexedDBDatabase* db = range.first->second;
+    ++range.first;
+    db->ForceClose();
+  }
+
+  auto it = backing_store_map_.find(origin);
+  if (it != backing_store_map_.end()) {
+    if (delete_in_memory_store)
+      in_memory_backing_stores_.erase(it->second);
+
+    ReleaseBackingStore(origin, true /* immediate */);
+  }
 }
 
-bool IndexedDBFactoryImpl::IsBackingStorePendingClose(
-    const Origin& origin) const {
+void IndexedDBFactoryImpl::ForceSchemaDowngrade(const Origin& origin) {
   auto it = backing_store_map_.find(origin);
   if (it == backing_store_map_.end())
-    return false;
-  return it->second->close_timer()->IsRunning() ||
-         it->second->pre_close_task_queue();
+    return;
+
+  IndexedDBBackingStore* backing_store = it->second.get();
+  leveldb::Status s = backing_store->RevertSchemaToV2();
+  DLOG_IF(ERROR, !s.ok()) << "Unable to force downgrade: " << s.ToString();
+}
+
+V2SchemaCorruptionStatus IndexedDBFactoryImpl::HasV2SchemaCorruption(
+    const Origin& origin) {
+  auto it = backing_store_map_.find(origin);
+  if (it == backing_store_map_.end())
+    return V2SchemaCorruptionStatus::kUnknown;
+
+  IndexedDBBackingStore* backing_store = it->second.get();
+  return backing_store->HasV2SchemaCorruption();
+}
+
+void IndexedDBFactoryImpl::ContextDestroyed() {
+  // Timers on backing stores hold a reference to this factory. When the
+  // context (which nominally owns this factory) is destroyed during thread
+  // termination the timers must be stopped so that this factory and the
+  // stores can be disposed of.
+  for (const auto& origin_backing_store_pair : backing_store_map_) {
+    origin_backing_store_pair.second->close_timer()->Stop();
+    origin_backing_store_pair.second->SetPreCloseTaskList(nullptr);
+  }
+  backing_store_map_.clear();
+  backing_stores_with_active_blobs_.clear();
+  context_ = nullptr;
+}
+
+void IndexedDBFactoryImpl::ReportOutstandingBlobs(const Origin& origin,
+                                                  bool blobs_outstanding) {
+  if (!context_)
+    return;
+  if (blobs_outstanding) {
+    DCHECK(!backing_stores_with_active_blobs_.count(origin));
+    auto it = backing_store_map_.find(origin);
+    if (it != backing_store_map_.end())
+      backing_stores_with_active_blobs_.insert(*it);
+    else
+      DCHECK(false);
+  } else {
+    auto it = backing_stores_with_active_blobs_.find(origin);
+    if (it != backing_stores_with_active_blobs_.end()) {
+      backing_stores_with_active_blobs_.erase(it);
+      ReleaseBackingStore(origin, false /* immediate */);
+    }
+  }
+}
+
+void IndexedDBFactoryImpl::DatabaseDeleted(
+    const IndexedDBDatabase::Identifier& identifier) {
+  // NULL after ContextDestroyed() called, and in some unit tests.
+  if (!context_)
+    return;
+  context_->DatabaseDeleted(identifier.first);
+}
+
+void IndexedDBFactoryImpl::BlobFilesCleaned(const url::Origin& origin) {
+  // NULL after ContextDestroyed() called, and in some unit tests.
+  if (!context_)
+    return;
+  context_->BlobFilesCleaned(origin);
+}
+
+size_t IndexedDBFactoryImpl::GetConnectionCount(const Origin& origin) const {
+  size_t count(0);
+
+  OriginDBs range = GetOpenDatabasesForOrigin(origin);
+  for (auto it = range.first; it != range.second; ++it)
+    count += it->second->ConnectionCount();
+
+  return count;
+}
+
+void IndexedDBFactoryImpl::NotifyIndexedDBContentChanged(
+    const url::Origin& origin,
+    const base::string16& database_name,
+    const base::string16& object_store_name) {
+  if (!context_)
+    return;
+  context_->NotifyIndexedDBContentChanged(origin, database_name,
+                                          object_store_name);
+}
+
+int64_t IndexedDBFactoryImpl::GetInMemoryDBSize(const Origin& origin) const {
+  auto it = backing_store_map_.find(origin);
+  // Origin won't be present in map if it has been deleted.
+  if (it == backing_store_map_.end())
+    return 0;
+
+  IndexedDBBackingStore* backing_store = it->second.get();
+  int64_t level_db_size = 0;
+  leveldb::Status s =
+      GetDBSizeFromEnv(backing_store->db()->env(), "/", &level_db_size);
+  if (!s.ok())
+    LOG(ERROR) << "Failed to GetDBSizeFromEnv: " << s.ToString();
+
+  return backing_store->GetInMemoryBlobSize() + level_db_size;
+}
+
+base::Time IndexedDBFactoryImpl::GetLastModified(
+    const url::Origin& origin) const {
+  auto it = backing_store_map_.find(origin);
+  if (it == backing_store_map_.end())
+    return base::Time();
+  IndexedDBBackingStore* backing_store = it->second.get();
+  return backing_store->db()->LastModified();
 }
 
 std::tuple<scoped_refptr<IndexedDBBackingStore>,
@@ -760,117 +663,214 @@
       backing_store_mode, this, origin, blob_path, std::move(db), task_runner);
 }
 
-void IndexedDBFactoryImpl::Open(
-    const base::string16& name,
-    std::unique_ptr<IndexedDBPendingConnection> connection,
-    const Origin& origin,
-    const base::FilePath& data_directory) {
-  IDB_TRACE("IndexedDBFactoryImpl::Open");
-  IndexedDBDatabase::Identifier unique_identifier(origin, name);
-  auto it = database_map_.find(unique_identifier);
-  if (it != database_map_.end()) {
-    it->second->OpenConnection(std::move(connection));
+void IndexedDBFactoryImpl::ReleaseBackingStore(const Origin& origin,
+                                               bool immediate) {
+  if (!base::ContainsKey(backing_store_map_, origin))
     return;
+  if (immediate) {
+    auto it = backing_stores_with_active_blobs_.find(origin);
+    if (it != backing_stores_with_active_blobs_.end()) {
+      it->second->active_blob_registry()->ForceShutdown();
+      backing_stores_with_active_blobs_.erase(it);
+    }
   }
-  leveldb::Status s;
-  scoped_refptr<IndexedDBBackingStore> backing_store;
-  bool disk_full;
-  std::tie(backing_store, s, connection->data_loss_info, disk_full) =
-      OpenBackingStore(origin, data_directory);
-  if (!backing_store) {
-    if (disk_full) {
-      connection->callbacks->OnError(IndexedDBDatabaseError(
-          blink::kWebIDBDatabaseExceptionQuotaError,
-          ASCIIToUTF16("Encountered full disk while opening "
-                       "backing store for indexedDB.open.")));
-      return;
-    }
-    IndexedDBDatabaseError error(
-        blink::kWebIDBDatabaseExceptionUnknownError,
-        ASCIIToUTF16("Internal error opening backing store"
-                     " for indexedDB.open."));
-    connection->callbacks->OnError(error);
-    if (s.IsCorruption()) {
-      HandleBackingStoreCorruption(origin, error);
-    }
+
+  // Only close if this is the last reference.
+  if (!HasLastBackingStoreReference(origin))
+    return;
+
+  // If this factory does hold the last reference to the backing store, it can
+  // be closed - but unless requested to close it immediately, keep it around
+  // for a short period so that a re-open is fast.
+  if (immediate) {
+    CloseBackingStore(origin);
     return;
   }
 
-  scoped_refptr<IndexedDBDatabase> database;
-  std::tie(database, s) = IndexedDBDatabase::Create(
-      name, backing_store.get(), this,
-      std::make_unique<IndexedDBMetadataCoding>(), unique_identifier,
-      backing_store->lock_manager());
-  if (!database.get()) {
-    DLOG(ERROR) << "Unable to create the database";
-    IndexedDBDatabaseError error(blink::kWebIDBDatabaseExceptionUnknownError,
-                                 ASCIIToUTF16("Internal error creating "
-                                              "database backend for "
-                                              "indexedDB.open."));
-    connection->callbacks->OnError(error);
-    if (s.IsCorruption()) {
-      backing_store = nullptr;  // Closes the LevelDB so that it can be deleted
-      HandleBackingStoreCorruption(origin, error);
-    }
+  if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+          kIDBCloseImmediatelySwitch)) {
+    MaybeCloseBackingStore(origin);
     return;
   }
 
-  database->OpenConnection(std::move(connection));
-  if (database->ConnectionCount() > 0) {
-    database_map_[unique_identifier] = database.get();
-    origin_dbs_.insert(std::make_pair(origin, database.get()));
-  }
+  // Start a timer to close the backing store, unless something else opens it
+  // in the mean time.
+  DCHECK(!backing_store_map_[origin]->close_timer()->IsRunning());
+  backing_store_map_[origin]->close_timer()->Start(
+      FROM_HERE, base::TimeDelta::FromSeconds(kBackingStoreGracePeriodSeconds),
+      base::BindOnce(&IndexedDBFactoryImpl::MaybeStartPreCloseTasks, this,
+                     origin));
 }
 
-std::pair<IndexedDBFactoryImpl::OriginDBMapIterator,
-          IndexedDBFactoryImpl::OriginDBMapIterator>
-IndexedDBFactoryImpl::GetOpenDatabasesForOrigin(const Origin& origin) const {
-  return origin_dbs_.equal_range(origin);
-}
-
-size_t IndexedDBFactoryImpl::GetConnectionCount(const Origin& origin) const {
-  size_t count(0);
-
-  OriginDBs range = GetOpenDatabasesForOrigin(origin);
-  for (auto it = range.first; it != range.second; ++it)
-    count += it->second->ConnectionCount();
-
-  return count;
-}
-
-int64_t IndexedDBFactoryImpl::GetInMemoryDBSize(const Origin& origin) const {
+void IndexedDBFactoryImpl::CloseBackingStore(const Origin& origin) {
   auto it = backing_store_map_.find(origin);
-  // Origin won't be present in map if it has been deleted.
   if (it == backing_store_map_.end())
-    return 0;
-
+    return;
+  // Stop the timer and pre close tasks (if they are running) - this may happen
+  // if the timer was started and then a forced close occurs.
   IndexedDBBackingStore* backing_store = it->second.get();
-  int64_t level_db_size = 0;
+  backing_store->close_timer()->Stop();
+  backing_store->SetPreCloseTaskList(nullptr);
+
+  if (backing_store->IsBlobCleanupPending())
+    backing_store->ForceRunBlobCleanup();
+
+  backing_store_map_.erase(it);
+}
+
+leveldb::Status IndexedDBFactoryImpl::AbortTransactions(const Origin& origin) {
+  auto it = backing_store_map_.find(origin);
+  if (it == backing_store_map_.end()) {
+    return leveldb::Status::IOError(
+        "Internal error opening backing store for "
+        "indexedDB.abortTransactions.");
+  }
+  IndexedDBBackingStore* backing_store = it->second.get();
+
+  leveldb::Status get_names_status;
+  IndexedDBMetadataCoding metadata_coding;
+  std::vector<base::string16> db_names;
+  get_names_status = metadata_coding.ReadDatabaseNames(
+      backing_store->db(), backing_store->origin_identifier(), &db_names);
+  if (!get_names_status.ok()) {
+    return leveldb::Status::IOError(
+        "Internal error getting origin database names for "
+        "indexedDB.abortTransactions.");
+  }
+
+  for (base::string16& name : db_names) {
+    const scoped_refptr<IndexedDBDatabase>& db =
+        database_map_[std::make_pair(origin, name)];
+    db->AbortAllTransactionsForConnections();
+  }
+
+  return leveldb::Status::OK();
+}
+
+void IndexedDBFactoryImpl::MaybeStartPreCloseTasks(const Origin& origin) {
+  if (!base::ContainsKey(backing_store_map_, origin))
+    return;
+  // Another reference may have been created since the maybe-close was posted,
+  // so it is necessary to check again.
+  if (!HasLastBackingStoreReference(origin))
+    return;
+
+  base::ScopedClosureRunner maybe_close_backing_store_runner(
+      base::BindOnce(&IndexedDBFactoryImpl::MaybeCloseBackingStore,
+                     base::Unretained(this), origin));
+
+  base::Time now = clock_->Now();
+
+  // Check that the last sweep hasn't run too recently.
+  if (earliest_sweep_ > now)
+    return;
+
+  bool tombstone_stats_enabled =
+      base::FeatureList::IsEnabled(kIDBTombstoneStatistics);
+  bool tombstone_deletion_enabled =
+      base::FeatureList::IsEnabled(kIDBTombstoneDeletion);
+
+  // After this check, exactly one of the flags must be true.
+  if (tombstone_stats_enabled == tombstone_deletion_enabled)
+    return;
+
+  scoped_refptr<IndexedDBBackingStore> store = backing_store_map_[origin];
+
+  base::Time origin_earliest_sweep;
   leveldb::Status s =
-      GetDBSizeFromEnv(backing_store->db()->env(), "/", &level_db_size);
+      indexed_db::GetEarliestSweepTime(store->db(), &origin_earliest_sweep);
+  // TODO(dmurph): Log this or report to UMA.
   if (!s.ok())
-    LOG(ERROR) << "Failed to GetDBSizeFromEnv: " << s.ToString();
+    return;
 
-  return backing_store->GetInMemoryBlobSize() + level_db_size;
+  // This origin hasn't been swept too recently.
+  if (origin_earliest_sweep > now)
+    return;
+
+  // A sweep will happen now, so reset the sweep timers.
+  earliest_sweep_ = GenerateNextGlobalSweepTime(now);
+  scoped_refptr<LevelDBTransaction> txn =
+      IndexedDBClassFactory::Get()->CreateLevelDBTransaction(store->db());
+  indexed_db::SetEarliestSweepTime(txn.get(), GenerateNextOriginSweepTime(now));
+  s = txn->Commit();
+
+  // TODO(dmurph): Log this or report to UMA.
+  if (!s.ok())
+    return;
+
+  std::list<std::unique_ptr<PreCloseTask>> tasks;
+  IndexedDBTombstoneSweeper::Mode mode =
+      tombstone_stats_enabled ? IndexedDBTombstoneSweeper::Mode::STATISTICS
+                              : IndexedDBTombstoneSweeper::Mode::DELETION;
+  tasks.push_back(std::make_unique<IndexedDBTombstoneSweeper>(
+      mode, kTombstoneSweeperRoundIterations, kTombstoneSweeperMaxIterations,
+      store->db()->db()));
+  // TODO(dmurph): Add compaction task that compacts all indexes if we have
+  // more than X deletions.
+
+  store->SetPreCloseTaskList(std::make_unique<IndexedDBPreCloseTaskQueue>(
+      std::move(tasks), maybe_close_backing_store_runner.Release(),
+      base::TimeDelta::FromSeconds(kPreCloseTasksMaxRunPeriodSeconds),
+      std::make_unique<base::OneShotTimer>()));
+  store->StartPreCloseTasks();
 }
 
-base::Time IndexedDBFactoryImpl::GetLastModified(
-    const url::Origin& origin) const {
+void IndexedDBFactoryImpl::MaybeCloseBackingStore(const Origin& origin) {
   auto it = backing_store_map_.find(origin);
   if (it == backing_store_map_.end())
-    return base::Time();
+    return;
+
   IndexedDBBackingStore* backing_store = it->second.get();
-  return backing_store->db()->LastModified();
+  backing_store->SetPreCloseTaskList(nullptr);
+  // Another reference may have opened since the maybe-close was posted, so it
+  // is necessary to check again.
+  if (HasLastBackingStoreReference(origin))
+    CloseBackingStore(origin);
 }
 
-void IndexedDBFactoryImpl::NotifyIndexedDBContentChanged(
-    const url::Origin& origin,
-    const base::string16& database_name,
-    const base::string16& object_store_name) {
-  if (!context_)
-    return;
-  context_->NotifyIndexedDBContentChanged(origin, database_name,
-                                          object_store_name);
+bool IndexedDBFactoryImpl::HasLastBackingStoreReference(
+    const Origin& origin) const {
+  auto it = backing_store_map_.find(origin);
+  if (it == backing_store_map_.end())
+    return false;
+  return it->second->HasOneRef();
+}
+
+bool IndexedDBFactoryImpl::IsDatabaseOpen(const Origin& origin,
+                                          const base::string16& name) const {
+  return base::ContainsKey(database_map_,
+                           IndexedDBDatabase::Identifier(origin, name));
+}
+
+bool IndexedDBFactoryImpl::IsBackingStoreOpen(const Origin& origin) const {
+  return base::ContainsKey(backing_store_map_, origin);
+}
+
+bool IndexedDBFactoryImpl::IsBackingStorePendingClose(
+    const Origin& origin) const {
+  auto it = backing_store_map_.find(origin);
+  if (it == backing_store_map_.end())
+    return false;
+  return it->second->close_timer()->IsRunning() ||
+         it->second->pre_close_task_queue();
+}
+
+void IndexedDBFactoryImpl::RemoveDatabaseFromMaps(
+    const IndexedDBDatabase::Identifier& identifier) {
+  auto it = database_map_.find(identifier);
+  DCHECK(it != database_map_.end());
+  IndexedDBDatabase* database = it->second;
+  database_map_.erase(it);
+
+  std::pair<OriginDBMap::iterator, OriginDBMap::iterator> range =
+      origin_dbs_.equal_range(database->identifier().first);
+  DCHECK(range.first != range.second);
+  for (auto it2 = range.first; it2 != range.second; ++it2) {
+    if (it2->second == database) {
+      origin_dbs_.erase(it2);
+      break;
+    }
+  }
 }
 
 }  // namespace content
diff --git a/content/browser/media/capture/aura_window_video_capture_device.cc b/content/browser/media/capture/aura_window_video_capture_device.cc
index 0677f269..3013322 100644
--- a/content/browser/media/capture/aura_window_video_capture_device.cc
+++ b/content/browser/media/capture/aura_window_video_capture_device.cc
@@ -11,6 +11,7 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
+#include "base/optional.h"
 #include "base/task/post_task.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "content/browser/media/capture/mouse_cursor_overlay_controller.h"
@@ -21,6 +22,7 @@
 #include "mojo/public/cpp/bindings/strong_binding.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_observer.h"
+#include "ui/aura/window_occlusion_tracker.h"
 
 #if defined(OS_CHROMEOS)
 #include "content/browser/media/capture/lame_window_capturer_chromeos.h"
@@ -86,6 +88,9 @@
         target_window_->GetFrameSinkId().is_valid() &&
 #endif
         true) {
+#if defined(OS_CHROMEOS)
+      force_visible_.emplace(target_window_);
+#endif
       target_window_->AddObserver(this);
       device_task_runner_->PostTask(
           FROM_HERE,
@@ -111,6 +116,9 @@
 
     target_window_->RemoveObserver(this);
     target_window_ = nullptr;
+#if defined(OS_CHROMEOS)
+    force_visible_.reset();
+#endif
 
     device_task_runner_->PostTask(
         FROM_HERE,
@@ -132,6 +140,10 @@
   const DesktopMediaID::Type target_type_;
 
   aura::Window* target_window_ = nullptr;
+#if defined(OS_CHROMEOS)
+  base::Optional<aura::WindowOcclusionTracker::ScopedForceVisible>
+      force_visible_;
+#endif
 
   DISALLOW_COPY_AND_ASSIGN(WindowTracker);
 };
diff --git a/content/browser/media/capture/aura_window_video_capture_device_browsertest.cc b/content/browser/media/capture/aura_window_video_capture_device_browsertest.cc
index 41beb72..f8757b5 100644
--- a/content/browser/media/capture/aura_window_video_capture_device_browsertest.cc
+++ b/content/browser/media/capture/aura_window_video_capture_device_browsertest.cc
@@ -311,6 +311,34 @@
   StopAndDeAllocate();
 }
 
+#if defined(OS_CHROMEOS)
+// On ChromeOS, another window may occlude a window that is being captured.
+// Make sure the visibility is set to visible during capture if it's occluded.
+IN_PROC_BROWSER_TEST_F(AuraWindowVideoCaptureDeviceBrowserTest,
+                       CapturesOccludedWindows) {
+  // TODO(crbug.com/877172): CopyOutputRequests not allowed.
+  if (features::IsSingleProcessMash())
+    return;
+  NavigateToInitialDocument();
+  AllocateAndStartAndWaitForFirstFrame();
+
+  ASSERT_EQ(aura::Window::OcclusionState::VISIBLE,
+            shell()->web_contents()->GetNativeView()->occlusion_state());
+  // Create a window on top of the window being captured with same size so that
+  // it is occluded.
+  auto window = std::make_unique<aura::Window>(nullptr);
+  window->Init(ui::LAYER_TEXTURED);
+  shell()->window()->GetRootWindow()->AddChild(window.get());
+  window->SetBounds(shell()->window()->bounds());
+  window->Show();
+  EXPECT_EQ(aura::Window::OcclusionState::VISIBLE,
+            shell()->web_contents()->GetNativeView()->occlusion_state());
+
+  window.reset();
+  StopAndDeAllocate();
+}
+#endif  // defined(OS_CHROMEOS)
+
 class AuraWindowVideoCaptureDeviceBrowserTestP
     : public AuraWindowVideoCaptureDeviceBrowserTest,
       public testing::WithParamInterface<std::tuple<bool, bool>> {
diff --git a/content/browser/service_worker/service_worker_context_unittest.cc b/content/browser/service_worker/service_worker_context_unittest.cc
index 1edfe58..c3e6232 100644
--- a/content/browser/service_worker/service_worker_context_unittest.cc
+++ b/content/browser/service_worker/service_worker_context_unittest.cc
@@ -26,6 +26,7 @@
 #include "content/public/test/test_browser_thread_bundle.h"
 #include "content/public/test/test_utils.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/blink/public/common/service_worker/service_worker_types.h"
 #include "third_party/blink/public/mojom/service_worker/service_worker_event_status.mojom.h"
 #include "third_party/blink/public/mojom/service_worker/service_worker_registration.mojom.h"
 
@@ -872,7 +873,7 @@
           kRenderProcessId2, true /* is_parent_frame_secure */, version.get(),
           context()->AsWeakPtr(), &remote_endpoints.back());
   const int host4_provider_id = host4->provider_id();
-  EXPECT_NE(host4_provider_id, kInvalidServiceWorkerProviderId);
+  EXPECT_NE(host4_provider_id, blink::kInvalidServiceWorkerProviderId);
 
   ServiceWorkerProviderHost* host1_raw = host1.get();
   ServiceWorkerProviderHost* host2_raw = host2.get();
diff --git a/content/browser/service_worker/service_worker_job_unittest.cc b/content/browser/service_worker/service_worker_job_unittest.cc
index 1908a81..fc645321 100644
--- a/content/browser/service_worker/service_worker_job_unittest.cc
+++ b/content/browser/service_worker/service_worker_job_unittest.cc
@@ -824,9 +824,11 @@
       registration.get(), script_url, blink::mojom::ScriptType::kClassic, 1L,
       helper_->context()->AsWeakPtr());
   base::Optional<blink::ServiceWorkerStatusCode> status;
-  version->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                       CreateReceiverOnCurrentThread(&status));
-  base::RunLoop().RunUntilIdle();
+  base::RunLoop run_loop;
+  version->StartWorker(
+      ServiceWorkerMetrics::EventType::UNKNOWN,
+      ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
+  run_loop.Run();
   ASSERT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
 
   version->set_fetch_handler_existence(
diff --git a/content/browser/service_worker/service_worker_navigation_loader_unittest.cc b/content/browser/service_worker/service_worker_navigation_loader_unittest.cc
index 0747983f..a1c4a98 100644
--- a/content/browser/service_worker/service_worker_navigation_loader_unittest.cc
+++ b/content/browser/service_worker/service_worker_navigation_loader_unittest.cc
@@ -366,9 +366,11 @@
     // Make the registration findable via storage functions.
     registration_->set_last_update_check(base::Time::Now());
     base::Optional<blink::ServiceWorkerStatusCode> status;
-    storage()->StoreRegistration(registration_.get(), version_.get(),
-                                 CreateReceiverOnCurrentThread(&status));
-    base::RunLoop().RunUntilIdle();
+    base::RunLoop run_loop;
+    storage()->StoreRegistration(
+        registration_.get(), version_.get(),
+        ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
+    run_loop.Run();
     ASSERT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
 
     // Set up custom fakes to let tests customize how to respond to fetch
diff --git a/content/browser/service_worker/service_worker_object_host_unittest.cc b/content/browser/service_worker/service_worker_object_host_unittest.cc
index 785bf8b..c2a4954 100644
--- a/content/browser/service_worker/service_worker_object_host_unittest.cc
+++ b/content/browser/service_worker/service_worker_object_host_unittest.cc
@@ -134,10 +134,11 @@
 
     // Make the registration findable via storage functions.
     base::Optional<blink::ServiceWorkerStatusCode> status;
+    base::RunLoop run_loop;
     helper_->context()->storage()->StoreRegistration(
         registration_.get(), version_.get(),
-        CreateReceiverOnCurrentThread(&status));
-    base::RunLoop().RunUntilIdle();
+        ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
+    run_loop.Run();
     ASSERT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
   }
 
diff --git a/content/browser/service_worker/service_worker_provider_host.cc b/content/browser/service_worker/service_worker_provider_host.cc
index cf41e035..cf00736 100644
--- a/content/browser/service_worker/service_worker_provider_host.cc
+++ b/content/browser/service_worker/service_worker_provider_host.cc
@@ -223,7 +223,7 @@
       true /* is_parent_frame_secure */,
       mojo::MakeRequest(&((*out_provider_info)->host_ptr_info)),
       std::move(client_ptr_info), context));
-  host->render_process_id_ = process_id;
+  host->SetRenderProcessId(process_id);
 
   (*out_provider_info)->provider_id = host->provider_id();
   auto weak_ptr = host->AsWeakPtr();
@@ -696,7 +696,7 @@
 
   DCHECK_EQ(ChildProcessHost::kInvalidUniqueID, render_process_id_);
   DCHECK_NE(ChildProcessHost::kInvalidUniqueID, render_process_id);
-  render_process_id_ = render_process_id;
+  SetRenderProcessId(render_process_id);
 
   DCHECK_EQ(MSG_ROUTING_NONE, frame_id_);
   DCHECK_NE(MSG_ROUTING_NONE, render_frame_id);
@@ -718,7 +718,7 @@
   DCHECK_EQ(provider_info->provider_id, provider_id());
 
   DCHECK_NE(ChildProcessHost::kInvalidUniqueID, process_id);
-  render_process_id_ = process_id;
+  SetRenderProcessId(process_id);
 
   network::mojom::URLLoaderFactoryAssociatedPtrInfo
       script_loader_factory_ptr_info;
@@ -1371,4 +1371,10 @@
   client_phase_ = new_phase;
 }
 
+void ServiceWorkerProviderHost::SetRenderProcessId(int process_id) {
+  render_process_id_ = process_id;
+  if (controller_)
+    controller_->UpdateForegroundPriority();
+}
+
 }  // namespace content
diff --git a/content/browser/service_worker/service_worker_provider_host.h b/content/browser/service_worker/service_worker_provider_host.h
index 5e0b84a..af9cffc6 100644
--- a/content/browser/service_worker/service_worker_provider_host.h
+++ b/content/browser/service_worker/service_worker_provider_host.h
@@ -615,6 +615,8 @@
 
   void TransitionToClientPhase(ClientPhase new_phase);
 
+  void SetRenderProcessId(int process_id);
+
   // Unique among all provider hosts.
   const int provider_id_;
 
diff --git a/content/browser/service_worker/service_worker_registration_unittest.cc b/content/browser/service_worker/service_worker_registration_unittest.cc
index 07a587f8..a7a8098 100644
--- a/content/browser/service_worker/service_worker_registration_unittest.cc
+++ b/content/browser/service_worker/service_worker_registration_unittest.cc
@@ -401,10 +401,11 @@
     version_1->SetMainScriptHttpResponseInfo(
         EmbeddedWorkerTestHelper::CreateHttpResponseInfo());
     base::Optional<blink::ServiceWorkerStatusCode> status;
+    base::RunLoop run_loop;
     context()->storage()->StoreRegistration(
         registration_.get(), version_1.get(),
-        CreateReceiverOnCurrentThread(&status));
-    base::RunLoop().RunUntilIdle();
+        ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
+    run_loop.Run();
     ASSERT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
 
     // Give the active version a controllee.
diff --git a/content/browser/service_worker/service_worker_test_utils.cc b/content/browser/service_worker/service_worker_test_utils.cc
index c4e7b54f..83df82a 100644
--- a/content/browser/service_worker/service_worker_test_utils.cc
+++ b/content/browser/service_worker/service_worker_test_utils.cc
@@ -249,6 +249,19 @@
   return host;
 }
 
+base::OnceCallback<void(blink::ServiceWorkerStatusCode)>
+ReceiveServiceWorkerStatus(base::Optional<blink::ServiceWorkerStatusCode>* out,
+                           base::OnceClosure quit_closure) {
+  return base::BindOnce(
+      [](base::OnceClosure quit_closure,
+         base::Optional<blink::ServiceWorkerStatusCode>* out,
+         blink::ServiceWorkerStatusCode result) {
+        *out = result;
+        std::move(quit_closure).Run();
+      },
+      std::move(quit_closure), out);
+}
+
 base::WeakPtr<ServiceWorkerProviderHost>
 CreateProviderHostForServiceWorkerContext(
     int process_id,
diff --git a/content/browser/service_worker/service_worker_test_utils.h b/content/browser/service_worker/service_worker_test_utils.h
index 91bc4f4e..d7c2d05c 100644
--- a/content/browser/service_worker/service_worker_test_utils.h
+++ b/content/browser/service_worker/service_worker_test_utils.h
@@ -54,15 +54,9 @@
                         out);
 }
 
-template <typename Arg>
-base::OnceCallback<void(Arg)> CreateReceiverOnCurrentThread(
-    base::Optional<Arg>* out,
-    base::OnceClosure quit = base::OnceClosure()) {
-  BrowserThread::ID id;
-  bool ret = BrowserThread::GetCurrentThreadIdentifier(&id);
-  DCHECK(ret);
-  return CreateReceiver(id, std::move(quit), out);
-}
+base::OnceCallback<void(blink::ServiceWorkerStatusCode)>
+ReceiveServiceWorkerStatus(base::Optional<blink::ServiceWorkerStatusCode>* out,
+                           base::OnceClosure quit_closure);
 
 // Container for keeping the Mojo connection to the service worker provider on
 // the renderer alive.
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc
index aa630b716..f77b37f 100644
--- a/content/browser/service_worker/service_worker_version.cc
+++ b/content/browser/service_worker/service_worker_version.cc
@@ -2131,6 +2131,10 @@
   return false;
 }
 
+void ServiceWorkerVersion::UpdateForegroundPriority() {
+  embedded_worker_->UpdateForegroundPriority();
+}
+
 void ServiceWorkerVersion::InitializeGlobalScope() {
   DCHECK(service_worker_host_);
   scoped_refptr<ServiceWorkerRegistration> registration =
diff --git a/content/browser/service_worker/service_worker_version.h b/content/browser/service_worker/service_worker_version.h
index fae9d148..800ac889 100644
--- a/content/browser/service_worker/service_worker_version.h
+++ b/content/browser/service_worker/service_worker_version.h
@@ -520,6 +520,10 @@
   // should be kept at foreground priority.
   bool ShouldRequireForegroundPriority(int worker_process_id) const;
 
+  // Called when a controlled client's state changes in a way that might effect
+  // whether the service worker should be kept at foreground priority.
+  void UpdateForegroundPriority();
+
  private:
   friend class base::RefCounted<ServiceWorkerVersion>;
   friend class EmbeddedWorkerInstanceTest;
diff --git a/content/browser/service_worker/service_worker_version_unittest.cc b/content/browser/service_worker/service_worker_version_unittest.cc
index d3b88fd4..0c49e59 100644
--- a/content/browser/service_worker/service_worker_version_unittest.cc
+++ b/content/browser/service_worker/service_worker_version_unittest.cc
@@ -42,8 +42,16 @@
 namespace content {
 namespace service_worker_version_unittest {
 
-void VerifyCalled(bool* called) {
-  *called = true;
+base::OnceCallback<void()> VerifyCalled(
+    bool* called,
+    base::OnceClosure quit_closure = base::OnceClosure()) {
+  return base::BindOnce(
+      [](bool* called, base::OnceClosure quit_closure) {
+        *called = true;
+        if (!quit_closure.is_null())
+          std::move(quit_closure).Run();
+      },
+      called, std::move(quit_closure));
 }
 
 void ObserveStatusChanges(ServiceWorkerVersion* version,
@@ -95,9 +103,11 @@
 void StartWorker(ServiceWorkerVersion* version,
                  ServiceWorkerMetrics::EventType purpose) {
   base::Optional<blink::ServiceWorkerStatusCode> status;
-  version->StartWorker(purpose, CreateReceiverOnCurrentThread(&status));
+  base::RunLoop run_loop;
+  version->StartWorker(
+      purpose, ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
   EXPECT_EQ(EmbeddedWorkerStatus::STARTING, version->running_status());
-  base::RunLoop().RunUntilIdle();
+  run_loop.Run();
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
   EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version->running_status());
 }
@@ -155,11 +165,11 @@
 
     // Make the registration findable via storage functions.
     base::Optional<blink::ServiceWorkerStatusCode> status;
+    base::RunLoop run_loop;
     helper_->context()->storage()->StoreRegistration(
-        registration_.get(),
-        version_.get(),
-        CreateReceiverOnCurrentThread(&status));
-    base::RunLoop().RunUntilIdle();
+        registration_.get(), version_.get(),
+        ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
+    run_loop.Run();
     ASSERT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
   }
 
@@ -183,23 +193,22 @@
 
   void SimulateDispatchEvent(ServiceWorkerMetrics::EventType event_type) {
     base::Optional<blink::ServiceWorkerStatusCode> status;
+    base::RunLoop run_loop;
 
     // Make sure worker is running.
-    version_->RunAfterStartWorker(event_type,
-                                  CreateReceiverOnCurrentThread(&status));
-    base::RunLoop().RunUntilIdle();
+    version_->RunAfterStartWorker(
+        event_type,
+        ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
+    run_loop.Run();
     EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
     EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
 
     // Start request, as if an event is being dispatched.
-    int request_id = version_->StartRequest(
-        event_type, CreateReceiverOnCurrentThread(&status));
+    int request_id = version_->StartRequest(event_type, base::DoNothing());
     base::RunLoop().RunUntilIdle();
 
     // And finish request, as if a response to the event was received.
     EXPECT_TRUE(version_->FinishRequest(request_id, true /* was_handled */));
-    base::RunLoop().RunUntilIdle();
-    EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
   }
 
   void SetTickClockForTesting(base::SimpleTestTickClock* tick_clock) {
@@ -257,19 +266,28 @@
   base::Optional<blink::ServiceWorkerStatusCode> status1;
   base::Optional<blink::ServiceWorkerStatusCode> status2;
   base::Optional<blink::ServiceWorkerStatusCode> status3;
-  version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                        CreateReceiverOnCurrentThread(&status1));
-  version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                        CreateReceiverOnCurrentThread(&status2));
+  base::RunLoop run_loop_1;
+  base::RunLoop run_loop_2;
+  base::RunLoop run_loop_3;
 
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::UNKNOWN,
+      ReceiveServiceWorkerStatus(&status1, run_loop_1.QuitClosure()));
   EXPECT_EQ(EmbeddedWorkerStatus::STARTING, version_->running_status());
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::UNKNOWN,
+      ReceiveServiceWorkerStatus(&status2, run_loop_2.QuitClosure()));
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
 
   // Call StartWorker() after it's started.
-  version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                        CreateReceiverOnCurrentThread(&status3));
-  base::RunLoop().RunUntilIdle();
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::UNKNOWN,
+      ReceiveServiceWorkerStatus(&status3, run_loop_3.QuitClosure()));
+
+  run_loop_1.Run();
+  run_loop_2.Run();
+  run_loop_3.Run();
 
   // All should just succeed.
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status1.value());
@@ -280,11 +298,15 @@
     // Call StopWorker() multiple times.
     bool has_stopped1 = false;
     bool has_stopped2 = false;
-    version_->StopWorker(base::BindOnce(&VerifyCalled, &has_stopped1));
-    version_->StopWorker(base::BindOnce(&VerifyCalled, &has_stopped2));
+    base::RunLoop run_loop_1;
+    base::RunLoop run_loop_2;
+
+    version_->StopWorker(VerifyCalled(&has_stopped1, run_loop_1.QuitClosure()));
+    version_->StopWorker(VerifyCalled(&has_stopped2, run_loop_2.QuitClosure()));
 
     EXPECT_EQ(EmbeddedWorkerStatus::STOPPING, version_->running_status());
-    base::RunLoop().RunUntilIdle();
+    run_loop_1.Run();
+    run_loop_2.Run();
     EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status());
 
     // All StopWorker should just succeed.
@@ -296,24 +318,29 @@
   status1.reset();
   status2.reset();
 
-  version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                        CreateReceiverOnCurrentThread(&status1));
+  base::RunLoop run_loop_4;
+  base::RunLoop run_loop_5;
+
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::UNKNOWN,
+      ReceiveServiceWorkerStatus(&status1, run_loop_4.QuitClosure()));
 
   EXPECT_EQ(EmbeddedWorkerStatus::STARTING, version_->running_status());
-  base::RunLoop().RunUntilIdle();
+  run_loop_4.Run();
   EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
 
   {
     // Call StopWorker()
     bool has_stopped = false;
-    version_->StopWorker(base::BindOnce(&VerifyCalled, &has_stopped));
+    version_->StopWorker(VerifyCalled(&has_stopped));
 
     // And try calling StartWorker while StopWorker is in queue.
-    version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                          CreateReceiverOnCurrentThread(&status2));
+    version_->StartWorker(
+        ServiceWorkerMetrics::EventType::UNKNOWN,
+        ReceiveServiceWorkerStatus(&status2, run_loop_5.QuitClosure()));
 
     EXPECT_EQ(EmbeddedWorkerStatus::STOPPING, version_->running_status());
-    base::RunLoop().RunUntilIdle();
+    run_loop_5.Run();
     EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
 
     // All should just succeed.
@@ -342,7 +369,7 @@
 
   // Stop the worker, and then dispatch an event immediately after that.
   bool has_stopped = false;
-  version_->StopWorker(base::BindOnce(&VerifyCalled, &has_stopped));
+  version_->StopWorker(VerifyCalled(&has_stopped));
   SimulateDispatchEvent(ServiceWorkerMetrics::EventType::INSTALL);
   EXPECT_TRUE(has_stopped);
 
@@ -363,20 +390,24 @@
 
   // Delete the registration.
   base::Optional<blink::ServiceWorkerStatusCode> status;
+  base::RunLoop run_loop;
   helper_->context()->storage()->DeleteRegistration(
       registration_->id(), registration_->scope().GetOrigin(),
-      CreateReceiverOnCurrentThread(&status));
-  base::RunLoop().RunUntilIdle();
+      ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
+  run_loop.Run();
   ASSERT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
 
   // The live registration is marked as deleted, but still exists.
   ASSERT_TRUE(registration_->is_deleted());
 
-  // Stop the worker.
-  bool has_stopped = false;
-  version_->StopWorker(base::BindOnce(&VerifyCalled, &has_stopped));
-  base::RunLoop().RunUntilIdle();
-  EXPECT_TRUE(has_stopped);
+  {
+    // Stop the worker.
+    bool has_stopped = false;
+    base::RunLoop run_loop;
+    version_->StopWorker(VerifyCalled(&has_stopped, run_loop.QuitClosure()));
+    run_loop.Run();
+    EXPECT_TRUE(has_stopped);
+  }
 
   // Dispatch an event on the unregistered and stopped but still live worker.
   SimulateDispatchEvent(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME);
@@ -390,8 +421,7 @@
 
   // Wait for the completion.
   bool status_change_called = false;
-  version_->RegisterStatusChangeCallback(
-      base::BindOnce(&VerifyCalled, &status_change_called));
+  version_->RegisterStatusChangeCallback(VerifyCalled(&status_change_called));
 
   // Dispatch an install event.
   SimulateDispatchEvent(ServiceWorkerMetrics::EventType::INSTALL);
@@ -411,8 +441,7 @@
 
   // Wait for the completion.
   bool status_change_called = false;
-  version_->RegisterStatusChangeCallback(
-      base::BindOnce(&VerifyCalled, &status_change_called));
+  version_->RegisterStatusChangeCallback(VerifyCalled(&status_change_called));
 
   // Dispatch an activate event.
   SimulateDispatchEvent(ServiceWorkerMetrics::EventType::ACTIVATE);
@@ -469,8 +498,10 @@
 
 TEST_F(ServiceWorkerVersionTest, SetDevToolsAttached) {
   base::Optional<blink::ServiceWorkerStatusCode> status;
-  version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                        CreateReceiverOnCurrentThread(&status));
+  base::RunLoop run_loop;
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::UNKNOWN,
+      ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
 
   ASSERT_EQ(EmbeddedWorkerStatus::STARTING, version_->running_status());
 
@@ -492,7 +523,7 @@
   EXPECT_FALSE(version_->start_time_.is_null());
   EXPECT_TRUE(version_->skip_recording_startup_time_);
 
-  base::RunLoop().RunUntilIdle();
+  run_loop.Run();
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
   EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
 }
@@ -531,8 +562,9 @@
 
   // Update is actually scheduled after the worker stops.
   bool has_stopped = false;
-  version_->StopWorker(base::BindOnce(&VerifyCalled, &has_stopped));
-  base::RunLoop().RunUntilIdle();
+  base::RunLoop run_loop;
+  version_->StopWorker(VerifyCalled(&has_stopped, run_loop.QuitClosure()));
+  run_loop.Run();
   EXPECT_TRUE(has_stopped);
   EXPECT_TRUE(version_->stale_time_.is_null());
   EXPECT_TRUE(version_->update_timer_.IsRunning());
@@ -669,26 +701,35 @@
   StartWorker(version_.get(),
               ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME);
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
+  bool has_stopped = false;
 
-  base::Optional<blink::ServiceWorkerStatusCode> event_status;
-  version_->StartRequest(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
-                         CreateReceiverOnCurrentThread(&event_status));
+  base::Optional<blink::ServiceWorkerStatusCode> status;
+  base::RunLoop run_loop;
+  version_->StartRequest(
+      ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
+      ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
 
   // Restart the worker. The inflight event should have been failed.
-  bool has_stopped = false;
-  version_->StopWorker(base::BindOnce(&VerifyCalled, &has_stopped));
+  version_->StopWorker(VerifyCalled(&has_stopped));
   EXPECT_EQ(EmbeddedWorkerStatus::STOPPING, version_->running_status());
-  base::Optional<blink::ServiceWorkerStatusCode> start_status;
-  version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                        CreateReceiverOnCurrentThread(&start_status));
-  base::RunLoop().RunUntilIdle();
+  run_loop.Run();
 
-  // All inflight events should have been aborted.
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorFailed, event_status.value());
+  {
+    base::Optional<blink::ServiceWorkerStatusCode> status;
+    base::RunLoop run_loop;
+    version_->StartWorker(
+        ServiceWorkerMetrics::EventType::UNKNOWN,
+        ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
+    run_loop.Run();
+
+    // The worker should have been successfully re-started after stopped.
+    EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
+  }
+
   // The worker should have been stopped.
   EXPECT_TRUE(has_stopped);
-  // The worker should have been successfully re-started after stopped.
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, start_status.value());
+  // All inflight events should have been aborted.
+  EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorFailed, status.value());
   EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
 
   // SetAllRequestExpirations() after restarting should not crash since all
@@ -738,15 +779,16 @@
       helper_->AddNewPendingServiceWorker<DelayMessageWorker>(helper_.get());
 
   base::Optional<blink::ServiceWorkerStatusCode> error_status;
+  base::RunLoop run_loop;
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
   client->UnblockStartWorker();
   StartWorker(version_.get(),
               ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME);
 
   // Create a request.
-  int request_id =
-      version_->StartRequest(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
-                             CreateReceiverOnCurrentThread(&error_status));
+  int request_id = version_->StartRequest(
+      ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
+      ReceiveServiceWorkerStatus(&error_status, run_loop.QuitClosure()));
 
   // Dispatch a dummy event.
   version_->endpoint()->DispatchExtendableMessageEvent(
@@ -784,19 +826,20 @@
 
 TEST_F(ServiceWorkerVersionTest, RequestNowTimeout) {
   base::Optional<blink::ServiceWorkerStatusCode> status;
+  base::RunLoop run_loop;
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
   StartWorker(version_.get(), ServiceWorkerMetrics::EventType::SYNC);
 
   // Create a request that should expire Now().
   int request_id = version_->StartRequestWithCustomTimeout(
       ServiceWorkerMetrics::EventType::SYNC,
-      CreateReceiverOnCurrentThread(&status), base::TimeDelta(),
-      ServiceWorkerVersion::CONTINUE_ON_TIMEOUT);
+      ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()),
+      base::TimeDelta(), ServiceWorkerVersion::CONTINUE_ON_TIMEOUT);
 
   base::RunLoop().RunUntilIdle();
   EXPECT_TRUE(version_->timeout_timer_.IsRunning());
   version_->timeout_timer_.user_task().Run();
-  base::RunLoop().RunUntilIdle();
+  run_loop.Run();
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorTimeout, status.value());
 
   EXPECT_FALSE(version_->FinishRequest(request_id, true /* was_handled */));
@@ -807,30 +850,35 @@
 
 TEST_F(ServiceWorkerVersionTest, RequestNowTimeoutKill) {
   base::Optional<blink::ServiceWorkerStatusCode> status;
+  base::RunLoop run_loop;
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
   StartWorker(version_.get(), ServiceWorkerMetrics::EventType::SYNC);
 
   // Create a request that should expire Now().
   int request_id = version_->StartRequestWithCustomTimeout(
       ServiceWorkerMetrics::EventType::SYNC,
-      CreateReceiverOnCurrentThread(&status), base::TimeDelta(),
-      ServiceWorkerVersion::KILL_ON_TIMEOUT);
+      ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()),
+      base::TimeDelta(), ServiceWorkerVersion::KILL_ON_TIMEOUT);
 
   base::RunLoop().RunUntilIdle();
   EXPECT_TRUE(version_->timeout_timer_.IsRunning());
   version_->timeout_timer_.user_task().Run();
-  base::RunLoop().RunUntilIdle();
+  run_loop.Run();
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorTimeout, status.value());
 
   EXPECT_FALSE(version_->FinishRequest(request_id, true /* was_handled */));
 
   // KILL_ON_TIMEOUT timeouts should stop the service worker.
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status());
 }
 
 TEST_F(ServiceWorkerVersionTest, RequestCustomizedTimeout) {
   base::Optional<blink::ServiceWorkerStatusCode> first_status;
   base::Optional<blink::ServiceWorkerStatusCode> second_status;
+  base::RunLoop first_run_loop;
+  base::RunLoop second_run_loop;
+
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
   StartWorker(version_.get(), ServiceWorkerMetrics::EventType::SYNC);
 
@@ -841,13 +889,13 @@
   int timeout_seconds = 10;
   int first_request_id = version_->StartRequestWithCustomTimeout(
       ServiceWorkerMetrics::EventType::SYNC,
-      CreateReceiverOnCurrentThread(&first_status),
+      ReceiveServiceWorkerStatus(&first_status, first_run_loop.QuitClosure()),
       base::TimeDelta::FromSeconds(2 * timeout_seconds),
       ServiceWorkerVersion::KILL_ON_TIMEOUT);
 
   int second_request_id = version_->StartRequestWithCustomTimeout(
       ServiceWorkerMetrics::EventType::SYNC,
-      CreateReceiverOnCurrentThread(&second_status),
+      ReceiveServiceWorkerStatus(&second_status, second_run_loop.QuitClosure()),
       base::TimeDelta::FromSeconds(timeout_seconds),
       ServiceWorkerVersion::CONTINUE_ON_TIMEOUT);
 
@@ -862,7 +910,7 @@
   // Now advance time until the second task timeout should expire.
   tick_clock.Advance(base::TimeDelta::FromSeconds(timeout_seconds + 1));
   version_->timeout_timer_.user_task().Run();
-  base::RunLoop().RunUntilIdle();
+  second_run_loop.Run();
   EXPECT_FALSE(first_status);
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorTimeout,
             second_status.value());
@@ -873,7 +921,7 @@
   // Now advance time until both tasks should be expired.
   tick_clock.Advance(base::TimeDelta::FromSeconds(timeout_seconds + 1));
   version_->timeout_timer_.user_task().Run();
-  base::RunLoop().RunUntilIdle();
+  first_run_loop.Run();
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorTimeout,
             first_status.value());
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorTimeout,
@@ -884,6 +932,7 @@
 
   EXPECT_FALSE(
       version_->FinishRequest(second_request_id, true /* was_handled */));
+  base::RunLoop().RunUntilIdle();
 
   // KILL_ON_TIMEOUT timeouts should stop the service worker.
   EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status());
@@ -892,26 +941,29 @@
 TEST_F(ServiceWorkerVersionTest, MixedRequestTimeouts) {
   base::Optional<blink::ServiceWorkerStatusCode> sync_status;
   base::Optional<blink::ServiceWorkerStatusCode> fetch_status;
+  base::RunLoop sync_run_loop;
+  base::RunLoop fetch_run_loop;
+
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
   StartWorker(version_.get(),
               ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME);
 
   // Create a fetch request that should expire sometime later.
-  int fetch_request_id =
-      version_->StartRequest(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
-                             CreateReceiverOnCurrentThread(&fetch_status));
+  int fetch_request_id = version_->StartRequest(
+      ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
+      ReceiveServiceWorkerStatus(&fetch_status, fetch_run_loop.QuitClosure()));
   // Create a request that should expire Now().
   int sync_request_id = version_->StartRequestWithCustomTimeout(
       ServiceWorkerMetrics::EventType::SYNC,
-      CreateReceiverOnCurrentThread(&sync_status), base::TimeDelta(),
-      ServiceWorkerVersion::CONTINUE_ON_TIMEOUT);
+      ReceiveServiceWorkerStatus(&sync_status, sync_run_loop.QuitClosure()),
+      base::TimeDelta(), ServiceWorkerVersion::CONTINUE_ON_TIMEOUT);
   base::RunLoop().RunUntilIdle();
   EXPECT_FALSE(sync_status);
 
   // Verify the sync has timed out but not the fetch.
   EXPECT_TRUE(version_->timeout_timer_.IsRunning());
   version_->timeout_timer_.user_task().Run();
-  base::RunLoop().RunUntilIdle();
+  sync_run_loop.Run();
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorTimeout, sync_status.value());
   EXPECT_FALSE(fetch_status);
 
@@ -925,13 +977,14 @@
   // Verify that the fetch times out later.
   version_->SetAllRequestExpirations(base::TimeTicks::Now());
   version_->timeout_timer_.user_task().Run();
-  base::RunLoop().RunUntilIdle();
+  fetch_run_loop.Run();
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorTimeout,
             fetch_status.value());
 
   // Fetch request should no longer exist.
   EXPECT_FALSE(
       version_->FinishRequest(fetch_request_id, true /* was_handled */));
+  base::RunLoop().RunUntilIdle();
 
   // Other timeouts do stop the service worker.
   EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status());
@@ -939,10 +992,12 @@
 
 TEST_F(ServiceWorkerVersionTest, FailToStart_RendererCrash) {
   base::Optional<blink::ServiceWorkerStatusCode> status;
+  base::RunLoop run_loop;
   auto* client = helper_->AddNewPendingInstanceClient<
       DelayedFakeEmbeddedWorkerInstanceClient>(helper_.get());
-  version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                        CreateReceiverOnCurrentThread(&status));
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::UNKNOWN,
+      ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
   base::RunLoop().RunUntilIdle();
 
   // Callback has not completed yet.
@@ -952,8 +1007,7 @@
   // Simulate renderer crash: break EmbeddedWorkerInstance's Mojo connection to
   // the renderer-side client.
   client->Disconnect();
-  base::RunLoop().RunUntilIdle();
-
+  run_loop.Run();
   // Callback completed.
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorStartWorkerFailed,
             status.value());
@@ -962,13 +1016,15 @@
 
 TEST_F(ServiceWorkerVersionTest, FailToStart_Timeout) {
   base::Optional<blink::ServiceWorkerStatusCode> status;
+  base::RunLoop run_loop;
 
   // Start starting the worker.
   auto* client = helper_->AddNewPendingInstanceClient<
       DelayedFakeEmbeddedWorkerInstanceClient>(helper_.get());
   client->UnblockStopWorker();
-  version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                        CreateReceiverOnCurrentThread(&status));
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::UNKNOWN,
+      ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
   base::RunLoop().RunUntilIdle();
 
   // Callback has not completed yet.
@@ -981,8 +1037,9 @@
                           ServiceWorkerVersion::kStartNewWorkerTimeout -
                           base::TimeDelta::FromMinutes(1);
   version_->timeout_timer_.user_task().Run();
-  base::RunLoop().RunUntilIdle();
+  run_loop.Run();
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorTimeout, status.value());
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status());
 }
 
@@ -997,7 +1054,8 @@
 
   // Try to stop the worker.
   bool has_stopped = false;
-  version_->StopWorker(base::BindOnce(&VerifyCalled, &has_stopped));
+  base::RunLoop run_loop;
+  version_->StopWorker(VerifyCalled(&has_stopped, run_loop.QuitClosure()));
   EXPECT_EQ(EmbeddedWorkerStatus::STOPPING, version_->running_status());
   base::RunLoop().RunUntilIdle();
 
@@ -1011,7 +1069,7 @@
                          ServiceWorkerVersion::kStopWorkerTimeout -
                          base::TimeDelta::FromSeconds(1);
   version_->timeout_timer_.user_task().Run();
-  base::RunLoop().RunUntilIdle();
+  run_loop.Run();
   EXPECT_TRUE(has_stopped);
   EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status());
 
@@ -1035,13 +1093,15 @@
 
   // Try to stop the worker.
   bool has_stopped = false;
-  version_->StopWorker(base::BindOnce(&VerifyCalled, &has_stopped));
+  version_->StopWorker(VerifyCalled(&has_stopped));
   EXPECT_EQ(EmbeddedWorkerStatus::STOPPING, version_->running_status());
 
   // Worker is now stalled in stopping. Add a start worker request.
   base::Optional<blink::ServiceWorkerStatusCode> start_status;
-  version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                        CreateReceiverOnCurrentThread(&start_status));
+  base::RunLoop run_loop;
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::UNKNOWN,
+      ReceiveServiceWorkerStatus(&start_status, run_loop.QuitClosure()));
 
   // Simulate timeout. The worker should stop and get restarted.
   EXPECT_TRUE(version_->timeout_timer_.IsRunning());
@@ -1049,7 +1109,7 @@
                          ServiceWorkerVersion::kStopWorkerTimeout -
                          base::TimeDelta::FromSeconds(1);
   version_->timeout_timer_.user_task().Run();
-  base::RunLoop().RunUntilIdle();
+  run_loop.Run();
   EXPECT_TRUE(has_stopped);
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, start_status.value());
 }
@@ -1116,9 +1176,11 @@
       helper_->context()->storage()->NewVersionId(),
       helper_->context()->AsWeakPtr());
   base::Optional<blink::ServiceWorkerStatusCode> status;
-  version->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                       CreateReceiverOnCurrentThread(&status));
-  base::RunLoop().RunUntilIdle();
+  base::RunLoop run_loop;
+  version->StartWorker(
+      ServiceWorkerMetrics::EventType::UNKNOWN,
+      ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
+  run_loop.Run();
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorDisallowed, status.value());
 }
 
@@ -1129,9 +1191,11 @@
 
   // Start the worker before we have a controllee.
   base::Optional<blink::ServiceWorkerStatusCode> status;
-  version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                        CreateReceiverOnCurrentThread(&status));
-  base::RunLoop().RunUntilIdle();
+  base::RunLoop run_loop;
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::UNKNOWN,
+      ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
+  run_loop.Run();
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
   EXPECT_EQ(
       0,
@@ -1165,9 +1229,11 @@
 
   // Start the worker before we have a controllee.
   base::Optional<blink::ServiceWorkerStatusCode> status;
-  version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                        CreateReceiverOnCurrentThread(&status));
-  base::RunLoop().RunUntilIdle();
+  base::RunLoop run_loop;
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::UNKNOWN,
+      ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
+  run_loop.Run();
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
   EXPECT_EQ(
       0,
@@ -1185,6 +1251,60 @@
 }
 
 TEST_F(ServiceWorkerVersionTest,
+       ForegroundServiceWorkerCountUpdatedByControlleeProcessIdChange) {
+  base::test::ScopedFeatureList scoped_list;
+  scoped_list.InitAndEnableFeature(features::kServiceWorkerForegroundPriority);
+
+  // Start the worker before we have a controllee.
+  base::Optional<blink::ServiceWorkerStatusCode> status;
+  base::RunLoop run_loop;
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::UNKNOWN,
+      ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
+  run_loop.Run();
+  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
+  EXPECT_EQ(
+      0,
+      helper_->mock_render_process_host()->foreground_service_worker_count());
+
+  // Add a controllee, but don't begin the navigation commit yet.  This will
+  // cause the client to have an invalid process id like we see in real
+  // navigations.
+  version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
+  registration_->SetActiveVersion(version_);
+  ServiceWorkerRemoteProviderEndpoint remote_endpoint;
+  auto provider_info = blink::mojom::ServiceWorkerProviderInfoForWindow::New();
+  base::WeakPtr<ServiceWorkerProviderHost> host =
+      ServiceWorkerProviderHost::PreCreateNavigationHost(
+          helper_->context()->AsWeakPtr(), true /* is_parent_frame_secure */,
+          base::NullCallback(), &provider_info);
+  remote_endpoint.BindForWindow(std::move(provider_info));
+  host->UpdateUrls(registration_->scope(), registration_->scope());
+  host->SetControllerRegistration(registration_,
+                                  false /* notify_controllerchange */);
+  EXPECT_TRUE(version_->HasControllee());
+  EXPECT_TRUE(host->controller());
+
+  // RenderProcessHost should be notified of foreground worker.
+  base::RunLoop().RunUntilIdle();
+  EXPECT_EQ(
+      1,
+      helper_->mock_render_process_host()->foreground_service_worker_count());
+
+  // Now begin the navigation commit with the same process id used by the
+  // worker. This should cause the worker to stop being considered foreground
+  // priority.
+  host->OnBeginNavigationCommit(version_->embedded_worker()->process_id(),
+                                /* render_frame_id = */ 1);
+
+  // RenderProcessHost should be notified of foreground worker.
+  base::RunLoop().RunUntilIdle();
+  EXPECT_EQ(
+      0,
+      helper_->mock_render_process_host()->foreground_service_worker_count());
+}
+
+TEST_F(ServiceWorkerVersionTest,
        ForegroundServiceWorkerCountUpdatedByWorkerStatus) {
   base::test::ScopedFeatureList scoped_list;
   scoped_list.InitAndEnableFeature(features::kServiceWorkerForegroundPriority);
@@ -1202,9 +1322,11 @@
   // Starting the worker should notify the RenderProcessHost of the foreground
   // worker.
   base::Optional<blink::ServiceWorkerStatusCode> status;
-  version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                        CreateReceiverOnCurrentThread(&status));
-  base::RunLoop().RunUntilIdle();
+  base::RunLoop run_loop;
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::UNKNOWN,
+      ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
+  run_loop.Run();
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
   EXPECT_EQ(
       1,
@@ -1234,9 +1356,11 @@
 
   // Start the worker before we have a controllee.
   base::Optional<blink::ServiceWorkerStatusCode> status;
-  version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                        CreateReceiverOnCurrentThread(&status));
-  base::RunLoop().RunUntilIdle();
+  base::RunLoop run_loop;
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::UNKNOWN,
+      ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
+  run_loop.Run();
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
   EXPECT_EQ(
       0,
@@ -1255,27 +1379,36 @@
 
 TEST_F(ServiceWorkerVersionTest, FailToStart_UseNewRendererProcess) {
   base::Optional<blink::ServiceWorkerStatusCode> status;
+  base::RunLoop run_loop_1;
   ServiceWorkerContextCore* context = helper_->context();
   int64_t id = version_->version_id();
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
 
   // Start once. It should choose the "existing process".
-  version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                        CreateReceiverOnCurrentThread(&status));
-  base::RunLoop().RunUntilIdle();
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::UNKNOWN,
+      ReceiveServiceWorkerStatus(&status, run_loop_1.QuitClosure()));
+  run_loop_1.Run();
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
   EXPECT_EQ(helper_->mock_render_process_id(),
             version_->embedded_worker()->process_id());
-  version_->StopWorker(base::DoNothing());
-  base::RunLoop().RunUntilIdle();
+  {
+    bool has_stopped = false;
+    base::RunLoop run_loop;
+    version_->StopWorker(VerifyCalled(&has_stopped, run_loop.QuitClosure()));
+    run_loop.Run();
+    EXPECT_TRUE(has_stopped);
+  }
 
   // Fail once.
   status.reset();
   helper_->AddPendingInstanceClient(
       std::make_unique<FailStartInstanceClient>(helper_.get()));
-  version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                        CreateReceiverOnCurrentThread(&status));
-  base::RunLoop().RunUntilIdle();
+  base::RunLoop run_loop_2;
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::UNKNOWN,
+      ReceiveServiceWorkerStatus(&status, run_loop_2.QuitClosure()));
+  run_loop_2.Run();
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorStartWorkerFailed,
             status.value());
   EXPECT_EQ(1, context->GetVersionFailureCount(id));
@@ -1284,18 +1417,22 @@
   status.reset();
   helper_->AddPendingInstanceClient(
       std::make_unique<FailStartInstanceClient>(helper_.get()));
-  version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                        CreateReceiverOnCurrentThread(&status));
-  base::RunLoop().RunUntilIdle();
+  base::RunLoop run_loop_3;
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::UNKNOWN,
+      ReceiveServiceWorkerStatus(&status, run_loop_3.QuitClosure()));
+  run_loop_3.Run();
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorStartWorkerFailed,
             status.value());
   EXPECT_EQ(2, context->GetVersionFailureCount(id));
 
   // Succeed. It should choose the "new process".
   status.reset();
-  version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                        CreateReceiverOnCurrentThread(&status));
-  base::RunLoop().RunUntilIdle();
+  base::RunLoop run_loop_4;
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::UNKNOWN,
+      ReceiveServiceWorkerStatus(&status, run_loop_4.QuitClosure()));
+  run_loop_4.Run();
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
   EXPECT_EQ(helper_->new_render_process_id(),
             version_->embedded_worker()->process_id());
@@ -1306,9 +1443,11 @@
   // Start again. It should choose the "existing process" again as we no longer
   // force creation of a new process.
   status.reset();
-  version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
-                        CreateReceiverOnCurrentThread(&status));
-  base::RunLoop().RunUntilIdle();
+  base::RunLoop run_loop_5;
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::UNKNOWN,
+      ReceiveServiceWorkerStatus(&status, run_loop_5.QuitClosure()));
+  run_loop_5.Run();
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
   EXPECT_EQ(helper_->mock_render_process_id(),
             version_->embedded_worker()->process_id());
@@ -1318,12 +1457,15 @@
 
 TEST_F(ServiceWorkerVersionTest, FailToStart_RestartStalledWorker) {
   base::Optional<blink::ServiceWorkerStatusCode> status;
+  base::RunLoop run_loop;
   // Stall in starting.
   auto* client = helper_->AddNewPendingInstanceClient<
       DelayedFakeEmbeddedWorkerInstanceClient>(helper_.get());
   client->UnblockStopWorker();
-  version_->StartWorker(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
-                        CreateReceiverOnCurrentThread(&status));
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
+      ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
+
   base::RunLoop().RunUntilIdle();
   EXPECT_FALSE(status);
 
@@ -1332,8 +1474,8 @@
   // was already consumed, so a default fake instance client will be created,
   // which starts normally.
   bool has_stopped = false;
-  version_->StopWorker(base::BindOnce(&VerifyCalled, &has_stopped));
-  base::RunLoop().RunUntilIdle();
+  version_->StopWorker(VerifyCalled(&has_stopped));
+  run_loop.Run();
 
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
   EXPECT_TRUE(has_stopped);
@@ -1346,15 +1488,18 @@
 
   void StartWorker(ServiceWorkerMetrics::EventType purpose) {
     base::Optional<blink::ServiceWorkerStatusCode> status;
-    version_->StartWorker(purpose, CreateReceiverOnCurrentThread(&status));
-    base::RunLoop().RunUntilIdle();
+    base::RunLoop run_loop;
+    version_->StartWorker(
+        purpose, ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
+    run_loop.Run();
     EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
   }
 
   void StopWorker() {
     bool has_stopped = false;
-    version_->StopWorker(base::BindOnce(&VerifyCalled, &has_stopped));
-    base::RunLoop().RunUntilIdle();
+    base::RunLoop run_loop;
+    version_->StopWorker(VerifyCalled(&has_stopped, run_loop.QuitClosure()));
+    run_loop.Run();
     EXPECT_TRUE(has_stopped);
   }
 
@@ -1399,11 +1544,16 @@
   version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
   base::Optional<blink::ServiceWorkerStatusCode> status1;
   base::Optional<blink::ServiceWorkerStatusCode> status2;
-  version_->StartWorker(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
-                        CreateReceiverOnCurrentThread(&status1));
-  version_->StartWorker(ServiceWorkerMetrics::EventType::NAVIGATION_HINT,
-                        CreateReceiverOnCurrentThread(&status2));
-  base::RunLoop().RunUntilIdle();
+  base::RunLoop run_loop_1;
+  base::RunLoop run_loop_2;
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
+      ReceiveServiceWorkerStatus(&status1, run_loop_1.QuitClosure()));
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::NAVIGATION_HINT,
+      ReceiveServiceWorkerStatus(&status2, run_loop_2.QuitClosure()));
+  run_loop_1.Run();
+  run_loop_2.Run();
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status1.value());
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status2.value());
   StopWorker();
@@ -1412,11 +1562,16 @@
 
   status1.reset();
   status2.reset();
-  version_->StartWorker(ServiceWorkerMetrics::EventType::NAVIGATION_HINT,
-                        CreateReceiverOnCurrentThread(&status2));
-  version_->StartWorker(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
-                        CreateReceiverOnCurrentThread(&status1));
-  base::RunLoop().RunUntilIdle();
+  base::RunLoop run_loop_3;
+  base::RunLoop run_loop_4;
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::NAVIGATION_HINT,
+      ReceiveServiceWorkerStatus(&status2, run_loop_4.QuitClosure()));
+  version_->StartWorker(
+      ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
+      ReceiveServiceWorkerStatus(&status1, run_loop_3.QuitClosure()));
+  run_loop_4.Run();
+  run_loop_3.Run();
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status1.value());
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status2.value());
   SimulateDispatchEvent(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME);
@@ -1430,7 +1585,7 @@
 TEST_F(ServiceWorkerNavigationHintUMATest, StartWhileStopping) {
   StartWorker(ServiceWorkerMetrics::EventType::NAVIGATION_HINT);
   bool has_stopped = false;
-  version_->StopWorker(base::BindOnce(&VerifyCalled, &has_stopped));
+  version_->StopWorker(VerifyCalled(&has_stopped));
   EXPECT_EQ(EmbeddedWorkerStatus::STOPPING, version_->running_status());
   histogram_tester_.ExpectTotalCount(kStartHintPrecision, 0);
 
diff --git a/content/browser/site_per_process_hit_test_browsertest.cc b/content/browser/site_per_process_hit_test_browsertest.cc
index 3f7bf8fb..35f83add22 100644
--- a/content/browser/site_per_process_hit_test_browsertest.cc
+++ b/content/browser/site_per_process_hit_test_browsertest.cc
@@ -2559,15 +2559,22 @@
   SurfaceHitTestTestHelper(shell(), embedded_test_server());
 }
 
+// TODO(https://crbug.com/948372): tests are flaky on ChromeOS and often
+// timeout.
+#if defined(OS_CHROMEOS)
+#define MAYBE_NestedSurfaceHitTestTest DISABLED_NestedSurfaceHitTestTest
+#else
+#define MAYBE_NestedSurfaceHitTestTest NestedSurfaceHitTestTest
+#endif
 // Test that mouse events are being routed to the correct RenderWidgetHostView
 // when there are nested out-of-process iframes.
 IN_PROC_BROWSER_TEST_P(SitePerProcessHitTestBrowserTest,
-                       NestedSurfaceHitTestTest) {
+                       MAYBE_NestedSurfaceHitTestTest) {
   NestedSurfaceHitTestTestHelper(shell(), embedded_test_server());
 }
 
 IN_PROC_BROWSER_TEST_P(SitePerProcessHighDPIHitTestBrowserTest,
-                       NestedSurfaceHitTestTest) {
+                       MAYBE_NestedSurfaceHitTestTest) {
   NestedSurfaceHitTestTestHelper(shell(), embedded_test_server());
 }
 
@@ -5982,7 +5989,7 @@
 }
 
 IN_PROC_BROWSER_TEST_P(SitePerProcessNonIntegerScaleFactorHitTestBrowserTest,
-                       NestedSurfaceHitTestTest) {
+                       MAYBE_NestedSurfaceHitTestTest) {
   NestedSurfaceHitTestTestHelper(shell(), embedded_test_server());
 }
 
diff --git a/content/common/common_param_traits_unittest.cc b/content/common/common_param_traits_unittest.cc
index f7bc924..d1c49e82d 100644
--- a/content/common/common_param_traits_unittest.cc
+++ b/content/common/common_param_traits_unittest.cc
@@ -172,7 +172,6 @@
   in.is_issued_by_known_root = true;
   in.pkp_bypassed = true;
   in.client_cert_sent = true;
-  in.channel_id_sent = true;
   in.handshake_type = net::SSLInfo::HANDSHAKE_FULL;
   const net::SHA256HashValue kCertPublicKeyHashValue = {{0x01, 0x02}};
   in.public_key_hashes.push_back(net::HashValue(kCertPublicKeyHashValue));
@@ -215,7 +214,6 @@
   ASSERT_EQ(in.is_issued_by_known_root, out.is_issued_by_known_root);
   ASSERT_EQ(in.pkp_bypassed, out.pkp_bypassed);
   ASSERT_EQ(in.client_cert_sent, out.client_cert_sent);
-  ASSERT_EQ(in.channel_id_sent, out.channel_id_sent);
   ASSERT_EQ(in.handshake_type, out.handshake_type);
   ASSERT_EQ(in.public_key_hashes, out.public_key_hashes);
   ASSERT_EQ(in.pinning_failure_log, out.pinning_failure_log);
diff --git a/content/common/service_worker/service_worker_types.h b/content/common/service_worker/service_worker_types.h
index 04f5ec5..a279ed1 100644
--- a/content/common/service_worker/service_worker_types.h
+++ b/content/common/service_worker/service_worker_types.h
@@ -54,7 +54,6 @@
 
 // Constants for invalid identifiers.
 static const int kInvalidEmbeddedWorkerThreadId = -1;
-static const int kInvalidServiceWorkerProviderId = -1;
 static const int64_t kInvalidServiceWorkerResourceId = -1;
 
 // The HTTP cache is bypassed for Service Worker scripts if the last network
diff --git a/content/public/browser/web_contents_delegate.cc b/content/public/browser/web_contents_delegate.cc
index f9d422a..b077a21e 100644
--- a/content/public/browser/web_contents_delegate.cc
+++ b/content/public/browser/web_contents_delegate.cc
@@ -76,11 +76,10 @@
   return false;
 }
 
-void WebContentsDelegate::CanDownload(
-    const GURL& url,
-    const std::string& request_method,
-    const base::Callback<void(bool)>& callback) {
-  callback.Run(true);
+void WebContentsDelegate::CanDownload(const GURL& url,
+                                      const std::string& request_method,
+                                      base::OnceCallback<void(bool)> callback) {
+  std::move(callback).Run(true);
 }
 
 bool WebContentsDelegate::HandleContextMenu(RenderFrameHost* render_frame_host,
diff --git a/content/public/browser/web_contents_delegate.h b/content/public/browser/web_contents_delegate.h
index 64edf04..3789137 100644
--- a/content/public/browser/web_contents_delegate.h
+++ b/content/public/browser/web_contents_delegate.h
@@ -243,7 +243,7 @@
   // Invoking the |callback| synchronously is OK.
   virtual void CanDownload(const GURL& url,
                            const std::string& request_method,
-                           const base::Callback<void(bool)>& callback);
+                           base::OnceCallback<void(bool)> callback);
 
   // Returns true if the context menu operation was handled by the delegate.
   virtual bool HandleContextMenu(RenderFrameHost* render_frame_host,
diff --git a/content/public/common/common_param_traits_macros.h b/content/public/common/common_param_traits_macros.h
index 0886144..24bded9 100644
--- a/content/public/common/common_param_traits_macros.h
+++ b/content/public/common/common_param_traits_macros.h
@@ -234,8 +234,8 @@
   IPC_STRUCT_TRAITS_MEMBER(immersive_mode_enabled)
   IPC_STRUCT_TRAITS_MEMBER(css_hex_alpha_color_enabled)
   IPC_STRUCT_TRAITS_MEMBER(scroll_top_left_interop_enabled)
-  IPC_STRUCT_TRAITS_MEMBER(force_dark_mode_enabled)
 #endif  // defined(OS_ANDROID)
+  IPC_STRUCT_TRAITS_MEMBER(force_dark_mode_enabled)
   IPC_STRUCT_TRAITS_MEMBER(default_minimum_page_scale_factor)
   IPC_STRUCT_TRAITS_MEMBER(default_maximum_page_scale_factor)
   IPC_STRUCT_TRAITS_MEMBER(hide_download_ui)
diff --git a/content/public/common/web_preferences.h b/content/public/common/web_preferences.h
index 2e7285fa..a83015f3 100644
--- a/content/public/common/web_preferences.h
+++ b/content/public/common/web_preferences.h
@@ -270,12 +270,13 @@
   // WebView sets this to false to retain old documentElement behaviour
   // (http://crbug.com/761016).
   bool scroll_top_left_interop_enabled;
-  // Enable forcibly modifying content rendering to result in a light on dark
-  // colour scheme.
-  bool force_dark_mode_enabled = false;
 #else  // defined(OS_ANDROID)
 #endif  // defined(OS_ANDROID)
 
+  // Enable forcibly modifying content rendering to result in a light on dark
+  // color scheme.
+  bool force_dark_mode_enabled = false;
+
   // Default (used if the page or UA doesn't override these) values for page
   // scale limits. These are set directly on the WebView so there's no analogue
   // in WebSettings.
diff --git a/content/public/renderer/resource_dispatcher_delegate.h b/content/public/renderer/resource_dispatcher_delegate.h
index 3f192e7..565d2006 100644
--- a/content/public/renderer/resource_dispatcher_delegate.h
+++ b/content/public/renderer/resource_dispatcher_delegate.h
@@ -26,7 +26,6 @@
 
   virtual std::unique_ptr<RequestPeer> OnRequestComplete(
       std::unique_ptr<RequestPeer> current_peer,
-      ResourceType resource_type,
       int error_code) = 0;
 
   // Note that |url|, |referrer| and |method| are the final values (e.g. after
diff --git a/content/renderer/loader/request_extra_data.h b/content/renderer/loader/request_extra_data.h
index 38c20dd..c649fcf 100644
--- a/content/renderer/loader/request_extra_data.h
+++ b/content/renderer/loader/request_extra_data.h
@@ -17,7 +17,6 @@
 #include "content/renderer/loader/web_url_loader_impl.h"
 #include "third_party/blink/public/platform/web_string.h"
 #include "third_party/blink/public/platform/web_url_request.h"
-#include "ui/base/page_transition_types.h"
 
 namespace network {
 struct ResourceRequest;
@@ -33,34 +32,6 @@
   RequestExtraData();
   ~RequestExtraData() override;
 
-  void set_is_preprerendering(bool is_prerendering) {
-    is_prerendering_ = is_prerendering;
-  }
-  void set_render_frame_id(int render_frame_id) {
-    render_frame_id_ = render_frame_id;
-  }
-  void set_is_main_frame(bool is_main_frame) {
-    is_main_frame_ = is_main_frame;
-  }
-  void set_allow_download(bool allow_download) {
-    allow_download_ = allow_download;
-  }
-  ui::PageTransition transition_type() const { return transition_type_; }
-  void set_transition_type(ui::PageTransition transition_type) {
-    transition_type_ = transition_type;
-  }
-  int service_worker_provider_id() const {
-    return service_worker_provider_id_;
-  }
-  void set_service_worker_provider_id(
-      int service_worker_provider_id) {
-    service_worker_provider_id_ = service_worker_provider_id;
-  }
-  // true if the request originated from within a service worker e.g. due to
-  // a fetch() in the service worker script.
-  void set_originated_from_service_worker(bool originated_from_service_worker) {
-    originated_from_service_worker_ = originated_from_service_worker;
-  }
   // |custom_user_agent| is used to communicate an overriding custom user agent
   // to |RenderViewImpl::willSendRequest()|; set to a null string to indicate no
   // override and an empty string to indicate that there should be no user
@@ -84,10 +55,6 @@
     navigation_response_override_ = std::move(response_override);
   }
 
-  void set_initiated_in_secure_context(bool secure) {
-    initiated_in_secure_context_ = secure;
-  }
-
   // The request is for a prefetch-only client (i.e. running NoStatePrefetch)
   // and should use LOAD_PREFETCH network flags.
   bool is_for_no_state_prefetch() const { return is_for_no_state_prefetch_; }
@@ -103,14 +70,6 @@
   void set_block_mixed_plugin_content(bool block_mixed_plugin_content) {
     block_mixed_plugin_content_ = block_mixed_plugin_content;
   }
-
-  // Determines whether SameSite cookies will be attached to the request
-  // even when the request looks cross-site.
-  bool attach_same_site_cookies() const { return attach_same_site_cookies_; }
-  void set_attach_same_site_cookies(bool attach) {
-    attach_same_site_cookies_ = attach;
-  }
-
   std::vector<std::unique_ptr<URLLoaderThrottle>> TakeURLLoaderThrottles() {
     return std::move(url_loader_throttles_);
   }
@@ -118,12 +77,10 @@
       std::vector<std::unique_ptr<URLLoaderThrottle>> throttles) {
     url_loader_throttles_ = std::move(throttles);
   }
-
   void set_frame_request_blocker(
       scoped_refptr<FrameRequestBlocker> frame_request_blocker) {
     frame_request_blocker_ = frame_request_blocker;
   }
-
   scoped_refptr<FrameRequestBlocker> frame_request_blocker() {
     return frame_request_blocker_;
   }
@@ -131,20 +88,11 @@
   void CopyToResourceRequest(network::ResourceRequest* request) const;
 
  private:
-  bool is_prerendering_ = false;
-  int render_frame_id_ = MSG_ROUTING_NONE;
-  bool is_main_frame_ = false;
-  bool allow_download_ = true;
-  ui::PageTransition transition_type_ = ui::PAGE_TRANSITION_LINK;
-  int service_worker_provider_id_ = kInvalidServiceWorkerProviderId;
-  bool originated_from_service_worker_ = false;
   blink::WebString custom_user_agent_;
   std::unique_ptr<NavigationResponseOverrideParameters>
       navigation_response_override_;
-  bool initiated_in_secure_context_ = false;
   bool is_for_no_state_prefetch_ = false;
   bool block_mixed_plugin_content_ = false;
-  bool attach_same_site_cookies_ = false;
   std::vector<std::unique_ptr<URLLoaderThrottle>> url_loader_throttles_;
   scoped_refptr<FrameRequestBlocker> frame_request_blocker_;
 
diff --git a/content/renderer/loader/resource_dispatcher.cc b/content/renderer/loader/resource_dispatcher.cc
index 147d24c..b1f361c9 100644
--- a/content/renderer/loader/resource_dispatcher.cc
+++ b/content/renderer/loader/resource_dispatcher.cc
@@ -284,8 +284,7 @@
 
   if (delegate_) {
     std::unique_ptr<RequestPeer> new_peer = delegate_->OnRequestComplete(
-        std::move(request_info->peer), request_info->resource_type,
-        status.error_code);
+        std::move(request_info->peer), status.error_code);
     DCHECK(new_peer);
     request_info->peer = std::move(new_peer);
   }
diff --git a/content/renderer/loader/resource_dispatcher_unittest.cc b/content/renderer/loader/resource_dispatcher_unittest.cc
index 75e8c99..4a6ccc7 100644
--- a/content/renderer/loader/resource_dispatcher_unittest.cc
+++ b/content/renderer/loader/resource_dispatcher_unittest.cc
@@ -182,7 +182,6 @@
 
   std::unique_ptr<RequestPeer> OnRequestComplete(
       std::unique_ptr<RequestPeer> current_peer,
-      ResourceType resource_type,
       int error_code) override {
     return current_peer;
   }
diff --git a/content/renderer/loader/web_worker_fetch_context_impl.cc b/content/renderer/loader/web_worker_fetch_context_impl.cc
index 55222251..8e2748f2 100644
--- a/content/renderer/loader/web_worker_fetch_context_impl.cc
+++ b/content/renderer/loader/web_worker_fetch_context_impl.cc
@@ -34,6 +34,7 @@
 #include "services/network/public/cpp/wrapper_shared_url_loader_factory.h"
 #include "services/service_manager/public/cpp/connector.h"
 #include "third_party/blink/public/common/features.h"
+#include "third_party/blink/public/common/service_worker/service_worker_types.h"
 #include "third_party/blink/public/mojom/service_worker/service_worker_object.mojom.h"
 #include "third_party/blink/public/mojom/service_worker/service_worker_provider.mojom.h"
 #include "third_party/blink/public/platform/web_security_origin.h"
@@ -197,7 +198,7 @@
     worker_fetch_context->set_client_id(provider_context->client_id());
   } else {
     worker_fetch_context->set_service_worker_provider_id(
-        kInvalidServiceWorkerProviderId);
+        blink::kInvalidServiceWorkerProviderId);
     worker_fetch_context->set_is_controlled_by_service_worker(
         blink::mojom::ControllerServiceWorkerMode::kNoController);
   }
diff --git a/content/renderer/loader/web_worker_fetch_context_impl.h b/content/renderer/loader/web_worker_fetch_context_impl.h
index fda5ed8..f49055e 100644
--- a/content/renderer/loader/web_worker_fetch_context_impl.h
+++ b/content/renderer/loader/web_worker_fetch_context_impl.h
@@ -16,6 +16,7 @@
 #include "services/network/public/cpp/shared_url_loader_factory.h"
 #include "services/network/public/mojom/url_loader_factory.mojom.h"
 #include "services/service_manager/public/cpp/connector.h"
+#include "third_party/blink/public/common/service_worker/service_worker_types.h"
 #include "third_party/blink/public/mojom/appcache/appcache.mojom.h"
 #include "third_party/blink/public/mojom/blob/blob_registry.mojom.h"
 #include "third_party/blink/public/mojom/renderer_preference_watcher.mojom.h"
@@ -200,7 +201,7 @@
   // Consumed on the worker thread to create |fallback_factory_|.
   std::unique_ptr<network::SharedURLLoaderFactoryInfo> fallback_factory_info_;
 
-  int service_worker_provider_id_ = kInvalidServiceWorkerProviderId;
+  int service_worker_provider_id_ = blink::kInvalidServiceWorkerProviderId;
   blink::mojom::ControllerServiceWorkerMode is_controlled_by_service_worker_ =
       blink::mojom::ControllerServiceWorkerMode::kNoController;
 
diff --git a/content/renderer/media/stream/webmediaplayer_ms.cc b/content/renderer/media/stream/webmediaplayer_ms.cc
index f4176200..9e4d209 100644
--- a/content/renderer/media/stream/webmediaplayer_ms.cc
+++ b/content/renderer/media/stream/webmediaplayer_ms.cc
@@ -658,11 +658,11 @@
 
 void WebMediaPlayerMS::SetSinkId(
     const blink::WebString& sink_id,
-    std::unique_ptr<blink::WebSetSinkIdCallbacks> web_callback) {
+    blink::WebSetSinkIdCompleteCallback completion_callback) {
   DVLOG(1) << __func__;
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   media::OutputDeviceStatusCB callback =
-      media::ConvertToOutputDeviceStatusCB(std::move(web_callback));
+      media::ConvertToOutputDeviceStatusCB(std::move(completion_callback));
   if (audio_renderer_) {
     audio_renderer_->SwitchOutputDevice(sink_id.Utf8(), std::move(callback));
   } else {
diff --git a/content/renderer/media/stream/webmediaplayer_ms.h b/content/renderer/media/stream/webmediaplayer_ms.h
index 5ae51d0..3bdda35 100644
--- a/content/renderer/media/stream/webmediaplayer_ms.h
+++ b/content/renderer/media/stream/webmediaplayer_ms.h
@@ -119,7 +119,7 @@
   void OnRequestPictureInPicture() override;
   void SetSinkId(
       const blink::WebString& sink_id,
-      std::unique_ptr<blink::WebSetSinkIdCallbacks> web_callback) override;
+      blink::WebSetSinkIdCompleteCallback completion_callback) override;
   void SetPreload(blink::WebMediaPlayer::Preload preload) override;
   blink::WebTimeRanges Buffered() const override;
   blink::WebTimeRanges Seekable() const override;
diff --git a/content/renderer/media_capture_from_element/html_video_element_capturer_source_unittest.cc b/content/renderer/media_capture_from_element/html_video_element_capturer_source_unittest.cc
index ebfe1f9..69e3a4a6 100644
--- a/content/renderer/media_capture_from_element/html_video_element_capturer_source_unittest.cc
+++ b/content/renderer/media_capture_from_element/html_video_element_capturer_source_unittest.cc
@@ -58,7 +58,7 @@
     return blink::WebTimeRanges();
   }
   void SetSinkId(const blink::WebString& sinkId,
-                 std::unique_ptr<blink::WebSetSinkIdCallbacks>) override {}
+                 blink::WebSetSinkIdCompleteCallback) override {}
   bool HasVideo() const override { return true; }
   bool HasAudio() const override { return false; }
   blink::WebSize NaturalSize() const override { return blink::WebSize(16, 10); }
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 8c53dcd0..cacbf98 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -7308,8 +7308,9 @@
 
 void RenderFrameImpl::CheckIfAudioSinkExistsAndIsAuthorized(
     const blink::WebString& sink_id,
-    std::unique_ptr<blink::WebSetSinkIdCallbacks> callbacks) {
-  std::move(media::ConvertToOutputDeviceStatusCB(std::move(callbacks)))
+    blink::WebSetSinkIdCompleteCallback completion_callback) {
+  std::move(
+      media::ConvertToOutputDeviceStatusCB(std::move(completion_callback)))
       .Run(AudioDeviceFactory::GetOutputDeviceInfo(
                GetRoutingID(), media::AudioSinkParameters(0, sink_id.Utf8()))
                .device_status());
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index f1b29f2..d252198 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -859,7 +859,7 @@
                                  const blink::WebURL& url) override;
   void CheckIfAudioSinkExistsAndIsAuthorized(
       const blink::WebString& sink_id,
-      std::unique_ptr<blink::WebSetSinkIdCallbacks> callbacks) override;
+      blink::WebSetSinkIdCompleteCallback callback) override;
   std::unique_ptr<blink::WebURLLoaderFactory> CreateURLLoaderFactory() override;
   void DraggableRegionsChanged() override;
   // |rect_to_scroll| is with respect to this frame's origin. |rect_to_scroll|
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 3744426..7a450ad 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -895,9 +895,10 @@
   WebRuntimeFeatures::EnableCSSHexAlphaColor(prefs.css_hex_alpha_color_enabled);
   WebRuntimeFeatures::EnableScrollTopLeftInterop(
       prefs.scroll_top_left_interop_enabled);
-  settings->SetForceDarkModeEnabled(prefs.force_dark_mode_enabled);
 #endif  // defined(OS_ANDROID)
 
+  settings->SetForceDarkModeEnabled(prefs.force_dark_mode_enabled);
+
   switch (prefs.autoplay_policy) {
     case AutoplayPolicy::kNoUserGestureRequired:
       settings->SetAutoplayPolicy(
diff --git a/content/renderer/service_worker/service_worker_network_provider_for_frame.cc b/content/renderer/service_worker/service_worker_network_provider_for_frame.cc
index a416fde..09c025ea 100644
--- a/content/renderer/service_worker/service_worker_network_provider_for_frame.cc
+++ b/content/renderer/service_worker/service_worker_network_provider_for_frame.cc
@@ -14,6 +14,7 @@
 #include "content/renderer/render_thread_impl.h"
 #include "content/renderer/service_worker/service_worker_provider_context.h"
 #include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
+#include "third_party/blink/public/common/service_worker/service_worker_types.h"
 #include "third_party/blink/public/common/service_worker/service_worker_utils.h"
 #include "third_party/blink/public/web/web_local_frame.h"
 
@@ -184,7 +185,7 @@
 
 int ServiceWorkerNetworkProviderForFrame::provider_id() const {
   if (!context_)
-    return kInvalidServiceWorkerProviderId;
+    return blink::kInvalidServiceWorkerProviderId;
   return context_->provider_id();
 }
 
diff --git a/content/renderer/worker/service_worker_network_provider_for_worker.cc b/content/renderer/worker/service_worker_network_provider_for_worker.cc
index f2cffab..d3baa45 100644
--- a/content/renderer/worker/service_worker_network_provider_for_worker.cc
+++ b/content/renderer/worker/service_worker_network_provider_for_worker.cc
@@ -15,6 +15,7 @@
 #include "content/renderer/service_worker/service_worker_provider_context.h"
 #include "services/network/public/cpp/features.h"
 #include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
+#include "third_party/blink/public/common/service_worker/service_worker_types.h"
 #include "third_party/blink/public/common/service_worker/service_worker_utils.h"
 #include "third_party/blink/public/mojom/service_worker/service_worker_object.mojom.h"
 
@@ -114,7 +115,7 @@
 
 int ServiceWorkerNetworkProviderForWorker::provider_id() const {
   if (!context_)
-    return kInvalidServiceWorkerProviderId;
+    return blink::kInvalidServiceWorkerProviderId;
   return context_->provider_id();
 }
 
diff --git a/content/shell/test_runner/web_frame_test_client.cc b/content/shell/test_runner/web_frame_test_client.cc
index 3adfc50..1b5dbb1c 100644
--- a/content/shell/test_runner/web_frame_test_client.cc
+++ b/content/shell/test_runner/web_frame_test_client.cc
@@ -589,14 +589,15 @@
 
 void WebFrameTestClient::CheckIfAudioSinkExistsAndIsAuthorized(
     const blink::WebString& sink_id,
-    std::unique_ptr<blink::WebSetSinkIdCallbacks> web_callbacks) {
+    blink::WebSetSinkIdCompleteCallback completion_callback) {
   std::string device_id = sink_id.Utf8();
   if (device_id == "valid" || device_id.empty())
-    web_callbacks->OnSuccess();
+    std::move(completion_callback).Run(/*error =*/base::nullopt);
   else if (device_id == "unauthorized")
-    web_callbacks->OnError(blink::WebSetSinkIdError::kNotAuthorized);
+    std::move(completion_callback)
+        .Run(blink::WebSetSinkIdError::kNotAuthorized);
   else
-    web_callbacks->OnError(blink::WebSetSinkIdError::kNotFound);
+    std::move(completion_callback).Run(blink::WebSetSinkIdError::kNotFound);
 }
 
 void WebFrameTestClient::DidClearWindowObject() {
diff --git a/content/shell/test_runner/web_frame_test_client.h b/content/shell/test_runner/web_frame_test_client.h
index e63022eb..509f0bd 100644
--- a/content/shell/test_runner/web_frame_test_client.h
+++ b/content/shell/test_runner/web_frame_test_client.h
@@ -73,7 +73,7 @@
   void DidReceiveResponse(const blink::WebURLResponse& response) override;
   void CheckIfAudioSinkExistsAndIsAuthorized(
       const blink::WebString& sink_id,
-      std::unique_ptr<blink::WebSetSinkIdCallbacks> web_callbacks) override;
+      blink::WebSetSinkIdCompleteCallback completion_callback) override;
   void DidClearWindowObject() override;
   blink::WebEffectiveConnectionType GetEffectiveConnectionType() override;
 
diff --git a/content/shell/test_runner/web_frame_test_proxy.cc b/content/shell/test_runner/web_frame_test_proxy.cc
index 1ce1b59..9efceb0 100644
--- a/content/shell/test_runner/web_frame_test_proxy.cc
+++ b/content/shell/test_runner/web_frame_test_proxy.cc
@@ -286,9 +286,9 @@
 
 void WebFrameTestProxy::CheckIfAudioSinkExistsAndIsAuthorized(
     const blink::WebString& sink_id,
-    std::unique_ptr<blink::WebSetSinkIdCallbacks> web_callbacks) {
-  test_client_->CheckIfAudioSinkExistsAndIsAuthorized(sink_id,
-                                                      std::move(web_callbacks));
+    blink::WebSetSinkIdCompleteCallback completion_callback) {
+  test_client_->CheckIfAudioSinkExistsAndIsAuthorized(
+      sink_id, std::move(completion_callback));
 }
 
 void WebFrameTestProxy::DidClearWindowObject() {
diff --git a/content/shell/test_runner/web_frame_test_proxy.h b/content/shell/test_runner/web_frame_test_proxy.h
index 9a03b7b..765525e 100644
--- a/content/shell/test_runner/web_frame_test_proxy.h
+++ b/content/shell/test_runner/web_frame_test_proxy.h
@@ -79,7 +79,7 @@
                             bool subtree) override;
   void CheckIfAudioSinkExistsAndIsAuthorized(
       const blink::WebString& sink_id,
-      std::unique_ptr<blink::WebSetSinkIdCallbacks> web_callbacks) override;
+      blink::WebSetSinkIdCompleteCallback completion_callback) override;
   void DidClearWindowObject() override;
 
  private:
diff --git a/content/test/data/accessibility/event/menu-opened-closed-expected-uia-win.txt b/content/test/data/accessibility/event/menu-opened-closed-expected-uia-win.txt
index a68a48f..d0a082b 100644
--- a/content/test/data/accessibility/event/menu-opened-closed-expected-uia-win.txt
+++ b/content/test/data/accessibility/event/menu-opened-closed-expected-uia-win.txt
@@ -1,15 +1,10 @@
-AutomationFocusChanged on role=menu, name=menu
 MenuOpened on role=menu, name=menu
 === Start Continuation ===
-AutomationFocusChanged on role=menu, name=submenu1
 MenuClosed on role=menu, name=menu
 MenuOpened on role=menu, name=submenu1
 === Start Continuation ===
-AutomationFocusChanged on role=document
 MenuClosed on role=menu, name=submenu1
 === Start Continuation ===
-AutomationFocusChanged on role=menu, name=submenu2
 MenuOpened on role=menu, name=submenu2
 === Start Continuation ===
-AutomationFocusChanged on role=menuitem, name=option
 MenuClosed on role=menu, name=submenu2
diff --git a/content/test/data/accessibility/event/menu-opened-closed.html b/content/test/data/accessibility/event/menu-opened-closed.html
index f8bcc29..580128f 100644
--- a/content/test/data/accessibility/event/menu-opened-closed.html
+++ b/content/test/data/accessibility/event/menu-opened-closed.html
@@ -1,3 +1,7 @@
+<!--
+@WIN-DENY:EVENT_OBJECT_FOCUS*
+@UIA-WIN-DENY:AutomationFocusChanged*
+-->
 <!DOCTYPE html>
 <div tabindex="1" id="menu" aria-label="menu" role="menu">
   <div tabindex="2" id="submenu1" aria-label="submenu1" role="menu"></div>
diff --git a/content/test/data/accessibility/event/range-value-is-readonly-changed.html b/content/test/data/accessibility/event/range-value-is-readonly-changed.html
index cf91737..41c6eaa0 100644
--- a/content/test/data/accessibility/event/range-value-is-readonly-changed.html
+++ b/content/test/data/accessibility/event/range-value-is-readonly-changed.html
@@ -1,3 +1,7 @@
+<!--
+@WIN-DENY:EVENT_OBJECT_FOCUS*
+@UIA-WIN-DENY:AutomationFocusChanged*
+-->
 <!DOCTYPE html>
 <input id="range" type="range" min="0" max="10" value="5">
 
diff --git a/content/test/data/accessibility/event/range-value-maximum-changed.html b/content/test/data/accessibility/event/range-value-maximum-changed.html
index 20ebdb7..333e0b9 100644
--- a/content/test/data/accessibility/event/range-value-maximum-changed.html
+++ b/content/test/data/accessibility/event/range-value-maximum-changed.html
@@ -1,3 +1,7 @@
+<!--
+@WIN-DENY:EVENT_OBJECT_FOCUS*
+@UIA-WIN-DENY:AutomationFocusChanged*
+-->
 <!DOCTYPE html>
 <input id="max" type="range" min="0" max="10" value="5">
 <script>
diff --git a/content/test/data/accessibility/event/range-value-minimum-changed.html b/content/test/data/accessibility/event/range-value-minimum-changed.html
index dfa70b2..9aca2ea6 100644
--- a/content/test/data/accessibility/event/range-value-minimum-changed.html
+++ b/content/test/data/accessibility/event/range-value-minimum-changed.html
@@ -1,3 +1,7 @@
+<!--
+@WIN-DENY:EVENT_OBJECT_FOCUS*
+@UIA-WIN-DENY:AutomationFocusChanged*
+-->
 <!DOCTYPE html>
 <input id="min" type="range" min="0" max="10" value="5">
 <script>
diff --git a/content/test/data/accessibility/event/range-value-step-changed.html b/content/test/data/accessibility/event/range-value-step-changed.html
index 8f998e3..9c39d502 100644
--- a/content/test/data/accessibility/event/range-value-step-changed.html
+++ b/content/test/data/accessibility/event/range-value-step-changed.html
@@ -1,3 +1,7 @@
+<!--
+@WIN-DENY:EVENT_OBJECT_FOCUS*
+@UIA-WIN-DENY:AutomationFocusChanged*
+-->
 <!DOCTYPE html>
 <input id="step" type="range" min="0" max="10" value="4" step="4">
 <script>
diff --git a/content/test/data/accessibility/event/range-value-value-changed.html b/content/test/data/accessibility/event/range-value-value-changed.html
index ed9cc6a..48a90b6f 100644
--- a/content/test/data/accessibility/event/range-value-value-changed.html
+++ b/content/test/data/accessibility/event/range-value-value-changed.html
@@ -1,3 +1,7 @@
+<!--
+@WIN-DENY:EVENT_OBJECT_FOCUS*
+@UIA-WIN-DENY:AutomationFocusChanged*
+-->
 <!DOCTYPE html>
 <input id="value" type="range" min="0" max="10" value="1">
 <script>
diff --git a/content/test/data/accessibility/event/text-changed-expected-auralinux.txt b/content/test/data/accessibility/event/text-changed-expected-auralinux.txt
new file mode 100644
index 0000000..6e87438
--- /dev/null
+++ b/content/test/data/accessibility/event/text-changed-expected-auralinux.txt
@@ -0,0 +1,10 @@
+NAME-CHANGED:Modified Heading role=ROLE_TEXT name='Modified Heading' ENABLED,SENSITIVE,SHOWING,VISIBLE
+NAME-CHANGED:Text modified role=ROLE_TEXT name='Text modified' ENABLED,SENSITIVE,SHOWING,VISIBLE
+STATE-CHANGE:DEFUNCT:TRUE role=ROLE_INVALID name='(null)' DEFUNCT
+STATE-CHANGE:DEFUNCT:TRUE role=ROLE_INVALID name='(null)' DEFUNCT
+STATE-CHANGE:DEFUNCT:TRUE role=ROLE_INVALID name='(null)' DEFUNCT
+STATE-CHANGE:DEFUNCT:TRUE role=ROLE_INVALID name='(null)' DEFUNCT
+STATE-CHANGE:DEFUNCT:TRUE role=ROLE_INVALID name='(null)' DEFUNCT
+STATE-CHANGE:DEFUNCT:TRUE role=ROLE_INVALID name='(null)' DEFUNCT
+STATE-CHANGE:DEFUNCT:TRUE role=ROLE_INVALID name='(null)' DEFUNCT
+
diff --git a/content/test/data/accessibility/event/value-is-readonly-changed.html b/content/test/data/accessibility/event/value-is-readonly-changed.html
index b28432a..cddd644 100644
--- a/content/test/data/accessibility/event/value-is-readonly-changed.html
+++ b/content/test/data/accessibility/event/value-is-readonly-changed.html
@@ -1,3 +1,7 @@
+<!--
+@WIN-DENY:EVENT_OBJECT_FOCUS*
+@UIA-WIN-DENY:AutomationFocusChanged*
+-->
 <!DOCTYPE html>
 <input id="text" type="text">
 
diff --git a/content/test/data/accessibility/event/value-value-changed.html b/content/test/data/accessibility/event/value-value-changed.html
index 3a0f7192..e83d32c7 100644
--- a/content/test/data/accessibility/event/value-value-changed.html
+++ b/content/test/data/accessibility/event/value-value-changed.html
@@ -1,3 +1,7 @@
+<!--
+@WIN-DENY:EVENT_OBJECT_FOCUS*
+@UIA-WIN-DENY:AutomationFocusChanged*
+-->
 <!DOCTYPE html>
 <input id="value" type="text" value="something">
 <script>
diff --git a/content/test/data/accessibility/readme.md b/content/test/data/accessibility/readme.md
index 0383f3e..a521df7 100644
--- a/content/test/data/accessibility/readme.md
+++ b/content/test/data/accessibility/readme.md
@@ -2,9 +2,16 @@
 
 Both sets of tests use a similar format for files.
 
-DumpAccessibilityTree tests load an HTML file, wait for it to load, then
-dump the accessibility tree in the "blink" format (the internal data),
-and again in a platform-specific format.
+`DumpAccessibilityTree` tests load an HTML file, wait for it to load, then
+dump the accessibility tree.
+
+Each test is parameterized to run multiple times.  Most platforms dump in the
+"blink" format (the internal data), and again in a "native" (platform-specific)
+format.  The Windows platform has a second native format, "uia", so it runs a
+third time.  The test name indicates which test pass was run, e.g.,
+`DumpAccessibilityTreeTest.TestName/blink`.  (Note: for easier identification,
+the Windows, Mac, Linux, and Android platforms rename the "native" pass to
+"win", "mac", "linux" and "android", respectively.)
 
 The test output is a compact text representation of the accessibility tree
 for that format, and it should be familiar if you're familiar with the
@@ -20,47 +27,49 @@
 expectation file is present, the test passes. Most tests don't have
 expectations on all platforms.
 
-DumpAccessibilityEvent tests use a similar format but dump events fired after
+`DumpAccessibilityEvent` tests use a similar format but dump events fired after
 the document finishes loading. See more on this below.
 
-Compiling and running the tests:
+## Compiling and running the tests:
+```
 ninja -C out/Debug content_browsertests
 out/Debug/content_browsertests --gtest_filter="DumpAccessibility*"
+```
 
-Files used:
+## Files used:
 
-* foo.html -- a file to be tested
-* foo-expected-android.txt -- expected Android AccessibilityNodeInfo output
-* foo-expected-auralinux.txt -- expected Linux ATK output
-* foo-expected-blink.txt -- representation of internal accessibility tree
-* foo-expected-mac.txt -- expected Mac NSAccessibility output
-* foo-expected-win.txt -- expected Win IAccessible/IAccessible2 output
-* foo-expected-uia-win.txt -- expected Win UIA output
-* foo-expected-uia-win7.txt -- expected Win7 UIA output (Version Specific
+* `foo.html` -- a file to be tested
+* `foo-expected-android.txt` -- expected Android AccessibilityNodeInfo output
+* `foo-expected-auralinux.txt` -- expected Linux ATK output
+* `foo-expected-blink.txt` -- representation of internal accessibility tree
+* `foo-expected-mac.txt` -- expected Mac NSAccessibility output
+* `foo-expected-win.txt` -- expected Win IAccessible/IAccessible2 output
+* `foo-expected-uia-win.txt` -- expected Win UIA output
+* `foo-expected-uia-win7.txt` -- expected Win7 UIA output (Version Specific
   Expected File)
 
-Format for expected files:
+## Format for expected files:
 
-* Blank lines and lines beginning with # are ignored
-* Skipped files: if first line of file begins with #<skip then the
+* Blank lines and lines beginning with `#` are ignored
+* Skipped files: if first line of file begins with `#<skip` then the
   test passes. This can be used to indicate desired output with a link
   to a bug, or as a way to temporarily disable a test during refactoring.
 * Use 2 plus signs for indent to show hierarchy
 
-### Version Specific Expected Files
+## Version Specific Expected Files
 
-UIA sometimes differs between windows 7 and later versions of 
+UIA sometimes differs between windows 7 and later versions of
 Windows. To account for these differences, the UIA accessibility
 tree formatter will look for a version specific expected file first:
-`foo-expected-uia-win7.txt`. If the version specific expected file 
+`foo-expected-uia-win7.txt`. If the version specific expected file
 does not exist, the normal expected file will be used instead:
-"`foo-expected-uia-win.txt`". There is no concept of version 
+"`foo-expected-uia-win.txt`". There is no concept of version
 specific filters.
 
-Filters:
+## Filters:
 
 * By default only some attributes of nodes in the accessibility tree, or
-  events fired (when running DumpAccessibilityEvents), are output.
+  events fired (when running `DumpAccessibilityEvents`), are output.
   This is to keep the tests robust and not prone to failure when unrelated
   changes affect the accessibility tree in unimportant ways.
 * Filters contained in the HTML file can be used to control what is output.
@@ -76,22 +85,21 @@
     @AURALINUX-
 ```
 * To dump all attributes while writing or debugging a test, add this filter:
-    @WIN-ALLOW:*
-  (and similarly for other platforms).
+  `@WIN-ALLOW:*` (and similarly for other platforms).
 * Once you know what you want to output, you can use filters to match the
   attributes and attribute values you want included in the output. An
-  ALLOW filter means to include the attribute, and a DENY filter means to
-  exclude it. Filters can contain simple wildcards ('*') only, they're not
+  `ALLOW` filter means to include the attribute, and a `DENY` filter means to
+  exclude it. Filters can contain simple wildcards (`*`) only, they're not
   regular expressions. Examples:
-```
-  - @WIN-ALLOW:name* - this will output the name attribute on Windows
-  - @WIN-ALLOW:name='Foo' - this will only output the name attribute if it
-      exactly matches 'Foo'.
-  - @WIN-DENY:name='X* - this will skip outputting any name that begins with
-      the letter X.
-```
+
+  - `@WIN-ALLOW:name*` - this will output the name attribute on Windows
+  - `@WIN-ALLOW:name='Foo'` - this will only output the name attribute if it
+    exactly matches 'Foo'.
+  - `@WIN-DENY:name='X*` - this will skip outputting any name that begins with
+    the letter X.
+
 * By default empty attributes are skipped. To output the value of an attribute
-  even if it's empty, use @WIN-ALLOW-EMPTY:name, for example, and similarly
+  even if it's empty, use `@WIN-ALLOW-EMPTY:name`, for example, and similarly
   for other platforms.
 
 
@@ -102,71 +110,71 @@
 
 Occasionally you may need to write a dump tree test that makes some changes to
 the document before it runs the test. In that case you can use a special
-@WAIT-FOR: directive. It should be in an HTML comment, just like
-@ALLOW-WIN: directives. The WAIT-FOR directive just specifies a text substring
-that should be present in the dump when the document is ready. The system
-will keep blocking until that text appears.
+`@WAIT-FOR:` directive. It should be in an HTML comment, just like
+`@ALLOW-WIN:` directives. The `WAIT-FOR` directive just specifies a text
+substring that should be present in the dump when the document is ready. The
+system will keep blocking until that text appears.
 
-You can add as many @WAIT-FOR: directives as you want, the test won't finish
+You can add as many `@WAIT-FOR:` directives as you want, the test won't finish
 until all strings appear.
 
 Or, you may need to write an event test that keeps dumping events until a
-specific event line. In this case, use @RUN-UNTIL-EVENT with a substring that
-should occur in the event log, e.g. @RUN-UNTIL-EVENT:IA2_EVENT_TEXT_CARET_MOVED.
-Note that @RUN-UNTIL-EVENT is only used in dump events tests, and not used in
-dump tree tests.
+specific event line. In this case, use `@RUN-UNTIL-EVENT` with a substring that
+should occur in the event log, e.g.,
+`@RUN-UNTIL-EVENT:IA2_EVENT_TEXT_CARET_MOVED`. Note that `@RUN-UNTIL-EVENT` is
+only used in dump events tests, and not used in dump tree tests.
 
-If you add multiple @RUN-UNTIL-EVENT directives, the test will finish once any
+If you add multiple `@RUN-UNTIL-EVENT` directives, the test will finish once any
 of them are satisfied. Note that any other events that come along with the last
 event will also be logged.
 
 To skip dumping a particular element, make its accessible name equal to
-@NO_DUMP, for example <div aria-label="@NO_DUMP"></div>.
+`@NO_DUMP`, for example `<div aria-label="@NO_DUMP"></div>`.
 
 To skip dumping all children of a particular element, make its accessible
-name equal to @NO_CHILDREN_DUMP, for example
-<div aria-label="@NO_CHILDREN_DUMP"></div>.
+name equal to `@NO_CHILDREN_DUMP`, for example
+`<div aria-label="@NO_CHILDREN_DUMP"></div>`.
 
 To load an iframe from a different site, forcing it into a different process,
-use /cross-site/HOSTNAME/ in the url, for example:
-  <iframe src="cross-site/1.com/accessibility/html/frame.html"></iframe>
+use `/cross-site/HOSTNAME/` in the url, for example:
+`<iframe src="cross-site/1.com/accessibility/html/frame.html"></iframe>`
 
 ## Generating expectations and rebaselining:
 
 If you want to populate the expectation file directly rather than typing it
 or copying-and-pasting it, first make sure the file exists (it can be empty),
-then run the test with the --generate-accessibility-test-expectations
+then run the test with the `--generate-accessibility-test-expectations`
 argument, for example:
-
+```
   out/Debug/content_browsertests \
     --generate-accessibility-test-expectations
-    --gtest_filter="DumpAccessibilityTreeTest.AccessibilityAriaAtomic"
-
-This will replace the -expected-*.txt file with the current output. It's
+    --gtest_filter="DumpAccessibilityTreeTest.AccessibilityAriaAtomic/*"
+```
+This will replace the `-expected-*.txt` file with the current output. It's
 a great way to rebaseline a bunch of tests after making a change. Please
 manually check the diff, of course!
 
 ## Adding a new test:
 
-If you are adding a new test file remember to add a corresponding test case in
-content/browser/accessibility/dump_accessibility_events_browsertest.cc
-or
-content/browser/accessibility/dump_accessibility_tree_browsertest.cc
+If you are adding a new test file remember to add a corresponding test case in:
+* `content/browser/accessibility/dump_accessibility_events_browsertest.cc`; or
+* `content/browser/accessibility/dump_accessibility_tree_browsertest.cc`
 
-More details on DumpAccessibilityEvents tests:
+## More details on DumpAccessibilityEvents tests:
 
-These tests are similar to DumpAccessibilityTree tests in that they first
+These tests are similar to `DumpAccessibilityTree` tests in that they first
 load an HTML document, then dump something, then compare the output to
 an expectation file. The difference is that what's dumped is accessibility
 events that are fired.
 
 To write a test for accessibility events, your document must contain a
-JavaScript function called go(). This function will be called when the document
-is loaded (or when the @WAIT_FOR directive passes), and any subsequent
-events will be dumped. Filters apply to events just like in tree dumps.
+JavaScript function called `go()`. This function will be called when the
+document is loaded (or when the `@WAIT_FOR` directive passes), and any
+subsequent events will be dumped. Filters apply to events just like in tree
+dumps.
 
-After calling go(), the system asks the page to generate a sentinel
+After calling `go()`, the system asks the page to generate a sentinel
 accessibility event - one you're unlikely to generate in your test. It uses
 that event to know when to "stop" dumping events. There isn't currently a
 way to test events that occur after some delay, just ones that happen as
-a direct result of calling go().
+a direct result of calling `go()`.
diff --git a/content/test/gpu/gpu_tests/gpu_process_expectations.py b/content/test/gpu/gpu_tests/gpu_process_expectations.py
deleted file mode 100644
index 4540c4a5..0000000
--- a/content/test/gpu/gpu_tests/gpu_process_expectations.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright 2013 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-from gpu_tests.gpu_test_expectations import GpuTestExpectations
-
-# See the GpuTestExpectations class for documentation.
-
-class GpuProcessExpectations(GpuTestExpectations):
-  def SetExpectations(self):
-    self.Fail('GpuProcess_video', ['linux'], bug=257109)
-
-    # Seems to have become flaky on Windows recently.
-    self.Flaky('GpuProcess_one_extra_workaround', ['win'], bug=700522)
diff --git a/content/test/gpu/gpu_tests/gpu_process_integration_test.py b/content/test/gpu/gpu_tests/gpu_process_integration_test.py
index c832d31..dafdb88 100644
--- a/content/test/gpu/gpu_tests/gpu_process_integration_test.py
+++ b/content/test/gpu/gpu_tests/gpu_process_integration_test.py
@@ -6,7 +6,6 @@
 import sys
 
 from gpu_tests import gpu_integration_test
-from gpu_tests import gpu_process_expectations
 from gpu_tests import path_util
 
 data_path = os.path.join(
@@ -61,7 +60,7 @@
 
   @classmethod
   def _CreateExpectations(cls):
-    return gpu_process_expectations.GpuProcessExpectations()
+    raise NotImplementedError
 
   @classmethod
   def GenerateGpuTests(cls, options):
@@ -487,6 +486,13 @@
     ])
     self._NavigateAndWait(test_path)
 
+  @classmethod
+  def ExpectationsFiles(cls):
+    return [
+        os.path.join(os.path.dirname(os.path.abspath(__file__)),
+                     'test_expectations',
+                     'gpu_process_expectations.txt')]
+
 def load_tests(loader, tests, pattern):
   del loader, tests, pattern  # Unused.
   return gpu_integration_test.LoadAllTestsInModule(sys.modules[__name__])
diff --git a/content/test/gpu/gpu_tests/hardware_accelerated_feature_expectations.py b/content/test/gpu/gpu_tests/hardware_accelerated_feature_expectations.py
deleted file mode 100644
index 14df8e7f..0000000
--- a/content/test/gpu/gpu_tests/hardware_accelerated_feature_expectations.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2013 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-from gpu_tests.gpu_test_expectations import GpuTestExpectations
-
-# See the GpuTestExpectations class for documentation.
-
-class HardwareAcceleratedFeatureExpectations(GpuTestExpectations):
-  def SetExpectations(self):
-    # Accelerated 2D canvas is not available on Linux due to driver instability
-    self.Fail('HardwareAcceleratedFeature_canvas_accelerated',
-        ['linux'], bug=254724)
-    self.Fail('HardwareAcceleratedFeature_canvas_accelerated',
-        ['highsierra', 'nvidia'], bug=777590)
diff --git a/content/test/gpu/gpu_tests/hardware_accelerated_feature_integration_test.py b/content/test/gpu/gpu_tests/hardware_accelerated_feature_integration_test.py
index 3452432..f9977c4 100644
--- a/content/test/gpu/gpu_tests/hardware_accelerated_feature_integration_test.py
+++ b/content/test/gpu/gpu_tests/hardware_accelerated_feature_integration_test.py
@@ -3,9 +3,9 @@
 # found in the LICENSE file.
 
 import sys
+import os
 
 from gpu_tests import gpu_integration_test
-import gpu_tests.hardware_accelerated_feature_expectations as hw_expectations
 
 test_harness_script = r"""
   function VerifyHardwareAccelerated(feature) {
@@ -45,7 +45,7 @@
 
   @classmethod
   def _CreateExpectations(cls):
-    return hw_expectations.HardwareAcceleratedFeatureExpectations()
+    raise NotImplementedError
 
   def _Navigate(self, url):
     # It's crucial to use the action_runner, rather than the tab's
@@ -74,6 +74,13 @@
       print tab.EvaluateJavaScript('document.body.innerHTML')
       self.fail('%s not hardware accelerated' % feature)
 
+  @classmethod
+  def ExpectationsFiles(cls):
+    return [
+        os.path.join(os.path.dirname(os.path.abspath(__file__)),
+                     'test_expectations',
+                     'hardware_accelerated_feature_expectations.txt')]
+
 def load_tests(loader, tests, pattern):
   del loader, tests, pattern  # Unused.
   return gpu_integration_test.LoadAllTestsInModule(sys.modules[__name__])
diff --git a/content/test/gpu/gpu_tests/screenshot_sync_expectations.py b/content/test/gpu/gpu_tests/screenshot_sync_expectations.py
deleted file mode 100644
index ef03913b..0000000
--- a/content/test/gpu/gpu_tests/screenshot_sync_expectations.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-from gpu_tests.gpu_test_expectations import GpuTestExpectations
-
-# See the GpuTestExpectations class for documentation.
-
-class ScreenshotSyncExpectations(GpuTestExpectations):
-  def __init__(self, *args, **kwargs):
-    super(ScreenshotSyncExpectations, self).__init__(*args, **kwargs)
-
-  def SetExpectations(self):
-    self.Flaky('ScreenshotSync_GPURasterWithCanvas', ['win', 'amd'],
-               bug=599776)
-    self.Flaky('ScreenshotSync_GPURasterWithCanvas', ['mac', 'intel'],
-               bug=599776)
-    self.Flaky('ScreenshotSync_GPURasterWithDivs', ['mac', 'intel'],
-               bug=599776)
-    self.Fail('ScreenshotSync_GPURasterWithDivs', ['win', ('amd', 0x6613)],
-               bug=639489)
-    # TODO(kbr): flakily timing out on this configuration.
-    self.Flaky('*', ['linux', 'intel', 'debug'], bug=648369)
diff --git a/content/test/gpu/gpu_tests/screenshot_sync_integration_test.py b/content/test/gpu/gpu_tests/screenshot_sync_integration_test.py
index ddc8941..100412f 100644
--- a/content/test/gpu/gpu_tests/screenshot_sync_integration_test.py
+++ b/content/test/gpu/gpu_tests/screenshot_sync_integration_test.py
@@ -10,7 +10,6 @@
 from gpu_tests import color_profile_manager
 from gpu_tests import gpu_integration_test
 from gpu_tests import path_util
-from gpu_tests import screenshot_sync_expectations
 
 from telemetry.util import image_util
 from telemetry.util import rgba_color
@@ -74,7 +73,7 @@
 
   @classmethod
   def _CreateExpectations(cls):
-    return screenshot_sync_expectations.ScreenshotSyncExpectations()
+    raise NotImplementedError
 
   @classmethod
   def GenerateGpuTests(cls, options):
@@ -145,6 +144,13 @@
     for _ in range(0, repetitions):
       self._CheckScreenshot()
 
+  @classmethod
+  def ExpectationsFiles(cls):
+    return [
+        os.path.join(os.path.dirname(os.path.abspath(__file__)),
+                     'test_expectations',
+                     'screenshot_sync_expectations.txt')]
+
 def load_tests(loader, tests, pattern):
   del loader, tests, pattern  # Unused.
   return gpu_integration_test.LoadAllTestsInModule(sys.modules[__name__])
diff --git a/content/test/gpu/gpu_tests/test_expectations/gpu_process_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/gpu_process_expectations.txt
new file mode 100644
index 0000000..15e4736
--- /dev/null
+++ b/content/test/gpu/gpu_tests/test_expectations/gpu_process_expectations.txt
@@ -0,0 +1,7 @@
+# tags: [ linux win ]
+
+crbug.com/257109 [ linux ] GpuProcess_video [ Failure ]
+
+# Seems to have become flaky on Windows recently.
+crbug.com/700522 [ win ] GpuProcess_one_extra_workaround [ RetryOnFailure ]
+
diff --git a/content/test/gpu/gpu_tests/test_expectations/hardware_accelerated_feature_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/hardware_accelerated_feature_expectations.txt
new file mode 100644
index 0000000..78d9321
--- /dev/null
+++ b/content/test/gpu/gpu_tests/test_expectations/hardware_accelerated_feature_expectations.txt
@@ -0,0 +1,8 @@
+# tags: [ highsierra linux ]
+# tags: [ nvidia ]
+
+# Accelerated 2D canvas is not available on Linux due to driver instability
+crbug.com/254724 [ linux ] HardwareAcceleratedFeature_canvas_accelerated [ Failure ]
+
+crbug.com/777590 [ highsierra nvidia ] HardwareAcceleratedFeature_canvas_accelerated [ Failure ]
+
diff --git a/content/test/gpu/gpu_tests/test_expectations/screenshot_sync_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/screenshot_sync_expectations.txt
new file mode 100644
index 0000000..0ca4369
--- /dev/null
+++ b/content/test/gpu/gpu_tests/test_expectations/screenshot_sync_expectations.txt
@@ -0,0 +1,11 @@
+# tags: [ linux mac win ]
+# tags: [ debug ]
+# tags: [ amd amd-0x6613 intel ]
+
+crbug.com/599776 [ win amd ] ScreenshotSync_GPURasterWithCanvas [ RetryOnFailure ]
+crbug.com/599776 [ mac intel ] ScreenshotSync_GPURasterWithCanvas [ RetryOnFailure ]
+crbug.com/599776 [ mac intel ] ScreenshotSync_GPURasterWithDivs [ RetryOnFailure ]
+crbug.com/639489 [ win amd-0x6613 ] ScreenshotSync_GPURasterWithDivs [ Failure ]
+
+# TODO(kbr): flakily timing out on this configuration.
+crbug.com/648369 [ linux debug intel ] * [ RetryOnFailure ]
diff --git a/content/test/gpu/gpu_tests/test_expectations/trace_test_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/trace_test_expectations.txt
new file mode 100644
index 0000000..6e8c2e8
--- /dev/null
+++ b/content/test/gpu/gpu_tests/test_expectations/trace_test_expectations.txt
@@ -0,0 +1,32 @@
+# tags: [ android chromeos linux mac win win10 win7 ]
+# tags: [ debug ]
+# tags: [ intel nvidia ]
+
+ # TODO(kbr): flakily timing out on this configuration.
+crbug.com/648369 [ linux debug intel ] TraceTest_* [ RetryOnFailure ]
+
+# Device traces are not supported on all machines.
+DeviceTraceTest_* [ Skip ]
+
+# We do not have software H.264 decoding on Android, so it can't survive a
+# context loss which results in hardware decoder loss.
+crbug.com/580386 [ android ] TraceTest_Video_Context_Loss_MP4 [ Skip ]
+crbug.com/580386 [ android ] DeviceTraceTest_Video_Context_Loss_MP4 [ Skip ]
+
+# Skip on platforms where DirectComposition isn't supported
+crbug.com/867136 [ mac ] VideoPathTraceTest_* [ Skip ]
+crbug.com/867136 [ linux ] VideoPathTraceTest_* [ Skip ]
+crbug.com/867136 [ android ] VideoPathTraceTest_* [ Skip ]
+crbug.com/867136 [ chromeos ] VideoPathTraceTest_* [ Skip ]
+crbug.com/867136 [ win7 ] VideoPathTraceTest_* [ Skip ]
+crbug.com/867136 [ mac ] OverlayModeTraceTest_* [ Skip ]
+crbug.com/867136 [ linux ] OverlayModeTraceTest_* [ Skip ]
+crbug.com/867136 [ android ] OverlayModeTraceTest_* [ Skip ]
+crbug.com/867136 [ chromeos ] OverlayModeTraceTest_* [ Skip ]
+crbug.com/867136 [ win7 ] OverlayModeTraceTest_* [ Skip ]
+
+# VP9 videos fail to trigger zero copy video presentation path.
+crbug.com/930343 [ win intel ] VideoPathTraceTest_DirectComposition_Video_VP9_Fullsize [ Failure ]
+
+# Complex overlays test is flaky on Nvidia probably due to its small size.
+crbug.com/937545 [ win10 nvidia ] VideoPathTraceTest_DirectComposition_ComplexOverlays [ RetryOnFailure ]
diff --git a/content/test/gpu/gpu_tests/trace_integration_test.py b/content/test/gpu/gpu_tests/trace_integration_test.py
index 440d7a9..24824658 100644
--- a/content/test/gpu/gpu_tests/trace_integration_test.py
+++ b/content/test/gpu/gpu_tests/trace_integration_test.py
@@ -8,7 +8,6 @@
 from gpu_tests import gpu_integration_test
 from gpu_tests import path_util
 from gpu_tests import pixel_test_pages
-from gpu_tests import trace_test_expectations
 
 from telemetry.timeline import model as model_module
 from telemetry.timeline import tracing_config
@@ -185,7 +184,7 @@
 
   @classmethod
   def _CreateExpectations(cls):
-    return trace_test_expectations.TraceTestExpectations()
+    raise NotImplementedError
 
   @classmethod
   def SetUpProcess(cls):
@@ -376,6 +375,13 @@
           TraceIntegrationTest._SwapChainPresentationModeListToStr(
               presentation_mode_history))
 
+  @classmethod
+  def ExpectationsFiles(cls):
+    return [
+        os.path.join(os.path.dirname(os.path.abspath(__file__)),
+                     'test_expectations',
+                     'trace_test_expectations.txt')]
+
 
 def load_tests(loader, tests, pattern):
   del loader, tests, pattern  # Unused.
diff --git a/content/test/gpu/gpu_tests/trace_test_expectations.py b/content/test/gpu/gpu_tests/trace_test_expectations.py
deleted file mode 100644
index 4d7129dd..0000000
--- a/content/test/gpu/gpu_tests/trace_test_expectations.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2015 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-from gpu_tests.gpu_test_expectations import GpuTestExpectations
-
-# See the GpuTestExpectations class for documentation.
-
-class TraceTestExpectations(GpuTestExpectations):
-  def SetExpectations(self):
-    # Sample Usage:
-    # self.Fail('trace_test.Canvas2DRedBox',
-    #     ['mac', 'amd', ('nvidia', 0x1234)], bug=123)
-    # TODO(kbr): flakily timing out on this configuration.
-    self.Flaky('TraceTest_*', ['linux', 'intel', 'debug'], bug=648369)
-
-    # Device traces are not supported on all machines.
-    self.Skip('DeviceTraceTest_*')
-
-    # We do not have software H.264 decoding on Android, so it can't survive a
-    # context loss which results in hardware decoder loss.
-    self.Skip('*_Video_Context_Loss_MP4', ['android'], bug=580386)
-
-    # Skip on platforms where DirectComposition isn't supported
-    self.Skip('VideoPathTraceTest_*',
-        ['mac', 'linux', 'android', 'chromeos', 'win7'], bug=867136)
-    self.Skip('OverlayModeTraceTest_*',
-        ['mac', 'linux', 'android', 'chromeos', 'win7'], bug=867136)
-
-    # VP9 videos fail to trigger zero copy video presentation path.
-    self.Fail('VideoPathTraceTest_DirectComposition_Video_VP9_Fullsize',
-        ['win', 'intel'], bug=930343)
-
-    # Complex overlays test is flaky on Nvidia probably due to its small size.
-    self.Flaky('VideoPathTraceTest_DirectComposition_ComplexOverlays',
-        ['win10', 'nvidia'], bug=937545)
-
diff --git a/content/test/gpu/gpu_tests/webgl_conformance_integration_test.py b/content/test/gpu/gpu_tests/webgl_conformance_integration_test.py
index f779417..bd14ab3 100644
--- a/content/test/gpu/gpu_tests/webgl_conformance_integration_test.py
+++ b/content/test/gpu/gpu_tests/webgl_conformance_integration_test.py
@@ -171,6 +171,7 @@
         'WEBGL_lose_context',
         'WEBGL_multi_draw',
         'WEBGL_multi_draw_instanced',
+        'WEBGL_video_texture',
       ]
     else:
       return [
@@ -192,6 +193,7 @@
         'WEBGL_multi_draw',
         'WEBGL_multi_draw_instanced',
         'WEBGL_multiview',
+        'WEBGL_video_texture',
       ]
 
   def RunActualGpuTest(self, test_path, *args):
diff --git a/device/vr/windows/compositor_base.cc b/device/vr/windows/compositor_base.cc
index 1a714ab0..d4e0807 100644
--- a/device/vr/windows/compositor_base.cc
+++ b/device/vr/windows/compositor_base.cc
@@ -64,10 +64,6 @@
     // frame, we allow the renderer to receive poses.
     std::move(delayed_get_frame_data_callback_).Run();
   }
-
-  if (delayed_overlay_get_frame_data_callback_ && overlay_visible_) {
-    std::move(delayed_overlay_get_frame_data_callback_).Run();
-  }
 }
 
 void XRCompositorCommon::SubmitFrameMissing(int16_t frame_index,
@@ -250,7 +246,6 @@
 
   // Kill outstanding overlays:
   overlay_visible_ = false;
-  delayed_overlay_get_frame_data_callback_.Reset();
   overlay_binding_.Close();
 
   texture_helper_.SetSourceAndOverlayVisible(false, false);
@@ -402,16 +397,6 @@
   DCHECK(overlay_visible_);
   TRACE_EVENT_INSTANT0("xr", "RequestOverlayPose", TRACE_EVENT_SCOPE_THREAD);
 
-  // If we've already given out a pose for the current frame delay giving out a
-  // pose until the next frame we are visible.
-  if (pending_frame_ && pending_frame_->overlay_has_pose_) {
-    DCHECK(!delayed_overlay_get_frame_data_callback_);
-    delayed_overlay_get_frame_data_callback_ =
-        base::BindOnce(&XRCompositorCommon::RequestNextOverlayPose,
-                       base::Unretained(this), std::move(callback));
-    return;
-  }
-
   // Ensure we have a pending frame.
   StartPendingFrame();
   pending_frame_->overlay_has_pose_ = true;
diff --git a/device/vr/windows/compositor_base.h b/device/vr/windows/compositor_base.h
index 49fa920..e19a071b 100644
--- a/device/vr/windows/compositor_base.h
+++ b/device/vr/windows/compositor_base.h
@@ -150,7 +150,6 @@
   bool webxr_visible_ = true;   // The browser may hide a presenting session.
   bool overlay_visible_ = false;
   base::OnceCallback<void()> delayed_get_frame_data_callback_;
-  base::OnceCallback<void()> delayed_overlay_get_frame_data_callback_;
 
   gfx::RectF left_webxr_bounds_;
   gfx::RectF right_webxr_bounds_;
diff --git a/device/vr/windows_mixed_reality/mixed_reality_renderloop.cc b/device/vr/windows_mixed_reality/mixed_reality_renderloop.cc
index a2f1dc1..2fb65b26 100644
--- a/device/vr/windows_mixed_reality/mixed_reality_renderloop.cc
+++ b/device/vr/windows_mixed_reality/mixed_reality_renderloop.cc
@@ -271,6 +271,8 @@
   holographic_space_ = nullptr;
   origin_ = nullptr;
   stage_origin_ = nullptr;
+  last_origin_from_attached_ = base::nullopt;
+  attached_ = nullptr;
 
   holographic_frame_ = nullptr;
   timestamp_ = nullptr;
@@ -309,6 +311,12 @@
   if (FAILED(hr))
     return;
 
+  if (!attached_) {
+    hr = locator->CreateAttachedFrameOfReferenceAtCurrentHeading(&attached_);
+    if (FAILED(hr))
+      return;
+  }
+
   ComPtr<ISpatialStationaryFrameOfReference> stationary_frame;
   hr = locator->CreateStationaryFrameOfReferenceAtCurrentLocation(
       &stationary_frame);
@@ -320,9 +328,6 @@
   hr = stationary_frame->get_CoordinateSystem(&origin_);
   if (FAILED(hr))
     return;
-
-  // TODO(billorr): Consider adding support for using an attached frame for
-  // orientation-only experiences.
 }
 
 void MixedRealityRenderLoop::InitializeStageOrigin() {
@@ -353,6 +358,8 @@
 void MixedRealityRenderLoop::OnSessionStart() {
   // Each session should start with new origins.
   origin_ = nullptr;
+  attached_ = nullptr;
+  last_origin_from_attached_ = base::nullopt;
   InitializeOrigin();
 
   stage_origin_ = nullptr;
@@ -717,7 +724,7 @@
   mojom::XRFrameDataPtr ret =
       CreateDefaultFrameData(timestamp_, next_frame_id_);
 
-  if (!origin_ || !pose_) {
+  if ((!attached_ && !origin_) || !pose_) {
     TRACE_EVENT_INSTANT0("xr", "No origin or no pose",
                          TRACE_EVENT_SCOPE_THREAD);
     // If we don't have an origin or pose for this frame, we can still give out
@@ -725,23 +732,44 @@
     return ret;
   }
 
+  ComPtr<ISpatialCoordinateSystem> attached_coordinates;
+  HRESULT hr = attached_->GetStationaryCoordinateSystemAtTimestamp(
+      timestamp_.Get(), &attached_coordinates);
+  if (FAILED(hr))
+    return ret;
+
   Microsoft::WRL::ComPtr<ABI::Windows::Foundation::IReference<
       ABI::Windows::Graphics::Holographic::HolographicStereoTransform>>
       view_ref;
-  HRESULT hr = pose_->TryGetViewTransform(origin_.Get(), &view_ref);
-  if (FAILED(hr) || !view_ref) {
-    // If we can't locate origin_, throw it away and try to get a new origin
-    // next frame.
-    // TODO(billorr): Try to keep the origin working over multiple frames, doing
-    // some transform work.
-    TRACE_EVENT_INSTANT0("xr", "Failed to locate origin",
-                         TRACE_EVENT_SCOPE_THREAD);
-    origin_ = nullptr;
-
-    // TODO(https://crbug.com/945408): Determine whether StageOrigin should only
-    // be nulled out when we get the changed event.
-    stage_origin_ = nullptr;
-    return ret;
+  if (origin_ &&
+      SUCCEEDED(pose_->TryGetViewTransform(origin_.Get(), &view_ref)) &&
+      view_ref) {
+    // TODO(http://crbug.com/931393): Send down emulated_position_, and report
+    // reset events when this changes.
+    emulated_position_ = false;
+    ComPtr<IReference<ABI::Windows::Foundation::Numerics::Matrix4x4>>
+        attached_to_origin_ref;
+    hr = attached_coordinates->TryGetTransformTo(origin_.Get(),
+                                                 &attached_to_origin_ref);
+    if (SUCCEEDED(hr) && attached_to_origin_ref) {
+      ABI::Windows::Foundation::Numerics::Matrix4x4 transform;
+      hr = attached_to_origin_ref->get_Value(&transform);
+      DCHECK(SUCCEEDED(hr));
+      last_origin_from_attached_ = gfx::Transform(
+          transform.M11, transform.M21, transform.M31, transform.M41,
+          transform.M12, transform.M22, transform.M32, transform.M42,
+          transform.M13, transform.M23, transform.M33, transform.M43,
+          transform.M14, transform.M24, transform.M34, transform.M44);
+    }
+  } else {
+    emulated_position_ = true;
+    if (FAILED(pose_->TryGetViewTransform(attached_coordinates.Get(),
+                                          &view_ref)) ||
+        !view_ref) {
+      TRACE_EVENT_INSTANT0("xr", "Failed to locate origin",
+                           TRACE_EVENT_SCOPE_THREAD);
+      return ret;
+    }
   }
 
   ABI::Windows::Graphics::Holographic::HolographicStereoTransform view;
@@ -802,6 +830,33 @@
 
   ret->pose->input_state = input_helper_->GetInputState(origin_, timestamp_);
 
+  if (emulated_position_ && last_origin_from_attached_) {
+    gfx::DecomposedTransform attached_from_view_decomp;
+    attached_from_view_decomp.quaternion = gfx::Quaternion(
+        (*ret->pose->orientation)[0], (*ret->pose->orientation)[1],
+        (*ret->pose->orientation)[2], (*ret->pose->orientation)[3]);
+    for (int i = 0; i < 3; ++i) {
+      attached_from_view_decomp.translate[i] = (*ret->pose->position)[i];
+    }
+    gfx::Transform attached_from_view =
+        gfx::ComposeTransform(attached_from_view_decomp);
+    gfx::Transform origin_from_view =
+        (*last_origin_from_attached_) * attached_from_view;
+    gfx::DecomposedTransform origin_from_view_decomposed;
+    bool success =
+        gfx::DecomposeTransform(&origin_from_view_decomposed, origin_from_view);
+    DCHECK(success);
+    ret->pose->orientation = std::vector<float>{
+        static_cast<float>(origin_from_view_decomposed.quaternion.x()),
+        static_cast<float>(origin_from_view_decomposed.quaternion.y()),
+        static_cast<float>(origin_from_view_decomposed.quaternion.z()),
+        static_cast<float>(origin_from_view_decomposed.quaternion.w())};
+    ret->pose->position = std::vector<float>{
+        static_cast<float>(origin_from_view_decomposed.translate[0]),
+        static_cast<float>(origin_from_view_decomposed.translate[1]),
+        static_cast<float>(origin_from_view_decomposed.translate[2])};
+  }
+
   return ret;
 }
 
diff --git a/device/vr/windows_mixed_reality/mixed_reality_renderloop.h b/device/vr/windows_mixed_reality/mixed_reality_renderloop.h
index 2d7d30c..9eb8dd5 100644
--- a/device/vr/windows_mixed_reality/mixed_reality_renderloop.h
+++ b/device/vr/windows_mixed_reality/mixed_reality_renderloop.h
@@ -78,6 +78,12 @@
       ABI::Windows::Perception::Spatial::ISpatialCoordinateSystem>
       stage_origin_;
   bool stage_transform_needs_updating_ = false;
+  Microsoft::WRL::ComPtr<ABI::Windows::Perception::Spatial::
+                             ISpatialLocatorAttachedFrameOfReference>
+      attached_;
+  bool emulated_position_ = false;
+  base::Optional<gfx::Transform> last_origin_from_attached_;
+
   std::unique_ptr<MixedRealityWindow> window_;
   mojom::VRDisplayInfoPtr current_display_info_;
   base::RepeatingCallback<void(mojom::VRDisplayInfoPtr)>
diff --git a/docs/media/gpu/vdatest_usage.md b/docs/media/gpu/vdatest_usage.md
index f067fa7..ce5cb19 100644
--- a/docs/media/gpu/vdatest_usage.md
+++ b/docs/media/gpu/vdatest_usage.md
@@ -129,10 +129,8 @@
 ### How to generate md5 values of decoded frames for a new video stream
 
 It is necessary to generate md5 values of decoded frames for new test streams.
-For this purpose, run VDATest with `--gtest_filter=VideoDecodeAcceleratorTest.DISABLED_GenMD5 --gtest_also_run_disabled_tests`.
-The md5 values of decoded frames are written in `*.frames.md5`. For instance,
-`test-25fps.h264.frames.md5` for `test-25fps.h264`. Note that if there is already
-the `.frames.md5` file, this overwrites the file.
+ffmpeg with `-f framemd5` can be used for this purpose. For instance,
+`ffmpeg -i test-25fps.h264 -f framemd5 test-25fps.frames.md5`
 
 ## Basic VEA usage
 
diff --git a/extensions/browser/guest_view/web_view/web_view_guest.cc b/extensions/browser/guest_view/web_view/web_view_guest.cc
index 976f975..7ea3351 100644
--- a/extensions/browser/guest_view/web_view/web_view_guest.cc
+++ b/extensions/browser/guest_view/web_view/web_view_guest.cc
@@ -1051,11 +1051,11 @@
       render_frame_host, security_origin, type);
 }
 
-void WebViewGuest::CanDownload(
-    const GURL& url,
-    const std::string& request_method,
-    const base::Callback<void(bool)>& callback) {
-  web_view_permission_helper_->CanDownload(url, request_method, callback);
+void WebViewGuest::CanDownload(const GURL& url,
+                               const std::string& request_method,
+                               base::OnceCallback<void(bool)> callback) {
+  web_view_permission_helper_->CanDownload(url, request_method,
+                                           std::move(callback));
 }
 
 void WebViewGuest::RequestPointerLockPermission(
diff --git a/extensions/browser/guest_view/web_view/web_view_guest.h b/extensions/browser/guest_view/web_view/web_view_guest.h
index f155d67..032cbed4 100644
--- a/extensions/browser/guest_view/web_view/web_view_guest.h
+++ b/extensions/browser/guest_view/web_view/web_view_guest.h
@@ -238,7 +238,7 @@
                                   blink::MediaStreamType type) final;
   void CanDownload(const GURL& url,
                    const std::string& request_method,
-                   const base::Callback<void(bool)>& callback) final;
+                   base::OnceCallback<void(bool)> callback) final;
   content::JavaScriptDialogManager* GetJavaScriptDialogManager(
       content::WebContents* source) final;
   void AddNewContents(content::WebContents* source,
diff --git a/extensions/browser/guest_view/web_view/web_view_permission_helper.cc b/extensions/browser/guest_view/web_view/web_view_permission_helper.cc
index 72f2e18..a5320d16 100644
--- a/extensions/browser/guest_view/web_view/web_view_permission_helper.cc
+++ b/extensions/browser/guest_view/web_view/web_view_permission_helper.cc
@@ -247,9 +247,9 @@
 void WebViewPermissionHelper::CanDownload(
     const GURL& url,
     const std::string& request_method,
-    const base::Callback<void(bool)>& callback) {
+    base::OnceCallback<void(bool)> callback) {
   web_view_permission_helper_delegate_->CanDownload(url, request_method,
-                                                    callback);
+                                                    std::move(callback));
 }
 
 void WebViewPermissionHelper::RequestPointerLockPermission(
diff --git a/extensions/browser/guest_view/web_view/web_view_permission_helper.h b/extensions/browser/guest_view/web_view/web_view_permission_helper.h
index 4ccbeb07..2400bbfe 100644
--- a/extensions/browser/guest_view/web_view/web_view_permission_helper.h
+++ b/extensions/browser/guest_view/web_view/web_view_permission_helper.h
@@ -68,7 +68,7 @@
                                   blink::MediaStreamType type);
   void CanDownload(const GURL& url,
                    const std::string& request_method,
-                   const base::Callback<void(bool)>& callback);
+                   base::OnceCallback<void(bool)> callback);
   void RequestPointerLockPermission(bool user_gesture,
                                     bool last_unlocked_by_target,
                                     const base::Callback<void(bool)>& callback);
diff --git a/extensions/browser/guest_view/web_view/web_view_permission_helper_delegate.h b/extensions/browser/guest_view/web_view/web_view_permission_helper_delegate.h
index 59f1052..5f712de3 100644
--- a/extensions/browser/guest_view/web_view/web_view_permission_helper_delegate.h
+++ b/extensions/browser/guest_view/web_view/web_view_permission_helper_delegate.h
@@ -21,10 +21,9 @@
       WebViewPermissionHelper* web_view_permission_helper);
   ~WebViewPermissionHelperDelegate() override;
 
-  virtual void CanDownload(
-      const GURL& url,
-      const std::string& request_method,
-      const base::Callback<void(bool)>& callback) {}
+  virtual void CanDownload(const GURL& url,
+                           const std::string& request_method,
+                           base::OnceCallback<void(bool)> callback) {}
 
   virtual void RequestPointerLockPermission(
       bool user_gesture,
diff --git a/extensions/browser/url_loader_factory_manager.cc b/extensions/browser/url_loader_factory_manager.cc
index bcad617..b06d0d07 100644
--- a/extensions/browser/url_loader_factory_manager.cc
+++ b/extensions/browser/url_loader_factory_manager.cc
@@ -98,6 +98,7 @@
     "34FB670464B5F16EF5ABD6CD53E26030E97C26B3",
     "360D8A88545D0C21CBDE2B55EA9E4E4285282B4C",
     "37AC33A3A46D271CCE57DD6CB3FACE6B01F5A347",
+    "38B4D1CC339580F506BC86D4027A49721AFB4BB9",
     "3BC834B48C2C13765147FBAD710F792F026378D8",
     "3CD98763C80D86E00CB1C4CAA56CEA8F3B0BA4F1",
     "3EB17C39F8B6B28FAF34E2406E57A76013A2E066",
@@ -106,6 +107,7 @@
     "42C96DF87C997828C185DAD247F469940DAFC2CD",
     "43865F8D555C201FE452A5A40702EA96240E749C",
     "44943FADD66932EF56EE3D856A9FAAD4A8AF0FD9",
+    "4633828B42F673E0E62475059526DC2C24091690",
     "47ADBB376050C083FFC54CC28CD3D1F54BF0BFED",
     "4913450195D177430217CAB64B356DC6F6B0F483",
     "49FFDF2212E50090963E33159DBF853B5C475340",
@@ -125,6 +127,7 @@
     "6357533CAFFB94A9EA5268ED110079E15561E469",
     "65C20C06ED10E6F39EED527AC736D87B0390DE70",
     "67528F9B47BE454EC46809C33D24F2C199BE408D",
+    "68F43E671577CF03AE901A5780DC07879331A3A9",
     "6A113D4E2F96997D9BA4B391B90ED51058B37EFF",
     "6AE81EF3B13B15080A2DDB23A205A24C65CCC10B",
     "6BA5F75FFF75B69507BC4B09B7094926EF93DBD2",
@@ -165,6 +168,7 @@
     "99E06C364BBB2D1F82A9D20BC1645BF21E478259",
     "9C6A186F8D3C5FD0CC8DCF49682FA726BD8A7705",
     "A04F08A772F1C83B7A14ED29788ACA4F000BBE05",
+    "A059797AECB77D24DEB248C3413D99B0D3BF9A8C",
     "A07DA0EDB967D027E3B220208AD085FDC44C3231",
     "A30E526CF62131BFBFD7CD9B56253A8F3F171777",
     "A3660FA31A0DBF07C9F80D5342FF215DBC962719",
diff --git a/gpu/command_buffer/PRESUBMIT.py b/gpu/command_buffer/PRESUBMIT.py
new file mode 100644
index 0000000..cb5d3b3
--- /dev/null
+++ b/gpu/command_buffer/PRESUBMIT.py
@@ -0,0 +1,70 @@
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Enforces command buffer autogen matches script output.
+
+See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
+for more details on the presubmit API built into depot_tools.
+"""
+
+import os.path
+
+
+def CommonChecks(input_api, output_api):
+  gles2_cmd_buffer_files = input_api.AffectedFiles(
+      file_filter=lambda x: os.path.basename(x.LocalPath()) in [
+          'build_cmd_buffer_lib.py', 'build_gles2_cmd_buffer.py',
+          'gles2_cmd_buffer_functions.txt'])
+  raster_cmd_buffer_files = input_api.AffectedFiles(
+      file_filter=lambda x: os.path.basename(x.LocalPath()) in [
+          'build_cmd_buffer_lib.py', 'build_raster_cmd_buffer.py',
+          'raster_cmd_buffer_functions.txt'])
+  webgpu_cmd_buffer_files = input_api.AffectedFiles(
+      file_filter=lambda x: os.path.basename(x.LocalPath()) in [
+          'build_cmd_buffer_lib.py', 'build_webgpu_cmd_buffer.py',
+          'webgpu_cmd_buffer_functions.txt'])
+  autogen_files = input_api.AffectedFiles(
+      file_filter=lambda x: x.LocalPath().endswith('_autogen.h'))
+
+  messages = []
+
+  if (len(autogen_files) > 0 and len(gles2_cmd_buffer_files) == 0 and
+      len(raster_cmd_buffer_files) == 0 and len(webgpu_cmd_buffer_files) == 0):
+    long_text = 'Changed files:\n'
+    for file in autogen_files:
+      long_text += file.LocalPath() + '\n'
+    long_text += '\n'
+    messages.append(output_api.PresubmitError(
+        'Command buffer autogenerated files changed but generators did not.',
+        long_text=long_text))
+
+  with input_api.temporary_directory() as temp_dir:
+    commands = []
+    if len(gles2_cmd_buffer_files) > 0:
+      commands.append(input_api.Command(name='build_gles2_cmd_buffer',
+          cmd=[input_api.python_executable, 'build_gles2_cmd_buffer.py',
+               '--check', '--output-dir=' + temp_dir],
+          kwargs={}, message=output_api.PresubmitError))
+    if len(raster_cmd_buffer_files) > 0:
+      commands.append(input_api.Command(name='build_raster_cmd_buffer',
+          cmd=[input_api.python_executable, 'build_raster_cmd_buffer.py',
+               '--check', '--output-dir=' + temp_dir],
+          kwargs={}, message=output_api.PresubmitError))
+    if len(webgpu_cmd_buffer_files) > 0:
+      commands.append(input_api.Command(name='build_webgpu_cmd_buffer',
+          cmd=[input_api.python_executable, 'build_webgpu_cmd_buffer.py',
+               '--check', '--output-dir=' + temp_dir],
+          kwargs={}, message=output_api.PresubmitError))
+    if len(commands) > 0:
+      messages.extend(input_api.RunTests(commands))
+
+  return messages
+
+
+def CheckChangeOnUpload(input_api, output_api):
+  return CommonChecks(input_api, output_api)
+
+
+def CheckChangeOnCommit(input_api, output_api):
+  return CommonChecks(input_api, output_api)
diff --git a/gpu/command_buffer/build_cmd_buffer_lib.py b/gpu/command_buffer/build_cmd_buffer_lib.py
index a389cee..65915b7b 100644
--- a/gpu/command_buffer/build_cmd_buffer_lib.py
+++ b/gpu/command_buffer/build_cmd_buffer_lib.py
@@ -3,7 +3,9 @@
 # found in the LICENSE file.
 """Common code generator for command buffers."""
 
+import errno
 import itertools
+import os
 import os.path
 import re
 import platform
@@ -881,9 +883,14 @@
   """
   def __init__(self, filename, year):
     self.filename = filename
-    self._file = open(filename, 'wb')
     self._ENTER_MSG = _LICENSE % year + _DO_NOT_EDIT_WARNING % _lower_prefix
     self._EXIT_MSG = ""
+    try:
+      os.makedirs(os.path.dirname(filename))
+    except OSError as e:
+      if e.errno == errno.EEXIST:
+        pass
+    self._file = open(filename, 'wb')
 
   def __enter__(self):
     self._file.write(self._ENTER_MSG)
@@ -912,13 +919,8 @@
 
   def _get_guard(self):
     non_alnum_re = re.compile(r'[^a-zA-Z0-9]')
-    base = os.path.abspath(self.filename)
-    while os.path.basename(base) != 'src':
-      new_base = os.path.dirname(base)
-      assert new_base != base  # Prevent infinite loop.
-      base = new_base
-    hpath = os.path.relpath(self.filename, base)
-    return non_alnum_re.sub('_', hpath).upper() + '_'
+    assert self.filename.startswith("gpu/")
+    return non_alnum_re.sub('_', self.filename).upper() + '_'
 
 
 class TypeHandler(object):
@@ -6339,9 +6341,11 @@
   _comment_re = re.compile(r'^//.*$')
   _function_re = re.compile(r'^GL_APICALL(.*?)GL_APIENTRY (.*?) \((.*?)\);$')
 
-  def __init__(self, verbose, year, function_info, named_type_info):
+  def __init__(self, verbose, year, function_info, named_type_info,
+               chromium_root_dir):
     self.original_functions = []
     self.functions = []
+    self.chromium_root_dir = chromium_root_dir
     self.verbose = verbose
     self.year = year
     self.errors = 0
@@ -6411,6 +6415,7 @@
 
   def ParseGLH(self, filename):
     """Parses the cmd_buffer_functions.txt file and extracts the functions"""
+    filename = os.path.join(self.chromium_root_dir, filename)
     with open(filename, "r") as f:
       functions = f.read()
     for line in functions.splitlines():
@@ -7384,6 +7389,7 @@
                   'third_party/khronos/GLES3/gl31.h',
                   'gpu/GLES2/gl2chromium.h',
                   'gpu/GLES2/gl2extchromium.h']:
+      fname = os.path.join(self.chromium_root_dir, fname)
       lines = open(fname).readlines()
       for line in lines:
         m = enum_re.match(line)
@@ -7615,9 +7621,13 @@
     self.generated_cpp_filenames.append(filename)
 
 
-def Format(generated_files):
+def Format(generated_files, output_dir, chromium_root_dir):
+  """Format generated_files relative to output_dir using clang-format."""
   formatter = "third_party/depot_tools/clang-format"
   if platform.system() == "Windows":
     formatter = "third_party\\depot_tools\\clang-format.bat"
+  formatter = os.path.join(chromium_root_dir, formatter)
+  generated_files = map(lambda filename: os.path.join(output_dir, filename),
+                        generated_files)
   for filename in generated_files:
-    call([formatter, "-i", "-style=chromium", filename])
+    call([formatter, "-i", "-style=chromium", filename], cwd=chromium_root_dir)
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py
index 4032b249..7c637d3 100755
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
@@ -4,6 +4,7 @@
 # found in the LICENSE file.
 """code generator for GLES2 command buffers."""
 
+import filecmp
 import os
 import os.path
 import sys
@@ -4338,11 +4339,14 @@
   parser = OptionParser()
   parser.add_option(
       "--output-dir",
-      help="base directory for resulting files, under chrome/src. default is "
-      "empty. Use this if you want the result stored under gen.")
+      help="Output directory for generated files. Defaults to chromium root "
+      "directory.")
   parser.add_option(
-      "-v", "--verbose", action="store_true",
-      help="prints more output.")
+      "-v", "--verbose", action="store_true", help="Verbose logging output.")
+  parser.add_option(
+      "-c", "--check", action="store_true",
+      help="Check if output files match generated files in chromium root "
+      "directory.  Use this in PRESUBMIT scripts with --output-dir.")
 
   (options, _) = parser.parse_args(args=argv)
 
@@ -4374,24 +4378,30 @@
     if not valid_value in gl_state_valid:
       gl_state_valid.append(valid_value)
 
-  # This script lives under gpu/command_buffer, cd to base directory.
-  os.chdir(os.path.dirname(__file__) + "/../..")
-  base_dir = os.getcwd()
-  build_cmd_buffer_lib.InitializePrefix("GLES2")
-  gen = build_cmd_buffer_lib.GLGenerator(options.verbose, "2014",
-                                         _FUNCTION_INFO, _NAMED_TYPE_INFO)
-  gen.ParseGLH("gpu/command_buffer/gles2_cmd_buffer_functions.txt")
+  # This script lives under src/gpu/command_buffer.
+  script_dir = os.path.dirname(os.path.abspath(__file__))
+  assert script_dir.endswith(os.path.normpath("src/gpu/command_buffer"))
+  # os.path.join doesn't do the right thing with relative paths.
+  chromium_root_dir = os.path.abspath(script_dir + "/../..")
 
-  # Support generating files under gen/
-  if options.output_dir != None:
-    os.chdir(options.output_dir)
+  # Support generating files under gen/ and for PRESUBMIT.
+  if options.output_dir:
+    output_dir = options.output_dir
+  else:
+    output_dir = chromium_root_dir
+  os.chdir(output_dir)
+
+  build_cmd_buffer_lib.InitializePrefix("GLES2")
+  gen = build_cmd_buffer_lib.GLGenerator(
+      options.verbose, "2014", _FUNCTION_INFO, _NAMED_TYPE_INFO,
+      chromium_root_dir)
+  gen.ParseGLH("gpu/command_buffer/gles2_cmd_buffer_functions.txt")
 
   gen.WritePepperGLES2Interface("ppapi/api/ppb_opengles2.idl", False)
   gen.WritePepperGLES2Interface("ppapi/api/dev/ppb_opengles2ext_dev.idl", True)
   gen.WriteGLES2ToPPAPIBridge("ppapi/lib/gl/gles2/gles2.c")
   gen.WritePepperGLES2Implementation(
       "ppapi/shared_impl/ppb_opengles2_shared.cc")
-  os.chdir(base_dir)
   gen.WriteCommandIds("gpu/command_buffer/common/gles2_cmd_ids_autogen.h")
   gen.WriteFormat("gpu/command_buffer/common/gles2_cmd_format_autogen.h")
   gen.WriteFormatTest(
@@ -4445,11 +4455,27 @@
     "gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h")
   gen.WriteGLES2Header("gpu/GLES2/gl2chromium_autogen.h")
 
-  build_cmd_buffer_lib.Format(gen.generated_cpp_filenames)
+  build_cmd_buffer_lib.Format(gen.generated_cpp_filenames, output_dir,
+                              chromium_root_dir)
 
   if gen.errors > 0:
-    print "%d errors" % gen.errors
+    print "build_gles2_cmd_buffer.py: Failed with %d errors" % gen.errors
     return 1
+
+  check_failed_filenames = []
+  if options.check:
+    for filename in gen.generated_cpp_filenames:
+      if not filecmp.cmp(os.path.join(output_dir, filename),
+                         os.path.join(chromium_root_dir, filename)):
+        check_failed_filenames.append(filename)
+
+  if len(check_failed_filenames) > 0:
+    print 'Please run gpu/command_buffer/build_gles2_cmd_buffer.py'
+    print 'Failed check on autogenerated command buffer files:'
+    for filename in check_failed_filenames:
+      print filename
+    return 1
+
   return 0
 
 
diff --git a/gpu/command_buffer/build_raster_cmd_buffer.py b/gpu/command_buffer/build_raster_cmd_buffer.py
index 662b926..bd59f96 100755
--- a/gpu/command_buffer/build_raster_cmd_buffer.py
+++ b/gpu/command_buffer/build_raster_cmd_buffer.py
@@ -4,6 +4,7 @@
 # found in the LICENSE file.
 """code generator for raster command buffers."""
 
+import filecmp
 import os
 import os.path
 import sys
@@ -364,28 +365,36 @@
   parser = OptionParser()
   parser.add_option(
       "--output-dir",
-      help="base directory for resulting files, under chrome/src. default is "
-      "empty. Use this if you want the result stored under gen.")
+      help="Output directory for generated files. Defaults to chromium root "
+      "directory.")
   parser.add_option(
-      "-v", "--verbose", action="store_true",
-      help="prints more output.")
+      "-v", "--verbose", action="store_true", help="Verbose logging output.")
+  parser.add_option(
+      "-c", "--check", action="store_true",
+      help="Check if output files match generated files in chromium root "
+      "directory.  Use this in PRESUBMIT scripts with --output-dir.")
 
   (options, _) = parser.parse_args(args=argv)
 
-  # This script lives under gpu/command_buffer, cd to base directory.
-  os.chdir(os.path.dirname(__file__) + "/../..")
-  base_dir = os.getcwd()
+  # This script lives under src/gpu/command_buffer.
+  script_dir = os.path.dirname(os.path.abspath(__file__))
+  assert script_dir.endswith(os.path.normpath("src/gpu/command_buffer"))
+  # os.path.join doesn't do the right thing with relative paths.
+  chromium_root_dir = os.path.abspath(script_dir + "/../..")
+
+  # Support generating files under gen/ and for PRESUBMIT.
+  if options.output_dir:
+    output_dir = options.output_dir
+  else:
+    output_dir = chromium_root_dir
+  os.chdir(output_dir)
+
   build_cmd_buffer_lib.InitializePrefix("Raster")
-  gen = build_cmd_buffer_lib.GLGenerator(options.verbose, "2018",
-                                         _FUNCTION_INFO, _NAMED_TYPE_INFO)
+  gen = build_cmd_buffer_lib.GLGenerator(
+      options.verbose, "2018", _FUNCTION_INFO, _NAMED_TYPE_INFO,
+      chromium_root_dir)
   gen.ParseGLH("gpu/command_buffer/raster_cmd_buffer_functions.txt")
 
-  # Support generating files under gen/
-  if options.output_dir != None:
-    os.chdir(options.output_dir)
-
-  os.chdir(base_dir)
-
   gen.WriteCommandIds("gpu/command_buffer/common/raster_cmd_ids_autogen.h")
   gen.WriteFormat("gpu/command_buffer/common/raster_cmd_format_autogen.h")
   gen.WriteFormatTest(
@@ -410,11 +419,27 @@
     "gpu/command_buffer/service/"
     "raster_cmd_validation_implementation_autogen.h")
 
-  build_cmd_buffer_lib.Format(gen.generated_cpp_filenames)
+  build_cmd_buffer_lib.Format(gen.generated_cpp_filenames, output_dir,
+                              chromium_root_dir)
 
   if gen.errors > 0:
-    print "%d errors" % gen.errors
+    print "build_raster_cmd_buffer.py: Failed with %d errors" % gen.errors
     return 1
+
+  check_failed_filenames = []
+  if options.check:
+    for filename in gen.generated_cpp_filenames:
+      if not filecmp.cmp(os.path.join(output_dir, filename),
+                         os.path.join(chromium_root_dir, filename)):
+        check_failed_filenames.append(filename)
+
+  if len(check_failed_filenames) > 0:
+    print 'Please run gpu/command_buffer/build_raster_cmd_buffer.py'
+    print 'Failed check on autogenerated command buffer files:'
+    for filename in check_failed_filenames:
+      print filename
+    return 1
+
   return 0
 
 
diff --git a/gpu/command_buffer/build_webgpu_cmd_buffer.py b/gpu/command_buffer/build_webgpu_cmd_buffer.py
index 89e5ff7..4e79f1d 100755
--- a/gpu/command_buffer/build_webgpu_cmd_buffer.py
+++ b/gpu/command_buffer/build_webgpu_cmd_buffer.py
@@ -4,6 +4,7 @@
 # found in the LICENSE file.
 """code generator for webgpu command buffers."""
 
+import filecmp
 import os
 import os.path
 import sys
@@ -52,28 +53,37 @@
   parser = OptionParser()
   parser.add_option(
       "--output-dir",
-      help="base directory for resulting files, under chrome/src. default is "
-      "empty. Use this if you want the result stored under gen.")
+      help="Output directory for generated files. Defaults to chromium root "
+      "directory.")
   parser.add_option(
-      "-v", "--verbose", action="store_true",
-      help="prints more output.")
+      "-v", "--verbose", action="store_true", help="Verbose logging output.")
+  parser.add_option(
+      "-c", "--check", action="store_true",
+      help="Check if output files match generated files in chromium root "
+      "directory.  Use this in PRESUBMIT scripts with --output-dir.")
 
   (options, _) = parser.parse_args(args=argv)
 
+  # This script lives under src/gpu/command_buffer.
+  script_dir = os.path.dirname(os.path.abspath(__file__))
+  assert script_dir.endswith(os.path.normpath("src/gpu/command_buffer"))
+  # os.path.join doesn't do the right thing with relative paths.
+  chromium_root_dir = os.path.abspath(script_dir + "/../..")
+
+  # Support generating files under gen/ and for PRESUBMIT.
+  if options.output_dir:
+    output_dir = options.output_dir
+  else:
+    output_dir = chromium_root_dir
+  os.chdir(output_dir)
+
   # This script lives under gpu/command_buffer, cd to base directory.
-  os.chdir(os.path.dirname(__file__) + "/../..")
-  base_dir = os.getcwd()
   build_cmd_buffer_lib.InitializePrefix("WebGPU")
-  gen = build_cmd_buffer_lib.GLGenerator(options.verbose, "2018",
-                                         _FUNCTION_INFO, _NAMED_TYPE_INFO)
+  gen = build_cmd_buffer_lib.GLGenerator(
+      options.verbose, "2018", _FUNCTION_INFO, _NAMED_TYPE_INFO,
+      chromium_root_dir)
   gen.ParseGLH("gpu/command_buffer/webgpu_cmd_buffer_functions.txt")
 
-  # Support generating files under gen/
-  if options.output_dir != None:
-    os.chdir(options.output_dir)
-
-  os.chdir(base_dir)
-
   gen.WriteCommandIds("gpu/command_buffer/common/webgpu_cmd_ids_autogen.h")
   gen.WriteFormat("gpu/command_buffer/common/webgpu_cmd_format_autogen.h")
   gen.WriteFormatTest(
@@ -96,11 +106,27 @@
     "gpu/command_buffer/service/"
     "webgpu_cmd_validation_implementation_autogen.h")
 
-  build_cmd_buffer_lib.Format(gen.generated_cpp_filenames)
+  build_cmd_buffer_lib.Format(gen.generated_cpp_filenames, output_dir,
+                              chromium_root_dir)
 
   if gen.errors > 0:
-    print "%d errors" % gen.errors
+    print "build_webgpu_cmd_buffer.py: Failed with %d errors" % gen.errors
     return 1
+
+  check_failed_filenames = []
+  if options.check:
+    for filename in gen.generated_cpp_filenames:
+      if not filecmp.cmp(os.path.join(output_dir, filename),
+                         os.path.join(chromium_root_dir, filename)):
+        check_failed_filenames.append(filename)
+
+  if len(check_failed_filenames) > 0:
+    print 'Please run gpu/command_buffer/build_webgpu_cmd_buffer.py'
+    print 'Failed check on autogenerated command buffer files:'
+    for filename in check_failed_filenames:
+      print filename
+    return 1
+
   return 0
 
 
diff --git a/gpu/command_buffer/service/external_vk_image_backing.cc b/gpu/command_buffer/service/external_vk_image_backing.cc
index 8459bed..83710320 100644
--- a/gpu/command_buffer/service/external_vk_image_backing.cc
+++ b/gpu/command_buffer/service/external_vk_image_backing.cc
@@ -45,28 +45,6 @@
   // Destroy() will do any necessary cleanup.
 }
 
-VkSemaphore ExternalVkImageBacking::CreateExternalVkSemaphore() {
-  VkExportSemaphoreCreateInfo export_info;
-  export_info.sType = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO;
-  export_info.pNext = nullptr;
-  export_info.handleTypes = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT;
-
-  VkSemaphoreCreateInfo sem_info;
-  sem_info.sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO;
-  sem_info.pNext = &export_info;
-  sem_info.flags = 0;
-
-  VkSemaphore semaphore = VK_NULL_HANDLE;
-  VkResult result = vkCreateSemaphore(device(), &sem_info, nullptr, &semaphore);
-
-  if (result != VK_SUCCESS) {
-    LOG(ERROR) << "Failed to create VkSemaphore: " << result;
-    return VK_NULL_HANDLE;
-  }
-
-  return semaphore;
-}
-
 bool ExternalVkImageBacking::BeginAccess(
     bool readonly,
     std::vector<SemaphoreHandle>* semaphore_handles) {
@@ -218,11 +196,14 @@
 }
 
 std::unique_ptr<SharedImageRepresentationSkia>
-ExternalVkImageBacking::ProduceSkia(SharedImageManager* manager,
-                                    MemoryTypeTracker* tracker) {
+ExternalVkImageBacking::ProduceSkia(
+    SharedImageManager* manager,
+    MemoryTypeTracker* tracker,
+    scoped_refptr<SharedContextState> context_state) {
   // This backing type is only used when vulkan is enabled, so SkiaRenderer
   // should also be using Vulkan.
-  DCHECK(context_state_->use_vulkan_gr_context());
+  DCHECK_EQ(context_state_, context_state.get());
+  DCHECK(context_state->use_vulkan_gr_context());
   return std::make_unique<ExternalVkImageSkiaRepresentation>(manager, this,
                                                              tracker);
 }
diff --git a/gpu/command_buffer/service/external_vk_image_backing.h b/gpu/command_buffer/service/external_vk_image_backing.h
index b740065..84982d3d 100644
--- a/gpu/command_buffer/service/external_vk_image_backing.h
+++ b/gpu/command_buffer/service/external_vk_image_backing.h
@@ -8,6 +8,7 @@
 #include <memory>
 #include <vector>
 
+#include "base/memory/scoped_refptr.h"
 #include "components/viz/common/gpu/vulkan_context_provider.h"
 #include "gpu/command_buffer/service/shared_context_state.h"
 #include "gpu/command_buffer/service/shared_image_backing.h"
@@ -43,8 +44,6 @@
   }
   using SharedImageBacking::have_context;
 
-  VkSemaphore CreateExternalVkSemaphore();
-
   // Notifies the backing that an access will start. Return false if there is
   // currently any other conflict access in progress. Otherwise, returns true
   // and semaphore handles which will be waited on before accessing.
@@ -73,7 +72,8 @@
                               MemoryTypeTracker* tracker) override;
   std::unique_ptr<SharedImageRepresentationSkia> ProduceSkia(
       SharedImageManager* manager,
-      MemoryTypeTracker* tracker) override;
+      MemoryTypeTracker* tracker,
+      scoped_refptr<SharedContextState> context_state) override;
 
  private:
   SharedContextState* const context_state_;
diff --git a/gpu/command_buffer/service/external_vk_image_factory.cc b/gpu/command_buffer/service/external_vk_image_factory.cc
index 751e1ce..3122a53 100644
--- a/gpu/command_buffer/service/external_vk_image_factory.cc
+++ b/gpu/command_buffer/service/external_vk_image_factory.cc
@@ -178,9 +178,11 @@
   SkPixmap pixmap(ii, pixel_data.data(), row_bytes);
   surface->writePixels(pixmap, 0, 0);
 
-  VkSemaphore semaphore = vk_backing->CreateExternalVkSemaphore();
   auto* vk_implementation =
       context_state_->vk_context_provider()->GetVulkanImplementation();
+
+  VkSemaphore semaphore =
+      vk_implementation->CreateExternalSemaphore(vk_backing->device());
   VkDevice device = context_state_->vk_context_provider()
                         ->GetDeviceQueue()
                         ->GetVulkanDevice();
diff --git a/gpu/command_buffer/service/external_vk_image_gl_representation.cc b/gpu/command_buffer/service/external_vk_image_gl_representation.cc
index addff9d..e8b5f20d 100644
--- a/gpu/command_buffer/service/external_vk_image_gl_representation.cc
+++ b/gpu/command_buffer/service/external_vk_image_gl_representation.cc
@@ -81,7 +81,8 @@
       (current_access_mode_ == GL_SHARED_IMAGE_ACCESS_MODE_READ_CHROMIUM);
   current_access_mode_ = 0;
 
-  VkSemaphore semaphore = backing_impl()->CreateExternalVkSemaphore();
+  VkSemaphore semaphore =
+      vk_implementation()->CreateExternalSemaphore(backing_impl()->device());
   if (semaphore == VK_NULL_HANDLE) {
     // TODO(crbug.com/933452): We should be able to handle this failure more
     // gracefully rather than shutting down the whole process.
@@ -125,6 +126,12 @@
     SemaphoreHandle handle) {
   if (!handle.is_valid())
     return 0;
+  if (handle.vk_handle_type() !=
+      VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT) {
+    DLOG(ERROR) << "Importing semaphore handle of unexpected type:"
+                << handle.vk_handle_type();
+    return 0;
+  }
   base::ScopedFD fd = handle.TakeHandle();
   gl::GLApi* api = gl::g_current_gl_context;
   GLuint gl_semaphore;
diff --git a/gpu/command_buffer/service/external_vk_image_skia_representation.cc b/gpu/command_buffer/service/external_vk_image_skia_representation.cc
index 34b802d2..74666a3 100644
--- a/gpu/command_buffer/service/external_vk_image_skia_representation.cc
+++ b/gpu/command_buffer/service/external_vk_image_skia_representation.cc
@@ -133,7 +133,8 @@
   // Cleanup resources for previous accessing.
   DestroySemaphore(end_access_semaphore_, end_access_fence_);
 
-  end_access_semaphore_ = backing_impl()->CreateExternalVkSemaphore();
+  end_access_semaphore_ =
+      vk_implementation()->CreateExternalSemaphore(backing_impl()->device());
   // Submit wait semaphore to the queue. Note that Skia uses the same queue
   // exposed by vk_queue(), so this will work due to Vulkan queue ordering.
   if (!vk_implementation()->SubmitSignalSemaphore(
diff --git a/gpu/command_buffer/service/raster_decoder.cc b/gpu/command_buffer/service/raster_decoder.cc
index 66478fdd..3f37ecd9 100644
--- a/gpu/command_buffer/service/raster_decoder.cc
+++ b/gpu/command_buffer/service/raster_decoder.cc
@@ -2014,7 +2014,8 @@
                                        "generated by ProduceTextureCHROMIUM.";
 
   DCHECK(!shared_image_);
-  shared_image_ = shared_image_representation_factory_.ProduceSkia(mailbox);
+  shared_image_ = shared_image_representation_factory_.ProduceSkia(
+      mailbox, shared_context_state_.get());
   if (!shared_image_) {
     LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glBeginRasterCHROMIUM",
                        "passed invalid mailbox.");
diff --git a/gpu/command_buffer/service/shared_image_backing.cc b/gpu/command_buffer/service/shared_image_backing.cc
index ffee3bb5..3f9fc61 100644
--- a/gpu/command_buffer/service/shared_image_backing.cc
+++ b/gpu/command_buffer/service/shared_image_backing.cc
@@ -5,6 +5,7 @@
 #include "gpu/command_buffer/service/shared_image_backing.h"
 
 #include "gpu/command_buffer/service/memory_tracking.h"
+#include "gpu/command_buffer/service/shared_context_state.h"
 #include "gpu/command_buffer/service/shared_image_representation.h"
 
 namespace gpu {
@@ -54,7 +55,8 @@
 
 std::unique_ptr<SharedImageRepresentationSkia> SharedImageBacking::ProduceSkia(
     SharedImageManager* manager,
-    MemoryTypeTracker* tracker) {
+    MemoryTypeTracker* tracker,
+    scoped_refptr<SharedContextState> context_state) {
   return nullptr;
 }
 
diff --git a/gpu/command_buffer/service/shared_image_backing.h b/gpu/command_buffer/service/shared_image_backing.h
index 6a2c10ab..3fbdf72 100644
--- a/gpu/command_buffer/service/shared_image_backing.h
+++ b/gpu/command_buffer/service/shared_image_backing.h
@@ -6,6 +6,7 @@
 #define GPU_COMMAND_BUFFER_SERVICE_SHARED_IMAGE_BACKING_H_
 
 #include "base/containers/flat_map.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/optional.h"
 #include "base/synchronization/lock.h"
 #include "components/viz/common/resources/resource_format.h"
@@ -23,6 +24,7 @@
 
 namespace gpu {
 class MailboxManager;
+class SharedContextState;
 class SharedImageManager;
 class SharedImageRepresentation;
 class SharedImageRepresentationGLTexture;
@@ -96,7 +98,8 @@
                               MemoryTypeTracker* tracker);
   virtual std::unique_ptr<SharedImageRepresentationSkia> ProduceSkia(
       SharedImageManager* manager,
-      MemoryTypeTracker* tracker);
+      MemoryTypeTracker* tracker,
+      scoped_refptr<SharedContextState> context_state);
 
   // Used by subclasses in Destroy.
   bool have_context() const;
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc
index 0dbdf0da..ec73cbb9 100644
--- a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc
+++ b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc
@@ -16,6 +16,7 @@
 #include "base/android/scoped_hardware_buffer_handle.h"
 #include "base/containers/flat_set.h"
 #include "base/logging.h"
+#include "base/memory/scoped_refptr.h"
 #include "components/viz/common/gpu/vulkan_context_provider.h"
 #include "components/viz/common/resources/resource_format_utils.h"
 #include "components/viz/common/resources/resource_sizes.h"
@@ -190,7 +191,6 @@
                         uint32_t usage,
                         base::android::ScopedHardwareBufferHandle handle,
                         size_t estimated_size,
-                        SharedContextState* context_state,
                         bool is_thread_safe);
 
   ~SharedImageBackingAHB() override;
@@ -200,7 +200,6 @@
   void Update() override;
   bool ProduceLegacyMailbox(MailboxManager* mailbox_manager) override;
   void Destroy() override;
-  SharedContextState* GetContextState() const;
   base::android::ScopedHardwareBufferHandle GetAhbHandle() const;
 
   bool BeginWrite(std::vector<base::ScopedFD>* fds_to_wait_on);
@@ -217,7 +216,8 @@
 
   std::unique_ptr<SharedImageRepresentationSkia> ProduceSkia(
       SharedImageManager* manager,
-      MemoryTypeTracker* tracker) override;
+      MemoryTypeTracker* tracker,
+      scoped_refptr<SharedContextState> context_state) override;
 
  private:
   gles2::Texture* GenGLTexture();
@@ -226,7 +226,6 @@
   gles2::Texture* legacy_texture_ = nullptr;
 
   bool is_cleared_ = false;
-  SharedContextState* const context_state_ = nullptr;
 
   // All reads and writes must wait for exiting writes to complete.
   base::ScopedFD write_sync_fd_;
@@ -452,13 +451,15 @@
 class SharedImageRepresentationSkiaVkAHB
     : public SharedImageRepresentationSkia {
  public:
-  SharedImageRepresentationSkiaVkAHB(SharedImageManager* manager,
-                                     SharedImageBacking* backing)
-      : SharedImageRepresentationSkia(manager, backing, nullptr) {
+  SharedImageRepresentationSkiaVkAHB(
+      SharedImageManager* manager,
+      SharedImageBacking* backing,
+      scoped_refptr<SharedContextState> context_state)
+      : SharedImageRepresentationSkia(manager, backing, nullptr),
+        context_state_(context_state) {
     SharedImageBackingAHB* ahb_backing =
         static_cast<SharedImageBackingAHB*>(backing);
     DCHECK(ahb_backing);
-    context_state_ = ahb_backing->GetContextState();
     DCHECK(context_state_);
     DCHECK(context_state_->vk_context_provider());
   }
@@ -656,7 +657,7 @@
   sk_sp<SkPromiseImageTexture> promise_texture_;
   RepresentationAccessMode mode_ = RepresentationAccessMode::kNone;
   SkSurface* surface_ = nullptr;
-  SharedContextState* context_state_ = nullptr;
+  scoped_refptr<SharedContextState> context_state_ = nullptr;
 };
 
 SharedImageBackingAHB::SharedImageBackingAHB(
@@ -667,7 +668,6 @@
     uint32_t usage,
     base::android::ScopedHardwareBufferHandle handle,
     size_t estimated_size,
-    SharedContextState* context_state,
     bool is_thread_safe)
     : SharedImageBacking(mailbox,
                          format,
@@ -676,8 +676,7 @@
                          usage,
                          estimated_size,
                          is_thread_safe),
-      hardware_buffer_handle_(std::move(handle)),
-      context_state_(context_state) {
+      hardware_buffer_handle_(std::move(handle)) {
   DCHECK(hardware_buffer_handle_.is_valid());
 }
 
@@ -728,10 +727,6 @@
   hardware_buffer_handle_.reset();
 }
 
-SharedContextState* SharedImageBackingAHB::GetContextState() const {
-  return context_state_;
-}
-
 base::android::ScopedHardwareBufferHandle SharedImageBackingAHB::GetAhbHandle()
     const {
   AutoLock auto_lock(this);
@@ -753,14 +748,18 @@
 }
 
 std::unique_ptr<SharedImageRepresentationSkia>
-SharedImageBackingAHB::ProduceSkia(SharedImageManager* manager,
-                                   MemoryTypeTracker* tracker) {
-  DCHECK(context_state_);
+SharedImageBackingAHB::ProduceSkia(
+    SharedImageManager* manager,
+    MemoryTypeTracker* tracker,
+    scoped_refptr<SharedContextState> context_state) {
+  DCHECK(context_state);
 
   // Check whether we are in Vulkan mode OR GL mode and accordingly create
   // Skia representation.
-  if (context_state_->use_vulkan_gr_context())
-    return std::make_unique<SharedImageRepresentationSkiaVkAHB>(manager, this);
+  if (context_state->use_vulkan_gr_context()) {
+    return std::make_unique<SharedImageRepresentationSkiaVkAHB>(manager, this,
+                                                                context_state);
+  }
 
   auto* texture = GenGLTexture();
   if (!texture)
@@ -921,9 +920,7 @@
 
 SharedImageBackingFactoryAHB::SharedImageBackingFactoryAHB(
     const GpuDriverBugWorkarounds& workarounds,
-    const GpuFeatureInfo& gpu_feature_info,
-    SharedContextState* context_state)
-    : context_state_(context_state) {
+    const GpuFeatureInfo& gpu_feature_info) {
   scoped_refptr<gles2::FeatureInfo> feature_info =
       new gles2::FeatureInfo(workarounds, gpu_feature_info);
   feature_info->Initialize(ContextType::CONTEXT_TYPE_OPENGLES2, false,
@@ -1086,7 +1083,7 @@
   auto backing = std::make_unique<SharedImageBackingAHB>(
       mailbox, format, size, color_space, usage,
       base::android::ScopedHardwareBufferHandle::Adopt(buffer), estimated_size,
-      context_state_, is_thread_safe);
+      is_thread_safe);
   return backing;
 }
 
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.h b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.h
index 76923bd..a1cec359 100644
--- a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.h
+++ b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.h
@@ -17,7 +17,6 @@
 }  // namespace gfx
 
 namespace gpu {
-class SharedContextState;
 class SharedImageBacking;
 class GpuDriverBugWorkarounds;
 struct GpuFeatureInfo;
@@ -29,8 +28,7 @@
     : public SharedImageBackingFactory {
  public:
   SharedImageBackingFactoryAHB(const GpuDriverBugWorkarounds& workarounds,
-                               const GpuFeatureInfo& gpu_feature_info,
-                               SharedContextState* context_state);
+                               const GpuFeatureInfo& gpu_feature_info);
   ~SharedImageBackingFactoryAHB() override;
 
   // SharedImageBackingFactory implementation.
@@ -80,7 +78,6 @@
 
   // Used to limit the max size of AHardwareBuffer.
   int32_t max_gl_texture_size_ = 0;
-  SharedContextState* context_state_ = nullptr;
 
   DISALLOW_COPY_AND_ASSIGN(SharedImageBackingFactoryAHB);
 };
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer_unittest.cc b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer_unittest.cc
index 8770d56..a899c7f 100644
--- a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer_unittest.cc
+++ b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer_unittest.cc
@@ -62,7 +62,7 @@
     context_state_->InitializeGL(GpuPreferences(), std::move(feature_info));
 
     backing_factory_ = std::make_unique<SharedImageBackingFactoryAHB>(
-        workarounds, GpuFeatureInfo(), context_state_.get());
+        workarounds, GpuFeatureInfo());
 
     memory_type_tracker_ = std::make_unique<MemoryTypeTracker>(nullptr);
     shared_image_representation_factory_ =
@@ -118,7 +118,7 @@
 
   // Finally, validate a SharedImageRepresentationSkia.
   auto skia_representation = shared_image_representation_factory_->ProduceSkia(
-      gl_legacy_shared_image.mailbox());
+      gl_legacy_shared_image.mailbox(), context_state_.get());
   EXPECT_TRUE(skia_representation);
   auto surface = skia_representation->BeginWriteAccess(
       gr_context(), 0, SkSurfaceProps(0, kUnknown_SkPixelGeometry));
@@ -184,8 +184,8 @@
   gl_representation.reset();
 
   // Next create a SharedImageRepresentationSkia to read back the texture data.
-  auto skia_representation =
-      shared_image_representation_factory_->ProduceSkia(mailbox);
+  auto skia_representation = shared_image_representation_factory_->ProduceSkia(
+      mailbox, context_state_.get());
   EXPECT_TRUE(skia_representation);
   auto promise_texture = skia_representation->BeginReadAccess(nullptr);
   EXPECT_TRUE(promise_texture);
@@ -294,7 +294,7 @@
       memory_type_tracker_.get(), shared_image_representation_factory_.get()};
 
   auto skia_representation = shared_image_representation_factory_->ProduceSkia(
-      gl_legacy_shared_image.mailbox());
+      gl_legacy_shared_image.mailbox(), context_state_.get());
   auto surface = skia_representation->BeginWriteAccess(
       gr_context(), 0, SkSurfaceProps(0, kUnknown_SkPixelGeometry));
 
@@ -316,9 +316,9 @@
       memory_type_tracker_.get(), shared_image_representation_factory_.get()};
 
   auto skia_representation = shared_image_representation_factory_->ProduceSkia(
-      gl_legacy_shared_image.mailbox());
+      gl_legacy_shared_image.mailbox(), context_state_.get());
   auto skia_representation2 = shared_image_representation_factory_->ProduceSkia(
-      gl_legacy_shared_image.mailbox());
+      gl_legacy_shared_image.mailbox(), context_state_.get());
 
   sk_sp<SkSurface> surface =
       SkSurface::MakeNull(gl_legacy_shared_image.size().width(),
@@ -347,7 +347,7 @@
       memory_type_tracker_.get(), shared_image_representation_factory_.get()};
 
   auto skia_representation = shared_image_representation_factory_->ProduceSkia(
-      gl_legacy_shared_image.mailbox());
+      gl_legacy_shared_image.mailbox(), context_state_.get());
   sk_sp<SkSurface> surface =
       SkSurface::MakeNull(gl_legacy_shared_image.size().width(),
                           gl_legacy_shared_image.size().height());
@@ -372,7 +372,7 @@
       memory_type_tracker_.get(), shared_image_representation_factory_.get()};
 
   auto skia_representation = shared_image_representation_factory_->ProduceSkia(
-      gl_legacy_shared_image.mailbox());
+      gl_legacy_shared_image.mailbox(), context_state_.get());
   sk_sp<SkSurface> surface =
       SkSurface::MakeNull(gl_legacy_shared_image.size().width(),
                           gl_legacy_shared_image.size().height());
@@ -396,7 +396,7 @@
       memory_type_tracker_.get(), shared_image_representation_factory_.get()};
 
   auto skia_representation = shared_image_representation_factory_->ProduceSkia(
-      gl_legacy_shared_image.mailbox());
+      gl_legacy_shared_image.mailbox(), context_state_.get());
   auto surface = skia_representation->BeginWriteAccess(
       gr_context(), 0, SkSurfaceProps(0, kUnknown_SkPixelGeometry));
 
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc b/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc
index 7661c2d2..eb99b5b 100644
--- a/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc
+++ b/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc
@@ -20,6 +20,7 @@
 #include "gpu/command_buffer/service/image_factory.h"
 #include "gpu/command_buffer/service/mailbox_manager.h"
 #include "gpu/command_buffer/service/service_utils.h"
+#include "gpu/command_buffer/service/shared_context_state.h"
 #include "gpu/command_buffer/service/shared_image_backing.h"
 #include "gpu/command_buffer/service/shared_image_representation.h"
 #include "gpu/command_buffer/service/skia_utils.h"
@@ -520,7 +521,8 @@
 
   std::unique_ptr<SharedImageRepresentationSkia> ProduceSkia(
       SharedImageManager* manager,
-      MemoryTypeTracker* tracker) override {
+      MemoryTypeTracker* tracker,
+      scoped_refptr<SharedContextState> context_state) override {
     auto result = std::make_unique<SharedImageRepresentationSkiaImpl>(
         manager, this, cached_promise_texture_, tracker, texture_->target(),
         texture_->service_id());
@@ -628,7 +630,8 @@
   }
   std::unique_ptr<SharedImageRepresentationSkia> ProduceSkia(
       SharedImageManager* manager,
-      MemoryTypeTracker* tracker) override {
+      MemoryTypeTracker* tracker,
+      scoped_refptr<SharedContextState> context_state) override {
     auto result = std::make_unique<SharedImageRepresentationSkiaImpl>(
         manager, this, cached_promise_texture_, tracker,
         texture_passthrough_->target(), texture_passthrough_->service_id());
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_gl_texture_unittest.cc b/gpu/command_buffer/service/shared_image_backing_factory_gl_texture_unittest.cc
index 2f1c355c..445ea21 100644
--- a/gpu/command_buffer/service/shared_image_backing_factory_gl_texture_unittest.cc
+++ b/gpu/command_buffer/service/shared_image_backing_factory_gl_texture_unittest.cc
@@ -177,8 +177,8 @@
   }
 
   // Finally, validate a SharedImageRepresentationSkia.
-  auto skia_representation =
-      shared_image_representation_factory_->ProduceSkia(mailbox);
+  auto skia_representation = shared_image_representation_factory_->ProduceSkia(
+      mailbox, context_state_.get());
   EXPECT_TRUE(skia_representation);
   auto surface = skia_representation->BeginWriteAccess(
       gr_context(), 0, SkSurfaceProps(0, kUnknown_SkPixelGeometry));
@@ -276,8 +276,8 @@
   }
 
   // Finally, validate a SharedImageRepresentationSkia.
-  auto skia_representation =
-      shared_image_representation_factory_->ProduceSkia(mailbox);
+  auto skia_representation = shared_image_representation_factory_->ProduceSkia(
+      mailbox, context_state_.get());
   EXPECT_TRUE(skia_representation);
   auto surface = skia_representation->BeginWriteAccess(
       gr_context(), 0, SkSurfaceProps(0, kUnknown_SkPixelGeometry));
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_iosurface.mm b/gpu/command_buffer/service/shared_image_backing_factory_iosurface.mm
index 909ae8e..2432ad9 100644
--- a/gpu/command_buffer/service/shared_image_backing_factory_iosurface.mm
+++ b/gpu/command_buffer/service/shared_image_backing_factory_iosurface.mm
@@ -5,6 +5,7 @@
 #include "gpu/command_buffer/service/shared_image_backing_factory_iosurface.h"
 
 #include "base/mac/scoped_cftyperef.h"
+#include "base/memory/scoped_refptr.h"
 #include "components/viz/common/resources/resource_format_utils.h"
 #include "components/viz/common/resources/resource_sizes.h"
 #include "gpu/command_buffer/service/mailbox_manager.h"
@@ -228,7 +229,8 @@
 
   std::unique_ptr<SharedImageRepresentationSkia> ProduceSkia(
       SharedImageManager* manager,
-      MemoryTypeTracker* tracker) override {
+      MemoryTypeTracker* tracker,
+      scoped_refptr<SharedContextState> context_state) override {
     gles2::Texture* texture = GenGLTexture();
     if (!texture) {
       return nullptr;
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_iosurface_unittest.cc b/gpu/command_buffer/service/shared_image_backing_factory_iosurface_unittest.cc
index e4ba81b..d37b3da0 100644
--- a/gpu/command_buffer/service/shared_image_backing_factory_iosurface_unittest.cc
+++ b/gpu/command_buffer/service/shared_image_backing_factory_iosurface_unittest.cc
@@ -126,8 +126,8 @@
   gl_representation.reset();
 
   // Finally, validate a SharedImageRepresentationSkia.
-  auto skia_representation =
-      shared_image_representation_factory_->ProduceSkia(mailbox);
+  auto skia_representation = shared_image_representation_factory_->ProduceSkia(
+      mailbox, context_state_);
   EXPECT_TRUE(skia_representation);
   auto surface = skia_representation->BeginWriteAccess(
       gr_context(), 0, SkSurfaceProps(0, kUnknown_SkPixelGeometry));
@@ -193,8 +193,8 @@
   gl_representation.reset();
 
   // Next create a SharedImageRepresentationSkia to read back the texture data.
-  auto skia_representation =
-      shared_image_representation_factory_->ProduceSkia(mailbox);
+  auto skia_representation = shared_image_representation_factory_->ProduceSkia(
+      mailbox, context_state_);
   EXPECT_TRUE(skia_representation);
   auto promise_texture = skia_representation->BeginReadAccess(nullptr);
   EXPECT_TRUE(promise_texture);
diff --git a/gpu/command_buffer/service/shared_image_factory.cc b/gpu/command_buffer/service/shared_image_factory.cc
index 8dcc10f..4613ef2 100644
--- a/gpu/command_buffer/service/shared_image_factory.cc
+++ b/gpu/command_buffer/service/shared_image_factory.cc
@@ -78,7 +78,7 @@
 #elif defined(OS_ANDROID) && BUILDFLAG(ENABLE_VULKAN)
   // For Android
   interop_backing_factory_ = std::make_unique<SharedImageBackingFactoryAHB>(
-      workarounds, gpu_feature_info, context_state);
+      workarounds, gpu_feature_info);
 #elif defined(OS_MACOSX)
   // OSX
   DCHECK(!using_vulkan_);
@@ -295,8 +295,10 @@
 }
 
 std::unique_ptr<SharedImageRepresentationSkia>
-SharedImageRepresentationFactory::ProduceSkia(const Mailbox& mailbox) {
-  return manager_->ProduceSkia(mailbox, tracker_.get());
+SharedImageRepresentationFactory::ProduceSkia(
+    const Mailbox& mailbox,
+    scoped_refptr<SharedContextState> context_state) {
+  return manager_->ProduceSkia(mailbox, tracker_.get(), context_state);
 }
 
 }  // namespace gpu
diff --git a/gpu/command_buffer/service/shared_image_factory.h b/gpu/command_buffer/service/shared_image_factory.h
index b4251b1..261454a 100644
--- a/gpu/command_buffer/service/shared_image_factory.h
+++ b/gpu/command_buffer/service/shared_image_factory.h
@@ -118,7 +118,8 @@
   std::unique_ptr<SharedImageRepresentationGLTexturePassthrough>
   ProduceGLTexturePassthrough(const Mailbox& mailbox);
   std::unique_ptr<SharedImageRepresentationSkia> ProduceSkia(
-      const Mailbox& mailbox);
+      const Mailbox& mailbox,
+      scoped_refptr<SharedContextState> context_State);
 
  private:
   SharedImageManager* manager_;
diff --git a/gpu/command_buffer/service/shared_image_manager.cc b/gpu/command_buffer/service/shared_image_manager.cc
index 7431bee0..9a9e991 100644
--- a/gpu/command_buffer/service/shared_image_manager.cc
+++ b/gpu/command_buffer/service/shared_image_manager.cc
@@ -14,6 +14,7 @@
 #include "base/trace_event/process_memory_dump.h"
 #include "base/trace_event/trace_event.h"
 #include "gpu/command_buffer/common/shared_image_trace_utils.h"
+#include "gpu/command_buffer/service/shared_context_state.h"
 #include "gpu/command_buffer/service/shared_image_representation.h"
 #include "ui/gl/trace_util.h"
 
@@ -175,7 +176,8 @@
 
 std::unique_ptr<SharedImageRepresentationSkia> SharedImageManager::ProduceSkia(
     const Mailbox& mailbox,
-    MemoryTypeTracker* tracker) {
+    MemoryTypeTracker* tracker,
+    scoped_refptr<SharedContextState> context_state) {
   CALLED_ON_VALID_THREAD();
 
   AutoLock autolock(this);
@@ -186,7 +188,7 @@
     return nullptr;
   }
 
-  auto representation = (*found)->ProduceSkia(this, tracker);
+  auto representation = (*found)->ProduceSkia(this, tracker, context_state);
   if (!representation) {
     LOG(ERROR) << "SharedImageManager::ProduceSkia: Trying to produce a "
                   "Skia representation from an incompatible mailbox.";
diff --git a/gpu/command_buffer/service/shared_image_manager.h b/gpu/command_buffer/service/shared_image_manager.h
index 043dc60..969f7b6 100644
--- a/gpu/command_buffer/service/shared_image_manager.h
+++ b/gpu/command_buffer/service/shared_image_manager.h
@@ -6,6 +6,7 @@
 #define GPU_COMMAND_BUFFER_SERVICE_SHARED_IMAGE_MANAGER_H_
 
 #include "base/containers/flat_set.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/optional.h"
 #include "base/synchronization/lock.h"
 #include "base/threading/thread_checker.h"
@@ -43,7 +44,8 @@
   ProduceGLTexturePassthrough(const Mailbox& mailbox, MemoryTypeTracker* ref);
   std::unique_ptr<SharedImageRepresentationSkia> ProduceSkia(
       const Mailbox& mailbox,
-      MemoryTypeTracker* ref);
+      MemoryTypeTracker* ref,
+      scoped_refptr<SharedContextState> context_state);
 
   // Called by SharedImageRepresentation in the destructor.
   void OnRepresentationDestroyed(const Mailbox& mailbox,
diff --git a/gpu/command_buffer/service/wrapped_sk_image.cc b/gpu/command_buffer/service/wrapped_sk_image.cc
index 53b343b..be608c9 100644
--- a/gpu/command_buffer/service/wrapped_sk_image.cc
+++ b/gpu/command_buffer/service/wrapped_sk_image.cc
@@ -6,6 +6,7 @@
 
 #include "base/hash/hash.h"
 #include "base/logging.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/trace_event/memory_dump_manager.h"
 #include "base/trace_event/process_memory_dump.h"
 #include "base/trace_event/trace_event.h"
@@ -88,7 +89,8 @@
  protected:
   std::unique_ptr<SharedImageRepresentationSkia> ProduceSkia(
       SharedImageManager* manager,
-      MemoryTypeTracker* tracker) override;
+      MemoryTypeTracker* tracker,
+      scoped_refptr<SharedContextState> context_state) override;
 
  private:
   friend class gpu::raster::WrappedSkImageFactory;
@@ -278,7 +280,9 @@
 
 std::unique_ptr<SharedImageRepresentationSkia> WrappedSkImage::ProduceSkia(
     SharedImageManager* manager,
-    MemoryTypeTracker* tracker) {
+    MemoryTypeTracker* tracker,
+    scoped_refptr<SharedContextState> context_state) {
+  DCHECK_EQ(context_state_, context_state.get());
   return std::make_unique<WrappedSkImageRepresentation>(manager, this, tracker);
 }
 
diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
index 168f361..e597994 100644
--- a/gpu/config/gpu_finch_features.cc
+++ b/gpu/config/gpu_finch_features.cc
@@ -52,7 +52,7 @@
 // can be used even if there are controls on top of the video. It can be
 // enabled only when overlay is supported.
 const base::Feature kDirectCompositionUnderlays{
-    "DirectCompositionUnderlays", base::FEATURE_DISABLED_BY_DEFAULT};
+    "DirectCompositionUnderlays", base::FEATURE_ENABLED_BY_DEFAULT};
 
 // Causes us to use the SharedImageManager, removing support for the old
 // mailbox system. Any consumers of the GPU process using the old mailbox
diff --git a/gpu/ipc/service/direct_composition_surface_win.cc b/gpu/ipc/service/direct_composition_surface_win.cc
index 8733540..db4fb5e 100644
--- a/gpu/ipc/service/direct_composition_surface_win.cc
+++ b/gpu/ipc/service/direct_composition_surface_win.cc
@@ -11,6 +11,8 @@
 #include <utility>
 
 #include "base/containers/circular_deque.h"
+#include "base/debug/alias.h"
+#include "base/debug/dump_without_crashing.h"
 #include "base/feature_list.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
@@ -1034,6 +1036,12 @@
       DLOG(ERROR) << "CreateDecodeSwapChainForCompositionSurfaceHandle failed "
                      "with error 0x"
                   << std::hex << hr;
+      // TODO(sunnyps): Temporary for debugging decode swap chain failures.
+      base::debug::Alias(&hr);
+      D3D11_TEXTURE2D_DESC texture_desc = {};
+      base::debug::Alias(&texture_desc);
+      image_dxgi->texture()->GetDesc(&texture_desc);
+      base::debug::DumpWithoutCrashing();
       return false;
     }
     DCHECK(decode_swap_chain_);
diff --git a/gpu/vulkan/android/vulkan_implementation_android.cc b/gpu/vulkan/android/vulkan_implementation_android.cc
index f532ab8..8d391a2 100644
--- a/gpu/vulkan/android/vulkan_implementation_android.cc
+++ b/gpu/vulkan/android/vulkan_implementation_android.cc
@@ -107,6 +107,12 @@
   return nullptr;
 }
 
+VkSemaphore VulkanImplementationAndroid::CreateExternalSemaphore(
+    VkDevice vk_device) {
+  return VulkanImplementation::CreateExternalSemaphore(
+      vk_device, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT);
+}
+
 VkSemaphore VulkanImplementationAndroid::ImportSemaphoreHandle(
     VkDevice vk_device,
     SemaphoreHandle sync_handle) {
diff --git a/gpu/vulkan/android/vulkan_implementation_android.h b/gpu/vulkan/android/vulkan_implementation_android.h
index a84adde..ede5312 100644
--- a/gpu/vulkan/android/vulkan_implementation_android.h
+++ b/gpu/vulkan/android/vulkan_implementation_android.h
@@ -35,6 +35,7 @@
   std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence(
       VkDevice vk_device,
       VkFence vk_fence) override;
+  VkSemaphore CreateExternalSemaphore(VkDevice vk_device) override;
   VkSemaphore ImportSemaphoreHandle(VkDevice vk_device,
                                     SemaphoreHandle handle) override;
   SemaphoreHandle GetSemaphoreHandle(VkDevice vk_device,
diff --git a/gpu/vulkan/vulkan_implementation.cc b/gpu/vulkan/vulkan_implementation.cc
index d47b8d5..8201f5d 100644
--- a/gpu/vulkan/vulkan_implementation.cc
+++ b/gpu/vulkan/vulkan_implementation.cc
@@ -15,25 +15,6 @@
 
 VulkanImplementation::~VulkanImplementation() {}
 
-std::unique_ptr<VulkanDeviceQueue> CreateVulkanDeviceQueue(
-    VulkanImplementation* vulkan_implementation,
-    uint32_t option) {
-  auto device_queue = std::make_unique<VulkanDeviceQueue>(
-      vulkan_implementation->GetVulkanInstance()->vk_instance());
-  auto callback = base::BindRepeating(
-      &VulkanImplementation::GetPhysicalDevicePresentationSupport,
-      base::Unretained(vulkan_implementation));
-  std::vector<const char*> required_extensions =
-      vulkan_implementation->GetRequiredDeviceExtensions();
-  if (!device_queue->Initialize(option, std::move(required_extensions),
-                                callback)) {
-    device_queue->Destroy();
-    return nullptr;
-  }
-
-  return device_queue;
-}
-
 bool VulkanImplementation::SubmitSignalSemaphore(VkQueue vk_queue,
                                                  VkSemaphore vk_semaphore,
                                                  VkFence vk_fence) {
@@ -66,4 +47,45 @@
   return true;
 }
 
+VkSemaphore VulkanImplementation::CreateExternalSemaphore(
+    VkDevice vk_device,
+    VkExternalSemaphoreHandleTypeFlags handle_types) {
+  VkExportSemaphoreCreateInfo export_info = {
+      VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO};
+  export_info.handleTypes = handle_types;
+
+  VkSemaphoreCreateInfo sem_info = {VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
+                                    &export_info};
+
+  VkSemaphore semaphore = VK_NULL_HANDLE;
+  VkResult result =
+      vkCreateSemaphore(vk_device, &sem_info, nullptr, &semaphore);
+
+  if (result != VK_SUCCESS) {
+    DLOG(ERROR) << "Failed to create VkSemaphore: " << result;
+    return VK_NULL_HANDLE;
+  }
+
+  return semaphore;
+}
+
+std::unique_ptr<VulkanDeviceQueue> CreateVulkanDeviceQueue(
+    VulkanImplementation* vulkan_implementation,
+    uint32_t option) {
+  auto device_queue = std::make_unique<VulkanDeviceQueue>(
+      vulkan_implementation->GetVulkanInstance()->vk_instance());
+  auto callback = base::BindRepeating(
+      &VulkanImplementation::GetPhysicalDevicePresentationSupport,
+      base::Unretained(vulkan_implementation));
+  std::vector<const char*> required_extensions =
+      vulkan_implementation->GetRequiredDeviceExtensions();
+  if (!device_queue->Initialize(option, std::move(required_extensions),
+                                callback)) {
+    device_queue->Destroy();
+    return nullptr;
+  }
+
+  return device_queue;
+}
+
 }  // namespace gpu
diff --git a/gpu/vulkan/vulkan_implementation.h b/gpu/vulkan/vulkan_implementation.h
index 0d72db4..30684cf 100644
--- a/gpu/vulkan/vulkan_implementation.h
+++ b/gpu/vulkan/vulkan_implementation.h
@@ -90,9 +90,18 @@
     return SubmitWaitSemaphores(vk_queue, {vk_semaphore}, vk_fence);
   }
 
+  // Creates semaphore that can be exported to external handles of the specified
+  // |handle_types|.
+  VkSemaphore CreateExternalSemaphore(
+      VkDevice vk_device,
+      VkExternalSemaphoreHandleTypeFlags handle_types);
+
+  // Creates a semaphore that can be exported using GetSemaphoreHandle().
+  virtual VkSemaphore CreateExternalSemaphore(VkDevice vk_device) = 0;
+
   // Import a VkSemaphore from a platform-specific handle.
-  // Handle types that don't allow permanent import are imported with temporary
-  // permanence (VK_SEMAPHORE_IMPORT_TEMPORARY_BIT).
+  // Handle types that don't allow permanent import are imported with
+  // temporary permanence (VK_SEMAPHORE_IMPORT_TEMPORARY_BIT).
   virtual VkSemaphore ImportSemaphoreHandle(VkDevice vk_device,
                                             SemaphoreHandle handle) = 0;
 
diff --git a/gpu/vulkan/win32/vulkan_implementation_win32.cc b/gpu/vulkan/win32/vulkan_implementation_win32.cc
index 85201d6..a9282d55 100644
--- a/gpu/vulkan/win32/vulkan_implementation_win32.cc
+++ b/gpu/vulkan/win32/vulkan_implementation_win32.cc
@@ -105,6 +105,12 @@
   return nullptr;
 }
 
+VkSemaphore VulkanImplementationWin32::CreateExternalSemaphore(
+    VkDevice vk_device) {
+  NOTIMPLEMENTED();
+  return VK_NULL_HANDLE;
+}
+
 VkSemaphore VulkanImplementationWin32::ImportSemaphoreHandle(
     VkDevice vk_device,
     SemaphoreHandle handle) {
diff --git a/gpu/vulkan/win32/vulkan_implementation_win32.h b/gpu/vulkan/win32/vulkan_implementation_win32.h
index 9768fdbe..0cc0195 100644
--- a/gpu/vulkan/win32/vulkan_implementation_win32.h
+++ b/gpu/vulkan/win32/vulkan_implementation_win32.h
@@ -33,6 +33,7 @@
   std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence(
       VkDevice vk_device,
       VkFence vk_fence) override;
+  VkSemaphore CreateExternalSemaphore(VkDevice vk_device) override;
   VkSemaphore ImportSemaphoreHandle(VkDevice vk_device,
                                     SemaphoreHandle handle) override;
   SemaphoreHandle GetSemaphoreHandle(VkDevice vk_device,
diff --git a/gpu/vulkan/x/vulkan_implementation_x11.cc b/gpu/vulkan/x/vulkan_implementation_x11.cc
index be5a4523..282c7bb 100644
--- a/gpu/vulkan/x/vulkan_implementation_x11.cc
+++ b/gpu/vulkan/x/vulkan_implementation_x11.cc
@@ -147,6 +147,12 @@
   return nullptr;
 }
 
+VkSemaphore VulkanImplementationX11::CreateExternalSemaphore(
+    VkDevice vk_device) {
+  return VulkanImplementation::CreateExternalSemaphore(
+      vk_device, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT);
+}
+
 VkSemaphore VulkanImplementationX11::ImportSemaphoreHandle(
     VkDevice vk_device,
     SemaphoreHandle sync_handle) {
diff --git a/gpu/vulkan/x/vulkan_implementation_x11.h b/gpu/vulkan/x/vulkan_implementation_x11.h
index a252497..16475b8 100644
--- a/gpu/vulkan/x/vulkan_implementation_x11.h
+++ b/gpu/vulkan/x/vulkan_implementation_x11.h
@@ -35,6 +35,7 @@
   std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence(
       VkDevice vk_device,
       VkFence vk_fence) override;
+  VkSemaphore CreateExternalSemaphore(VkDevice vk_device) override;
   VkSemaphore ImportSemaphoreHandle(VkDevice vk_device,
                                     SemaphoreHandle handle) override;
   SemaphoreHandle GetSemaphoreHandle(VkDevice vk_device,
diff --git a/infra/config/cr-buildbucket.cfg b/infra/config/cr-buildbucket.cfg
index d7e185a..842337c 100644
--- a/infra/config/cr-buildbucket.cfg
+++ b/infra/config/cr-buildbucket.cfg
@@ -440,6 +440,12 @@
   mixins: "linux"
   mixins: "gpu-fyi-ci"
   mixins: "gpu-slow-bot"
+  # Remove the cores dimensions for this mixin so that VMs of differing sizes
+  # can be used.
+  # This works here only because we use auto_builder_dimensions,
+  # so that only the bots that were earmarked for the builders
+  # will be allowed to use them anyways.
+  dimensions: "cores:"
 }
 
 builder_mixins {
@@ -611,6 +617,12 @@
   mixins: "win"
   mixins: "gpu-fyi-ci"
   mixins: "gpu-slow-bot"
+  # Remove the cores dimensions for this mixin so that VMs of differing sizes
+  # can be used.
+  # This works here only because we use auto_builder_dimensions,
+  # so that only the bots that were earmarked for the builders
+  # will be allowed to use them anyways.
+  dimensions: "cores:"
 }
 
 builder_mixins {
diff --git a/ios/web/web_state/web_state_observer_inttest.mm b/ios/web/web_state/web_state_observer_inttest.mm
index bb4fcd7..dc2666a6 100644
--- a/ios/web/web_state/web_state_observer_inttest.mm
+++ b/ios/web/web_state/web_state_observer_inttest.mm
@@ -2479,13 +2479,13 @@
 
 // Tests callbacks for restoring session and subsequently going back to
 // about:blank.
-TEST_P(WebStateObserverTest, RestoreSessionOnline) {
-// TODO(crbug.com/944886): Remove once issue resolved.
-#if !TARGET_IPHONE_SIMULATOR
-  UIUserInterfaceIdiom idiom = [[UIDevice currentDevice] userInterfaceIdiom];
-  if (idiom == UIUserInterfaceIdiomPad)
-    return;
+// TODO(crbug.com/944803): Test is flaky on iPhone and iPad devices.
+#if TARGET_IPHONE_SIMULATOR
+#define MAYBE_RestoreSessionOnline RestoreSessionOnline
+#else
+#define MAYBE_RestoreSessionOnline FLAKY_RestoreSessionOnline
 #endif
+TEST_P(WebStateObserverTest, MAYBE_RestoreSessionOnline) {
   // LegacyNavigationManager doesn't trigger load in Restore.
   if (!GetWebClient()->IsSlimNavigationManagerEnabled()) {
     return;
diff --git a/media/base/android/java/src/org/chromium/media/MediaCodecUtil.java b/media/base/android/java/src/org/chromium/media/MediaCodecUtil.java
index 0d9e444..e695617 100644
--- a/media/base/android/java/src/org/chromium/media/MediaCodecUtil.java
+++ b/media/base/android/java/src/org/chromium/media/MediaCodecUtil.java
@@ -15,6 +15,8 @@
 import android.media.MediaCrypto;
 import android.media.MediaFormat;
 import android.os.Build;
+import android.support.annotation.IntDef;
+import android.support.annotation.Nullable;
 
 import org.chromium.base.Log;
 import org.chromium.base.annotations.CalledByNative;
@@ -22,6 +24,8 @@
 import org.chromium.base.annotations.MainDex;
 import org.chromium.base.compat.ApiHelperForN;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
@@ -495,46 +499,72 @@
     }
 
     // List of supported HW encoders.
-    private static enum HWEncoderProperties {
-        QcomVp8(MimeTypes.VIDEO_VP8, "OMX.qcom.", Build.VERSION_CODES.KITKAT,
-                BitrateAdjuster.Type.NO_ADJUSTMENT),
-        QcomH264(MimeTypes.VIDEO_H264, "OMX.qcom.", Build.VERSION_CODES.KITKAT,
-                BitrateAdjuster.Type.NO_ADJUSTMENT),
-        ExynosVp8(MimeTypes.VIDEO_VP8, "OMX.Exynos.", Build.VERSION_CODES.M,
-                BitrateAdjuster.Type.NO_ADJUSTMENT),
-        ExynosH264(MimeTypes.VIDEO_H264, "OMX.Exynos.", Build.VERSION_CODES.LOLLIPOP,
-                BitrateAdjuster.Type.FRAMERATE_ADJUSTMENT),
-        MediatekH264(MimeTypes.VIDEO_H264, "OMX.MTK.", Build.VERSION_CODES.O_MR1,
-                BitrateAdjuster.Type.FRAMERATE_ADJUSTMENT);
+    @IntDef({HWEncoder.QcomVp8, HWEncoder.QcomH264, HWEncoder.ExynosVp8, HWEncoder.ExynosH264,
+            HWEncoder.MediatekH264})
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface HWEncoder {
+        int QcomVp8 = 0;
+        int QcomH264 = 1;
+        int ExynosVp8 = 2;
+        int ExynosH264 = 3;
+        int MediatekH264 = 4;
+        int NUM_ENTRIES = 5;
+    }
 
-        private final String mMime;
-        private final String mPrefix;
-        private final int mMinSDK;
-        private final @BitrateAdjuster.Type int mBitrateAdjuster;
-
-        private HWEncoderProperties(
-                String mime, String prefix, int minSDK, @BitrateAdjuster.Type int bitrateAdjuster) {
-            this.mMime = mime;
-            this.mPrefix = prefix;
-            this.mMinSDK = minSDK;
-            this.mBitrateAdjuster = bitrateAdjuster;
+    private static String getMimeForHWEncoder(@HWEncoder int decoder) {
+        switch (decoder) {
+            case HWEncoder.QcomVp8:
+            case HWEncoder.ExynosVp8:
+                return MimeTypes.VIDEO_VP8;
+            case HWEncoder.QcomH264:
+            case HWEncoder.ExynosH264:
+            case HWEncoder.MediatekH264:
+                return MimeTypes.VIDEO_H264;
         }
+        return "";
+    }
 
-        public String getMime() {
-            return mMime;
+    private static String getPrefixForHWEncoder(@HWEncoder int decoder) {
+        switch (decoder) {
+            case HWEncoder.QcomVp8:
+            case HWEncoder.QcomH264:
+                return "OMX.qcom.";
+            case HWEncoder.ExynosVp8:
+            case HWEncoder.ExynosH264:
+                return "OMX.Exynos.";
+            case HWEncoder.MediatekH264:
+                return "OMX.MTK.";
         }
+        return "";
+    }
 
-        public String getPrefix() {
-            return mPrefix;
+    private static int getMinSDKForHWEncoder(@HWEncoder int decoder) {
+        switch (decoder) {
+            case HWEncoder.QcomVp8:
+            case HWEncoder.QcomH264:
+                return Build.VERSION_CODES.KITKAT;
+            case HWEncoder.ExynosVp8:
+                return Build.VERSION_CODES.M;
+            case HWEncoder.ExynosH264:
+                return Build.VERSION_CODES.LOLLIPOP;
+            case HWEncoder.MediatekH264:
+                return Build.VERSION_CODES.O_MR1;
         }
+        return -1;
+    }
 
-        public int getMinSDK() {
-            return mMinSDK;
+    private static @BitrateAdjuster.Type int getBitrateAdjusterTypeForHWEncoder(
+            @HWEncoder int decoder) {
+        switch (decoder) {
+            case HWEncoder.QcomVp8:
+            case HWEncoder.QcomH264:
+            case HWEncoder.ExynosVp8:
+                return BitrateAdjuster.Type.NO_ADJUSTMENT;
+            case HWEncoder.ExynosH264:
+            case HWEncoder.MediatekH264:
+                return BitrateAdjuster.Type.FRAMERATE_ADJUSTMENT;
         }
-
-        public @BitrateAdjuster.Type int getBitrateAdjuster() {
-            return mBitrateAdjuster;
-        }
+        return -1;
     }
 
     // List of devices with poor H.264 encoder quality.
@@ -553,15 +583,15 @@
         // if we cannot create the codec.
         CodecCreationInfo result = new CodecCreationInfo();
 
-        HWEncoderProperties encoderProperties = findHWEncoder(mime);
-        if (encoderProperties == null) {
-            return result;
-        }
+        @Nullable
+        @HWEncoder
+        Integer encoderProperties = findHWEncoder(mime);
+        if (encoderProperties == null) return result;
 
         try {
             result.mediaCodec = MediaCodec.createEncoderByType(mime);
             result.supportsAdaptivePlayback = false;
-            result.bitrateAdjuster = encoderProperties.getBitrateAdjuster();
+            result.bitrateAdjuster = getBitrateAdjusterTypeForHWEncoder(encoderProperties);
         } catch (Exception e) {
             Log.e(TAG, "Failed to create MediaCodec: %s", mime, e);
         }
@@ -591,11 +621,7 @@
             }
         }
 
-        if (findHWEncoder(mime) == null) {
-            return false;
-        }
-
-        return true;
+        return !(findHWEncoder(mime) == null);
     }
 
     /**
@@ -616,9 +642,9 @@
     /**
      * Find HW encoder with given MIME type.
      * @param mime MIME type of the media.
-     * @return HWEncoderProperties object.
+     * @return HWEncoder or null if not found.
      */
-    private static HWEncoderProperties findHWEncoder(String mime) {
+    private static @Nullable @HWEncoder Integer findHWEncoder(String mime) {
         MediaCodecListHelper codecListHelper = new MediaCodecListHelper();
         for (MediaCodecInfo info : codecListHelper) {
             if (!info.isEncoder() || isSoftwareCodec(info.getName())) continue;
@@ -636,11 +662,12 @@
             }
 
             // Check if this is supported HW encoder.
-            for (HWEncoderProperties codecProperties : HWEncoderProperties.values()) {
-                if (!mime.equalsIgnoreCase(codecProperties.getMime())) continue;
+            for (@HWEncoder int codecProperties = 0; codecProperties < HWEncoder.NUM_ENTRIES;
+                    codecProperties++) {
+                if (!mime.equalsIgnoreCase(getMimeForHWEncoder(codecProperties))) continue;
 
-                if (encoderName.startsWith(codecProperties.getPrefix())) {
-                    if (Build.VERSION.SDK_INT < codecProperties.getMinSDK()) {
+                if (encoderName.startsWith(getPrefixForHWEncoder(codecProperties))) {
+                    if (Build.VERSION.SDK_INT < getMinSDKForHWEncoder(codecProperties)) {
                         Log.w(TAG, "Codec " + encoderName + " is disabled due to SDK version "
                                         + Build.VERSION.SDK_INT);
                         continue;
diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
index 794290d..91ed9654 100644
--- a/media/base/media_switches.cc
+++ b/media/base/media_switches.cc
@@ -301,7 +301,11 @@
 // If enabled, use SurfaceLayer instead of VideoLayer for all playbacks that
 // aren't MediaStream.
 const base::Feature kUseSurfaceLayerForVideo{"UseSurfaceLayerForVideo",
-                                             base::FEATURE_DISABLED_BY_DEFAULT};
+                                             base::FEATURE_ENABLED_BY_DEFAULT};
+
+// Enable VA-API hardware low power encoder for all codecs.
+const base::Feature kVaapiLowPowerEncoder{"VaapiLowPowerEncoder",
+                                          base::FEATURE_DISABLED_BY_DEFAULT};
 
 // Enable VA-API hardware encode acceleration for VP8.
 const base::Feature kVaapiVP8Encoder{"VaapiVP8Encoder",
diff --git a/media/base/media_switches.h b/media/base/media_switches.h
index de8f2bc..533c17ed 100644
--- a/media/base/media_switches.h
+++ b/media/base/media_switches.h
@@ -133,6 +133,7 @@
 MEDIA_EXPORT extern const base::Feature kUseNewMediaCache;
 MEDIA_EXPORT extern const base::Feature kUseR16Texture;
 MEDIA_EXPORT extern const base::Feature kUseSurfaceLayerForVideo;
+MEDIA_EXPORT extern const base::Feature kVaapiLowPowerEncoder;
 MEDIA_EXPORT extern const base::Feature kVaapiVP8Encoder;
 MEDIA_EXPORT extern const base::Feature kVaapiVP9Encoder;
 MEDIA_EXPORT extern const base::Feature kVideoBlitColorAccuracy;
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
index c026cce..3ccafd6 100644
--- a/media/blink/webmediaplayer_impl.cc
+++ b/media/blink/webmediaplayer_impl.cc
@@ -924,12 +924,12 @@
 
 void WebMediaPlayerImpl::SetSinkId(
     const blink::WebString& sink_id,
-    std::unique_ptr<blink::WebSetSinkIdCallbacks> web_callback) {
+    blink::WebSetSinkIdCompleteCallback completion_callback) {
   DCHECK(main_task_runner_->BelongsToCurrentThread());
   DVLOG(1) << __func__;
 
   OutputDeviceStatusCB callback =
-      ConvertToOutputDeviceStatusCB(std::move(web_callback));
+      ConvertToOutputDeviceStatusCB(std::move(completion_callback));
   media_task_runner_->PostTask(
       FROM_HERE, base::BindOnce(&SetSinkIdOnMediaThread, audio_source_provider_,
                                 sink_id.Utf8(), std::move(callback)));
@@ -1316,6 +1316,40 @@
       internal_format, format, type, level, premultiply_alpha, flip_y);
 }
 
+bool WebMediaPlayerImpl::PrepareVideoFrameForWebGL(
+    gpu::gles2::GLES2Interface* gl,
+    unsigned target,
+    unsigned texture,
+    int already_uploaded_id,
+    WebMediaPlayer::VideoFrameUploadMetadata* out_metadata) {
+  DCHECK(main_task_runner_->BelongsToCurrentThread());
+  TRACE_EVENT0("media", "WebMediaPlayerImpl::PrepareVideoFrameForWebGL");
+
+  // TODO(crbug.com/776222): How to deal with protected frames.
+  scoped_refptr<VideoFrame> video_frame = GetCurrentFrameFromCompositor();
+  if (!video_frame.get() || !video_frame->HasTextures()) {
+    return false;
+  }
+  if (out_metadata) {
+    // WebGL last-uploaded-frame-metadata API is enabled.
+    ComputeFrameUploadMetadata(video_frame.get(), already_uploaded_id,
+                               out_metadata);
+    if (out_metadata->skipped) {
+      // Skip uploading this frame.
+      return true;
+    }
+  }
+
+  Context3D context_3d;
+  if (context_provider_) {
+    context_3d = Context3D(context_provider_->ContextGL(),
+                           context_provider_->GrContext());
+  }
+
+  return video_renderer_.PrepareVideoFrameForWebGL(
+      context_3d, gl, video_frame.get(), target, texture);
+}
+
 // static
 void WebMediaPlayerImpl::ComputeFrameUploadMetadata(
     VideoFrame* frame,
diff --git a/media/blink/webmediaplayer_impl.h b/media/blink/webmediaplayer_impl.h
index 940c621..07773e2 100644
--- a/media/blink/webmediaplayer_impl.h
+++ b/media/blink/webmediaplayer_impl.h
@@ -123,7 +123,7 @@
   void OnRequestPictureInPicture() override;
   void SetSinkId(
       const blink::WebString& sink_id,
-      std::unique_ptr<blink::WebSetSinkIdCallbacks> web_callback) override;
+      blink::WebSetSinkIdCompleteCallback completion_callback) override;
   void SetPoster(const blink::WebURL& poster) override;
   void SetPreload(blink::WebMediaPlayer::Preload preload) override;
   blink::WebTimeRanges Buffered() const override;
@@ -195,6 +195,13 @@
       int already_uploaded_id,
       VideoFrameUploadMetadata* out_metadata) override;
 
+  bool PrepareVideoFrameForWebGL(
+      gpu::gles2::GLES2Interface* gl,
+      unsigned target,
+      unsigned texture,
+      int already_uploaded_id,
+      WebMediaPlayer::VideoFrameUploadMetadata* out_metadata) override;
+
   static void ComputeFrameUploadMetadata(
       VideoFrame* frame,
       int already_uploaded_id,
diff --git a/media/blink/webmediaplayer_impl_unittest.cc b/media/blink/webmediaplayer_impl_unittest.cc
index a0c52fb15..8f55491 100644
--- a/media/blink/webmediaplayer_impl_unittest.cc
+++ b/media/blink/webmediaplayer_impl_unittest.cc
@@ -861,6 +861,8 @@
   const int64_t data_source_size = GetDataSourceMemoryUsage();
   EXPECT_GT(data_source_size, 0);
   EXPECT_EQ(reported_memory_ - data_source_size, 0);
+
+  EXPECT_CALL(*surface_layer_bridge_ptr_, ClearObserver());
 }
 
 // Verify that preload=metadata suspend video w/ poster uses zero video memory.
@@ -892,6 +894,8 @@
   const int64_t data_source_size = GetDataSourceMemoryUsage();
   EXPECT_GT(data_source_size, 0);
   EXPECT_EQ(reported_memory_ - data_source_size, 0);
+
+  EXPECT_CALL(*surface_layer_bridge_ptr_, ClearObserver());
 }
 
 // Verify that preload=metadata suspend is aborted if we know the element will
@@ -1323,6 +1327,24 @@
 TEST_F(WebMediaPlayerImplTest, Waiting_NoDecryptionKey) {
   InitializeWebMediaPlayerImpl();
 
+  scoped_refptr<cc::Layer> layer = cc::Layer::Create();
+  EXPECT_CALL(*surface_layer_bridge_ptr_, GetCcLayer())
+      .WillRepeatedly(Return(layer.get()));
+
+  if (base::FeatureList::IsEnabled(kUseSurfaceLayerForVideo)) {
+    EXPECT_CALL(*surface_layer_bridge_ptr_, CreateSurfaceLayer());
+    EXPECT_CALL(client_, SetCcLayer(_)).Times(0);
+    EXPECT_CALL(*surface_layer_bridge_ptr_, GetSurfaceId())
+        .WillOnce(ReturnRef(surface_id_));
+    EXPECT_CALL(*surface_layer_bridge_ptr_, GetLocalSurfaceIdAllocationTime())
+        .WillOnce(Return(base::TimeTicks()));
+    EXPECT_CALL(*compositor_, EnableSubmission(_, _, _, _));
+    EXPECT_CALL(*surface_layer_bridge_ptr_, SetContentsOpaque(true)).Times(1);
+    EXPECT_CALL(*surface_layer_bridge_ptr_, SetContentsOpaque(false)).Times(1);
+  } else {
+    EXPECT_CALL(client_, SetCcLayer(NotNull()));
+  }
+
   // Use non-encrypted file here since we don't have a CDM. Otherwise pipeline
   // initialization will stall waiting for a CDM to be set.
   LoadAndWaitForMetadata(kVideoOnlyTestFile);
@@ -1331,6 +1353,8 @@
   EXPECT_CALL(encrypted_client_, DidResumePlaybackBlockedForKey());
 
   OnWaiting(WaitingReason::kNoDecryptionKey);
+
+  EXPECT_CALL(*surface_layer_bridge_ptr_, ClearObserver());
 }
 
 TEST_F(WebMediaPlayerImplTest, VideoConfigChange) {
@@ -1385,6 +1409,8 @@
   OnVideoConfigChange(new_color_config);
   ASSERT_EQ(last_reporter, GetVideoStatsReporter());
   ASSERT_EQ(VP8PROFILE_MIN, GetVideoStatsReporterCodecProfile());
+
+  EXPECT_CALL(*surface_layer_bridge_ptr_, ClearObserver());
 }
 
 TEST_F(WebMediaPlayerImplTest, NaturalSizeChange) {
@@ -1425,6 +1451,8 @@
   ASSERT_NE(orig_stats_reporter, GetVideoStatsReporter());
   ASSERT_TRUE(GetVideoStatsReporter()->MatchesBucketedNaturalSize(
       gfx::Size(1920, 1080)));
+
+  EXPECT_CALL(*surface_layer_bridge_ptr_, ClearObserver());
 }
 
 TEST_F(WebMediaPlayerImplTest, NaturalSizeChange_Rotated) {
@@ -1466,6 +1494,8 @@
   ASSERT_NE(orig_stats_reporter, GetVideoStatsReporter());
   ASSERT_TRUE(GetVideoStatsReporter()->MatchesBucketedNaturalSize(
       gfx::Size(1080, 1920)));
+
+  EXPECT_CALL(*surface_layer_bridge_ptr_, ClearObserver());
 }
 
 TEST_F(WebMediaPlayerImplTest, VideoLockedWhenPausedWhenHidden) {
@@ -1522,6 +1552,8 @@
   // Foregrounding the player unsets the lock.
   ForegroundPlayer();
   EXPECT_FALSE(IsVideoLockedWhenPausedWhenHidden());
+
+  EXPECT_CALL(*surface_layer_bridge_ptr_, ClearObserver());
 }
 
 TEST_F(WebMediaPlayerImplTest, BackgroundIdlePauseTimerDependsOnAudio) {
@@ -1581,6 +1613,8 @@
   wmpi_->Pause();
   EXPECT_EQ(0, wmpi_->CurrentTime());
   EXPECT_EQ(base::TimeDelta(), GetCurrentTimeInternal());
+
+  EXPECT_CALL(*surface_layer_bridge_ptr_, ClearObserver());
 }
 
 TEST_F(WebMediaPlayerImplTest, SetContentsLayerGetsWebLayerFromBridge) {
diff --git a/media/blink/webmediaplayer_util.cc b/media/blink/webmediaplayer_util.cc
index cdd9092..3221d6d 100644
--- a/media/blink/webmediaplayer_util.cc
+++ b/media/blink/webmediaplayer_util.cc
@@ -193,22 +193,21 @@
 
 namespace {
 
-void RunSetSinkIdCallback(
-    std::unique_ptr<blink::WebSetSinkIdCallbacks> web_callbacks,
-    OutputDeviceStatus result) {
+void RunSetSinkIdCallback(blink::WebSetSinkIdCompleteCallback callback,
+                          OutputDeviceStatus result) {
   switch (result) {
     case OUTPUT_DEVICE_STATUS_OK:
-      web_callbacks->OnSuccess();
+      std::move(callback).Run(/*error =*/base::nullopt);
       break;
     case OUTPUT_DEVICE_STATUS_ERROR_NOT_FOUND:
-      web_callbacks->OnError(blink::WebSetSinkIdError::kNotFound);
+      std::move(callback).Run(blink::WebSetSinkIdError::kNotFound);
       break;
     case OUTPUT_DEVICE_STATUS_ERROR_NOT_AUTHORIZED:
-      web_callbacks->OnError(blink::WebSetSinkIdError::kNotAuthorized);
+      std::move(callback).Run(blink::WebSetSinkIdError::kNotAuthorized);
       break;
     case OUTPUT_DEVICE_STATUS_ERROR_TIMED_OUT:
     case OUTPUT_DEVICE_STATUS_ERROR_INTERNAL:
-      web_callbacks->OnError(blink::WebSetSinkIdError::kAborted);
+      std::move(callback).Run(blink::WebSetSinkIdError::kAborted);
       break;
   }
 }
@@ -216,9 +215,9 @@
 }  // namespace
 
 OutputDeviceStatusCB ConvertToOutputDeviceStatusCB(
-    std::unique_ptr<blink::WebSetSinkIdCallbacks> callbacks) {
+    blink::WebSetSinkIdCompleteCallback callback) {
   return media::BindToCurrentLoop(
-      base::BindOnce(RunSetSinkIdCallback, std::move(callbacks)));
+      base::BindOnce(RunSetSinkIdCallback, std::move(callback)));
 }
 
 }  // namespace media
diff --git a/media/blink/webmediaplayer_util.h b/media/blink/webmediaplayer_util.h
index 38d754db..7b33ca2 100644
--- a/media/blink/webmediaplayer_util.h
+++ b/media/blink/webmediaplayer_util.h
@@ -57,10 +57,10 @@
 blink::WebEncryptedMediaInitDataType MEDIA_BLINK_EXPORT
 ConvertToWebInitDataType(EmeInitDataType init_data_type);
 
-// Wraps a blink::WebSetSinkIdCallbacks into a media::OutputDeviceStatusCB
-// and binds it to the current thread
+// Wraps a blink::WebSetSinkIdCompleteCallback into a
+// media::OutputDeviceStatusCB and binds it to the current thread
 OutputDeviceStatusCB MEDIA_BLINK_EXPORT ConvertToOutputDeviceStatusCB(
-    std::unique_ptr<blink::WebSetSinkIdCallbacks> callbacks);
+    blink::WebSetSinkIdCompleteCallback completion_callback);
 
 }  // namespace media
 
diff --git a/media/gpu/test/video_frame_validator.cc b/media/gpu/test/video_frame_validator.cc
index 88e627b2..efc731c 100644
--- a/media/gpu/test/video_frame_validator.cc
+++ b/media/gpu/test/video_frame_validator.cc
@@ -75,10 +75,6 @@
   DCHECK_EQ(0u, num_frames_validating_);
 }
 
-const std::vector<std::string>& VideoFrameValidator::GetFrameChecksums() const {
-  return frame_checksums_;
-}
-
 std::vector<VideoFrameValidator::MismatchedFrameInfo>
 VideoFrameValidator::GetMismatchedFramesInfo() const {
   base::AutoLock auto_lock(frame_validator_lock_);
@@ -140,7 +136,6 @@
   std::string computed_md5 = ComputeMD5FromVideoFrame(validated_frame.get());
 
   base::AutoLock auto_lock(frame_validator_lock_);
-  frame_checksums_.push_back(computed_md5);
 
   if (expected_frame_checksums_.size() > 0) {
     LOG_IF(FATAL, frame_index >= expected_frame_checksums_.size())
diff --git a/media/gpu/test/video_frame_validator.h b/media/gpu/test/video_frame_validator.h
index 1fd3461..e51df3c 100644
--- a/media/gpu/test/video_frame_validator.h
+++ b/media/gpu/test/video_frame_validator.h
@@ -54,9 +54,6 @@
 
   ~VideoFrameValidator() override;
 
-  // Get the ordered list of calculated frame checksums.
-  const std::vector<std::string>& GetFrameChecksums() const;
-
   // Returns information of frames that don't match golden md5 values.
   // If there is no mismatched frame, returns an empty vector. This function is
   // thread-safe.
@@ -95,9 +92,6 @@
   std::vector<MismatchedFrameInfo> mismatched_frames_
       GUARDED_BY(frame_validator_lock_);
 
-  // The list of calculated MD5 frame checksums.
-  std::vector<std::string> frame_checksums_ GUARDED_BY(frame_validator_lock_);
-
   // The list of expected MD5 frame checksums.
   const std::vector<std::string> expected_frame_checksums_;
 
diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc
index 18e8f87..dc8eced 100644
--- a/media/gpu/vaapi/vaapi_wrapper.cc
+++ b/media/gpu/vaapi/vaapi_wrapper.cc
@@ -1690,7 +1690,8 @@
   std::vector<VAConfigAttrib> required_attribs =
       GetRequiredAttribs(mode, va_profile);
 
-  if ((mode == CodecMode::kEncode) && IsLowPowerEncSupported(va_profile)) {
+  if (mode == CodecMode::kEncode && IsLowPowerEncSupported(va_profile) &&
+      base::FeatureList::IsEnabled(kVaapiLowPowerEncoder)) {
     entrypoint = VAEntrypointEncSliceLP;
     DVLOG(2) << "Enable VA-API Low-Power Encode Entrypoint";
   }
diff --git a/media/gpu/video_decode_accelerator_unittest.cc b/media/gpu/video_decode_accelerator_unittest.cc
index 871b04f..56b88d3 100644
--- a/media/gpu/video_decode_accelerator_unittest.cc
+++ b/media/gpu/video_decode_accelerator_unittest.cc
@@ -1693,60 +1693,6 @@
   WaitUntilDecodeFinish(notes_[0].get());
 }
 
-#if defined(OS_CHROMEOS)
-// This is the case only for generating md5 values of video frames on stream.
-// This is disabled by default. To run this, you should run this test with
-// --gtest_filter=VideoDecodeAcceleratorTest.DISABLED_GenMD5 and
-// --gtest_also_run_disabled_tests
-TEST_F(VideoDecodeAcceleratorTest, DISABLED_GenMD5) {
-  g_validate_frames = false;
-  g_calculate_checksums = true;
-  g_test_import = true;
-
-  ASSERT_EQ(test_video_files_.size(), 1u);
-  notes_.push_back(
-      std::make_unique<media::test::ClientStateNotification<ClientState>>());
-  const TestVideoFile* video_file = test_video_files_[0].get();
-  GLRenderingVDAClient::Config config;
-  config.frame_size = gfx::Size(video_file->width, video_file->height);
-  config.profile = video_file->profile;
-  config.fake_decoder = g_fake_decoder;
-  config.num_frames = video_file->num_frames;
-  auto video_frame_validator =
-      CreateAndInitializeVideoFrameValidator(video_file->file_name);
-  media::test::VideoFrameValidator* frame_validator =
-      video_frame_validator.get();
-  clients_.push_back(std::make_unique<GLRenderingVDAClient>(
-      std::move(config), video_file->data_str, &rendering_helper_,
-      std::move(video_frame_validator), nullptr, notes_[0].get()));
-  RenderingHelperParams helper_params;
-  helper_params.num_windows = 1;
-  InitializeRenderingHelper(helper_params);
-  CreateAndStartDecoder(clients_[0].get(), notes_[0].get());
-  ClientState last_state = WaitUntilDecodeFinish(notes_[0].get());
-  EXPECT_NE(CS_ERROR, last_state);
-
-  // Write out computed md5 values.
-  frame_validator->WaitUntilDone();
-  const std::vector<std::string>& frame_checksums =
-      frame_validator->GetFrameChecksums();
-  base::FilePath md5_file_path(video_file->file_name);
-  md5_file_path = md5_file_path.AddExtension(FILE_PATH_LITERAL(".frames.md5"));
-  base::File md5_file(md5_file_path, base::File::FLAG_CREATE_ALWAYS |
-                                         base::File::FLAG_WRITE |
-                                         base::File::FLAG_APPEND);
-  if (!md5_file.IsValid())
-    LOG(ERROR) << "Failed to create md5 file to write " << md5_file_path;
-
-  for (const std::string& frame_checksum : frame_checksums) {
-    md5_file.Write(0, frame_checksum.data(), frame_checksum.size());
-    md5_file.Write(0, "\n", 1);
-  }
-
-  g_test_import = false;
-}
-#endif
-
 // TODO(fischman, vrk): add more tests!  In particular:
 // - Test life-cycle: Seek/Stop/Pause/Play for a single decoder.
 // - Test alternate configurations
diff --git a/media/renderers/paint_canvas_video_renderer.cc b/media/renderers/paint_canvas_video_renderer.cc
index 527cfaf..8f829f1 100644
--- a/media/renderers/paint_canvas_video_renderer.cc
+++ b/media/renderers/paint_canvas_video_renderer.cc
@@ -83,10 +83,12 @@
   DISALLOW_IMPLICIT_CONSTRUCTORS(SyncTokenClientImpl);
 };
 
-sk_sp<SkImage> YUVGrBackendTexturesToSkImage(GrContext* gr_context,
-                                             gfx::ColorSpace video_color_space,
-                                             VideoPixelFormat video_format,
-                                             GrBackendTexture* textures) {
+sk_sp<SkImage> YUVGrBackendTexturesToSkImage(
+    GrContext* gr_context,
+    gfx::ColorSpace video_color_space,
+    VideoPixelFormat video_format,
+    GrBackendTexture* yuv_textures,
+    GrBackendTexture* result_texture = nullptr) {
   // TODO(hubbe): This should really default to rec709.
   // https://crbug.com/828599
   SkYUVColorSpace color_space = kRec601_SkYUVColorSpace;
@@ -94,34 +96,43 @@
 
   switch (video_format) {
     case PIXEL_FORMAT_NV12:
-      return SkImage::MakeFromNV12TexturesCopy(
-          gr_context, color_space, textures, kTopLeft_GrSurfaceOrigin);
+      if (result_texture) {
+        return SkImage::MakeFromNV12TexturesCopyWithExternalBackend(
+            gr_context, color_space, yuv_textures, kTopLeft_GrSurfaceOrigin,
+            result_texture[0]);
+      } else {
+        return SkImage::MakeFromNV12TexturesCopy(
+            gr_context, color_space, yuv_textures, kTopLeft_GrSurfaceOrigin);
+      }
     case PIXEL_FORMAT_I420:
-      return SkImage::MakeFromYUVTexturesCopy(gr_context, color_space, textures,
-                                              kTopLeft_GrSurfaceOrigin);
+      if (result_texture) {
+        return SkImage::MakeFromYUVTexturesCopyWithExternalBackend(
+            gr_context, color_space, yuv_textures, kTopLeft_GrSurfaceOrigin,
+            result_texture[0]);
+      } else {
+        return SkImage::MakeFromYUVTexturesCopy(
+            gr_context, color_space, yuv_textures, kTopLeft_GrSurfaceOrigin);
+      }
     default:
       NOTREACHED();
       return nullptr;
   }
 }
 
-sk_sp<SkImage> NewSkImageFromVideoFrameYUVTextures(
-    const VideoFrame* video_frame,
-    const Context3D& context_3d) {
-  DCHECK(video_frame->HasTextures());
-  // TODO: We should compare the DCHECK vs when UpdateLastImage calls this
-  // function. (crbug.com/674185)
-  DCHECK(video_frame->format() == PIXEL_FORMAT_I420 ||
-         video_frame->format() == PIXEL_FORMAT_NV12);
+static constexpr size_t kNumYUVPlanes = 3;
+struct YUVPlaneTextureInfo {
+  GrGLTextureInfo texture = {0, 0};
+  GLint minFilter = 0;
+  GLint magFilter = 0;
+};
+using YUVTexturesInfo = std::array<YUVPlaneTextureInfo, kNumYUVPlanes>;
+
+YUVTexturesInfo GetYUVTexturesInfo(const VideoFrame* video_frame,
+                                   const Context3D& context_3d) {
+  YUVTexturesInfo yuv_textures_info;
 
   gpu::gles2::GLES2Interface* gl = context_3d.gl;
   DCHECK(gl);
-  gfx::Size ya_tex_size = video_frame->coded_size();
-  gfx::Size uv_tex_size((ya_tex_size.width() + 1) / 2,
-                        (ya_tex_size.height() + 1) / 2);
-
-  GrGLTextureInfo source_textures[] = {{0, 0}, {0, 0}, {0, 0}};
-  GLint min_mag_filter[][2] = {{0, 0}, {0, 0}, {0, 0}};
   // TODO(bsalomon): Use GL_RGB8 once Skia supports it.
   // skbug.com/7533
   GrGLenum skia_texture_format =
@@ -135,16 +146,17 @@
         << "Unsupported texture target " << std::hex << std::showbase
         << mailbox_holder.texture_target;
     gl->WaitSyncTokenCHROMIUM(mailbox_holder.sync_token.GetConstData());
-    source_textures[i].fID =
+    yuv_textures_info[i].texture.fID =
         gl->CreateAndConsumeTextureCHROMIUM(mailbox_holder.mailbox.name);
-    source_textures[i].fTarget = mailbox_holder.texture_target;
-    source_textures[i].fFormat = skia_texture_format;
+    yuv_textures_info[i].texture.fTarget = mailbox_holder.texture_target;
+    yuv_textures_info[i].texture.fFormat = skia_texture_format;
 
-    gl->BindTexture(mailbox_holder.texture_target, source_textures[i].fID);
+    gl->BindTexture(mailbox_holder.texture_target,
+                    yuv_textures_info[i].texture.fID);
     gl->GetTexParameteriv(mailbox_holder.texture_target, GL_TEXTURE_MIN_FILTER,
-                          &min_mag_filter[i][0]);
+                          &yuv_textures_info[i].minFilter);
     gl->GetTexParameteriv(mailbox_holder.texture_target, GL_TEXTURE_MAG_FILTER,
-                          &min_mag_filter[i][1]);
+                          &yuv_textures_info[i].magFilter);
     // TODO(dcastagna): avoid this copy once Skia supports native textures
     // with a GL_TEXTURE_RECTANGLE_ARB texture target.
     // crbug.com/505026
@@ -153,37 +165,113 @@
       gl->GenTextures(1, &texture_copy);
       DCHECK(texture_copy);
       gl->BindTexture(GL_TEXTURE_2D, texture_copy);
-      gl->CopyTextureCHROMIUM(source_textures[i].fID, 0, GL_TEXTURE_2D,
-                              texture_copy, 0, GL_RGB, GL_UNSIGNED_BYTE, false,
-                              true, false);
+      gl->CopyTextureCHROMIUM(yuv_textures_info[i].texture.fID, 0,
+                              GL_TEXTURE_2D, texture_copy, 0, GL_RGB,
+                              GL_UNSIGNED_BYTE, false, true, false);
 
-      gl->DeleteTextures(1, &source_textures[i].fID);
-      source_textures[i].fID = texture_copy;
-      source_textures[i].fTarget = GL_TEXTURE_2D;
+      gl->DeleteTextures(1, &yuv_textures_info[i].texture.fID);
+      yuv_textures_info[i].texture.fID = texture_copy;
+      yuv_textures_info[i].texture.fTarget = GL_TEXTURE_2D;
     }
   }
-  GrBackendTexture textures[3] = {
+
+  return yuv_textures_info;
+}
+
+void DeleteYUVTextures(const VideoFrame* video_frame,
+                       const Context3D& context_3d,
+                       const YUVTexturesInfo& yuv_textures_info) {
+  gpu::gles2::GLES2Interface* gl = context_3d.gl;
+  DCHECK(gl);
+
+  for (size_t i = 0; i < video_frame->NumTextures(); ++i) {
+    gl->BindTexture(yuv_textures_info[i].texture.fTarget,
+                    yuv_textures_info[i].texture.fID);
+    gl->TexParameteri(yuv_textures_info[i].texture.fTarget,
+                      GL_TEXTURE_MIN_FILTER, yuv_textures_info[i].minFilter);
+    gl->TexParameteri(yuv_textures_info[i].texture.fTarget,
+                      GL_TEXTURE_MAG_FILTER, yuv_textures_info[i].magFilter);
+    gl->DeleteTextures(1, &yuv_textures_info[i].texture.fID);
+  }
+}
+
+sk_sp<SkImage> NewSkImageFromVideoFrameYUVTextures(
+    const VideoFrame* video_frame,
+    const Context3D& context_3d) {
+  DCHECK(video_frame->HasTextures());
+  // TODO: We should compare the DCHECK vs when UpdateLastImage calls this
+  // function. (crbug.com/674185)
+  DCHECK(video_frame->format() == PIXEL_FORMAT_I420 ||
+         video_frame->format() == PIXEL_FORMAT_NV12);
+
+  gfx::Size ya_tex_size = video_frame->coded_size();
+  gfx::Size uv_tex_size((ya_tex_size.width() + 1) / 2,
+                        (ya_tex_size.height() + 1) / 2);
+
+  YUVTexturesInfo yuv_textures_info =
+      GetYUVTexturesInfo(video_frame, context_3d);
+
+  GrBackendTexture yuv_textures[3] = {
       GrBackendTexture(ya_tex_size.width(), ya_tex_size.height(),
-                       GrMipMapped::kNo, source_textures[0]),
+                       GrMipMapped::kNo, yuv_textures_info[0].texture),
       GrBackendTexture(uv_tex_size.width(), uv_tex_size.height(),
-                       GrMipMapped::kNo, source_textures[1]),
+                       GrMipMapped::kNo, yuv_textures_info[1].texture),
       GrBackendTexture(uv_tex_size.width(), uv_tex_size.height(),
-                       GrMipMapped::kNo, source_textures[2]),
+                       GrMipMapped::kNo, yuv_textures_info[2].texture),
   };
 
   sk_sp<SkImage> img = YUVGrBackendTexturesToSkImage(
       context_3d.gr_context, video_frame->ColorSpace(), video_frame->format(),
-      textures);
+      yuv_textures);
 
-  for (size_t i = 0; i < video_frame->NumTextures(); ++i) {
-    gl->BindTexture(source_textures[i].fTarget, source_textures[i].fID);
-    gl->TexParameteri(source_textures[i].fTarget, GL_TEXTURE_MIN_FILTER,
-                      min_mag_filter[i][0]);
-    gl->TexParameteri(source_textures[i].fTarget, GL_TEXTURE_MAG_FILTER,
-                      min_mag_filter[i][1]);
+  DeleteYUVTextures(video_frame, context_3d, yuv_textures_info);
 
-    gl->DeleteTextures(1, &source_textures[i].fID);
-  }
+  return img;
+}
+
+sk_sp<SkImage> NewSkImageFromVideoFrameYUVTexturesWithExternalBackend(
+    const VideoFrame* video_frame,
+    const Context3D& context_3d,
+    unsigned int texture_target,
+    unsigned int texture_id) {
+  DCHECK(video_frame->HasTextures());
+  // TODO: We should compare the DCHECK vs when UpdateLastImage calls this
+  // function. (https://crbug.com/674185)
+  DCHECK(video_frame->format() == PIXEL_FORMAT_I420 ||
+         video_frame->format() == PIXEL_FORMAT_NV12);
+
+  gfx::Size ya_tex_size = video_frame->coded_size();
+  gfx::Size uv_tex_size((ya_tex_size.width() + 1) / 2,
+                        (ya_tex_size.height() + 1) / 2);
+
+  GrGLTextureInfo backend_texture{};
+
+  YUVTexturesInfo yuv_textures_info =
+      GetYUVTexturesInfo(video_frame, context_3d);
+
+  GrBackendTexture yuv_textures[3] = {
+      GrBackendTexture(ya_tex_size.width(), ya_tex_size.height(),
+                       GrMipMapped::kNo, yuv_textures_info[0].texture),
+      GrBackendTexture(uv_tex_size.width(), uv_tex_size.height(),
+                       GrMipMapped::kNo, yuv_textures_info[1].texture),
+      GrBackendTexture(uv_tex_size.width(), uv_tex_size.height(),
+                       GrMipMapped::kNo, yuv_textures_info[2].texture),
+  };
+  backend_texture.fID = texture_id;
+  backend_texture.fTarget = texture_target;
+  backend_texture.fFormat = GL_RGBA8;
+  GrBackendTexture result_texture[1] = {
+      GrBackendTexture(video_frame->coded_size().width(),
+                       video_frame->coded_size().height(), GrMipMapped::kNo,
+                       backend_texture),
+  };
+
+  sk_sp<SkImage> img = YUVGrBackendTexturesToSkImage(
+      context_3d.gr_context, video_frame->ColorSpace(), video_frame->format(),
+      yuv_textures, result_texture);
+
+  DeleteYUVTextures(video_frame, context_3d, yuv_textures_info);
+
   return img;
 }
 
@@ -1063,6 +1151,79 @@
   return true;
 }
 
+bool PaintCanvasVideoRenderer::PrepareVideoFrameForWebGL(
+    const Context3D& context_3d,
+    gpu::gles2::GLES2Interface* destination_gl,
+    const scoped_refptr<VideoFrame>& video_frame,
+    unsigned int target,
+    unsigned int texture) {
+  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK(video_frame);
+  DCHECK(video_frame->HasTextures());
+  if (video_frame->NumTextures() == 1) {
+    if (target == GL_TEXTURE_EXTERNAL_OES) {
+      // We don't support Android now.
+      // TODO(crbug.com/776222): support Android.
+      return false;
+    }
+    // We don't support sharing single video frame texture now.
+    // TODO(crbug.com/776222): deal with single video frame texture.
+    return false;
+  }
+
+  if (!context_3d.gr_context)
+    return false;
+
+  // Take webgl video texture as 2D texture. Setting it as external render
+  // target backend for skia.
+  destination_gl->BindTexture(target, texture);
+  destination_gl->TexImage2D(target, 0, GL_RGBA,
+                             video_frame->coded_size().width(),
+                             video_frame->coded_size().height(), 0, GL_RGBA,
+                             GL_UNSIGNED_BYTE, nullptr);
+
+  gpu::gles2::GLES2Interface* source_gl = context_3d.gl;
+  gpu::MailboxHolder mailbox_holder;
+  mailbox_holder.texture_target = target;
+  destination_gl->ProduceTextureDirectCHROMIUM(texture,
+                                               mailbox_holder.mailbox.name);
+
+  destination_gl->GenUnverifiedSyncTokenCHROMIUM(
+      mailbox_holder.sync_token.GetData());
+
+  source_gl->WaitSyncTokenCHROMIUM(mailbox_holder.sync_token.GetConstData());
+
+  uint32_t shared_texture =
+      source_gl->CreateAndConsumeTextureCHROMIUM(mailbox_holder.mailbox.name);
+
+  if (!PrepareVideoFrame(video_frame, context_3d, target, shared_texture)) {
+    return false;
+  }
+
+  // Warning : This approach has failed previously. The history is
+  // https://chromium-review.googlesource.com/c/chromium/src/+/1251321.
+  // It failed to execute texture copy on mac.
+  // The possible solution is here:
+  // https://chromium-review.googlesource.com/c/chromium/src/+/1258212
+  // make a copy of the video texture in that case so that the copy
+  // could be done in |destination_gl|.
+  source_gl->ProduceTextureDirectCHROMIUM(shared_texture,
+                                          mailbox_holder.mailbox.name);
+
+  // Wait for mailbox creation on canvas context before consuming it and
+  // copying from it on the consumer context.
+  source_gl->GenUnverifiedSyncTokenCHROMIUM(
+      mailbox_holder.sync_token.GetData());
+
+  destination_gl->WaitSyncTokenCHROMIUM(
+      mailbox_holder.sync_token.GetConstData());
+
+  SyncTokenClientImpl client(source_gl);
+  video_frame->UpdateReleaseSyncToken(&client);
+
+  return true;
+}
+
 bool PaintCanvasVideoRenderer::CopyVideoFrameYUVDataToGLTexture(
     const Context3D& context_3d,
     gpu::gles2::GLES2Interface* destination_gl,
@@ -1301,6 +1462,48 @@
   return true;
 }
 
+bool PaintCanvasVideoRenderer::PrepareVideoFrame(
+    const scoped_refptr<VideoFrame>& video_frame,
+    const Context3D& context_3d,
+    unsigned int textureTarget,
+    unsigned int texture) {
+  auto paint_image_builder =
+      cc::PaintImageBuilder::WithDefault()
+          .set_id(renderer_stable_id_)
+          .set_animation_type(cc::PaintImage::AnimationType::VIDEO)
+          .set_completion_state(cc::PaintImage::CompletionState::DONE);
+
+  // Generate a new image.
+  // Note: Skia will hold onto |video_frame| via |video_generator| only when
+  // |video_frame| is software.
+  // Holding |video_frame| longer than this call when using GPUVideoDecoder
+  // could cause problems since the pool of VideoFrames has a fixed size.
+  if (video_frame->HasTextures()) {
+    DCHECK(context_3d.gr_context);
+    DCHECK(context_3d.gl);
+    if (video_frame->NumTextures() > 1) {
+      paint_image_builder.set_image(
+          NewSkImageFromVideoFrameYUVTexturesWithExternalBackend(
+              video_frame.get(), context_3d, textureTarget, texture),
+          cc::PaintImage::GetNextContentId());
+    } else {
+      // We don't support Android now.
+      return false;
+    }
+  } else {
+    paint_image_builder.set_paint_image_generator(
+        sk_make_sp<VideoImageGenerator>(video_frame));
+  }
+  last_image_ = paint_image_builder.TakePaintImage();
+  CorrectLastImageDimensions(gfx::RectToSkIRect(video_frame->visible_rect()));
+  if (!last_image_)  // Couldn't create the SkImage.
+    return false;
+  last_id_ = video_frame->unique_id();
+  last_image_deleting_timer_.Reset();
+  DCHECK(!!last_image_);
+  return true;
+}
+
 void PaintCanvasVideoRenderer::CorrectLastImageDimensions(
     const SkIRect& visible_rect) {
   last_image_dimensions_for_testing_ = visible_rect.size();
diff --git a/media/renderers/paint_canvas_video_renderer.h b/media/renderers/paint_canvas_video_renderer.h
index d4752f3..795a992c 100644
--- a/media/renderers/paint_canvas_video_renderer.h
+++ b/media/renderers/paint_canvas_video_renderer.h
@@ -104,6 +104,12 @@
       bool premultiply_alpha,
       bool flip_y);
 
+  bool PrepareVideoFrameForWebGL(const Context3D& context_3d,
+                                 gpu::gles2::GLES2Interface* gl,
+                                 const scoped_refptr<VideoFrame>& video_frame,
+                                 unsigned int target,
+                                 unsigned int texture);
+
   // Copy the CPU-side YUV contents of |video_frame| to texture |texture| in
   // context |destination_gl|.
   // |level|, |internal_format|, |type| specify target texture |texture|.
@@ -181,6 +187,11 @@
 
   void CorrectLastImageDimensions(const SkIRect& visible_rect);
 
+  bool PrepareVideoFrame(const scoped_refptr<VideoFrame>& video_frame,
+                         const Context3D& context_3d,
+                         unsigned int textureTarget,
+                         unsigned int texture);
+
   // Last image used to draw to the canvas.
   cc::PaintImage last_image_;
 
diff --git a/mojo/core/channel_mac.cc b/mojo/core/channel_mac.cc
index b63ad651..1f51d2c1 100644
--- a/mojo/core/channel_mac.cc
+++ b/mojo/core/channel_mac.cc
@@ -85,11 +85,20 @@
       return;
     }
 
+    // If the channel is not fully established, queue pending messages.
     if (!handshake_done_) {
       pending_messages_.push_back(std::move(message));
       return;
     }
 
+    // If messages are being queued, enqueue |message| and try to flush
+    // the queue.
+    if (send_buffer_contains_message_ || !pending_messages_.empty()) {
+      pending_messages_.push_back(std::move(message));
+      SendPendingMessagesLocked();
+      return;
+    }
+
     SendMessageLocked(std::move(message));
   }
 
@@ -284,14 +293,40 @@
     return true;
   }
 
+  void SendPendingMessages() {
+    base::AutoLock lock(write_lock_);
+    SendPendingMessagesLocked();
+  }
+
   void SendPendingMessagesLocked() {
+    // If a previous send failed due to the receiver's kernel message queue
+    // being full, attempt to send that failed message first.
+    if (send_buffer_contains_message_ && !reject_writes_) {
+      auto* header =
+          reinterpret_cast<mach_msg_header_t*>(send_buffer_.address());
+      if (!MachMessageSendLocked(header)) {
+        // The send failed again. If the peer is still unable to receive,
+        // MachMessageSendLocked() will have arranged another attempt. If an
+        // error occurred, the channel will be shut down.
+        return;
+      }
+    }
+
+    // Try and send any other pending messages that were queued.
     while (!pending_messages_.empty() && !reject_writes_) {
-      SendMessageLocked(std::move(pending_messages_.front()));
+      bool did_send = SendMessageLocked(std::move(pending_messages_.front()));
+      // If the message failed to send because the kernel message queue is
+      // full, the message will have been fully serialized and
+      // |send_buffer_contains_message_| will be set to true. The Mojo message
+      // object can be destroyed at this point.
       pending_messages_.pop_front();
+      if (!did_send)
+        break;
     }
   }
 
-  void SendMessageLocked(MessagePtr message) {
+  bool SendMessageLocked(MessagePtr message) {
+    DCHECK(!send_buffer_contains_message_);
     base::BufferIterator<char> buffer(
         reinterpret_cast<char*>(send_buffer_.address()), send_buffer_.size());
 
@@ -351,7 +386,7 @@
           if (kr != KERN_SUCCESS) {
             MACH_LOG(ERROR, kr) << "fileport_makeport";
             OnWriteErrorLocked(Error::kDisconnected);
-            return;
+            return false;
           }
           descriptor->disposition = MACH_MSG_TYPE_MOVE_SEND;
           break;
@@ -381,15 +416,35 @@
     }
 
     header->msgh_size = round_msg(buffer.position());
+    return MachMessageSendLocked(header);
+  }
 
-    kern_return_t kr =
-        mach_msg(header, MACH_SEND_MSG, header->msgh_size, 0, MACH_PORT_NULL,
-                 MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
+  bool MachMessageSendLocked(mach_msg_header_t* header) {
+    kern_return_t kr = mach_msg(header, MACH_SEND_MSG | MACH_SEND_TIMEOUT,
+                                header->msgh_size, 0, MACH_PORT_NULL,
+                                /*timeout=*/0, MACH_PORT_NULL);
     if (kr != KERN_SUCCESS) {
-      MACH_LOG_IF(ERROR, kr != MACH_SEND_INVALID_DEST, kr) << "mach_msg send";
-      mach_msg_destroy(header);
-      OnWriteErrorLocked(Error::kDisconnected);
+      if (kr == MACH_SEND_TIMED_OUT) {
+        // The kernel message queue for the peer's receive port is full, so the
+        // send timed out. Since the send buffer contains a fully serialized
+        // message, set a flag to indicate this condition and arrange to try
+        // sending it again.
+        send_buffer_contains_message_ = true;
+        io_task_runner_->PostTask(
+            FROM_HERE, base::BindOnce(&ChannelMac::SendPendingMessages, this));
+      } else {
+        // If the message failed to send for other reasons, destroy it and
+        // close the channel.
+        MACH_LOG_IF(ERROR, kr != MACH_SEND_INVALID_DEST, kr) << "mach_msg send";
+        send_buffer_contains_message_ = false;
+        mach_msg_destroy(header);
+        OnWriteErrorLocked(Error::kDisconnected);
+      }
+      return false;
     }
+
+    send_buffer_contains_message_ = false;
+    return true;
   }
 
   // base::MessageLoopCurrent::DestructionObserver:
@@ -616,8 +671,13 @@
   bool reject_writes_ = false;
   // IO buffer for sending Mach messages.
   base::mac::ScopedMachVM send_buffer_;
-  // When |handshake_done_| is false, messages are queued here. Once the
-  // handshake is complete, this queue is flushed and remains empty.
+  // If a message timed out during send in MachMessageSendLocked(), this will
+  // be true to indicate that |send_buffer_| contains a message that must
+  // be sent. If this is true, then other calls to Write() queue messages onto
+  // |pending_messages_|.
+  bool send_buffer_contains_message_ = false;
+  // When |handshake_done_| is false or |send_buffer_contains_message_| is true,
+  // calls to Write() will enqueue messages here.
   base::circular_deque<MessagePtr> pending_messages_;
 
   DISALLOW_COPY_AND_ASSIGN(ChannelMac);
diff --git a/mojo/core/channel_unittest.cc b/mojo/core/channel_unittest.cc
index d5b37dc..14585e3 100644
--- a/mojo/core/channel_unittest.cc
+++ b/mojo/core/channel_unittest.cc
@@ -4,6 +4,8 @@
 
 #include "mojo/core/channel.h"
 
+#include <atomic>
+
 #include "base/bind.h"
 #include "base/memory/ptr_util.h"
 #include "base/message_loop/message_loop.h"
@@ -362,6 +364,127 @@
                                                    base::kNullProcessHandle));
 }
 
+class CountingChannelDelegate : public Channel::Delegate {
+ public:
+  explicit CountingChannelDelegate(base::OnceClosure on_final_message)
+      : on_final_message_(std::move(on_final_message)) {}
+  ~CountingChannelDelegate() override = default;
+
+  void OnChannelMessage(const void* payload,
+                        size_t payload_size,
+                        std::vector<PlatformHandle> handles) override {
+    // If this is the special "final message", run the closure.
+    if (payload_size == 1) {
+      auto* payload_str = reinterpret_cast<const char*>(payload);
+      if (payload_str[0] == '!') {
+        std::move(on_final_message_).Run();
+        return;
+      }
+    }
+
+    ++message_count_;
+  }
+
+  void OnChannelError(Channel::Error error) override { ++error_count_; }
+
+  size_t message_count_ = 0;
+  size_t error_count_ = 0;
+
+ private:
+  base::OnceClosure on_final_message_;
+};
+
+TEST(ChannelTest, PeerStressTest) {
+  constexpr size_t kLotsOfMessages = 1024;
+
+  base::MessageLoop message_loop(base::MessageLoop::TYPE_IO);
+  base::RunLoop run_loop;
+
+  // Both channels should receive all the messages that each is sent. When
+  // the count becomes 2 (indicating both channels have received the final
+  // message), quit the main test thread's run loop.
+  std::atomic_int count_channels_received_final_message(0);
+  auto quit_when_both_channels_received_final_message = base::BindRepeating(
+      [](std::atomic_int* count_channels_received_final_message,
+         base::OnceClosure quit_closure) {
+        if (++(*count_channels_received_final_message) == 2) {
+          std::move(quit_closure).Run();
+        }
+      },
+      base::Unretained(&count_channels_received_final_message),
+      run_loop.QuitClosure());
+
+  // Create a second IO thread for the peer channel.
+  base::Thread::Options thread_options;
+  thread_options.message_loop_type = base::MessageLoop::TYPE_IO;
+  base::Thread peer_thread("peer_b_io");
+  peer_thread.StartWithOptions(thread_options);
+
+  // Create two channels that run on separate threads.
+  PlatformChannel platform_channel;
+
+  CountingChannelDelegate delegate_a(
+      quit_when_both_channels_received_final_message);
+  scoped_refptr<Channel> channel_a = Channel::Create(
+      &delegate_a, ConnectionParams(platform_channel.TakeLocalEndpoint()),
+      Channel::HandlePolicy::kRejectHandles, message_loop.task_runner());
+
+  CountingChannelDelegate delegate_b(
+      quit_when_both_channels_received_final_message);
+  scoped_refptr<Channel> channel_b = Channel::Create(
+      &delegate_b, ConnectionParams(platform_channel.TakeRemoteEndpoint()),
+      Channel::HandlePolicy::kRejectHandles, peer_thread.task_runner());
+
+  // Send a lot of messages, followed by a final terminating message.
+  auto send_lots_of_messages = [](scoped_refptr<Channel> channel) {
+    for (size_t i = 0; i < kLotsOfMessages; ++i) {
+      channel->Write(std::make_unique<Channel::Message>(0, 0));
+    }
+  };
+  auto send_final_message = [](scoped_refptr<Channel> channel) {
+    auto message = std::make_unique<Channel::Message>(1, 0);
+    auto* payload = static_cast<char*>(message->mutable_payload());
+    payload[0] = '!';
+    channel->Write(std::move(message));
+  };
+
+  channel_a->Start();
+  channel_b->Start();
+
+  send_lots_of_messages(channel_a);
+  send_lots_of_messages(channel_b);
+
+  message_loop.task_runner()->PostTask(
+      FROM_HERE, base::BindOnce(send_lots_of_messages, channel_a));
+  message_loop.task_runner()->PostTask(
+      FROM_HERE, base::BindOnce(send_lots_of_messages, channel_a));
+  message_loop.task_runner()->PostTask(
+      FROM_HERE, base::BindOnce(send_final_message, channel_a));
+
+  peer_thread.task_runner()->PostTask(
+      FROM_HERE, base::BindOnce(send_lots_of_messages, channel_b));
+  peer_thread.task_runner()->PostTask(
+      FROM_HERE, base::BindOnce(send_lots_of_messages, channel_b));
+  peer_thread.task_runner()->PostTask(
+      FROM_HERE, base::BindOnce(send_final_message, channel_b));
+
+  // Run until quit_when_both_channels_received_final_message quits the loop.
+  run_loop.Run();
+
+  channel_a->ShutDown();
+  channel_b->ShutDown();
+
+  peer_thread.StopSoon();
+
+  base::RunLoop().RunUntilIdle();
+
+  EXPECT_EQ(kLotsOfMessages * 3, delegate_a.message_count_);
+  EXPECT_EQ(kLotsOfMessages * 3, delegate_b.message_count_);
+
+  EXPECT_EQ(0u, delegate_a.error_count_);
+  EXPECT_EQ(0u, delegate_b.error_count_);
+}
+
 }  // namespace
 }  // namespace core
 }  // namespace mojo
diff --git a/net/quic/quic_chromium_client_session.cc b/net/quic/quic_chromium_client_session.cc
index 6f989ff..b9744c8b 100644
--- a/net/quic/quic_chromium_client_session.cc
+++ b/net/quic/quic_chromium_client_session.cc
@@ -1219,7 +1219,6 @@
 
   ssl_info->connection_status = ssl_connection_status;
   ssl_info->client_cert_sent = false;
-  ssl_info->channel_id_sent = crypto_stream_->WasChannelIDSent();
   ssl_info->handshake_type = SSLInfo::HANDSHAKE_FULL;
   ssl_info->pinning_failure_log = pinning_failure_log_;
   ssl_info->is_fatal_cert_error = is_fatal_cert_error_;
diff --git a/net/quic/quic_chromium_client_session_test.cc b/net/quic/quic_chromium_client_session_test.cc
index 11b6c09f..6c0a8db 100644
--- a/net/quic/quic_chromium_client_session_test.cc
+++ b/net/quic/quic_chromium_client_session_test.cc
@@ -72,26 +72,13 @@
 const uint16_t kServerPort = 443;
 const size_t kMaxReadersPerQuicSession = 5;
 
-// A subclass of QuicChromiumClientSession with GetSSLInfo overriden to allow
-// forcing the value of SSLInfo::channel_id_sent to true.
+// A subclass of QuicChromiumClientSession that allows OnPathDegrading to be
+// mocked.
 class TestingQuicChromiumClientSession : public QuicChromiumClientSession {
  public:
   using QuicChromiumClientSession::QuicChromiumClientSession;
 
-  bool GetSSLInfo(SSLInfo* ssl_info) const override {
-    bool ret = QuicChromiumClientSession::GetSSLInfo(ssl_info);
-    if (ret)
-      ssl_info->channel_id_sent =
-          ssl_info->channel_id_sent || force_channel_id_sent_;
-    return ret;
-  }
-
-  void OverrideChannelIDSent() { force_channel_id_sent_ = true; }
-
   MOCK_METHOD0(OnPathDegrading, void());
-
- private:
-  bool force_channel_id_sent_ = false;
 };
 
 class QuicChromiumClientSessionTest
@@ -1302,39 +1289,6 @@
       session_->CanPool("mail.google.com", PRIVACY_MODE_DISABLED, SocketTag()));
 }
 
-TEST_P(QuicChromiumClientSessionTest, ConnectionPooledWithTlsChannelId) {
-  MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
-  std::unique_ptr<quic::QuicEncryptedPacket> settings_packet(
-      client_maker_.MakeInitialSettingsPacket(1, nullptr));
-  MockWrite writes[] = {
-      MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1)};
-  socket_data_.reset(new SequencedSocketData(reads, writes));
-  Initialize();
-  // Load a cert that is valid for:
-  //   www.example.org
-  //   mail.example.org
-  //   www.example.com
-
-  ProofVerifyDetailsChromium details;
-  details.cert_verify_result.verified_cert =
-      ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
-  ASSERT_TRUE(details.cert_verify_result.verified_cert.get());
-
-  CompleteCryptoHandshake();
-  session_->OnProofVerifyDetailsAvailable(details);
-  QuicChromiumClientSessionPeer::SetHostname(session_.get(), "www.example.org");
-  session_->OverrideChannelIDSent();
-
-  EXPECT_TRUE(
-      session_->CanPool("www.example.org", PRIVACY_MODE_DISABLED, SocketTag()));
-  EXPECT_TRUE(session_->CanPool("mail.example.org", PRIVACY_MODE_DISABLED,
-                                SocketTag()));
-  EXPECT_FALSE(session_->CanPool("mail.example.com", PRIVACY_MODE_DISABLED,
-                                 SocketTag()));
-  EXPECT_FALSE(
-      session_->CanPool("mail.google.com", PRIVACY_MODE_DISABLED, SocketTag()));
-}
-
 TEST_P(QuicChromiumClientSessionTest, ConnectionNotPooledWithDifferentPin) {
   // Configure the TransportSecurityStateSource so that kPreloadedPKPHost will
   // have static PKP pins set.
@@ -1371,7 +1325,6 @@
   CompleteCryptoHandshake();
   session_->OnProofVerifyDetailsAvailable(details);
   QuicChromiumClientSessionPeer::SetHostname(session_.get(), kNoPinsHost);
-  session_->OverrideChannelIDSent();
 
   EXPECT_FALSE(
       session_->CanPool(kPreloadedPKPHost, PRIVACY_MODE_DISABLED, SocketTag()));
@@ -1404,7 +1357,6 @@
   CompleteCryptoHandshake();
   session_->OnProofVerifyDetailsAvailable(details);
   QuicChromiumClientSessionPeer::SetHostname(session_.get(), "www.example.org");
-  session_->OverrideChannelIDSent();
 
   EXPECT_TRUE(session_->CanPool("mail.example.org", PRIVACY_MODE_DISABLED,
                                 SocketTag()));
diff --git a/net/quic/quic_http_stream.cc b/net/quic/quic_http_stream.cc
index 3868712..2542c0e 100644
--- a/net/quic/quic_http_stream.cc
+++ b/net/quic/quic_http_stream.cc
@@ -199,17 +199,6 @@
   CHECK(!callback.is_null());
   CHECK(response);
 
-  // TODO(rch): remove this once we figure out why channel ID is not being
-  // sent when it should be.
-  HostPortPair origin = HostPortPair::FromURL(request_info_->url);
-  if (origin.Equals(HostPortPair("accounts.google.com", 443)) &&
-      request_headers.HasHeader(HttpRequestHeaders::kCookie)) {
-    SSLInfo ssl_info;
-    GetSSLInfo(&ssl_info);
-    UMA_HISTOGRAM_BOOLEAN("Net.QuicSession.CookieSentToAccountsOverChannelId",
-                          ssl_info.channel_id_sent);
-  }
-
   // In order to rendezvous with a push stream, the session still needs to be
   // available. Otherwise the stream needs to be available.
   if ((!found_promise_ && !stream_) || !quic_session()->IsConnected())
diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc
index 294f6aef9..a88cca7 100644
--- a/net/spdy/spdy_session.cc
+++ b/net/spdy/spdy_session.cc
@@ -53,7 +53,6 @@
 #include "net/spdy/spdy_log_util.h"
 #include "net/spdy/spdy_session_pool.h"
 #include "net/spdy/spdy_stream.h"
-#include "net/ssl/channel_id_service.h"
 #include "net/ssl/ssl_cipher_suite_names.h"
 #include "net/ssl/ssl_connection_status_flags.h"
 #include "net/third_party/quiche/src/quic/core/http/spdy_utils.h"
@@ -780,12 +779,6 @@
     return false;
   }
 
-  if (ssl_info.channel_id_sent &&
-      ChannelIDService::GetDomainForHost(new_hostname) !=
-          ChannelIDService::GetDomainForHost(old_hostname)) {
-    return false;
-  }
-
   if (!ssl_info.cert->VerifyNameMatch(new_hostname))
     return false;
 
diff --git a/net/spdy/spdy_session_pool_unittest.cc b/net/spdy/spdy_session_pool_unittest.cc
index 39d24c6..8601ac4 100644
--- a/net/spdy/spdy_session_pool_unittest.cc
+++ b/net/spdy/spdy_session_pool_unittest.cc
@@ -737,14 +737,6 @@
   RunIPPoolingDisabledTest(&ssl);
 }
 
-// Verifies that an SSL connection with channel ID disables SPDY IP pooling.
-TEST_F(SpdySessionPoolTest, IPPoolingChannelID) {
-  SSLSocketDataProvider ssl(ASYNC, OK);
-  ssl.ssl_info.channel_id_sent = true;
-  ssl.next_proto = kProtoHTTP2;
-  RunIPPoolingDisabledTest(&ssl);
-}
-
 // Construct a Pool with SpdySessions in various availability states. Simulate
 // an IP address change. Ensure sessions gracefully shut down. Regression test
 // for crbug.com/379469.
diff --git a/net/spdy/spdy_session_unittest.cc b/net/spdy/spdy_session_unittest.cc
index f5b2fdc..05dd8a9 100644
--- a/net/spdy/spdy_session_unittest.cc
+++ b/net/spdy/spdy_session_unittest.cc
@@ -2781,22 +2781,6 @@
   EXPECT_FALSE(session_->VerifyDomainAuthentication("mail.google.com"));
 }
 
-TEST_F(SpdySessionTest, ConnectionPooledWithTlsChannelId) {
-  SequencedSocketData data;
-  session_deps_.socket_factory->AddSocketDataProvider(&data);
-
-  ssl_.ssl_info.channel_id_sent = true;
-  AddSSLSocketData();
-
-  CreateNetworkSession();
-  CreateSpdySession();
-
-  EXPECT_TRUE(session_->VerifyDomainAuthentication("www.example.org"));
-  EXPECT_TRUE(session_->VerifyDomainAuthentication("mail.example.org"));
-  EXPECT_FALSE(session_->VerifyDomainAuthentication("mail.example.com"));
-  EXPECT_FALSE(session_->VerifyDomainAuthentication("mail.google.com"));
-}
-
 TEST_F(SpdySessionTest, CloseTwoStalledCreateStream) {
   // TODO(rtenneti): Define a helper class/methods and move the common code in
   // this file.
@@ -6789,25 +6773,6 @@
                                     "www.example.org", "mail.example.org"));
 }
 
-TEST(CanPoolTest, CanNotPoolAcrossETLDsWithChannelID) {
-  // Load a cert that is valid for:
-  //   www.example.org
-  //   mail.example.org
-  //   mail.example.com
-
-  TransportSecurityState tss;
-  TestSSLConfigService ssl_config_service;
-  SSLInfo ssl_info;
-  ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(),
-                                     "spdy_pooling.pem");
-  ssl_info.channel_id_sent = true;
-
-  EXPECT_TRUE(SpdySession::CanPool(&tss, ssl_info, ssl_config_service,
-                                   "www.example.org", "mail.example.org"));
-  EXPECT_FALSE(SpdySession::CanPool(&tss, ssl_info, ssl_config_service,
-                                    "www.example.org", "www.example.com"));
-}
-
 TEST(CanPoolTest, CanNotPoolWithBadPins) {
   TransportSecurityState tss;
   tss.EnableStaticPinsForTesting();
diff --git a/net/ssl/ssl_info.h b/net/ssl/ssl_info.h
index d126ef1..f68ece8d 100644
--- a/net/ssl/ssl_info.h
+++ b/net/ssl/ssl_info.h
@@ -98,9 +98,6 @@
   // a Certificate message with no client certificate in it does not count.
   bool client_cert_sent = false;
 
-  // True if a channel ID was sent to the server.
-  bool channel_id_sent = false;
-
   // True if data was received over early data on the server. This field is only
   // set for server sockets.
   bool early_data_received = false;
diff --git a/net/test/android/javatests/src/org/chromium/net/test/EmbeddedTestServerRule.java b/net/test/android/javatests/src/org/chromium/net/test/EmbeddedTestServerRule.java
index 051b3f345..236ae63 100644
--- a/net/test/android/javatests/src/org/chromium/net/test/EmbeddedTestServerRule.java
+++ b/net/test/android/javatests/src/org/chromium/net/test/EmbeddedTestServerRule.java
@@ -29,6 +29,10 @@
     @GuardedBy("mLock")
     private boolean mUseHttps;
 
+    @GuardedBy("mLock")
+    @ServerCertificate
+    private int mCertificateType = ServerCertificate.CERT_OK;
+
     @Override
     protected void finished(Description description) {
         super.finished(description);
@@ -51,7 +55,7 @@
                     Context context = InstrumentationRegistry.getContext();
                     mServer = mUseHttps
                             ? EmbeddedTestServer.createAndStartHTTPSServerWithPort(
-                                    context, ServerCertificate.CERT_OK, mServerPort)
+                                    context, mCertificateType, mServerPort)
                             : EmbeddedTestServer.createAndStartServerWithPort(context, mServerPort);
                 } catch (InterruptedException e) {
                     throw new EmbeddedTestServer.EmbeddedTestServerFailure(
@@ -86,4 +90,12 @@
             mUseHttps = useHttps;
         }
     }
+
+    /** Sets what type of certificate the server uses when running as an HTTPS server. */
+    public void setCertificateType(@ServerCertificate int certificateType) {
+        synchronized (mLock) {
+            assert mServer == null;
+            mCertificateType = certificateType;
+        }
+    }
 }
diff --git a/remoting/test/BUILD.gn b/remoting/test/BUILD.gn
index 93b5fbac..02f0f30 100644
--- a/remoting/test/BUILD.gn
+++ b/remoting/test/BUILD.gn
@@ -12,6 +12,8 @@
     "access_token_fetcher.h",
     "chromoting_test_driver_environment.cc",
     "chromoting_test_driver_environment.h",
+    "cli_util.cc",
+    "cli_util.h",
     "connection_setup_info.cc",
     "connection_setup_info.h",
     "connection_time_observer.cc",
@@ -49,6 +51,8 @@
     "scroll_frame_generator.h",
     "test_chromoting_client.cc",
     "test_chromoting_client.h",
+    "test_oauth_token_getter.cc",
+    "test_oauth_token_getter.h",
     "test_token_storage.cc",
     "test_token_storage.h",
     "test_video_renderer.cc",
@@ -176,19 +180,16 @@
   }
 }
 
-# A binary for testing and fiddling the FTL signaling process.
+# A binary for testing and fiddling FTL services.
 executable("ftl_services_playground") {
   testonly = true
   sources = [
     "ftl_services_playground.cc",
     "ftl_services_playground.h",
     "ftl_services_playground_main.cc",
-    "test_oauth_token_factory.cc",
-    "test_oauth_token_factory.h",
-    "test_token_storage.cc",
-    "test_token_storage.h",
   ]
   deps = [
+    ":test_support",
     "//google_apis",
     "//mojo/core/embedder",
     "//remoting/base",
diff --git a/remoting/test/cli_util.cc b/remoting/test/cli_util.cc
new file mode 100644
index 0000000..6cdd81d
--- /dev/null
+++ b/remoting/test/cli_util.cc
@@ -0,0 +1,96 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "remoting/test/cli_util.h"
+
+#include <string.h>
+
+#include "base/command_line.h"
+#include "base/run_loop.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/task/post_task.h"
+
+namespace {
+
+void PrintOption(int option_number, const std::string& option_name) {
+  printf("  %d. %s\n", option_number, option_name.c_str());
+}
+
+}  // namespace
+
+namespace remoting {
+namespace test {
+
+CommandOption::CommandOption() = default;
+CommandOption::CommandOption(const CommandOption&) = default;
+CommandOption::CommandOption(CommandOption&&) = default;
+CommandOption::CommandOption(
+    const std::string name,
+    const base::RepeatingCallback<void(base::OnceClosure on_done)>& command)
+    : name(name), command(command) {}
+CommandOption::~CommandOption() = default;
+CommandOption& CommandOption::operator=(const CommandOption&) = default;
+CommandOption& CommandOption::operator=(CommandOption&&) = default;
+
+void RunCommandOptionsLoop(const std::vector<CommandOption>& options) {
+  DCHECK_LT(0u, options.size());
+  while (true) {
+    base::RunLoop run_loop;
+
+    printf("\nOptions:\n");
+    int print_option_number = 1;
+    for (const auto& option : options) {
+      PrintOption(print_option_number, option.name);
+      print_option_number++;
+    }
+    int quit_option_number = print_option_number;
+    PrintOption(quit_option_number, "Quit");
+
+    printf("\nYour choice [number]: ");
+    int choice = 0;
+    base::StringToInt(test::ReadString(), &choice);
+    if (choice < 1 || choice > quit_option_number) {
+      fprintf(stderr, "Unknown option\n");
+      continue;
+    }
+    if (choice == quit_option_number) {
+      return;
+    }
+    auto& command = options[choice - 1].command;
+    command.Run(run_loop.QuitWhenIdleClosure());
+    run_loop.Run();
+  }
+}
+
+std::string ReadString() {
+  const int kMaxLen = 1024;
+  std::string str(kMaxLen, 0);
+  char* result = fgets(&str[0], kMaxLen, stdin);
+  if (!result)
+    return std::string();
+  size_t newline_index = str.find('\n');
+  if (newline_index != std::string::npos)
+    str[newline_index] = '\0';
+  str.resize(strlen(&str[0]));
+  return str;
+}
+
+std::string ReadStringFromCommandLineOrStdin(const std::string& switch_name,
+                                             const std::string& read_prompt) {
+  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+  if (command_line->HasSwitch(switch_name)) {
+    return command_line->GetSwitchValueASCII(switch_name);
+  }
+  printf("%s", read_prompt.c_str());
+  return ReadString();
+}
+
+void WaitForEnterKey(base::OnceClosure on_done) {
+  base::PostTaskWithTraitsAndReply(FROM_HERE, {base::MayBlock()},
+                                   base::BindOnce([]() { getchar(); }),
+                                   std::move(on_done));
+}
+
+}  // namespace test
+}  // namespace remoting
diff --git a/remoting/test/cli_util.h b/remoting/test/cli_util.h
new file mode 100644
index 0000000..e92b155
--- /dev/null
+++ b/remoting/test/cli_util.h
@@ -0,0 +1,52 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef REMOTING_TEST_CLI_UTIL_H_
+#define REMOTING_TEST_CLI_UTIL_H_
+
+#include <string>
+#include <vector>
+
+#include "base/callback.h"
+
+namespace remoting {
+namespace test {
+
+struct CommandOption {
+  CommandOption();
+  CommandOption(const CommandOption&);
+  CommandOption(CommandOption&&);
+  CommandOption(
+      const std::string name,
+      const base::RepeatingCallback<void(base::OnceClosure on_done)>& command);
+  ~CommandOption();
+
+  CommandOption& operator=(const CommandOption&);
+  CommandOption& operator=(CommandOption&&);
+
+  std::string name;
+  base::RepeatingCallback<void(base::OnceClosure on_done)> command;
+};
+
+// Shows a menu and keeps asking user to choose a command option. This will
+// block until the user chooses "Quit" from the menu (which is added in addition
+// to |options|).
+void RunCommandOptionsLoop(const std::vector<CommandOption>& options);
+
+// Reads a newline-terminated string from stdin.
+std::string ReadString();
+
+// Read the value of |switch_name| from command line if it exists, otherwise
+// read from stdin.
+std::string ReadStringFromCommandLineOrStdin(const std::string& switch_name,
+                                             const std::string& read_prompt);
+
+// Wait for the user to press enter key on an anonymous sequence and calls
+// |on_done| on current sequence once it is done.
+void WaitForEnterKey(base::OnceClosure on_done);
+
+}  // namespace test
+}  // namespace remoting
+
+#endif  // REMOTING_TEST_CLI_UTIL_H_
diff --git a/remoting/test/fake_test_token_storage.cc b/remoting/test/fake_test_token_storage.cc
index 4c1783a..5199cc7dd 100644
--- a/remoting/test/fake_test_token_storage.cc
+++ b/remoting/test/fake_test_token_storage.cc
@@ -32,6 +32,16 @@
   return refresh_token_write_succeeded_;
 }
 
+std::string FakeTestTokenStorage::FetchUserEmail() {
+  NOTIMPLEMENTED();
+  return "";
+}
+
+bool FakeTestTokenStorage::StoreUserEmail(const std::string& user_email) {
+  NOTIMPLEMENTED();
+  return false;
+}
+
 std::string FakeTestTokenStorage::FetchAccessToken() {
   NOTIMPLEMENTED();
   return "";
diff --git a/remoting/test/fake_test_token_storage.h b/remoting/test/fake_test_token_storage.h
index f1a0deba7..b7763e9 100644
--- a/remoting/test/fake_test_token_storage.h
+++ b/remoting/test/fake_test_token_storage.h
@@ -23,6 +23,8 @@
   // TestTokenStorage interface.
   std::string FetchRefreshToken() override;
   bool StoreRefreshToken(const std::string& refresh_token) override;
+  std::string FetchUserEmail() override;
+  bool StoreUserEmail(const std::string& user_email) override;
   std::string FetchAccessToken() override;
   bool StoreAccessToken(const std::string& access_token) override;
   std::string FetchDeviceId() override;
diff --git a/remoting/test/ftl_services_playground.cc b/remoting/test/ftl_services_playground.cc
index aa6bff7..8b7c2c1 100644
--- a/remoting/test/ftl_services_playground.cc
+++ b/remoting/test/ftl_services_playground.cc
@@ -18,71 +18,28 @@
 #include "base/logging.h"
 #include "base/path_service.h"
 #include "base/run_loop.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/stringprintf.h"
 #include "base/task/post_task.h"
-#include "remoting/base/fake_oauth_token_getter.h"
 #include "remoting/base/oauth_token_getter_impl.h"
 #include "remoting/signaling/ftl_device_id_provider.h"
 #include "remoting/signaling/ftl_grpc_context.h"
 #include "remoting/signaling/ftl_services.grpc.pb.h"
 #include "remoting/signaling/grpc_support/grpc_async_unary_request.h"
-#include "remoting/test/test_oauth_token_factory.h"
+#include "remoting/test/cli_util.h"
+#include "remoting/test/test_oauth_token_getter.h"
 #include "remoting/test/test_token_storage.h"
 
 namespace {
 
 constexpr char kSwitchNameHelp[] = "help";
-constexpr char kSwitchNameAuthCode[] = "code";
 constexpr char kSwitchNameUsername[] = "username";
 constexpr char kSwitchNameStoragePath[] = "storage-path";
 constexpr char kSwitchNameNoAutoSignin[] = "no-auto-signin";
 
-// Reads a newline-terminated string from stdin.
-std::string ReadString() {
-  const int kMaxLen = 1024;
-  std::string str(kMaxLen, 0);
-  char* result = fgets(&str[0], kMaxLen, stdin);
-  if (!result)
-    return std::string();
-  size_t newline_index = str.find('\n');
-  if (newline_index != std::string::npos)
-    str[newline_index] = '\0';
-  str.resize(strlen(&str[0]));
-  return str;
-}
-
-// Read the value of |switch_name| from command line if it exists, otherwise
-// read from stdin.
-std::string ReadStringFromCommandLineOrStdin(const std::string& switch_name,
-                                             const std::string& read_prompt) {
-  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
-  if (command_line->HasSwitch(switch_name)) {
-    return command_line->GetSwitchValueASCII(switch_name);
-  }
-  printf("%s", read_prompt.c_str());
-  return ReadString();
-}
-
-// Wait for the user to press enter key on an anonymous thread and calls
-// |on_done| once it is done.
-void WaitForEnterKey(base::OnceClosure on_done) {
-  base::PostTaskWithTraitsAndReply(FROM_HERE, {base::MayBlock()},
-                                   base::BindOnce([]() { getchar(); }),
-                                   std::move(on_done));
-}
-
 bool NeedsManualSignin() {
   return base::CommandLine::ForCurrentProcess()->HasSwitch(
       kSwitchNameNoAutoSignin);
 }
 
-struct CommandOption {
- public:
-  std::string name;
-  base::RepeatingClosure callback;
-};
-
 }  // namespace
 
 namespace remoting {
@@ -97,7 +54,7 @@
 
 void FtlServicesPlayground::PrintHelp() {
   printf(
-      "Usage: %s [--no-auto-signin] [--code=<auth-code>] "
+      "Usage: %s [--no-auto-signin] [--auth-code=<auth-code>] "
       "[--storage-path=<storage-path>] [--username=<example@gmail.com>]\n",
       base::CommandLine::ForCurrentProcess()
           ->GetProgram()
@@ -107,84 +64,46 @@
 
 void FtlServicesPlayground::StartAndAuthenticate() {
   DCHECK(!storage_);
-  DCHECK(!token_getter_factory_);
   DCHECK(!token_getter_);
   DCHECK(!executor_);
 
-  token_getter_factory_ = std::make_unique<TestOAuthTokenGetterFactory>();
-
   base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
   std::string username = cmd_line->GetSwitchValueASCII(kSwitchNameUsername);
   base::FilePath storage_path =
       cmd_line->GetSwitchValuePath(kSwitchNameStoragePath);
   storage_ = test::TestTokenStorage::OnDisk(username, storage_path);
 
-  std::string access_token = storage_->FetchAccessToken();
+  token_getter_ = std::make_unique<test::TestOAuthTokenGetter>(storage_.get());
+
   base::RunLoop run_loop;
-  if (access_token.empty()) {
-    AuthenticateAndResetServices(run_loop.QuitClosure());
-  } else {
-    VLOG(0) << "Reusing access token: " << access_token;
-    token_getter_ = std::make_unique<FakeOAuthTokenGetter>(
-        OAuthTokenGetter::Status::SUCCESS, "fake_email@gmail.com",
-        access_token);
-    ResetServices(run_loop.QuitClosure());
-  }
+  token_getter_->Initialize(
+      base::BindOnce(&FtlServicesPlayground::ResetServices,
+                     weak_factory_.GetWeakPtr(), run_loop.QuitClosure()));
   run_loop.Run();
 
   StartLoop();
 }
 
 void FtlServicesPlayground::StartLoop() {
-  while (true) {
-    base::RunLoop run_loop;
-    std::vector<CommandOption> options{
-        {"GetIceServer",
-         base::BindRepeating(&FtlServicesPlayground::GetIceServer,
-                             weak_factory_.GetWeakPtr(),
-                             run_loop.QuitClosure())},
-        {"PullMessages",
-         base::BindRepeating(&FtlServicesPlayground::PullMessages,
-                             weak_factory_.GetWeakPtr(),
-                             run_loop.QuitClosure())},
-        {"ReceiveMessages",
-         base::BindRepeating(&FtlServicesPlayground::StartReceivingMessages,
-                             weak_factory_.GetWeakPtr(),
-                             run_loop.QuitWhenIdleClosure())},
-        {"SendMessage", base::BindRepeating(&FtlServicesPlayground::SendMessage,
-                                            weak_factory_.GetWeakPtr(),
-                                            run_loop.QuitClosure())},
-        {"Quit", base::NullCallback()}};
+  std::vector<test::CommandOption> options{
+      {"GetIceServer", base::BindRepeating(&FtlServicesPlayground::GetIceServer,
+                                           weak_factory_.GetWeakPtr())},
+      {"PullMessages", base::BindRepeating(&FtlServicesPlayground::PullMessages,
+                                           weak_factory_.GetWeakPtr())},
+      {"ReceiveMessages",
+       base::BindRepeating(&FtlServicesPlayground::StartReceivingMessages,
+                           weak_factory_.GetWeakPtr())},
+      {"SendMessage", base::BindRepeating(&FtlServicesPlayground::SendMessage,
+                                          weak_factory_.GetWeakPtr())}};
 
-    if (NeedsManualSignin()) {
-      options.insert(
-          options.begin(),
-          {"SignInGaia", base::BindRepeating(&FtlServicesPlayground::SignInGaia,
-                                             weak_factory_.GetWeakPtr(),
-                                             run_loop.QuitClosure())});
-    }
-
-    printf("\nOptions:\n");
-    int print_option_number = 1;
-    for (const auto& option : options) {
-      printf("  %d. %s\n", print_option_number, option.name.c_str());
-      print_option_number++;
-    }
-    printf("\nYour choice [number]: ");
-    int choice = 0;
-    base::StringToInt(ReadString(), &choice);
-    if (choice < 1 || static_cast<size_t>(choice) > options.size()) {
-      fprintf(stderr, "Unknown option\n");
-      continue;
-    }
-    auto& callback = options[choice - 1].callback;
-    if (callback.is_null()) {
-      // Quit
-      return;
-    }
-    callback.Run();
-    run_loop.Run();
+  if (NeedsManualSignin()) {
+    options.insert(
+        options.begin(),
+        {"SignInGaia", base::BindRepeating(&FtlServicesPlayground::SignInGaia,
+                                           weak_factory_.GetWeakPtr())});
   }
+
+  test::RunCommandOptionsLoop(options);
 }
 
 void FtlServicesPlayground::ResetServices(base::OnceClosure on_done) {
@@ -209,44 +128,6 @@
   }
 }
 
-void FtlServicesPlayground::AuthenticateAndResetServices(
-    base::OnceClosure on_done) {
-  static const std::string read_auth_code_prompt = base::StringPrintf(
-      "Please authenticate at:\n\n"
-      "  %s\n\n"
-      "Enter the auth code: ",
-      TestOAuthTokenGetterFactory::GetAuthorizationCodeUri().c_str());
-  std::string auth_code = ReadStringFromCommandLineOrStdin(
-      kSwitchNameAuthCode, read_auth_code_prompt);
-
-  // Make sure we don't try to reuse an auth code.
-  base::CommandLine::ForCurrentProcess()->RemoveSwitch(kSwitchNameAuthCode);
-
-  // We can't get back the refresh token since we have first-party scope, so
-  // we are not trying to store it.
-  token_getter_ = token_getter_factory_->CreateFromIntermediateCredentials(
-      auth_code,
-      base::DoNothing::Repeatedly<const std::string&, const std::string&>());
-
-  // Get the access token so that we can reuse it for next time.
-  base::OnceClosure on_access_token_done =
-      base::BindOnce(&FtlServicesPlayground::ResetServices,
-                     weak_factory_.GetWeakPtr(), std::move(on_done));
-  token_getter_->CallWithToken(base::BindOnce(
-      &FtlServicesPlayground::OnAccessToken, weak_factory_.GetWeakPtr(),
-      std::move(on_access_token_done)));
-}
-
-void FtlServicesPlayground::OnAccessToken(base::OnceClosure on_done,
-                                          OAuthTokenGetter::Status status,
-                                          const std::string& user_email,
-                                          const std::string& access_token) {
-  DCHECK(status == OAuthTokenGetter::Status::SUCCESS);
-  VLOG(0) << "Received access_token: " << access_token;
-  storage_->StoreAccessToken(access_token);
-  std::move(on_done).Run();
-}
-
 void FtlServicesPlayground::GetIceServer(base::OnceClosure on_done) {
   DCHECK(peer_to_peer_stub_);
   VLOG(0) << "Running GetIceServer...";
@@ -334,10 +215,10 @@
   VLOG(0) << "Running SendMessage...";
 
   printf("Receiver ID: ");
-  std::string receiver_id = ReadString();
+  std::string receiver_id = test::ReadString();
 
   printf("Receiver registration ID (base64, optional): ");
-  std::string registration_id_base64 = ReadString();
+  std::string registration_id_base64 = test::ReadString();
 
   std::string registration_id;
   bool success = base::Base64Decode(registration_id_base64, &registration_id);
@@ -359,7 +240,7 @@
   }
 
   printf("Message (enter nothing to quit): ");
-  std::string message = ReadString();
+  std::string message = test::ReadString();
 
   if (message.empty()) {
     std::move(on_done).Run();
@@ -424,9 +305,9 @@
     return;
   }
   printf("Started receiving messages. Press enter to stop streaming...\n");
-  WaitForEnterKey(base::BindOnce(&FtlServicesPlayground::StopReceivingMessages,
-                                 weak_factory_.GetWeakPtr(),
-                                 std::move(on_done)));
+  test::WaitForEnterKey(
+      base::BindOnce(&FtlServicesPlayground::StopReceivingMessages,
+                     weak_factory_.GetWeakPtr(), std::move(on_done)));
 }
 
 void FtlServicesPlayground::HandleGrpcStatusError(base::OnceClosure on_done,
@@ -438,7 +319,7 @@
           "Request is unauthenticated. You should run SignInGaia first if "
           "you haven't done so, otherwise your OAuth token might be expired. \n"
           "Request for new OAuth token? [y/N]: ");
-      std::string result = ReadString();
+      std::string result = test::ReadString();
       if (result != "y" && result != "Y") {
         std::move(on_done).Run();
         return;
@@ -446,7 +327,9 @@
     }
     VLOG(0) << "Grpc request failed to authenticate. "
             << "Trying to reauthenticate...";
-    AuthenticateAndResetServices(std::move(on_done));
+    token_getter_->ResetWithAuthenticationFlow(
+        base::BindOnce(&FtlServicesPlayground::ResetServices,
+                       weak_factory_.GetWeakPtr(), std::move(on_done)));
     return;
   }
 
diff --git a/remoting/test/ftl_services_playground.h b/remoting/test/ftl_services_playground.h
index d37c598..dd3634a 100644
--- a/remoting/test/ftl_services_playground.h
+++ b/remoting/test/ftl_services_playground.h
@@ -19,10 +19,11 @@
 namespace remoting {
 
 namespace test {
-class TestTokenStorage;
-}  // namespace test
 
-class TestOAuthTokenGetterFactory;
+class TestOAuthTokenGetter;
+class TestTokenStorage;
+
+}  // namespace test
 
 class FtlServicesPlayground {
  public:
@@ -41,11 +42,6 @@
 
   void StartLoop();
   void ResetServices(base::OnceClosure on_done);
-  void AuthenticateAndResetServices(base::OnceClosure on_done);
-  void OnAccessToken(base::OnceClosure on_done,
-                     OAuthTokenGetter::Status status,
-                     const std::string& user_email,
-                     const std::string& access_token);
 
   void GetIceServer(base::OnceClosure on_done);
   void OnGetIceServerResponse(base::OnceClosure on_done,
@@ -77,8 +73,7 @@
                              const grpc::Status& status);
 
   std::unique_ptr<test::TestTokenStorage> storage_;
-  std::unique_ptr<TestOAuthTokenGetterFactory> token_getter_factory_;
-  std::unique_ptr<OAuthTokenGetter> token_getter_;
+  std::unique_ptr<test::TestOAuthTokenGetter> token_getter_;
   std::unique_ptr<GrpcAuthenticatedExecutor> executor_;
 
   std::unique_ptr<FtlRegistrationManager> registration_manager_;
diff --git a/remoting/test/test_oauth_token_factory.cc b/remoting/test/test_oauth_token_factory.cc
deleted file mode 100644
index c7253590..0000000
--- a/remoting/test/test_oauth_token_factory.cc
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "remoting/test/test_oauth_token_factory.h"
-
-#include <utility>
-
-#include "base/strings/stringprintf.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "google_apis/google_api_keys.h"
-#include "net/base/escape.h"
-#include "remoting/base/oauth_token_getter_impl.h"
-#include "remoting/base/url_request_context_getter.h"
-#include "services/network/public/cpp/shared_url_loader_factory.h"
-#include "services/network/transitional_url_loader_factory_owner.h"
-
-namespace remoting {
-
-namespace {
-
-constexpr char kChromotingAuthScopeValues[] =
-    "https://www.googleapis.com/auth/chromoting "
-    "https://www.googleapis.com/auth/googletalk "
-    "https://www.googleapis.com/auth/userinfo.email "
-    "https://www.googleapis.com/auth/tachyon";
-
-constexpr char kOauthRedirectUrl[] =
-    "https://chromoting-oauth.talkgadget."
-    "google.com/talkgadget/oauth/chrome-remote-desktop/dev";
-
-}  // namespace
-
-TestOAuthTokenGetterFactory::TestOAuthTokenGetterFactory() {
-  auto url_request_context_getter =
-      base::MakeRefCounted<URLRequestContextGetter>(
-          base::ThreadTaskRunnerHandle::Get());
-  url_loader_factory_owner_ =
-      std::make_unique<network::TransitionalURLLoaderFactoryOwner>(
-          url_request_context_getter);
-}
-
-TestOAuthTokenGetterFactory::~TestOAuthTokenGetterFactory() = default;
-
-// static
-std::string TestOAuthTokenGetterFactory::GetAuthorizationCodeUri() {
-  // Replace space characters with a '+' sign when formatting.
-  bool use_plus = true;
-  return base::StringPrintf(
-      "https://accounts.google.com/o/oauth2/auth"
-      "?scope=%s"
-      "&redirect_uri=https://chromoting-oauth.talkgadget.google.com/"
-      "talkgadget/oauth/chrome-remote-desktop/dev"
-      "&response_type=code"
-      "&client_id=%s"
-      "&access_type=offline",
-      net::EscapeUrlEncodedData(kChromotingAuthScopeValues, use_plus).c_str(),
-      net::EscapeUrlEncodedData(
-          google_apis::GetOAuth2ClientID(google_apis::CLIENT_REMOTING),
-          use_plus)
-          .c_str());
-}
-
-std::unique_ptr<OAuthTokenGetter>
-TestOAuthTokenGetterFactory::CreateFromIntermediateCredentials(
-    const std::string& auth_code,
-    const OAuthTokenGetter::CredentialsUpdatedCallback& on_credentials_update) {
-  auto oauth_credentials =
-      std::make_unique<OAuthTokenGetter::OAuthIntermediateCredentials>(
-          auth_code, /* is_service_account */ false);
-  oauth_credentials->oauth_redirect_uri = kOauthRedirectUrl;
-
-  return std::make_unique<OAuthTokenGetterImpl>(
-      std::move(oauth_credentials), on_credentials_update,
-      url_loader_factory_owner_->GetURLLoaderFactory(),
-      /* auto_refresh */ true);
-}
-
-}  // namespace remoting
diff --git a/remoting/test/test_oauth_token_factory.h b/remoting/test/test_oauth_token_factory.h
deleted file mode 100644
index 9e081b4..0000000
--- a/remoting/test/test_oauth_token_factory.h
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef REMOTING_TEST_TEST_OAUTH_TOKEN_FACTORY_H_
-#define REMOTING_TEST_TEST_OAUTH_TOKEN_FACTORY_H_
-
-#include <memory>
-#include <string>
-
-#include "base/macros.h"
-#include "remoting/base/oauth_token_getter.h"
-
-namespace network {
-class TransitionalURLLoaderFactoryOwner;
-}  // namespace network
-
-namespace remoting {
-
-// The factory object must outlive all OAuthTokenGetters it creates.
-class TestOAuthTokenGetterFactory {
- public:
-  TestOAuthTokenGetterFactory();
-  ~TestOAuthTokenGetterFactory();
-
-  static std::string GetAuthorizationCodeUri();
-
-  std::unique_ptr<OAuthTokenGetter> CreateFromIntermediateCredentials(
-      const std::string& auth_code,
-      const OAuthTokenGetter::CredentialsUpdatedCallback&
-          on_credentials_update);
-
- private:
-  std::unique_ptr<network::TransitionalURLLoaderFactoryOwner>
-      url_loader_factory_owner_;
-  DISALLOW_COPY_AND_ASSIGN(TestOAuthTokenGetterFactory);
-};
-
-}  // namespace remoting
-
-#endif  // REMOTING_TEST_TEST_OAUTH_TOKEN_FACTORY_H_
diff --git a/remoting/test/test_oauth_token_getter.cc b/remoting/test/test_oauth_token_getter.cc
new file mode 100644
index 0000000..05ce6a3
--- /dev/null
+++ b/remoting/test/test_oauth_token_getter.cc
@@ -0,0 +1,154 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "remoting/test/test_oauth_token_getter.h"
+
+#include <utility>
+
+#include "base/bind.h"
+#include "base/bind_helpers.h"
+#include "base/strings/stringprintf.h"
+#include "base/threading/thread_task_runner_handle.h"
+#include "google_apis/google_api_keys.h"
+#include "net/base/escape.h"
+#include "remoting/base/fake_oauth_token_getter.h"
+#include "remoting/base/oauth_token_getter_impl.h"
+#include "remoting/base/url_request_context_getter.h"
+#include "remoting/test/cli_util.h"
+#include "remoting/test/test_token_storage.h"
+#include "services/network/public/cpp/shared_url_loader_factory.h"
+#include "services/network/transitional_url_loader_factory_owner.h"
+
+namespace remoting {
+namespace test {
+
+namespace {
+
+constexpr char kChromotingAuthScopeValues[] =
+    "https://www.googleapis.com/auth/chromoting "
+    "https://www.googleapis.com/auth/googletalk "
+    "https://www.googleapis.com/auth/userinfo.email "
+    "https://www.googleapis.com/auth/tachyon";
+
+constexpr char kOauthRedirectUrl[] =
+    "https://chromoting-oauth.talkgadget."
+    "google.com/talkgadget/oauth/chrome-remote-desktop/dev";
+
+std::string GetAuthorizationCodeUri() {
+  // Replace space characters with a '+' sign when formatting.
+  bool use_plus = true;
+  return base::StringPrintf(
+      "https://accounts.google.com/o/oauth2/auth"
+      "?scope=%s"
+      "&redirect_uri=https://chromoting-oauth.talkgadget.google.com/"
+      "talkgadget/oauth/chrome-remote-desktop/dev"
+      "&response_type=code"
+      "&client_id=%s"
+      "&access_type=offline",
+      net::EscapeUrlEncodedData(kChromotingAuthScopeValues, use_plus).c_str(),
+      net::EscapeUrlEncodedData(
+          google_apis::GetOAuth2ClientID(google_apis::CLIENT_REMOTING),
+          use_plus)
+          .c_str());
+}
+
+}  // namespace
+
+constexpr char TestOAuthTokenGetter::kSwitchNameAuthCode[];
+
+TestOAuthTokenGetter::TestOAuthTokenGetter(TestTokenStorage* token_storage)
+    : weak_factory_(this) {
+  DCHECK(token_storage);
+  token_storage_ = token_storage;
+  auto url_request_context_getter =
+      base::MakeRefCounted<URLRequestContextGetter>(
+          base::ThreadTaskRunnerHandle::Get());
+  url_loader_factory_owner_ =
+      std::make_unique<network::TransitionalURLLoaderFactoryOwner>(
+          url_request_context_getter);
+}
+
+TestOAuthTokenGetter::~TestOAuthTokenGetter() = default;
+
+void TestOAuthTokenGetter::Initialize(base::OnceClosure on_done) {
+  std::string user_email = token_storage_->FetchUserEmail();
+  std::string access_token = token_storage_->FetchAccessToken();
+  if (user_email.empty() || access_token.empty()) {
+    ResetWithAuthenticationFlow(std::move(on_done));
+    return;
+  }
+  VLOG(0) << "Reusing user_email: " << user_email << ", "
+          << "access_token: " << access_token;
+  token_getter_ = std::make_unique<FakeOAuthTokenGetter>(
+      OAuthTokenGetter::Status::SUCCESS, user_email, access_token);
+  std::move(on_done).Run();
+}
+
+void TestOAuthTokenGetter::ResetWithAuthenticationFlow(
+    base::OnceClosure on_done) {
+  static const std::string read_auth_code_prompt = base::StringPrintf(
+      "Please authenticate at:\n\n"
+      "  %s\n\n"
+      "Enter the auth code: ",
+      GetAuthorizationCodeUri().c_str());
+  std::string auth_code = test::ReadStringFromCommandLineOrStdin(
+      kSwitchNameAuthCode, read_auth_code_prompt);
+
+  // Make sure we don't try to reuse an auth code.
+  base::CommandLine::ForCurrentProcess()->RemoveSwitch(kSwitchNameAuthCode);
+
+  // We can't get back the refresh token since we have first-party scope, so
+  // we are not trying to store it.
+  token_getter_ = CreateFromIntermediateCredentials(
+      auth_code,
+      base::DoNothing::Repeatedly<const std::string&, const std::string&>());
+
+  // Get the access token so that we can reuse it for next time.
+  token_getter_->CallWithToken(
+      base::BindOnce(&TestOAuthTokenGetter::OnAccessToken,
+                     weak_factory_.GetWeakPtr(), std::move(on_done)));
+}
+
+void TestOAuthTokenGetter::CallWithToken(TokenCallback on_access_token) {
+  token_getter_->CallWithToken(std::move(on_access_token));
+}
+
+void TestOAuthTokenGetter::InvalidateCache() {
+  ResetWithAuthenticationFlow(base::DoNothing());
+}
+
+std::unique_ptr<OAuthTokenGetter>
+TestOAuthTokenGetter::CreateFromIntermediateCredentials(
+    const std::string& auth_code,
+    const OAuthTokenGetter::CredentialsUpdatedCallback& on_credentials_update) {
+  auto oauth_credentials =
+      std::make_unique<OAuthTokenGetter::OAuthIntermediateCredentials>(
+          auth_code, /* is_service_account */ false);
+  oauth_credentials->oauth_redirect_uri = kOauthRedirectUrl;
+
+  return std::make_unique<OAuthTokenGetterImpl>(
+      std::move(oauth_credentials), on_credentials_update,
+      url_loader_factory_owner_->GetURLLoaderFactory(),
+      /* auto_refresh */ true);
+}
+
+void TestOAuthTokenGetter::OnAccessToken(base::OnceClosure on_done,
+                                         OAuthTokenGetter::Status status,
+                                         const std::string& user_email,
+                                         const std::string& access_token) {
+  if (status != OAuthTokenGetter::Status::SUCCESS) {
+    fprintf(stderr,
+            "Failed to authenticate. Please check if your access  token is "
+            "correct.\n");
+    ResetWithAuthenticationFlow(std::move(on_done));
+    return;
+  }
+  VLOG(0) << "Received access_token: " << access_token;
+  token_storage_->StoreUserEmail(user_email);
+  token_storage_->StoreAccessToken(access_token);
+  std::move(on_done).Run();
+}
+
+}  // namespace test
+}  // namespace remoting
diff --git a/remoting/test/test_oauth_token_getter.h b/remoting/test/test_oauth_token_getter.h
new file mode 100644
index 0000000..4bbbfb06
--- /dev/null
+++ b/remoting/test/test_oauth_token_getter.h
@@ -0,0 +1,69 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef REMOTING_TEST_TEST_OAUTH_TOKEN_GETTER_H_
+#define REMOTING_TEST_TEST_OAUTH_TOKEN_GETTER_H_
+
+#include <memory>
+#include <string>
+
+#include "base/callback_forward.h"
+#include "base/macros.h"
+#include "base/memory/weak_ptr.h"
+#include "remoting/base/oauth_token_getter.h"
+
+namespace network {
+class TransitionalURLLoaderFactoryOwner;
+}  // namespace network
+
+namespace remoting {
+namespace test {
+class TestTokenStorage;
+
+// An OAuthTokenGetter implementation for testing that runs the authentication
+// flow on the console and caches the access token until it's no longer valid.
+class TestOAuthTokenGetter final : public OAuthTokenGetter {
+ public:
+  static constexpr char kSwitchNameAuthCode[] = "auth-code";
+
+  // |token_storage| must outlive |this|.
+  explicit TestOAuthTokenGetter(TestTokenStorage* token_storage);
+  ~TestOAuthTokenGetter() override;
+
+  // Initializes the token getter and runs the authentication flow on the
+  // console if necessary.
+  void Initialize(base::OnceClosure on_done);
+
+  // Ignores auth token cache and runs the authentication flow on the console.
+  // Similar to InvalidateCache() but takes a callback.
+  void ResetWithAuthenticationFlow(base::OnceClosure on_done);
+
+  // OAuthTokenGetter implementations
+  void CallWithToken(TokenCallback on_access_token) override;
+  void InvalidateCache() override;
+
+ private:
+  std::unique_ptr<OAuthTokenGetter> CreateFromIntermediateCredentials(
+      const std::string& auth_code,
+      const OAuthTokenGetter::CredentialsUpdatedCallback&
+          on_credentials_update);
+
+  void OnAccessToken(base::OnceClosure on_done,
+                     OAuthTokenGetter::Status status,
+                     const std::string& user_email,
+                     const std::string& access_token);
+
+  std::unique_ptr<network::TransitionalURLLoaderFactoryOwner>
+      url_loader_factory_owner_;
+  TestTokenStorage* token_storage_ = nullptr;
+  std::unique_ptr<OAuthTokenGetter> token_getter_;
+
+  base::WeakPtrFactory<TestOAuthTokenGetter> weak_factory_;
+  DISALLOW_COPY_AND_ASSIGN(TestOAuthTokenGetter);
+};
+
+}  // namespace test
+}  // namespace remoting
+
+#endif  // REMOTING_TEST_TEST_OAUTH_TOKEN_GETTER_H_
diff --git a/remoting/test/test_token_storage.cc b/remoting/test/test_token_storage.cc
index cbf48fe..b0dc107 100644
--- a/remoting/test/test_token_storage.cc
+++ b/remoting/test/test_token_storage.cc
@@ -22,6 +22,7 @@
     FILE_PATH_LITERAL("token_store");
 constexpr char kUnspecifiedUsername[] = "unspecified";
 constexpr char kRefreshTokenKey[] = "refresh_token";
+constexpr char kUserEmailKey[] = "user_email";
 constexpr char kAccessTokenKey[] = "access_token";
 constexpr char kDeviceIdKey[] = "device_id";
 }  // namespace
@@ -40,6 +41,8 @@
   // TestTokenStorage interface.
   std::string FetchRefreshToken() override;
   bool StoreRefreshToken(const std::string& refresh_token) override;
+  std::string FetchUserEmail() override;
+  bool StoreUserEmail(const std::string& user_email) override;
   std::string FetchAccessToken() override;
   bool StoreAccessToken(const std::string& access_token) override;
   std::string FetchDeviceId() override;
@@ -83,6 +86,14 @@
   return StoreTokenForKey(kRefreshTokenKey, refresh_token);
 }
 
+std::string TestTokenStorageOnDisk::FetchUserEmail() {
+  return FetchTokenFromKey(kUserEmailKey);
+}
+
+bool TestTokenStorageOnDisk::StoreUserEmail(const std::string& user_email) {
+  return StoreTokenForKey(kUserEmailKey, user_email);
+}
+
 std::string TestTokenStorageOnDisk::FetchAccessToken() {
   return FetchTokenFromKey(kAccessTokenKey);
 }
diff --git a/remoting/test/test_token_storage.h b/remoting/test/test_token_storage.h
index 481d83a..1ee3e05a 100644
--- a/remoting/test/test_token_storage.h
+++ b/remoting/test/test_token_storage.h
@@ -27,6 +27,9 @@
   virtual std::string FetchRefreshToken() = 0;
   virtual bool StoreRefreshToken(const std::string& refresh_token) = 0;
 
+  virtual std::string FetchUserEmail() = 0;
+  virtual bool StoreUserEmail(const std::string& user_email) = 0;
+
   virtual std::string FetchAccessToken() = 0;
   virtual bool StoreAccessToken(const std::string& access_token) = 0;
 
diff --git a/services/network/network_context_unittest.cc b/services/network/network_context_unittest.cc
index 697a90f6..8b52ae5 100644
--- a/services/network/network_context_unittest.cc
+++ b/services/network/network_context_unittest.cc
@@ -4405,38 +4405,70 @@
  public:
   class TestHeaderClient : public mojom::TrustedHeaderClient {
    public:
-    TestHeaderClient() : binding(this) {}
+    TestHeaderClient() : binding_(this) {}
 
     // network::mojom::TrustedHeaderClient:
     void OnBeforeSendHeaders(const net::HttpRequestHeaders& headers,
                              OnBeforeSendHeadersCallback callback) override {
       auto new_headers = headers;
       new_headers.SetHeader("foo", "bar");
-      std::move(callback).Run(on_before_send_headers_result, new_headers);
+      std::move(callback).Run(on_before_send_headers_result_, new_headers);
     }
+
     void OnHeadersReceived(const std::string& headers,
                            OnHeadersReceivedCallback callback) override {
       auto new_headers =
           base::MakeRefCounted<net::HttpResponseHeaders>(headers);
       new_headers->AddHeader("baz: qux");
-      std::move(callback).Run(on_headers_received_result,
+      std::move(callback).Run(on_headers_received_result_,
                               new_headers->raw_headers(), GURL());
     }
 
-    int on_before_send_headers_result = net::OK;
-    int on_headers_received_result = net::OK;
-    mojo::Binding<mojom::TrustedHeaderClient> binding;
+    void set_on_before_send_headers_result(int result) {
+      on_before_send_headers_result_ = result;
+    }
+
+    void set_on_headers_received_result(int result) {
+      on_headers_received_result_ = result;
+    }
+
+    void Bind(network::mojom::TrustedHeaderClientRequest request) {
+      binding_.Close();
+      binding_.Bind(std::move(request));
+    }
+
+   private:
+    int on_before_send_headers_result_ = net::OK;
+    int on_headers_received_result_ = net::OK;
+    mojo::Binding<mojom::TrustedHeaderClient> binding_;
+
+    DISALLOW_COPY_AND_ASSIGN(TestHeaderClient);
   };
 
+  explicit TestURLLoaderHeaderClient(
+      mojom::TrustedURLLoaderHeaderClientRequest request)
+      : binding_(this, std::move(request)) {}
+
   // network::mojom::TrustedURLLoaderHeaderClient:
   void OnLoaderCreated(
       int32_t request_id,
       network::mojom::TrustedHeaderClientRequest request) override {
-    header_client.binding.Close();
-    header_client.binding.Bind(std::move(request));
+    header_client_.Bind(std::move(request));
   }
 
-  TestHeaderClient header_client;
+  void set_on_before_send_headers_result(int result) {
+    header_client_.set_on_before_send_headers_result(result);
+  }
+
+  void set_on_headers_received_result(int result) {
+    header_client_.set_on_headers_received_result(result);
+  }
+
+ private:
+  TestHeaderClient header_client_;
+  mojo::Binding<mojom::TrustedURLLoaderHeaderClient> binding_;
+
+  DISALLOW_COPY_AND_ASSIGN(TestURLLoaderHeaderClient);
 };
 
 TEST_F(NetworkContextTest, HeaderClientModifiesHeaders) {
@@ -4455,8 +4487,8 @@
       mojom::URLLoaderFactoryParams::New();
   params->process_id = mojom::kBrowserProcessId;
   params->is_corb_enabled = false;
-  mojo::MakeStrongBinding(std::make_unique<TestURLLoaderHeaderClient>(),
-                          mojo::MakeRequest(&params->header_client));
+  TestURLLoaderHeaderClient header_client(
+      mojo::MakeRequest(&params->header_client));
   network_context->CreateURLLoaderFactory(mojo::MakeRequest(&loader_factory),
                                           std::move(params));
 
@@ -4517,23 +4549,19 @@
   ResourceRequest request;
   request.url = test_server.GetURL("/echo");
 
-  auto header_client = std::make_unique<TestURLLoaderHeaderClient>();
-  auto* raw_header_client = header_client.get();
-
   mojom::URLLoaderFactoryPtr loader_factory;
   mojom::URLLoaderFactoryParamsPtr params =
       mojom::URLLoaderFactoryParams::New();
   params->process_id = mojom::kBrowserProcessId;
   params->is_corb_enabled = false;
-  mojo::MakeStrongBinding(std::move(header_client),
-                          mojo::MakeRequest(&params->header_client));
+  TestURLLoaderHeaderClient header_client(
+      mojo::MakeRequest(&params->header_client));
   network_context->CreateURLLoaderFactory(mojo::MakeRequest(&loader_factory),
                                           std::move(params));
 
   // First, fail request on OnBeforeSendHeaders.
   {
-    raw_header_client->header_client.on_before_send_headers_result =
-        net::ERR_FAILED;
+    header_client.set_on_before_send_headers_result(net::ERR_FAILED);
     mojom::URLLoaderPtr loader;
     TestURLLoaderClient client;
     loader_factory->CreateLoaderAndStart(
@@ -4548,9 +4576,8 @@
 
   // Next, fail request on OnHeadersReceived.
   {
-    raw_header_client->header_client.on_before_send_headers_result = net::OK;
-    raw_header_client->header_client.on_headers_received_result =
-        net::ERR_FAILED;
+    header_client.set_on_before_send_headers_result(net::OK);
+    header_client.set_on_headers_received_result(net::ERR_FAILED);
     mojom::URLLoaderPtr loader;
     TestURLLoaderClient client;
     loader_factory->CreateLoaderAndStart(
@@ -4609,7 +4636,7 @@
     DISALLOW_COPY_AND_ASSIGN(TestHeaderClient);
   };
 
-  HangingTestURLLoaderHeaderClient(
+  explicit HangingTestURLLoaderHeaderClient(
       mojom::TrustedURLLoaderHeaderClientRequest request)
       : binding_(this, std::move(request)) {}
 
diff --git a/services/network/public/cpp/net_ipc_param_traits.cc b/services/network/public/cpp/net_ipc_param_traits.cc
index 7556baa..dc975f4 100644
--- a/services/network/public/cpp/net_ipc_param_traits.cc
+++ b/services/network/public/cpp/net_ipc_param_traits.cc
@@ -374,7 +374,6 @@
   WriteParam(m, p.is_issued_by_known_root);
   WriteParam(m, p.pkp_bypassed);
   WriteParam(m, p.client_cert_sent);
-  WriteParam(m, p.channel_id_sent);
   WriteParam(m, p.handshake_type);
   WriteParam(m, p.public_key_hashes);
   WriteParam(m, p.pinning_failure_log);
@@ -401,7 +400,6 @@
          ReadParam(m, iter, &r->is_issued_by_known_root) &&
          ReadParam(m, iter, &r->pkp_bypassed) &&
          ReadParam(m, iter, &r->client_cert_sent) &&
-         ReadParam(m, iter, &r->channel_id_sent) &&
          ReadParam(m, iter, &r->handshake_type) &&
          ReadParam(m, iter, &r->public_key_hashes) &&
          ReadParam(m, iter, &r->pinning_failure_log) &&
diff --git a/services/tracing/perfetto/consumer_host_unittest.cc b/services/tracing/perfetto/consumer_host_unittest.cc
index eb3f0e8..160f8d8a 100644
--- a/services/tracing/perfetto/consumer_host_unittest.cc
+++ b/services/tracing/perfetto/consumer_host_unittest.cc
@@ -17,6 +17,7 @@
 #include "base/strings/strcat.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/task/post_task.h"
+#include "base/test/bind_test_util.h"
 #include "base/test/scoped_task_environment.h"
 #include "mojo/public/cpp/bindings/binding.h"
 #include "mojo/public/cpp/system/data_pipe.h"
@@ -232,6 +233,18 @@
     *tracing_enabled = tracing_enabled_;
   }
 
+  perfetto::DataSourceConfig GetProducerClientConfig() {
+    perfetto::DataSourceConfig config;
+    base::RunLoop wait_loop;
+    task_runner_->PostTaskAndReply(
+        FROM_HERE, base::BindLambdaForTesting([&]() {
+          config = producer_->producer_client()->data_source()->config();
+        }),
+        wait_loop.QuitClosure());
+    wait_loop.Run();
+    return config;
+  }
+
  private:
   scoped_refptr<base::SequencedTaskRunner> task_runner_;
   std::unique_ptr<PerfettoService> perfetto_service_;
@@ -307,9 +320,17 @@
     return trace_config;
   }
 
-  void EnableTracingWithDataSourceName(const std::string& data_source_name) {
-    threaded_service_->EnableTracingWithConfig(
-        GetDefaultTraceConfig(data_source_name));
+  void EnableTracingWithDataSourceName(const std::string& data_source_name,
+                                       bool enable_privacy_filtering = false) {
+    perfetto::TraceConfig config = GetDefaultTraceConfig(data_source_name);
+    if (enable_privacy_filtering) {
+      for (auto& source : *config.mutable_data_sources()) {
+        source.mutable_config()
+            ->mutable_chrome_config()
+            ->set_privacy_filtering_enabled(true);
+      }
+    }
+    threaded_service_->EnableTracingWithConfig(config);
   }
 
   bool IsTracingEnabled() {
@@ -510,4 +531,20 @@
   EXPECT_TRUE(IsTracingEnabled());
 }
 
+TEST_F(TracingConsumerTest, PrivacyFilterConfig) {
+  EnableTracingWithDataSourceName(mojom::kTraceEventDataSourceName,
+                                  /* enable_privacy_filtering =*/true);
+
+  base::RunLoop wait_for_tracing_start;
+  threaded_perfetto_service()->CreateProducer(
+      mojom::kTraceEventDataSourceName, 10u,
+      wait_for_tracing_start.QuitClosure());
+
+  wait_for_tracing_start.Run();
+  EXPECT_TRUE(threaded_perfetto_service()
+                  ->GetProducerClientConfig()
+                  .chrome_config()
+                  .privacy_filtering_enabled());
+}
+
 }  // namespace tracing
diff --git a/services/tracing/perfetto/test_utils.cc b/services/tracing/perfetto/test_utils.cc
index 10f75bb..c5bc6fb 100644
--- a/services/tracing/perfetto/test_utils.cc
+++ b/services/tracing/perfetto/test_utils.cc
@@ -30,7 +30,7 @@
   payload.get()[kLargeMessageSize - 1] = 0;
 
   std::unique_ptr<perfetto::TraceWriter> writer =
-      producer_client_->CreateTraceWriter(target_buffer_);
+      producer_client_->CreateTraceWriter(config_.target_buffer());
   CHECK(writer);
 
   writer->NewTracePacket()->set_for_testing()->set_str(payload.get(),
@@ -41,11 +41,11 @@
     ProducerClient* producer_client,
     const perfetto::DataSourceConfig& data_source_config) {
   producer_client_ = producer_client;
-  target_buffer_ = data_source_config.target_buffer();
+  config_ = data_source_config;
 
   if (send_packet_count_ > 0) {
     std::unique_ptr<perfetto::TraceWriter> writer =
-        producer_client_->CreateTraceWriter(target_buffer_);
+        producer_client_->CreateTraceWriter(config_.target_buffer());
     CHECK(writer);
 
     for (size_t i = 0; i < send_packet_count_; i++) {
diff --git a/services/tracing/perfetto/test_utils.h b/services/tracing/perfetto/test_utils.h
index 5bc6d20..2e4486ef 100644
--- a/services/tracing/perfetto/test_utils.h
+++ b/services/tracing/perfetto/test_utils.h
@@ -33,10 +33,12 @@
       base::OnceClosure stop_complete_callback = base::OnceClosure()) override;
   void Flush(base::RepeatingClosure flush_complete_callback) override;
 
+  const perfetto::DataSourceConfig& config() { return config_; }
+
  private:
   ProducerClient* producer_client_ = nullptr;
   const size_t send_packet_count_;
-  uint32_t target_buffer_ = 0;
+  perfetto::DataSourceConfig config_;
 };
 
 class MockProducerClient : public ProducerClient {
@@ -159,6 +161,8 @@
 
   void WritePacketBigly(base::OnceClosure on_write_complete);
 
+  MockProducerClient* producer_client() { return producer_client_.get(); }
+
  private:
   std::unique_ptr<MockProducerClient> producer_client_;
   std::unique_ptr<MockProducerHost> producer_host_;
diff --git a/services/tracing/public/mojom/chrome_config_mojom_traits.cc b/services/tracing/public/mojom/chrome_config_mojom_traits.cc
index 50790115..428b71e 100644
--- a/services/tracing/public/mojom/chrome_config_mojom_traits.cc
+++ b/services/tracing/public/mojom/chrome_config_mojom_traits.cc
@@ -17,6 +17,7 @@
     return false;
   }
   out->set_trace_config(std::move(config));
+  out->set_privacy_filtering_enabled(data.privacy_filtering_enabled());
   return true;
 }
 }  // namespace mojo
diff --git a/services/tracing/public/mojom/chrome_config_mojom_traits.h b/services/tracing/public/mojom/chrome_config_mojom_traits.h
index e033a50..1deafb3 100644
--- a/services/tracing/public/mojom/chrome_config_mojom_traits.h
+++ b/services/tracing/public/mojom/chrome_config_mojom_traits.h
@@ -23,6 +23,10 @@
     return src.trace_config();
   }
 
+  static bool privacy_filtering_enabled(const perfetto::ChromeConfig& src) {
+    return src.privacy_filtering_enabled();
+  }
+
   static bool Read(tracing::mojom::ChromeConfigDataView data,
                    perfetto::ChromeConfig* out);
 };
diff --git a/services/tracing/public/mojom/perfetto_service.mojom b/services/tracing/public/mojom/perfetto_service.mojom
index e6b16af4..a85ce30 100644
--- a/services/tracing/public/mojom/perfetto_service.mojom
+++ b/services/tracing/public/mojom/perfetto_service.mojom
@@ -71,6 +71,10 @@
   // base::trace_event::TraceConfig object rather then the json encoded string
   // used currently.
   string trace_config;
+
+  // When enabled the data source is supposed to only emit fields in the output
+  // proto that are guaranteed to not contain any sensitive data.
+  bool privacy_filtering_enabled;
 };
 
 struct DataSourceConfig {
diff --git a/sql/BUILD.gn b/sql/BUILD.gn
index a03d51e7..489ebf2 100644
--- a/sql/BUILD.gn
+++ b/sql/BUILD.gn
@@ -99,6 +99,8 @@
     "sqlite_features_unittest.cc",
     "statement_id_unittest.cc",
     "statement_unittest.cc",
+    "test/database_test_peer.cc",
+    "test/database_test_peer.h",
     "test/paths.cc",
     "test/paths.h",
     "test/run_all_unittests.cc",
diff --git a/sql/database_unittest.cc b/sql/database_unittest.cc
index 6a505da..a145faa6 100644
--- a/sql/database_unittest.cc
+++ b/sql/database_unittest.cc
@@ -22,6 +22,7 @@
 #include "sql/meta_table.h"
 #include "sql/sql_features.h"
 #include "sql/statement.h"
+#include "sql/test/database_test_peer.h"
 #include "sql/test/error_callback_support.h"
 #include "sql/test/scoped_error_expecter.h"
 #include "sql/test/sql_test_base.h"
@@ -31,19 +32,6 @@
 
 namespace sql {
 
-class DatabaseTestPeer {
- public:
-  static bool AttachDatabase(Database* db,
-                             const base::FilePath& other_db_path,
-                             const char* attachment_point) {
-    return db->AttachDatabase(other_db_path, attachment_point,
-                              InternalApiToken());
-  }
-  static bool DetachDatabase(Database* db, const char* attachment_point) {
-    return db->DetachDatabase(attachment_point, InternalApiToken());
-  }
-};
-
 namespace {
 
 using sql::test::ExecuteWithResult;
diff --git a/sql/test/database_test_peer.cc b/sql/test/database_test_peer.cc
new file mode 100644
index 0000000..957c1cd5
--- /dev/null
+++ b/sql/test/database_test_peer.cc
@@ -0,0 +1,27 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "sql/test/database_test_peer.h"
+
+#include "base/files/file_path.h"
+#include "sql/database.h"
+#include "sql/internal_api_token.h"
+
+namespace sql {
+
+// static
+bool DatabaseTestPeer::AttachDatabase(Database* db,
+                                      const base::FilePath& other_db_path,
+                                      const char* attachment_point) {
+  return db->AttachDatabase(other_db_path, attachment_point,
+                            InternalApiToken());
+}
+
+// static
+bool DatabaseTestPeer::DetachDatabase(Database* db,
+                                      const char* attachment_point) {
+  return db->DetachDatabase(attachment_point, InternalApiToken());
+}
+
+}  // namespace sql
diff --git a/sql/test/database_test_peer.h b/sql/test/database_test_peer.h
new file mode 100644
index 0000000..322727d
--- /dev/null
+++ b/sql/test/database_test_peer.h
@@ -0,0 +1,26 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SQL_TEST_DATABASE_TEST_PEER_H_
+#define SQL_TEST_DATABASE_TEST_PEER_H_
+
+namespace base {
+class FilePath;
+}  // namespace base
+
+namespace sql {
+
+class Database;
+
+class DatabaseTestPeer {
+ public:
+  static bool AttachDatabase(Database* db,
+                             const base::FilePath& other_db_path,
+                             const char* attachment_point);
+  static bool DetachDatabase(Database* db, const char* attachment_point);
+};
+
+}  // namespace sql
+
+#endif  // SQL_TEST_DATABASE_TEST_PEER_H_
diff --git a/testing/buildbot/chromium.gpu.fyi.json b/testing/buildbot/chromium.gpu.fyi.json
index d0cd6860..5b594ea 100644
--- a/testing/buildbot/chromium.gpu.fyi.json
+++ b/testing/buildbot/chromium.gpu.fyi.json
@@ -4795,16 +4795,7 @@
           ],
           "shards": 4
         },
-        "test": "dawn_end2end_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "dawn_end2end_tests"
       }
     ]
   },
@@ -4951,16 +4942,7 @@
           ],
           "shards": 4
         },
-        "test": "angle_end2end_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "angle_end2end_tests"
       },
       {
         "args": [
@@ -4979,16 +4961,7 @@
             }
           ]
         },
-        "test": "angle_unittests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "angle_unittests"
       },
       {
         "args": [
@@ -5005,16 +4978,7 @@
             }
           ]
         },
-        "test": "angle_white_box_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "angle_white_box_tests"
       },
       {
         "args": [
@@ -5032,16 +4996,7 @@
           ],
           "shards": 4
         },
-        "test": "dawn_end2end_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "dawn_end2end_tests"
       },
       {
         "args": [
@@ -5058,16 +5013,7 @@
             }
           ]
         },
-        "test": "gl_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "gl_tests"
       },
       {
         "args": [
@@ -5084,16 +5030,7 @@
             }
           ]
         },
-        "test": "gl_unittests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "gl_unittests"
       },
       {
         "args": [
@@ -5109,16 +5046,7 @@
             }
           ]
         },
-        "test": "gles2_conform_test",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "gles2_conform_test"
       },
       {
         "swarming": {
@@ -5131,16 +5059,7 @@
             }
           ]
         },
-        "test": "swiftshader_unittests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "swiftshader_unittests"
       }
     ],
     "isolated_scripts": [
@@ -5166,15 +5085,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -5199,15 +5109,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -5232,15 +5133,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -5265,15 +5157,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -5302,15 +5185,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -5342,15 +5216,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -5390,15 +5255,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -5424,15 +5280,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -5457,15 +5304,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -5491,15 +5329,6 @@
           ],
           "idempotent": false,
           "shards": 2
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -5525,15 +5354,6 @@
           ],
           "idempotent": false,
           "shards": 2
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       }
     ]
@@ -6598,16 +6418,7 @@
           ],
           "shards": 4
         },
-        "test": "angle_end2end_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "angle_end2end_tests"
       },
       {
         "args": [
@@ -6626,16 +6437,7 @@
             }
           ]
         },
-        "test": "angle_unittests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "angle_unittests"
       },
       {
         "args": [
@@ -6652,16 +6454,7 @@
             }
           ]
         },
-        "test": "angle_white_box_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "angle_white_box_tests"
       },
       {
         "args": [
@@ -6679,16 +6472,7 @@
           ],
           "shards": 4
         },
-        "test": "dawn_end2end_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "dawn_end2end_tests"
       },
       {
         "args": [
@@ -6705,16 +6489,7 @@
             }
           ]
         },
-        "test": "gl_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "gl_tests"
       },
       {
         "args": [
@@ -6731,16 +6506,7 @@
             }
           ]
         },
-        "test": "gl_unittests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "gl_unittests"
       },
       {
         "args": [
@@ -6756,16 +6522,7 @@
             }
           ]
         },
-        "test": "gles2_conform_test",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "gles2_conform_test"
       },
       {
         "swarming": {
@@ -6778,16 +6535,7 @@
             }
           ]
         },
-        "test": "swiftshader_unittests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "swiftshader_unittests"
       }
     ],
     "isolated_scripts": [
@@ -6814,15 +6562,6 @@
               "pool": "Chrome-GPU"
             }
           ]
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       }
     ]
@@ -7922,16 +7661,7 @@
           ],
           "shards": 4
         },
-        "test": "angle_end2end_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "angle_end2end_tests"
       },
       {
         "args": [
@@ -7950,16 +7680,7 @@
             }
           ]
         },
-        "test": "angle_unittests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "angle_unittests"
       },
       {
         "args": [
@@ -7976,16 +7697,7 @@
             }
           ]
         },
-        "test": "angle_white_box_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "angle_white_box_tests"
       },
       {
         "args": [
@@ -8006,16 +7718,7 @@
             }
           ]
         },
-        "test": "browser_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "browser_tests"
       },
       {
         "args": [
@@ -8044,16 +7747,7 @@
             }
           ]
         },
-        "test": "content_browsertests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "content_browsertests"
       },
       {
         "args": [
@@ -8071,16 +7765,7 @@
           ],
           "shards": 4
         },
-        "test": "dawn_end2end_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "dawn_end2end_tests"
       },
       {
         "args": [
@@ -8097,16 +7782,7 @@
             }
           ]
         },
-        "test": "gl_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "gl_tests"
       },
       {
         "args": [
@@ -8123,16 +7799,7 @@
             }
           ]
         },
-        "test": "gl_unittests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "gl_unittests"
       },
       {
         "args": [
@@ -8148,16 +7815,7 @@
             }
           ]
         },
-        "test": "gles2_conform_test",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "gles2_conform_test"
       },
       {
         "swarming": {
@@ -8170,16 +7828,7 @@
             }
           ]
         },
-        "test": "swiftshader_unittests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "swiftshader_unittests"
       }
     ],
     "isolated_scripts": [
@@ -8206,15 +7855,6 @@
               "pool": "Chrome-GPU"
             }
           ]
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -8239,15 +7879,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -8272,15 +7903,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -8305,15 +7927,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -8338,15 +7951,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -8375,15 +7979,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -8415,15 +8010,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -8472,15 +8058,6 @@
           ],
           "idempotent": false,
           "service_account": "chrome-gpu-gold@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -8520,15 +8097,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -8554,15 +8122,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -8587,15 +8146,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -8623,15 +8173,6 @@
           ],
           "idempotent": false,
           "shards": 20
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -8659,15 +8200,6 @@
           ],
           "idempotent": false,
           "shards": 20
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -8693,15 +8225,6 @@
           ],
           "idempotent": false,
           "shards": 2
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -8727,15 +8250,6 @@
           ],
           "idempotent": false,
           "shards": 2
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       }
     ]
@@ -8784,16 +8298,7 @@
           ],
           "shards": 4
         },
-        "test": "angle_deqp_egl_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "angle_deqp_egl_tests"
       },
       {
         "args": [
@@ -8813,16 +8318,7 @@
           ],
           "shards": 4
         },
-        "test": "angle_deqp_gles2_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "angle_deqp_gles2_tests"
       },
       {
         "args": [
@@ -8842,16 +8338,7 @@
           ],
           "shards": 6
         },
-        "test": "angle_deqp_gles31_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "angle_deqp_gles31_tests"
       },
       {
         "args": [
@@ -8871,16 +8358,7 @@
           ],
           "shards": 12
         },
-        "test": "angle_deqp_gles3_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "angle_deqp_gles3_tests"
       }
     ]
   },
@@ -15941,16 +15419,7 @@
           ],
           "shards": 4
         },
-        "test": "angle_end2end_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "angle_end2end_tests"
       },
       {
         "args": [
@@ -15967,16 +15436,7 @@
             }
           ]
         },
-        "test": "angle_white_box_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "angle_white_box_tests"
       },
       {
         "args": [
@@ -16005,16 +15465,7 @@
             }
           ]
         },
-        "test": "content_browsertests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "content_browsertests"
       },
       {
         "args": [
@@ -16032,16 +15483,7 @@
           ],
           "shards": 4
         },
-        "test": "dawn_end2end_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "dawn_end2end_tests"
       },
       {
         "args": [
@@ -16057,16 +15499,7 @@
             }
           ]
         },
-        "test": "gles2_conform_test",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "gles2_conform_test"
       },
       {
         "swarming": {
@@ -16079,16 +15512,7 @@
             }
           ]
         },
-        "test": "swiftshader_unittests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "swiftshader_unittests"
       }
     ],
     "isolated_scripts": [
@@ -16115,15 +15539,6 @@
               "pool": "Chrome-GPU"
             }
           ]
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -16152,15 +15567,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -16209,15 +15615,6 @@
           ],
           "idempotent": false,
           "service_account": "chrome-gpu-gold@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -16242,15 +15639,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -16278,15 +15666,6 @@
           ],
           "idempotent": false,
           "shards": 20
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -16312,15 +15691,6 @@
           ],
           "idempotent": false,
           "shards": 2
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       }
     ]
diff --git a/testing/buildbot/chromium.gpu.json b/testing/buildbot/chromium.gpu.json
index 53edb0da..c60ee977 100644
--- a/testing/buildbot/chromium.gpu.json
+++ b/testing/buildbot/chromium.gpu.json
@@ -299,16 +299,7 @@
             }
           ]
         },
-        "test": "angle_unittests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "angle_unittests"
       },
       {
         "args": [
@@ -325,16 +316,7 @@
             }
           ]
         },
-        "test": "gl_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "gl_tests"
       },
       {
         "args": [
@@ -351,16 +333,7 @@
             }
           ]
         },
-        "test": "gl_unittests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "gl_unittests"
       }
     ],
     "isolated_scripts": [
@@ -386,15 +359,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -419,15 +383,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -452,15 +407,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -485,15 +431,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -522,15 +459,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -562,15 +490,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -610,15 +529,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -644,15 +554,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -677,15 +578,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -711,15 +603,6 @@
           ],
           "idempotent": false,
           "shards": 2
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       }
     ]
@@ -743,16 +626,7 @@
             }
           ]
         },
-        "test": "angle_unittests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "angle_unittests"
       },
       {
         "args": [
@@ -773,16 +647,7 @@
             }
           ]
         },
-        "test": "browser_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "browser_tests"
       },
       {
         "args": [
@@ -799,16 +664,7 @@
             }
           ]
         },
-        "test": "gl_tests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "gl_tests"
       },
       {
         "args": [
@@ -825,16 +681,7 @@
             }
           ]
         },
-        "test": "gl_unittests",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
+        "test": "gl_unittests"
       }
     ],
     "isolated_scripts": [
@@ -860,15 +707,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -893,15 +731,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -926,15 +755,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -959,15 +779,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -996,15 +807,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -1036,15 +838,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -1084,15 +877,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -1118,15 +902,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -1151,15 +926,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -1185,15 +951,6 @@
           ],
           "idempotent": false,
           "shards": 2
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       }
     ]
diff --git a/testing/buildbot/chromium.perf.json b/testing/buildbot/chromium.perf.json
index 61ab4319..4c954cfe 100644
--- a/testing/buildbot/chromium.perf.json
+++ b/testing/buildbot/chromium.perf.json
@@ -246,7 +246,7 @@
           "hard_timeout": 36000,
           "ignore_task_failure": false,
           "io_timeout": 1800,
-          "shards": 8
+          "shards": 12
         },
         "trigger_script": {
           "args": [
diff --git a/testing/buildbot/client.v8.fyi.json b/testing/buildbot/client.v8.fyi.json
index 869bacb..5030000 100644
--- a/testing/buildbot/client.v8.fyi.json
+++ b/testing/buildbot/client.v8.fyi.json
@@ -296,15 +296,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -329,15 +320,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -362,15 +344,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -395,15 +368,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -435,15 +399,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -483,15 +438,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -517,15 +463,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -550,15 +487,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -586,15 +514,6 @@
           ],
           "idempotent": false,
           "shards": 20
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -620,15 +539,6 @@
           ],
           "idempotent": false,
           "shards": 2
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       }
     ]
@@ -657,15 +567,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -690,15 +591,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -723,15 +615,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -756,15 +639,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -796,15 +670,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -844,15 +709,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -878,15 +734,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -911,15 +758,6 @@
             }
           ],
           "idempotent": false
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -947,15 +785,6 @@
           ],
           "idempotent": false,
           "shards": 20
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       },
       {
@@ -981,15 +810,6 @@
           ],
           "idempotent": false,
           "shards": 2
-        },
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-ubuntu-stable\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-410.78\", \"os\": \"Ubuntu\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
       }
     ]
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl
index 8611870..fafa070 100644
--- a/testing/buildbot/waterfalls.pyl
+++ b/testing/buildbot/waterfalls.pyl
@@ -1827,14 +1827,6 @@
           'gtest_tests': 'gpu_desktop_gtests',
           'gpu_telemetry_tests': 'gpu_common_win_and_linux_telemetry_tests',
         },
-        'use_multi_dimension_trigger_script': True,
-        'alternate_swarming_dimensions': [
-          {
-            'gpu': '10de:1cb3-410.78',
-            'os': 'Ubuntu',
-            'pool': 'Chrome-GPU',
-          },
-        ],
       },
       'Linux Release (NVIDIA)': {
         'browser_config': 'release',
@@ -1846,14 +1838,6 @@
           'gtest_tests': 'gpu_desktop_gtests',
           'gpu_telemetry_tests': 'gpu_common_win_and_linux_telemetry_tests',
         },
-        'use_multi_dimension_trigger_script': True,
-        'alternate_swarming_dimensions': [
-          {
-            'gpu': '10de:1cb3-410.78',
-            'os': 'Ubuntu',
-            'pool': 'Chrome-GPU',
-          },
-        ],
       },
       'Mac Debug (Intel)': {
         'browser_config': 'debug',
@@ -2242,14 +2226,6 @@
         'test_suites': {
           'gtest_tests': 'gpu_dawn_end2end_tests',
         },
-        'use_multi_dimension_trigger_script': True,
-        'alternate_swarming_dimensions': [
-          {
-            'gpu': '10de:1cb3-410.78',
-            'os': 'Ubuntu',
-            'pool': 'Chrome-GPU',
-          },
-        ],
       },
       'Dawn GPU Mac Release (Intel)': {
         'os_type': 'mac',
@@ -2325,14 +2301,6 @@
           'gtest_tests': 'gpu_fyi_linux_debug_gtests',
           'gpu_telemetry_tests': 'gpu_fyi_win_and_linux_telemetry_tests',
         },
-        'use_multi_dimension_trigger_script': True,
-        'alternate_swarming_dimensions': [
-          {
-            'gpu': '10de:1cb3-410.78',
-            'os': 'Ubuntu',
-            'pool': 'Chrome-GPU',
-          },
-        ],
       },
       'Linux FYI Experimental Release (Intel HD 630)': {
         'os_type': 'linux',
@@ -2370,14 +2338,6 @@
           'gtest_tests': 'gpu_fyi_linux_debug_gtests',
           'isolated_scripts': 'gpu_angle_perftests',
         },
-        'use_multi_dimension_trigger_script': True,
-        'alternate_swarming_dimensions': [
-          {
-            'gpu': '10de:1cb3-410.78',
-            'os': 'Ubuntu',
-            'pool': 'Chrome-GPU',
-          },
-        ],
       },
       'Linux FYI Ozone (Intel)': {
         'os_type': 'linux',
@@ -2427,14 +2387,6 @@
           'isolated_scripts': 'gpu_angle_perftests',
           'gpu_telemetry_tests': 'gpu_fyi_linux_intel_and_nvidia_release_telemetry_tests',
         },
-        'use_multi_dimension_trigger_script': True,
-        'alternate_swarming_dimensions': [
-          {
-            'gpu': '10de:1cb3-410.78',
-            'os': 'Ubuntu',
-            'pool': 'Chrome-GPU',
-          },
-        ],
       },
       'Linux FYI dEQP Release (Intel HD 630)': {
         'os_type': 'linux',
@@ -2455,14 +2407,6 @@
         'test_suites': {
           'gtest_tests': 'gpu_angle_deqp_linux_nvidia_gtests',
         },
-        'use_multi_dimension_trigger_script': True,
-        'alternate_swarming_dimensions': [
-          {
-            'gpu': '10de:1cb3-410.78',
-            'os': 'Ubuntu',
-            'pool': 'Chrome-GPU',
-          },
-        ],
       },
       'Mac FYI 10.14 Release (AMD)': {
         'os_type': 'mac',
@@ -2700,14 +2644,6 @@
           'isolated_scripts': 'gpu_angle_perftests',
           'gpu_telemetry_tests': 'gpu_fyi_optional_linux_telemetry_tests',
         },
-        'use_multi_dimension_trigger_script': True,
-        'alternate_swarming_dimensions': [
-          {
-            'gpu': '10de:1cb3-410.78',
-            'os': 'Ubuntu',
-            'pool': 'Chrome-GPU',
-          },
-        ],
       },
       'Optional Mac Release (Intel)': {
         'os_type': 'mac',
@@ -3825,14 +3761,6 @@
         'test_suites': {
           'gpu_telemetry_tests': 'gpu_v8_desktop_telemetry_tests',
         },
-        'use_multi_dimension_trigger_script': True,
-        'alternate_swarming_dimensions': [
-          {
-            'gpu': '10de:1cb3-410.78',
-            'os': 'Ubuntu',
-            'pool': 'Chrome-GPU',
-          },
-        ],
       },
       'Linux V8 FYI Release - pointer compression (NVIDIA)': {
         'os_type': 'linux',
@@ -3843,14 +3771,6 @@
         'test_suites': {
           'gpu_telemetry_tests': 'gpu_v8_desktop_telemetry_tests',
         },
-        'use_multi_dimension_trigger_script': True,
-        'alternate_swarming_dimensions': [
-          {
-            'gpu': '10de:1cb3-410.78',
-            'os': 'Ubuntu',
-            'pool': 'Chrome-GPU',
-          },
-        ],
       },
       'Mac V8 FYI Release (Intel)': {
         'browser_config': 'release',
diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
index e59781c06..fd1e9afb7 100644
--- a/third_party/blink/common/features.cc
+++ b/third_party/blink/common/features.cc
@@ -36,6 +36,10 @@
 const base::Feature kScriptStreaming{"ScriptStreaming",
                                      base::FEATURE_ENABLED_BY_DEFAULT};
 
+// Enables user level memory pressure signal generation on Android.
+const base::Feature kUserLevelMemoryPressureSignal{
+    "UserLevelMemoryPressureSignal", base::FEATURE_DISABLED_BY_DEFAULT};
+
 // Enable FCP++ by experiment. See https://crbug.com/869924
 const base::Feature kFirstContentfulPaintPlusPlus{
     "FirstContentfulPaintPlusPlus", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/third_party/blink/public/BUILD.gn b/third_party/blink/public/BUILD.gn
index f099def2..b85cbda 100644
--- a/third_party/blink/public/BUILD.gn
+++ b/third_party/blink/public/BUILD.gn
@@ -569,6 +569,7 @@
     "//third_party/webrtc/rtc_base:rtc_base",
     "//third_party/webrtc/rtc_base:rtc_task_queue",
     "//third_party/webrtc_overrides:init_webrtc",
+    "//ui/base:base",
     "//v8:v8_headers",
   ]
 }
diff --git a/third_party/blink/public/common/BUILD.gn b/third_party/blink/public/common/BUILD.gn
index 24c4e4ab..a0c73031 100644
--- a/third_party/blink/public/common/BUILD.gn
+++ b/third_party/blink/public/common/BUILD.gn
@@ -95,6 +95,7 @@
     "screen_orientation/web_screen_orientation_type.h",
     "service_worker/service_worker_status_code.h",
     "service_worker/service_worker_type_converters.h",
+    "service_worker/service_worker_types.h",
     "service_worker/service_worker_utils.h",
     "user_agent/user_agent_metadata.h",
   ]
diff --git a/third_party/blink/public/common/features.h b/third_party/blink/public/common/features.h
index 097f61eb..8522f6fc 100644
--- a/third_party/blink/public/common/features.h
+++ b/third_party/blink/public/common/features.h
@@ -19,6 +19,7 @@
 BLINK_COMMON_EXPORT extern const base::Feature
     kEnableGpuRasterizationViewportRestriction;
 BLINK_COMMON_EXPORT extern const base::Feature kScriptStreaming;
+BLINK_COMMON_EXPORT extern const base::Feature kUserLevelMemoryPressureSignal;
 BLINK_COMMON_EXPORT extern const base::Feature kFirstContentfulPaintPlusPlus;
 BLINK_COMMON_EXPORT extern const base::Feature kFreezePurgeMemoryAllPagesFrozen;
 BLINK_COMMON_EXPORT extern const base::Feature kImplicitRootScroller;
diff --git a/third_party/blink/public/common/service_worker/service_worker_types.h b/third_party/blink/public/common/service_worker/service_worker_types.h
new file mode 100644
index 0000000..13ee9645
--- /dev/null
+++ b/third_party/blink/public/common/service_worker/service_worker_types.h
@@ -0,0 +1,15 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_SERVICE_WORKER_SERVICE_WORKER_TYPES_H_
+#define THIRD_PARTY_BLINK_PUBLIC_COMMON_SERVICE_WORKER_SERVICE_WORKER_TYPES_H_
+
+namespace blink {
+
+// Constants for invalid identifiers.
+static const int kInvalidServiceWorkerProviderId = -1;
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_PUBLIC_COMMON_SERVICE_WORKER_SERVICE_WORKER_TYPES_H_
diff --git a/third_party/blink/public/platform/DEPS b/third_party/blink/public/platform/DEPS
index f4dce06..78346615 100644
--- a/third_party/blink/public/platform/DEPS
+++ b/third_party/blink/public/platform/DEPS
@@ -45,6 +45,7 @@
     "-third_party/blink/public/web",
     "-third_party/blink/renderer/bindings",
     "+third_party/skia",
+    "+ui/base/page_transition_types.h",
     "+ui/gfx",
     "+url",
     "-web",
diff --git a/third_party/blink/public/platform/web_media_player.h b/third_party/blink/public/platform/web_media_player.h
index fbbd030..edba9c5 100644
--- a/third_party/blink/public/platform/web_media_player.h
+++ b/third_party/blink/public/platform/web_media_player.h
@@ -31,7 +31,6 @@
 #ifndef THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_MEDIA_PLAYER_H_
 #define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_MEDIA_PLAYER_H_
 
-#include "base/optional.h"
 #include "base/time/time.h"
 #include "components/viz/common/surfaces/surface_id.h"
 #include "third_party/blink/public/platform/web_callbacks.h"
@@ -165,8 +164,8 @@
   virtual WebTimeRanges Seekable() const = 0;
 
   // Attempts to switch the audio output device.
-  virtual void SetSinkId(const WebString& sink_id,
-                         std::unique_ptr<WebSetSinkIdCallbacks>) = 0;
+  virtual void SetSinkId(const WebString& sing_id,
+                         WebSetSinkIdCompleteCallback) = 0;
 
   // True if the loaded media has a playable video/audio track.
   virtual bool HasVideo() const = 0;
@@ -326,6 +325,17 @@
     return false;
   }
 
+  // Share video frame texture to |texture|. If the sharing is impossible or
+  // fails, it returns false.
+  virtual bool PrepareVideoFrameForWebGL(
+      gpu::gles2::GLES2Interface* gl,
+      unsigned target,
+      unsigned texture,
+      int already_uploaded_id = -1,
+      WebMediaPlayer::VideoFrameUploadMetadata* out_metadata = nullptr) {
+    return false;
+  }
+
   virtual WebAudioSourceProvider* GetAudioSourceProvider() { return nullptr; }
 
   virtual void SetContentDecryptionModule(
diff --git a/third_party/blink/public/platform/web_set_sink_id_callbacks.h b/third_party/blink/public/platform/web_set_sink_id_callbacks.h
index 1d9c9d25..0707f68 100644
--- a/third_party/blink/public/platform/web_set_sink_id_callbacks.h
+++ b/third_party/blink/public/platform/web_set_sink_id_callbacks.h
@@ -5,7 +5,8 @@
 #ifndef THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_SET_SINK_ID_CALLBACKS_H_
 #define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_SET_SINK_ID_CALLBACKS_H_
 
-#include "third_party/blink/public/platform/web_callbacks.h"
+#include "base/callback.h"
+#include "base/optional.h"
 #include "third_party/blink/public/platform/web_string.h"
 
 namespace blink {
@@ -18,7 +19,8 @@
   kLast = kNotSupported
 };
 
-using WebSetSinkIdCallbacks = WebCallbacks<void, WebSetSinkIdError>;
+using WebSetSinkIdCompleteCallback =
+    base::OnceCallback<void(base::Optional<WebSetSinkIdError> error)>;
 
 }  // namespace blink
 
diff --git a/third_party/blink/public/platform/web_url_request.h b/third_party/blink/public/platform/web_url_request.h
index c2adbb9..5349656 100644
--- a/third_party/blink/public/platform/web_url_request.h
+++ b/third_party/blink/public/platform/web_url_request.h
@@ -36,8 +36,10 @@
 #include "base/time/time.h"
 #include "base/unguessable_token.h"
 #include "services/network/public/mojom/referrer_policy.mojom-shared.h"
+#include "third_party/blink/public/common/service_worker/service_worker_types.h"
 #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-shared.h"
 #include "third_party/blink/public/platform/web_common.h"
+#include "ui/base/page_transition_types.h"
 
 namespace network {
 namespace mojom {
@@ -114,7 +116,58 @@
 
   class ExtraData {
    public:
+    void set_is_preprerendering(bool is_prerendering) {
+      is_prerendering_ = is_prerendering;
+    }
+    void set_render_frame_id(int render_frame_id) {
+      render_frame_id_ = render_frame_id;
+    }
+    void set_is_main_frame(bool is_main_frame) {
+      is_main_frame_ = is_main_frame;
+    }
+    void set_allow_download(bool allow_download) {
+      allow_download_ = allow_download;
+    }
+    ui::PageTransition transition_type() const { return transition_type_; }
+    void set_transition_type(ui::PageTransition transition_type) {
+      transition_type_ = transition_type;
+    }
+    int service_worker_provider_id() const {
+      return service_worker_provider_id_;
+    }
+    void set_service_worker_provider_id(int service_worker_provider_id) {
+      service_worker_provider_id_ = service_worker_provider_id;
+    }
+
+    // true if the request originated from within a service worker e.g. due to
+    // a fetch() in the service worker script.
+    void set_originated_from_service_worker(
+        bool originated_from_service_worker) {
+      originated_from_service_worker_ = originated_from_service_worker;
+    }
+    void set_initiated_in_secure_context(bool secure) {
+      initiated_in_secure_context_ = secure;
+    }
+
+    // Determines whether SameSite cookies will be attached to the request
+    // even when the request looks cross-site.
+    bool attach_same_site_cookies() const { return attach_same_site_cookies_; }
+    void set_attach_same_site_cookies(bool attach) {
+      attach_same_site_cookies_ = attach;
+    }
+
     virtual ~ExtraData() = default;
+
+   protected:
+    bool is_prerendering_ = false;
+    int render_frame_id_ = MSG_ROUTING_NONE;
+    bool is_main_frame_ = false;
+    bool allow_download_ = true;
+    ui::PageTransition transition_type_ = ui::PAGE_TRANSITION_LINK;
+    int service_worker_provider_id_ = blink::kInvalidServiceWorkerProviderId;
+    bool originated_from_service_worker_ = false;
+    bool initiated_in_secure_context_ = false;
+    bool attach_same_site_cookies_ = false;
   };
 
   BLINK_PLATFORM_EXPORT ~WebURLRequest();
diff --git a/third_party/blink/public/web/web_local_frame_client.h b/third_party/blink/public/web/web_local_frame_client.h
index f01851d..55722e9 100644
--- a/third_party/blink/public/web/web_local_frame_client.h
+++ b/third_party/blink/public/web/web_local_frame_client.h
@@ -799,8 +799,8 @@
   // provided via the callbacks.
   virtual void CheckIfAudioSinkExistsAndIsAuthorized(
       const WebString& sink_id,
-      std::unique_ptr<WebSetSinkIdCallbacks> callbacks) {
-    callbacks->OnError(WebSetSinkIdError::kNotSupported);
+      WebSetSinkIdCompleteCallback callback) {
+    std::move(callback).Run(WebSetSinkIdError::kNotSupported);
   }
 
   // Visibility ----------------------------------------------------------
diff --git a/third_party/blink/renderer/bindings/core/v8/custom/v8_message_channel_custom.cc b/third_party/blink/renderer/bindings/core/v8/custom/v8_message_channel_custom.cc
index 1724ee5..f124d2b 100644
--- a/third_party/blink/renderer/bindings/core/v8/custom/v8_message_channel_custom.cc
+++ b/third_party/blink/renderer/bindings/core/v8/custom/v8_message_channel_custom.cc
@@ -44,7 +44,7 @@
   v8::Isolate* isolate = info.GetIsolate();
 
   ExecutionContext* context = CurrentExecutionContext(isolate);
-  MessageChannel* channel = MessageChannel::Create(context);
+  auto* channel = MakeGarbageCollected<MessageChannel>(context);
 
   v8::Local<v8::Object> wrapper = info.Holder();
 
diff --git a/third_party/blink/renderer/bindings/core/v8/script_streamer.cc b/third_party/blink/renderer/bindings/core/v8/script_streamer.cc
index 7cf42cf..de5a461 100644
--- a/third_party/blink/renderer/bindings/core/v8/script_streamer.cc
+++ b/third_party/blink/renderer/bindings/core/v8/script_streamer.cc
@@ -498,7 +498,7 @@
       suppressed_reason_(kInvalid),
       compile_options_(compile_options),
       script_url_string_(script_resource->Url().Copy().GetString()),
-      script_resource_identifier_(script_resource->Identifier()),
+      script_resource_identifier_(script_resource->InspectorId()),
       // Unfortunately there's no dummy encoding value in the enum; let's use
       // one we don't stream.
       encoding_(v8::ScriptCompiler::StreamedSource::TWO_BYTE),
diff --git a/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.cc b/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.cc
index 14df764..1a12b1e 100644
--- a/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.cc
+++ b/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.cc
@@ -452,7 +452,7 @@
 MessagePort* SerializedScriptValue::AddStreamChannel(
     ExecutionContext* execution_context) {
   mojo::MessagePipe pipe;
-  MessagePort* local_port = MessagePort::Create(*execution_context);
+  auto* local_port = MakeGarbageCollected<MessagePort>(*execution_context);
   local_port->Entangle(std::move(pipe.handle0));
   stream_channels_.push_back(MessagePortChannel(std::move(pipe.handle1)));
   return local_port;
diff --git a/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value_fuzzer.cc b/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value_fuzzer.cc
index ade1761..531a29e 100644
--- a/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value_fuzzer.cc
+++ b/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value_fuzzer.cc
@@ -71,7 +71,8 @@
   if (hash & kFuzzMessagePorts) {
     MessagePortArray* message_ports = MakeGarbageCollected<MessagePortArray>(3);
     std::generate(message_ports->begin(), message_ports->end(), []() {
-      MessagePort* port = MessagePort::Create(g_page_holder->GetDocument());
+      auto* port =
+          MakeGarbageCollected<MessagePort>(g_page_holder->GetDocument());
       port->Entangle(mojo::MessagePipe().handle0);
       return port;
     });
diff --git a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_deserializer.cc b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_deserializer.cc
index d506787..c866cf0 100644
--- a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_deserializer.cc
+++ b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_deserializer.cc
@@ -499,7 +499,7 @@
           index >= serialized_script_value_->MojoHandles().size()) {
         return nullptr;
       }
-      return MojoHandle::Create(
+      return MakeGarbageCollected<MojoHandle>(
           std::move(serialized_script_value_->MojoHandles()[index]));
     }
     case kOffscreenCanvasTransferTag: {
diff --git a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc
index e071acf..f8b129f 100644
--- a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc
+++ b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc
@@ -858,7 +858,7 @@
 
 MessagePort* MakeMessagePort(ExecutionContext* execution_context,
                              ::MojoHandle* unowned_handle_out = nullptr) {
-  MessagePort* port = MessagePort::Create(*execution_context);
+  auto* port = MakeGarbageCollected<MessagePort>(*execution_context);
   mojo::MessagePipe pipe;
   ::MojoHandle unowned_handle = pipe.handle0.get().value();
   port->Entangle(std::move(pipe.handle0));
@@ -894,7 +894,7 @@
                                  ExceptionState::kExecutionContext, "Window",
                                  "postMessage");
 
-  MessagePort* port = MessagePort::Create(*scope.GetExecutionContext());
+  auto* port = MakeGarbageCollected<MessagePort>(*scope.GetExecutionContext());
   EXPECT_TRUE(port->IsNeutered());
   v8::Local<v8::Value> wrapper = ToV8(port, scope.GetScriptState());
   Transferables transferables;
@@ -961,8 +961,8 @@
   V8TestingScope scope;
 
   mojo::MessagePipe pipe;
-  MojoHandle* handle =
-      MojoHandle::Create(mojo::ScopedHandle::From(std::move(pipe.handle0)));
+  auto* handle = MakeGarbageCollected<MojoHandle>(
+      mojo::ScopedHandle::From(std::move(pipe.handle0)));
   v8::Local<v8::Value> wrapper = ToV8(handle, scope.GetScriptState());
   Transferables transferables;
   transferables.mojo_handles.push_back(handle);
@@ -982,8 +982,8 @@
                                  "postMessage");
 
   mojo::MessagePipe pipe;
-  MojoHandle* handle =
-      MojoHandle::Create(mojo::ScopedHandle::From(std::move(pipe.handle0)));
+  auto* handle = MakeGarbageCollected<MojoHandle>(
+      mojo::ScopedHandle::From(std::move(pipe.handle0)));
   v8::Local<v8::Value> wrapper = ToV8(handle, scope.GetScriptState());
   Transferables transferables;
 
diff --git a/third_party/blink/renderer/controller/BUILD.gn b/third_party/blink/renderer/controller/BUILD.gn
index 65c03e2a..10d082ea 100644
--- a/third_party/blink/renderer/controller/BUILD.gn
+++ b/third_party/blink/renderer/controller/BUILD.gn
@@ -56,6 +56,8 @@
       "memory_usage_monitor_android.h",
       "oom_intervention_impl.cc",
       "oom_intervention_impl.h",
+      "user_level_memory_pressure_signal_generator.cc",
+      "user_level_memory_pressure_signal_generator.h",
     ]
   }
   if (is_mac) {
@@ -154,6 +156,7 @@
       "memory_usage_monitor_android_test.cc",
       "memory_usage_monitor_test.cc",
       "oom_intervention_impl_test.cc",
+      "user_level_memory_pressure_signal_generator_test.cc",
     ]
   }
 
diff --git a/third_party/blink/renderer/controller/blink_initializer.cc b/third_party/blink/renderer/controller/blink_initializer.cc
index 78dcd897..747405c 100644
--- a/third_party/blink/renderer/controller/blink_initializer.cc
+++ b/third_party/blink/renderer/controller/blink_initializer.cc
@@ -59,6 +59,7 @@
 #if defined(OS_ANDROID)
 #include "third_party/blink/renderer/controller/crash_memory_metrics_reporter_impl.h"
 #include "third_party/blink/renderer/controller/oom_intervention_impl.h"
+#include "third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator.h"
 #endif
 
 namespace blink {
@@ -133,6 +134,9 @@
     MemoryAblationExperiment::MaybeStartForRenderer(task_runner);
 
 #if defined(OS_ANDROID)
+  // Initialize UserLevelMemoryPressureSignalGenerator so it starts monitoring.
+  UserLevelMemoryPressureSignalGenerator::Instance();
+
   // Initialize CrashMemoryMetricsReporterImpl in order to assure that memory
   // allocation does not happen in OnOOMCallback.
   CrashMemoryMetricsReporterImpl::Instance();
diff --git a/third_party/blink/renderer/controller/memory_usage_monitor.h b/third_party/blink/renderer/controller/memory_usage_monitor.h
index 7b8e120..68ebf79 100644
--- a/third_party/blink/renderer/controller/memory_usage_monitor.h
+++ b/third_party/blink/renderer/controller/memory_usage_monitor.h
@@ -29,6 +29,7 @@
 
  public:
   static MemoryUsageMonitor& Instance();
+  static void SetInstanceForTesting(MemoryUsageMonitor*);
 
   class Observer : public base::CheckedObserver {
    public:
diff --git a/third_party/blink/renderer/controller/memory_usage_monitor_android.cc b/third_party/blink/renderer/controller/memory_usage_monitor_android.cc
index beb9b1b..f82ce3c 100644
--- a/third_party/blink/renderer/controller/memory_usage_monitor_android.cc
+++ b/third_party/blink/renderer/controller/memory_usage_monitor_android.cc
@@ -23,12 +23,19 @@
   return true;
 }
 
+static MemoryUsageMonitor* g_instance_for_testing = nullptr;
+
 }  // namespace
 
 // static
 MemoryUsageMonitor& MemoryUsageMonitor::Instance() {
   DEFINE_STATIC_LOCAL(MemoryUsageMonitorAndroid, monitor, ());
-  return monitor;
+  return g_instance_for_testing ? *g_instance_for_testing : monitor;
+}
+
+// static
+void MemoryUsageMonitor::SetInstanceForTesting(MemoryUsageMonitor* instance) {
+  g_instance_for_testing = instance;
 }
 
 // Since the measurement is done every second in background, optimizations are
diff --git a/third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator.cc b/third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator.cc
new file mode 100644
index 0000000..b5c8df3a
--- /dev/null
+++ b/third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator.cc
@@ -0,0 +1,139 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator.h"
+
+#include <limits>
+#include "base/memory/memory_pressure_listener.h"
+#include "base/metrics/field_trial_params.h"
+#include "base/metrics/histogram_macros.h"
+#include "base/system/sys_info.h"
+#include "third_party/blink/public/common/features.h"
+#include "third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h"
+#include "third_party/blink/renderer/platform/scheduler/public/thread.h"
+#include "third_party/blink/renderer/platform/scheduler/public/thread_scheduler.h"
+#include "third_party/blink/renderer/platform/wtf/allocator/partitions.h"
+
+namespace blink {
+
+namespace {
+
+constexpr double kDefaultMemoryThresholdMB =
+    std::numeric_limits<double>::infinity();
+
+constexpr base::FeatureParam<double> k512MBDeviceMemoryThresholdParam{
+    &blink::features::kUserLevelMemoryPressureSignal,
+    "param_512mb_device_memory_threshold_mb", kDefaultMemoryThresholdMB};
+
+constexpr base::FeatureParam<double> k1GBDeviceMemoryThresholdParam{
+    &blink::features::kUserLevelMemoryPressureSignal,
+    "param_1gb_device_memory_threshold_mb", kDefaultMemoryThresholdMB};
+
+constexpr base::FeatureParam<double> k2GBDeviceMemoryThresholdParam{
+    &blink::features::kUserLevelMemoryPressureSignal,
+    "param_2gb_device_memory_threshold_mb", kDefaultMemoryThresholdMB};
+
+constexpr base::FeatureParam<double> k3GBDeviceMemoryThresholdParam{
+    &blink::features::kUserLevelMemoryPressureSignal,
+    "param_3gb_device_memory_threshold_mb", kDefaultMemoryThresholdMB};
+
+constexpr base::FeatureParam<double> k4GBDeviceMemoryThresholdParam{
+    &blink::features::kUserLevelMemoryPressureSignal,
+    "param_4gb_device_memory_threshold_mb", kDefaultMemoryThresholdMB};
+
+// Minimum time interval between generated memory pressure signals.
+constexpr double kDefaultMinimumIntervalSeconds = 10 * 60;
+
+constexpr base::FeatureParam<double> kMinimumIntervalSeconds{
+    &blink::features::kUserLevelMemoryPressureSignal, "minimum_interval_s",
+    kDefaultMinimumIntervalSeconds};
+
+}  // namespace
+
+// static
+UserLevelMemoryPressureSignalGenerator&
+UserLevelMemoryPressureSignalGenerator::Instance() {
+  DEFINE_STATIC_LOCAL(UserLevelMemoryPressureSignalGenerator, generator, ());
+  return generator;
+}
+
+UserLevelMemoryPressureSignalGenerator::UserLevelMemoryPressureSignalGenerator()
+    : delayed_report_timer_(
+          Thread::MainThread()->GetTaskRunner(),
+          this,
+          &UserLevelMemoryPressureSignalGenerator::OnTimerFired) {
+  int64_t physical_memory = base::SysInfo::AmountOfPhysicalMemory();
+  if (physical_memory > 3.1 * 1024 * 1024 * 1024)
+    memory_threshold_mb_ = k4GBDeviceMemoryThresholdParam.Get();
+  else if (physical_memory > 2.1 * 1024 * 1024 * 1024)
+    memory_threshold_mb_ = k3GBDeviceMemoryThresholdParam.Get();
+  else if (physical_memory > 1.1 * 1024 * 1024 * 1024)
+    memory_threshold_mb_ = k2GBDeviceMemoryThresholdParam.Get();
+  else if (physical_memory > 600 * 1024 * 1024)
+    memory_threshold_mb_ = k1GBDeviceMemoryThresholdParam.Get();
+  else
+    memory_threshold_mb_ = k512MBDeviceMemoryThresholdParam.Get();
+
+  minimum_interval_ =
+      WTF::TimeDelta::FromSeconds(kMinimumIntervalSeconds.Get());
+
+  // Can be disabled for certain device classes by setting the field param to an
+  // empty string.
+  bool enabled = base::FeatureList::IsEnabled(
+                     blink::features::kUserLevelMemoryPressureSignal) &&
+                 !std::isinf(memory_threshold_mb_);
+  if (enabled) {
+    monitoring_ = true;
+    MemoryUsageMonitor::Instance().AddObserver(this);
+    ThreadScheduler::Current()->AddRAILModeObserver(this);
+  }
+}
+
+UserLevelMemoryPressureSignalGenerator::
+    ~UserLevelMemoryPressureSignalGenerator() {
+  MemoryUsageMonitor::Instance().RemoveObserver(this);
+  ThreadScheduler::Current()->RemoveRAILModeObserver(this);
+}
+
+void UserLevelMemoryPressureSignalGenerator::OnRAILModeChanged(
+    RAILMode rail_mode) {
+  is_loading_ = rail_mode == RAILMode::kLoad;
+}
+
+void UserLevelMemoryPressureSignalGenerator::OnMemoryPing(MemoryUsage usage) {
+  // Disabled during loading as we don't want to purge caches that has just been
+  // created.
+  if (is_loading_)
+    return;
+  if (usage.private_footprint_bytes / 1024 / 1024 < memory_threshold_mb_)
+    return;
+  base::TimeDelta elapsed = WTF::CurrentTimeTicks() - last_generated_;
+  if (elapsed >= WTF::TimeDelta::FromSeconds(kMinimumIntervalSeconds.Get()))
+    Generate(usage);
+}
+
+void UserLevelMemoryPressureSignalGenerator::Generate(MemoryUsage usage) {
+  UMA_HISTOGRAM_MEMORY_LARGE_MB(
+      "Memory.Experimental.UserLevelMemoryPressureSignal."
+      "RendererPrivateMemoryFootprintBefore",
+      base::saturated_cast<base::Histogram::Sample>(
+          usage.private_footprint_bytes / 1024 / 1024));
+
+  base::MemoryPressureListener::NotifyMemoryPressure(
+      base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL);
+  last_generated_ = WTF::CurrentTimeTicks();
+
+  delayed_report_timer_.StartOneShot(TimeDelta::FromSeconds(10), FROM_HERE);
+}
+
+void UserLevelMemoryPressureSignalGenerator::OnTimerFired(TimerBase*) {
+  MemoryUsage usage = MemoryUsageMonitor::Instance().GetCurrentMemoryUsage();
+  UMA_HISTOGRAM_MEMORY_LARGE_MB(
+      "Memory.Experimental.UserLevelMemoryPressureSignal."
+      "RendererPrivateMemoryFootprintAfter",
+      base::saturated_cast<base::Histogram::Sample>(
+          usage.private_footprint_bytes / 1024 / 1024));
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator.h b/third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator.h
new file mode 100644
index 0000000..91bd2c3
--- /dev/null
+++ b/third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator.h
@@ -0,0 +1,59 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_CONTROLLER_USER_LEVEL_MEMORY_PRESSURE_SIGNAL_GENERATOR_H_
+#define THIRD_PARTY_BLINK_RENDERER_CONTROLLER_USER_LEVEL_MEMORY_PRESSURE_SIGNAL_GENERATOR_H_
+
+#include "third_party/blink/renderer/controller/controller_export.h"
+#include "third_party/blink/renderer/controller/memory_usage_monitor.h"
+#include "third_party/blink/renderer/platform/scheduler/public/rail_mode_observer.h"
+#include "third_party/blink/renderer/platform/timer.h"
+#include "third_party/blink/renderer/platform/wtf/allocator.h"
+
+namespace blink {
+
+// Generates extra memory pressure signals (on top of the OS generated ones)
+// when the memory usage goes over a threshold.
+class CONTROLLER_EXPORT UserLevelMemoryPressureSignalGenerator
+    : public RAILModeObserver,
+      public MemoryUsageMonitor::Observer {
+  USING_FAST_MALLOC(UserLevelMemoryPressureSignalGenerator);
+
+ public:
+  // Returns the shared instance.
+  static UserLevelMemoryPressureSignalGenerator& Instance();
+
+  UserLevelMemoryPressureSignalGenerator();
+  ~UserLevelMemoryPressureSignalGenerator() override;
+
+ protected:
+  // This is only virtual to override in tests.
+  virtual void Generate(MemoryUsage);
+
+ private:
+  FRIEND_TEST_ALL_PREFIXES(UserLevelMemoryPressureSignalGeneratorTest,
+                           GeneratesWhenOverThreshold);
+  FRIEND_TEST_ALL_PREFIXES(UserLevelMemoryPressureSignalGeneratorTest,
+                           GenerationPauses);
+
+  // Called by delayed_report_timer_ to report metrics.
+  void OnTimerFired(TimerBase*);
+
+  // RAILModeObserver:
+  void OnRAILModeChanged(RAILMode rail_mode) override;
+
+  // MemoryUsageMonitor::Observer:
+  void OnMemoryPing(MemoryUsage) override;
+
+  bool monitoring_ = false;
+  bool is_loading_ = false;
+  WTF::TimeTicks last_generated_;
+  double memory_threshold_mb_;
+  WTF::TimeDelta minimum_interval_;
+  TaskRunnerTimer<UserLevelMemoryPressureSignalGenerator> delayed_report_timer_;
+};
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_CONTROLLER_USER_LEVEL_MEMORY_PRESSURE_SIGNAL_GENERATOR_H_
diff --git a/third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator_test.cc b/third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator_test.cc
new file mode 100644
index 0000000..b68f064a
--- /dev/null
+++ b/third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator_test.cc
@@ -0,0 +1,173 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator.h"
+
+#include "base/test/scoped_feature_list.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/blink/public/common/features.h"
+#include "third_party/blink/renderer/platform/testing/unit_test_helpers.h"
+#include "third_party/blink/renderer/platform/testing/wtf/scoped_mock_clock.h"
+
+namespace blink {
+
+using testing::_;
+
+namespace {
+
+// Mock that allows setting mock memory usage.
+class MockMemoryUsageMonitor : public MemoryUsageMonitor {
+ public:
+  MockMemoryUsageMonitor() = default;
+  ~MockMemoryUsageMonitor() override = default;
+
+  MemoryUsage GetCurrentMemoryUsage() override { return mock_memory_usage_; }
+
+  // MemoryUsageMonitor will report the current memory usage as this value.
+  void SetMockMemoryUsage(MemoryUsage usage) { mock_memory_usage_ = usage; }
+
+ private:
+  MemoryUsage mock_memory_usage_;
+};
+
+class MockUserLevelMemoryPressureSignalGenerator
+    : public UserLevelMemoryPressureSignalGenerator {
+ public:
+  MockUserLevelMemoryPressureSignalGenerator() {
+    ON_CALL(*this, Generate(_))
+        .WillByDefault(testing::Invoke(
+            this, &MockUserLevelMemoryPressureSignalGenerator::RealGenerate));
+  }
+  ~MockUserLevelMemoryPressureSignalGenerator() override = default;
+
+  MOCK_METHOD1(Generate, void(MemoryUsage));
+
+  void RealGenerate(MemoryUsage usage) {
+    UserLevelMemoryPressureSignalGenerator::Generate(usage);
+  }
+};
+
+class ScopedMockMemoryUsageMonitor {
+ public:
+  ScopedMockMemoryUsageMonitor(MemoryUsageMonitor* monitor) {
+    MemoryUsageMonitor::SetInstanceForTesting(monitor);
+  }
+  ~ScopedMockMemoryUsageMonitor() {
+    MemoryUsageMonitor::SetInstanceForTesting(nullptr);
+  }
+};
+
+class UserLevelMemoryPressureSignalGeneratorTest : public testing::Test {
+ public:
+  UserLevelMemoryPressureSignalGeneratorTest() = default;
+
+  void SetUp() override {
+    std::map<std::string, std::string> feature_parameters;
+    feature_parameters["param_512mb_device_memory_threshold_mb"] = "1024.0";
+    feature_parameters["param_1gb_device_memory_threshold_mb"] = "1024.0";
+    feature_parameters["param_2gb_device_memory_threshold_mb"] = "1024.0";
+    feature_parameters["param_3gb_device_memory_threshold_mb"] = "1024.0";
+    feature_parameters["param_4gb_device_memory_threshold_mb"] = "1024.0";
+    feature_parameters["minimum_interval_s"] = "600.0";
+
+    scoped_feature_list_.InitAndEnableFeatureWithParameters(
+        blink::features::kUserLevelMemoryPressureSignal, feature_parameters);
+  }
+
+ protected:
+  base::test::ScopedFeatureList scoped_feature_list_;
+};
+
+constexpr double kMemoryThresholdBytes = 1024 * 1024 * 1024;
+
+}  // namespace
+
+TEST_F(UserLevelMemoryPressureSignalGeneratorTest, GeneratesWhenOverThreshold) {
+  {
+    WTF::ScopedMockClock clock;
+    std::unique_ptr<MockMemoryUsageMonitor> mock_memory_usage_monitor =
+        std::make_unique<MockMemoryUsageMonitor>();
+    ScopedMockMemoryUsageMonitor mock_memory_usage_scope(
+        mock_memory_usage_monitor.get());
+    MockUserLevelMemoryPressureSignalGenerator generator;
+    {
+      EXPECT_CALL(generator, Generate(_)).Times(0);
+      MemoryUsage usage;
+      usage.v8_bytes = 0;
+      usage.blink_gc_bytes = 0;
+      usage.partition_alloc_bytes = 0;
+      usage.private_footprint_bytes = kMemoryThresholdBytes - 1024 * 1024;
+      usage.swap_bytes = 0;
+      usage.vm_size_bytes = 0;
+      mock_memory_usage_monitor->SetMockMemoryUsage(usage);
+      clock.Advance(TimeDelta::FromSeconds(1));
+      test::RunDelayedTasks(TimeDelta::FromSeconds(1));
+    }
+    {
+      EXPECT_CALL(generator, Generate(_)).Times(1);
+      MemoryUsage usage;
+      usage.v8_bytes = 0;
+      usage.blink_gc_bytes = 0;
+      usage.partition_alloc_bytes = 0;
+      usage.private_footprint_bytes = kMemoryThresholdBytes + 1024 * 1024;
+      usage.swap_bytes = 0;
+      usage.vm_size_bytes = 0;
+      mock_memory_usage_monitor->SetMockMemoryUsage(usage);
+      clock.Advance(TimeDelta::FromMinutes(10));
+      test::RunDelayedTasks(TimeDelta::FromSeconds(1));
+    }
+  }
+}
+
+TEST_F(UserLevelMemoryPressureSignalGeneratorTest, GenerationPauses) {
+  {
+    WTF::ScopedMockClock clock;
+    std::unique_ptr<MockMemoryUsageMonitor> mock_memory_usage_monitor =
+        std::make_unique<MockMemoryUsageMonitor>();
+    ScopedMockMemoryUsageMonitor mock_memory_usage_scope(
+        mock_memory_usage_monitor.get());
+    MockUserLevelMemoryPressureSignalGenerator generator;
+    {
+      MemoryUsage usage;
+      usage.v8_bytes = 0;
+      usage.blink_gc_bytes = 0;
+      usage.partition_alloc_bytes = 0;
+      usage.private_footprint_bytes = kMemoryThresholdBytes + 1024 * 1024;
+      usage.swap_bytes = 0;
+      usage.vm_size_bytes = 0;
+      mock_memory_usage_monitor->SetMockMemoryUsage(usage);
+      clock.Advance(TimeDelta::FromMinutes(10));
+      // Generated
+      {
+        EXPECT_CALL(generator, Generate(_)).Times(1);
+        test::RunDelayedTasks(TimeDelta::FromSeconds(1));
+      }
+
+      clock.Advance(TimeDelta::FromMinutes(1));
+      // Not generated because too soon
+      {
+        EXPECT_CALL(generator, Generate(_)).Times(0);
+        test::RunDelayedTasks(TimeDelta::FromSeconds(1));
+      }
+
+      clock.Advance(TimeDelta::FromMinutes(10));
+      generator.OnRAILModeChanged(RAILMode::kLoad);
+      // Not generated because loading
+      {
+        EXPECT_CALL(generator, Generate(_)).Times(0);
+        test::RunDelayedTasks(TimeDelta::FromSeconds(1));
+      }
+
+      generator.OnRAILModeChanged(RAILMode::kAnimation);
+      // Generated
+      {
+        EXPECT_CALL(generator, Generate(_)).Times(1);
+        test::RunDelayedTasks(TimeDelta::FromSeconds(1));
+      }
+    }
+  }
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/core/accessibility/ax_object_cache.h b/third_party/blink/renderer/core/accessibility/ax_object_cache.h
index 721bb00..e689518 100644
--- a/third_party/blink/renderer/core/accessibility/ax_object_cache.h
+++ b/third_party/blink/renderer/core/accessibility/ax_object_cache.h
@@ -133,6 +133,10 @@
   virtual void HandleLayoutComplete(LayoutObject*) = 0;
   virtual void HandleScrolledToAnchor(const Node* anchor_node) = 0;
 
+  // Called when the frame rect changes, which can sometimes happen
+  // without producing any layout or other notifications.
+  virtual void HandleFrameRectsChanged(Document&) = 0;
+
   virtual const AtomicString& ComputedRoleForNode(Node*) = 0;
   virtual String ComputedNameForNode(Node*) = 0;
 
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
index 85f1033..90faefa 100644
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -2050,10 +2050,6 @@
     overflow_y = EOverflow::kAuto;
   if (overflow_anchor == EOverflowAnchor::kVisible)
     overflow_anchor = EOverflowAnchor::kAuto;
-  // Column-gap is (ab)used by the current paged overflow implementation (in
-  // lack of other ways to specify gaps between pages), so we have to
-  // propagate it too.
-  GapLength column_gap = overflow_style->ColumnGap();
 
   cc::ScrollSnapType snap_type = overflow_style->GetScrollSnapType();
   ScrollBehavior scroll_behavior = document_element_style->GetScrollBehavior();
@@ -2085,7 +2081,6 @@
       viewport_style.OverflowAnchor() != overflow_anchor ||
       viewport_style.OverflowX() != overflow_x ||
       viewport_style.OverflowY() != overflow_y ||
-      viewport_style.ColumnGap() != column_gap ||
       viewport_style.GetScrollSnapType() != snap_type ||
       viewport_style.GetScrollBehavior() != scroll_behavior ||
       viewport_style.OverscrollBehaviorX() != overscroll_behavior_x ||
@@ -2106,7 +2101,6 @@
     new_style->SetOverflowAnchor(overflow_anchor);
     new_style->SetOverflowX(overflow_x);
     new_style->SetOverflowY(overflow_y);
-    new_style->SetColumnGap(column_gap);
     new_style->SetScrollSnapType(snap_type);
     new_style->SetScrollBehavior(scroll_behavior);
     new_style->SetOverscrollBehaviorX(overscroll_behavior_x);
@@ -6715,9 +6709,10 @@
 
 IntersectionObserverController&
 Document::EnsureIntersectionObserverController() {
-  if (!intersection_observer_controller_)
+  if (!intersection_observer_controller_) {
     intersection_observer_controller_ =
-        IntersectionObserverController::Create(this);
+        MakeGarbageCollected<IntersectionObserverController>(this);
+  }
   return *intersection_observer_controller_;
 }
 
@@ -7236,7 +7231,7 @@
 
 TextAutosizer* Document::GetTextAutosizer() {
   if (!text_autosizer_)
-    text_autosizer_ = TextAutosizer::Create(this);
+    text_autosizer_ = MakeGarbageCollected<TextAutosizer>(this);
   return text_autosizer_.Get();
 }
 
diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc
index 020f5ca..b7acae9b 100644
--- a/third_party/blink/renderer/core/dom/element.cc
+++ b/third_party/blink/renderer/core/dom/element.cc
@@ -1419,8 +1419,8 @@
   auto* activated_element_iterator = activated_elements.begin();
   for (Element* ancestor : invisible_ancestors) {
     DCHECK(activated_element_iterator != activated_elements.end());
-    ancestor->DispatchEvent(
-        *ActivateInvisibleEvent::Create(*activated_element_iterator));
+    ancestor->DispatchEvent(*MakeGarbageCollected<ActivateInvisibleEvent>(
+        *activated_element_iterator));
     ++activated_element_iterator;
   }
 }
diff --git a/third_party/blink/renderer/core/dom/first_letter_pseudo_element.cc b/third_party/blink/renderer/core/dom/first_letter_pseudo_element.cc
index 6edb7703..9843488 100644
--- a/third_party/blink/renderer/core/dom/first_letter_pseudo_element.cc
+++ b/third_party/blink/renderer/core/dom/first_letter_pseudo_element.cc
@@ -148,7 +148,8 @@
     } else if (first_letter_text_layout_object->IsListMarker() ||
                first_letter_text_layout_object == marker) {
       first_letter_text_layout_object =
-          first_letter_text_layout_object->NextSibling();
+          first_letter_text_layout_object->NextInPreOrderAfterChildren(
+              parent_layout_object);
     } else if (first_letter_text_layout_object
                    ->IsFloatingOrOutOfFlowPositioned()) {
       if (first_letter_text_layout_object->Style()->StyleType() ==
diff --git a/third_party/blink/renderer/core/editing/element_inner_text_test.cc b/third_party/blink/renderer/core/editing/element_inner_text_test.cc
index 296fed3..efc058c 100644
--- a/third_party/blink/renderer/core/editing/element_inner_text_test.cc
+++ b/third_party/blink/renderer/core/editing/element_inner_text_test.cc
@@ -47,4 +47,14 @@
   EXPECT_EQ("abc", target.innerText());
 }
 
+// https://crbug.com/947422
+TEST_P(ElementInnerTest, OverflowingListItemWithFloatFirstLetter) {
+  InsertStyleElement(
+      "div { display: list-item; overflow: hidden; }"
+      "div::first-letter { float: right; }");
+  SetBodyContent("<div id=target>foo</div>");
+  Element& target = *GetDocument().getElementById("target");
+  EXPECT_EQ("foo", target.innerText());
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/exported/web_history_item.cc b/third_party/blink/renderer/core/exported/web_history_item.cc
index 4d09abed..a65b11b 100644
--- a/third_party/blink/renderer/core/exported/web_history_item.cc
+++ b/third_party/blink/renderer/core/exported/web_history_item.cc
@@ -45,7 +45,7 @@
 namespace blink {
 
 void WebHistoryItem::Initialize() {
-  private_ = HistoryItem::Create();
+  private_ = MakeGarbageCollected<HistoryItem>();
 }
 
 void WebHistoryItem::Reset() {
diff --git a/third_party/blink/renderer/core/exported/web_page_popup_impl.cc b/third_party/blink/renderer/core/exported/web_page_popup_impl.cc
index 8dbaa0bd..ab8e2cbd 100644
--- a/third_party/blink/renderer/core/exported/web_page_popup_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_page_popup_impl.cc
@@ -286,7 +286,7 @@
 
   ProvideContextFeaturesTo(*page_, std::make_unique<PagePopupFeaturesClient>());
   DEFINE_STATIC_LOCAL(Persistent<LocalFrameClient>, empty_local_frame_client,
-                      (EmptyLocalFrameClient::Create()));
+                      (MakeGarbageCollected<EmptyLocalFrameClient>()));
   LocalFrame* frame =
       LocalFrame::Create(empty_local_frame_client, *page_, nullptr);
   frame->SetPagePopupOwner(popup_client_->OwnerElement());
diff --git a/third_party/blink/renderer/core/frame/frame.cc b/third_party/blink/renderer/core/frame/frame.cc
index b97e74d8..b877f4f 100644
--- a/third_party/blink/renderer/core/frame/frame.cc
+++ b/third_party/blink/renderer/core/frame/frame.cc
@@ -137,7 +137,7 @@
 
 static ChromeClient& GetEmptyChromeClient() {
   DEFINE_STATIC_LOCAL(Persistent<EmptyChromeClient>, client,
-                      (EmptyChromeClient::Create()));
+                      (MakeGarbageCollected<EmptyChromeClient>()));
   return *client;
 }
 
diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_party/blink/renderer/core/frame/local_dom_window.cc
index e5cd857..46fbccf 100644
--- a/third_party/blink/renderer/core/frame/local_dom_window.cc
+++ b/third_party/blink/renderer/core/frame/local_dom_window.cc
@@ -529,7 +529,7 @@
         document(), WebFeature::kApplicationCacheAPIInsecureOrigin);
   }
   if (!application_cache_)
-    application_cache_ = ApplicationCache::Create(GetFrame());
+    application_cache_ = MakeGarbageCollected<ApplicationCache>(GetFrame());
   return application_cache_.Get();
 }
 
diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
index d81513f..92570ab 100644
--- a/third_party/blink/renderer/core/frame/local_frame.cc
+++ b/third_party/blink/renderer/core/frame/local_frame.cc
@@ -961,7 +961,7 @@
           IsMainFrame() ? FrameScheduler::FrameType::kMainFrame
                         : FrameScheduler::FrameType::kSubframe)),
       loader_(this),
-      navigation_scheduler_(NavigationScheduler::Create(this)),
+      navigation_scheduler_(MakeGarbageCollected<NavigationScheduler>(this)),
       script_controller_(MakeGarbageCollected<ScriptController>(
           *this,
           *static_cast<LocalWindowProxyManager*>(GetWindowProxyManager()))),
diff --git a/third_party/blink/renderer/core/frame/local_frame_view.cc b/third_party/blink/renderer/core/frame/local_frame_view.cc
index fae7819c..d9cff98 100644
--- a/third_party/blink/renderer/core/frame/local_frame_view.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_view.cc
@@ -3474,6 +3474,13 @@
   });
 
   GetFrame().Client()->FrameRectsChanged(FrameRect());
+
+  // It's possible for changing the frame rect to not generate a layout
+  // or any other event tracked by accessibility, we've seen this with
+  // Android WebView. Ensure that the root of the accessibility tree is
+  // invalidated so that it gets the right bounding rect.
+  if (AXObjectCache* cache = ExistingAXObjectCache())
+    cache->HandleFrameRectsChanged(*GetFrame().GetDocument());
 }
 
 void LocalFrameView::SetLayoutSizeInternal(const IntSize& size) {
diff --git a/third_party/blink/renderer/core/html/canvas/canvas_rendering_context.h b/third_party/blink/renderer/core/html/canvas/canvas_rendering_context.h
index 47169c7..faca212 100644
--- a/third_party/blink/renderer/core/html/canvas/canvas_rendering_context.h
+++ b/third_party/blink/renderer/core/html/canvas/canvas_rendering_context.h
@@ -153,7 +153,7 @@
   virtual HitTestCanvasResult* GetControlAndIdIfHitRegionExists(
       const LayoutPoint& location) {
     NOTREACHED();
-    return HitTestCanvasResult::Create(String(), nullptr);
+    return MakeGarbageCollected<HitTestCanvasResult>(String(), nullptr);
   }
   virtual String GetIdFromControl(const Element* element) { return String(); }
   virtual void ResetUsageTracking() {}
diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
index 197a7c4..ec9e9b0 100644
--- a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
+++ b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
@@ -1397,7 +1397,7 @@
     const LayoutPoint& location) {
   if (Is2d())
     return context_->GetControlAndIdIfHitRegionExists(location);
-  return HitTestCanvasResult::Create(String(), nullptr);
+  return MakeGarbageCollected<HitTestCanvasResult>(String(), nullptr);
 }
 
 String HTMLCanvasElement::GetIdFromControl(const Element* element) {
diff --git a/third_party/blink/renderer/core/html/forms/image_input_type.cc b/third_party/blink/renderer/core/html/forms/image_input_type.cc
index 2db0bf0..836292369 100644
--- a/third_party/blink/renderer/core/html/forms/image_input_type.cc
+++ b/third_party/blink/renderer/core/html/forms/image_input_type.cc
@@ -109,7 +109,7 @@
   if (use_fallback_content_)
     return LayoutObjectFactory::CreateBlockFlow(GetElement(), style, legacy);
   LayoutImage* image = new LayoutImage(&GetElement());
-  image->SetImageResource(LayoutImageResource::Create());
+  image->SetImageResource(MakeGarbageCollected<LayoutImageResource>());
   return image;
 }
 
diff --git a/third_party/blink/renderer/core/html/forms/internal_popup_menu_test.cc b/third_party/blink/renderer/core/html/forms/internal_popup_menu_test.cc
index 5507dafa..7d6619b 100644
--- a/third_party/blink/renderer/core/html/forms/internal_popup_menu_test.cc
+++ b/third_party/blink/renderer/core/html/forms/internal_popup_menu_test.cc
@@ -35,8 +35,8 @@
   HTMLSelectElement* select =
       ToHTMLSelectElement(document.getElementById("select"));
   ASSERT_TRUE(select);
-  InternalPopupMenu* menu =
-      InternalPopupMenu::Create(EmptyChromeClient::Create(), *select);
+  InternalPopupMenu* menu = InternalPopupMenu::Create(
+      MakeGarbageCollected<EmptyChromeClient>(), *select);
 
   document.body()->SetInlineStyleProperty(CSSPropertyID::kColor, "blue");
 
diff --git a/third_party/blink/renderer/core/html/html_image_element.cc b/third_party/blink/renderer/core/html/html_image_element.cc
index 726f70a..eca9ea1f 100644
--- a/third_party/blink/renderer/core/html/html_image_element.cc
+++ b/third_party/blink/renderer/core/html/html_image_element.cc
@@ -406,7 +406,7 @@
       return LayoutObjectFactory::CreateBlockFlow(*this, style, legacy);
     case LayoutDisposition::kPrimaryContent: {
       LayoutImage* image = new LayoutImage(this);
-      image->SetImageResource(LayoutImageResource::Create());
+      image->SetImageResource(MakeGarbageCollected<LayoutImageResource>());
       image->SetImageDevicePixelRatio(image_device_pixel_ratio_);
       return image;
     }
diff --git a/third_party/blink/renderer/core/html/html_plugin_element.cc b/third_party/blink/renderer/core/html/html_plugin_element.cc
index 27eb00fe..db339d2 100644
--- a/third_party/blink/renderer/core/html/html_plugin_element.cc
+++ b/third_party/blink/renderer/core/html/html_plugin_element.cc
@@ -365,7 +365,7 @@
 
   if (IsImageType()) {
     LayoutImage* image = new LayoutImage(this);
-    image->SetImageResource(LayoutImageResource::Create());
+    image->SetImageResource(MakeGarbageCollected<LayoutImageResource>());
     return image;
   }
 
diff --git a/third_party/blink/renderer/core/html/media/html_video_element.cc b/third_party/blink/renderer/core/html/media/html_video_element.cc
index 57d987b8..99256f1 100644
--- a/third_party/blink/renderer/core/html/media/html_video_element.cc
+++ b/third_party/blink/renderer/core/html/media/html_video_element.cc
@@ -505,6 +505,18 @@
       xoffset, yoffset, zoffset, flip_y, premultiply_alpha);
 }
 
+bool HTMLVideoElement::PrepareVideoFrameForWebGL(
+    gpu::gles2::GLES2Interface* gl,
+    GLenum target,
+    GLuint texture,
+    bool already_uploaded_id,
+    WebMediaPlayer::VideoFrameUploadMetadata* out_metadata) {
+  if (!GetWebMediaPlayer())
+    return false;
+  return GetWebMediaPlayer()->PrepareVideoFrameForWebGL(
+      gl, target, texture, already_uploaded_id, out_metadata);
+}
+
 bool HTMLVideoElement::HasAvailableVideoFrame() const {
   if (!GetWebMediaPlayer())
     return false;
diff --git a/third_party/blink/renderer/core/html/media/html_video_element.h b/third_party/blink/renderer/core/html/media/html_video_element.h
index bdea22cd..2978d0694 100644
--- a/third_party/blink/renderer/core/html/media/html_video_element.h
+++ b/third_party/blink/renderer/core/html/media/html_video_element.h
@@ -53,6 +53,8 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
+  static const int kNoAlreadyUploadedFrame = -1;
+
   static HTMLVideoElement* Create(Document&);
 
   HTMLVideoElement(Document&);
@@ -94,7 +96,7 @@
       cc::PaintCanvas*,
       const IntRect&,
       const cc::PaintFlags*,
-      int already_uploaded_id = -1,
+      int already_uploaded_id = kNoAlreadyUploadedFrame,
       WebMediaPlayer::VideoFrameUploadMetadata* out_metadata = nullptr) const;
 
   // Used by WebGL to do GPU-GPU texture copy if possible.
@@ -140,6 +142,14 @@
                     bool flip_y,
                     bool premultiply_alpha);
 
+  // Used by WebGL to do GPU_GPU texture sharing if possible.
+  bool PrepareVideoFrameForWebGL(
+      gpu::gles2::GLES2Interface*,
+      GLenum target,
+      GLuint texture,
+      bool already_uploaded_id,
+      WebMediaPlayer::VideoFrameUploadMetadata* out_metadata);
+
   bool ShouldDisplayPosterImage() const { return GetDisplayMode() == kPoster; }
 
   bool HasAvailableVideoFrame() const;
diff --git a/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc b/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc
index 483e89f..11d0499 100644
--- a/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc
@@ -848,7 +848,7 @@
   overlay_settings.SetLoadsImagesAutomatically(true);
 
   DEFINE_STATIC_LOCAL(Persistent<LocalFrameClient>, dummy_local_frame_client,
-                      (EmptyLocalFrameClient::Create()));
+                      (MakeGarbageCollected<EmptyLocalFrameClient>()));
   LocalFrame* frame =
       LocalFrame::Create(dummy_local_frame_client, *overlay_page_, nullptr);
   frame->SetView(LocalFrameView::Create(*frame));
@@ -880,7 +880,7 @@
   }
 
   DEFINE_STATIC_LOCAL(Persistent<LocalFrameClient>, dummy_local_frame_client,
-                      (EmptyLocalFrameClient::Create()));
+                      (MakeGarbageCollected<EmptyLocalFrameClient>()));
   LocalFrame* frame =
       LocalFrame::Create(dummy_local_frame_client, *OverlayPage(), nullptr);
   frame->SetView(LocalFrameView::Create(*frame));
diff --git a/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.cc b/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.cc
index 21d0856..0fe8f35 100644
--- a/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.cc
+++ b/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.cc
@@ -17,11 +17,6 @@
 
 namespace blink {
 
-IntersectionObserverController* IntersectionObserverController::Create(
-    Document* document) {
-  return MakeGarbageCollected<IntersectionObserverController>(document);
-}
-
 IntersectionObserverController::IntersectionObserverController(
     Document* document)
     : ContextClient(document) {}
diff --git a/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.h b/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.h
index 2c7d51c..a457efc 100644
--- a/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.h
+++ b/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.h
@@ -26,8 +26,6 @@
   USING_GARBAGE_COLLECTED_MIXIN(IntersectionObserverController);
 
  public:
-  static IntersectionObserverController* Create(Document*);
-
   explicit IntersectionObserverController(Document*);
   virtual ~IntersectionObserverController();
 
diff --git a/third_party/blink/renderer/core/invisible_dom/activate_invisible_event.h b/third_party/blink/renderer/core/invisible_dom/activate_invisible_event.h
index 4528f808..baac901 100644
--- a/third_party/blink/renderer/core/invisible_dom/activate_invisible_event.h
+++ b/third_party/blink/renderer/core/invisible_dom/activate_invisible_event.h
@@ -15,10 +15,6 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
-  static ActivateInvisibleEvent* Create(Element* activated_element) {
-    return MakeGarbageCollected<ActivateInvisibleEvent>(activated_element);
-  }
-
   explicit ActivateInvisibleEvent(Element* activated_element);
 
   Element* activatedElement() const { return activated_element_.Get(); }
diff --git a/third_party/blink/renderer/core/layout/custom/layout_worklet.cc b/third_party/blink/renderer/core/layout/custom/layout_worklet.cc
index 85f475c..f04a404c 100644
--- a/third_party/blink/renderer/core/layout/custom/layout_worklet.cc
+++ b/third_party/blink/renderer/core/layout/custom/layout_worklet.cc
@@ -22,17 +22,12 @@
   LayoutWorklet* supplement =
       Supplement<LocalDOMWindow>::From<LayoutWorklet>(window);
   if (!supplement && window.GetFrame()) {
-    supplement = Create(window.GetFrame());
+    supplement = MakeGarbageCollected<LayoutWorklet>(window.GetFrame());
     ProvideTo(window, supplement);
   }
   return supplement;
 }
 
-// static
-LayoutWorklet* LayoutWorklet::Create(LocalFrame* frame) {
-  return MakeGarbageCollected<LayoutWorklet>(frame);
-}
-
 LayoutWorklet::LayoutWorklet(LocalFrame* frame)
     : Worklet(frame->GetDocument()),
       Supplement<LocalDOMWindow>(*frame->DomWindow()),
diff --git a/third_party/blink/renderer/core/layout/custom/layout_worklet.h b/third_party/blink/renderer/core/layout/custom/layout_worklet.h
index 0641237..3760877 100644
--- a/third_party/blink/renderer/core/layout/custom/layout_worklet.h
+++ b/third_party/blink/renderer/core/layout/custom/layout_worklet.h
@@ -33,7 +33,6 @@
   // At the moment, layout worklet allows at most two global scopes at any time.
   static const size_t kNumGlobalScopes;
   static LayoutWorklet* From(LocalDOMWindow&);
-  static LayoutWorklet* Create(LocalFrame*);
 
   explicit LayoutWorklet(LocalFrame*);
   ~LayoutWorklet() override;
diff --git a/third_party/blink/renderer/core/layout/custom/layout_worklet_test.cc b/third_party/blink/renderer/core/layout/custom/layout_worklet_test.cc
index e2d0f171..b0cebc4 100644
--- a/third_party/blink/renderer/core/layout/custom/layout_worklet_test.cc
+++ b/third_party/blink/renderer/core/layout/custom/layout_worklet_test.cc
@@ -22,8 +22,8 @@
  public:
   void SetUp() override {
     PageTestBase::SetUp(IntSize());
-    layout_worklet_ =
-        LayoutWorklet::Create(GetDocument().domWindow()->GetFrame());
+    layout_worklet_ = MakeGarbageCollected<LayoutWorklet>(
+        GetDocument().domWindow()->GetFrame());
     proxy_ = layout_worklet_->CreateGlobalScope();
   }
 
diff --git a/third_party/blink/renderer/core/layout/flexible_box_algorithm.h b/third_party/blink/renderer/core/layout/flexible_box_algorithm.h
index 5646019..3819164 100644
--- a/third_party/blink/renderer/core/layout/flexible_box_algorithm.h
+++ b/third_party/blink/renderer/core/layout/flexible_box_algorithm.h
@@ -314,6 +314,13 @@
 
   bool ShouldApplyMinSizeAutoForChild(const LayoutBox& child) const;
 
+  // Returns the intrinsic size of this box in the block direction. Call this
+  // after all flex lines have been created and processed (ie. after the
+  // ComputeLineItemsPosition stage).
+  // For a column flexbox, this will return the max across all flex lines of
+  // the length of the line, minus any added spacing due to justification.
+  // For row flexboxes, this returns the bottom (block axis) of the last flex
+  // line. In both cases, border/padding is not included.
   LayoutUnit IntrinsicContentBlockSize() const;
 
   static TransformedWritingMode GetTransformedWritingMode(const ComputedStyle&);
diff --git a/third_party/blink/renderer/core/layout/hit_test_cache.h b/third_party/blink/renderer/core/layout/hit_test_cache.h
index 9274fbc0..bc42a71 100644
--- a/third_party/blink/renderer/core/layout/hit_test_cache.h
+++ b/third_party/blink/renderer/core/layout/hit_test_cache.h
@@ -47,8 +47,6 @@
 class CORE_EXPORT HitTestCache final
     : public GarbageCollectedFinalized<HitTestCache> {
  public:
-  static HitTestCache* Create() { return MakeGarbageCollected<HitTestCache>(); }
-
   HitTestCache() : update_index_(0), dom_tree_version_(0) {}
 
   // Check the cache for a possible hit and update |result| if
diff --git a/third_party/blink/renderer/core/layout/hit_test_canvas_result.h b/third_party/blink/renderer/core/layout/hit_test_canvas_result.h
index 7e77a0f..e647859 100644
--- a/third_party/blink/renderer/core/layout/hit_test_canvas_result.h
+++ b/third_party/blink/renderer/core/layout/hit_test_canvas_result.h
@@ -12,10 +12,6 @@
 class CORE_EXPORT HitTestCanvasResult final
     : public GarbageCollectedFinalized<HitTestCanvasResult> {
  public:
-  static HitTestCanvasResult* Create(String id, Member<Element> control) {
-    return MakeGarbageCollected<HitTestCanvasResult>(id, control);
-  }
-
   HitTestCanvasResult(String id, Member<Element> control);
 
   String GetId() const;
diff --git a/third_party/blink/renderer/core/layout/layout_image_resource.h b/third_party/blink/renderer/core/layout/layout_image_resource.h
index 4f8ad3e..11af6c1 100644
--- a/third_party/blink/renderer/core/layout/layout_image_resource.h
+++ b/third_party/blink/renderer/core/layout/layout_image_resource.h
@@ -42,10 +42,6 @@
   LayoutImageResource();
   virtual ~LayoutImageResource();
 
-  static LayoutImageResource* Create() {
-    return MakeGarbageCollected<LayoutImageResource>();
-  }
-
   virtual void Initialize(LayoutObject*);
   virtual void Shutdown();
 
diff --git a/third_party/blink/renderer/core/layout/layout_image_resource_style_image.h b/third_party/blink/renderer/core/layout/layout_image_resource_style_image.h
index fcf4f0e..1b2bd84 100644
--- a/third_party/blink/renderer/core/layout/layout_image_resource_style_image.h
+++ b/third_party/blink/renderer/core/layout/layout_image_resource_style_image.h
@@ -40,9 +40,6 @@
   explicit LayoutImageResourceStyleImage(StyleImage*);
   ~LayoutImageResourceStyleImage() override;
 
-  static LayoutImageResource* Create(StyleImage* style_image) {
-    return MakeGarbageCollected<LayoutImageResourceStyleImage>(style_image);
-  }
   void Initialize(LayoutObject*) override;
   void Shutdown() override;
 
diff --git a/third_party/blink/renderer/core/layout/layout_media.cc b/third_party/blink/renderer/core/layout/layout_media.cc
index ce7a695..daa2a3f 100644
--- a/third_party/blink/renderer/core/layout/layout_media.cc
+++ b/third_party/blink/renderer/core/layout/layout_media.cc
@@ -35,7 +35,7 @@
 namespace blink {
 
 LayoutMedia::LayoutMedia(HTMLMediaElement* video) : LayoutImage(video) {
-  SetImageResource(LayoutImageResource::Create());
+  SetImageResource(MakeGarbageCollected<LayoutImageResource>());
 }
 
 LayoutMedia::~LayoutMedia() = default;
diff --git a/third_party/blink/renderer/core/layout/layout_object.cc b/third_party/blink/renderer/core/layout/layout_object.cc
index fbeb4302..787e438 100644
--- a/third_party/blink/renderer/core/layout/layout_object.cc
+++ b/third_party/blink/renderer/core/layout/layout_object.cc
@@ -227,11 +227,12 @@
     image->SetStyleInternal(const_cast<ComputedStyle*>(&style));
     if (const StyleImage* style_image =
             To<ImageContentData>(content_data)->GetImage()) {
-      image->SetImageResource(LayoutImageResourceStyleImage::Create(
-          const_cast<StyleImage*>(style_image)));
+      image->SetImageResource(
+          MakeGarbageCollected<LayoutImageResourceStyleImage>(
+              const_cast<StyleImage*>(style_image)));
       image->SetIsGeneratedContent();
     } else {
-      image->SetImageResource(LayoutImageResource::Create());
+      image->SetImageResource(MakeGarbageCollected<LayoutImageResource>());
     }
     image->SetStyleInternal(nullptr);
     return image;
diff --git a/third_party/blink/renderer/core/layout/layout_object_test.cc b/third_party/blink/renderer/core/layout/layout_object_test.cc
index d511bb20..8076911 100644
--- a/third_party/blink/renderer/core/layout/layout_object_test.cc
+++ b/third_party/blink/renderer/core/layout/layout_object_test.cc
@@ -27,7 +27,8 @@
 
 class LayoutObjectTest : public RenderingTest {
  public:
-  LayoutObjectTest() : RenderingTest(EmptyLocalFrameClient::Create()) {}
+  LayoutObjectTest()
+      : RenderingTest(MakeGarbageCollected<EmptyLocalFrameClient>()) {}
 
  protected:
   template <bool should_have_wrapper>
diff --git a/third_party/blink/renderer/core/layout/layout_view.cc b/third_party/blink/renderer/core/layout/layout_view.cc
index ad2a5ee..289b71a 100644
--- a/third_party/blink/renderer/core/layout/layout_view.cc
+++ b/third_party/blink/renderer/core/layout/layout_view.cc
@@ -100,7 +100,7 @@
       layout_counter_count_(0),
       hit_test_count_(0),
       hit_test_cache_hits_(0),
-      hit_test_cache_(HitTestCache::Create()),
+      hit_test_cache_(MakeGarbageCollected<HitTestCache>()),
       autosize_h_scrollbar_mode_(kScrollbarAuto),
       autosize_v_scrollbar_mode_(kScrollbarAuto) {
   // init LayoutObject attributes
diff --git a/third_party/blink/renderer/core/layout/ng/geometry/ng_logical_rect_test.cc b/third_party/blink/renderer/core/layout/ng/geometry/ng_logical_rect_test.cc
index 3f98942c..b4a49176 100644
--- a/third_party/blink/renderer/core/layout/ng/geometry/ng_logical_rect_test.cc
+++ b/third_party/blink/renderer/core/layout/ng/geometry/ng_logical_rect_test.cc
@@ -5,36 +5,39 @@
 #include "third_party/blink/renderer/core/layout/ng/geometry/ng_logical_rect.h"
 
 #include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/blink/renderer/platform/wtf/allocator/partitions.h"
 
 namespace blink {
 
 namespace {
 
 struct LogicalRectUniteTestData {
+  const char* test_case;
   NGLogicalRect a;
   NGLogicalRect b;
   NGLogicalRect expected;
 } logical_rect_unite_test_data[] = {
-    {{}, {}, {}},
-    {{},
+    {"empty", {}, {}, {}},
+    {"a empty",
+     {},
      {{LayoutUnit(1), LayoutUnit(2)}, {LayoutUnit(3), LayoutUnit(4)}},
      {{LayoutUnit(1), LayoutUnit(2)}, {LayoutUnit(3), LayoutUnit(4)}}},
-    {{{LayoutUnit(1), LayoutUnit(2)}, {LayoutUnit(3), LayoutUnit(4)}},
+    {"b empty",
+     {{LayoutUnit(1), LayoutUnit(2)}, {LayoutUnit(3), LayoutUnit(4)}},
      {},
      {{LayoutUnit(1), LayoutUnit(2)}, {LayoutUnit(3), LayoutUnit(4)}}},
-    {{{LayoutUnit(100), LayoutUnit(50)}, {LayoutUnit(300), LayoutUnit(200)}},
+    {"a larger",
+     {{LayoutUnit(100), LayoutUnit(50)}, {LayoutUnit(300), LayoutUnit(200)}},
      {{LayoutUnit(200), LayoutUnit(50)}, {LayoutUnit(200), LayoutUnit(200)}},
      {{LayoutUnit(100), LayoutUnit(50)}, {LayoutUnit(300), LayoutUnit(200)}}},
-    {{{LayoutUnit(200), LayoutUnit(50)}, {LayoutUnit(200), LayoutUnit(200)}},
+    {"b larger",
+     {{LayoutUnit(200), LayoutUnit(50)}, {LayoutUnit(200), LayoutUnit(200)}},
      {{LayoutUnit(100), LayoutUnit(50)}, {LayoutUnit(300), LayoutUnit(200)}},
      {{LayoutUnit(100), LayoutUnit(50)}, {LayoutUnit(300), LayoutUnit(200)}}},
 };
 
 std::ostream& operator<<(std::ostream& os,
                          const LogicalRectUniteTestData& data) {
-  WTF::Partitions::Initialize(nullptr);
-  return os << "Unite " << data.a << " and " << data.b;
+  return os << "Unite " << data.test_case;
 }
 
 class NGLogicalRectUniteTest
diff --git a/third_party/blink/renderer/core/layout/ng/geometry/ng_physical_offset_rect_test.cc b/third_party/blink/renderer/core/layout/ng/geometry/ng_physical_offset_rect_test.cc
index 85f15f3..ac7bc56 100644
--- a/third_party/blink/renderer/core/layout/ng/geometry/ng_physical_offset_rect_test.cc
+++ b/third_party/blink/renderer/core/layout/ng/geometry/ng_physical_offset_rect_test.cc
@@ -5,36 +5,39 @@
 #include "third_party/blink/renderer/core/layout/ng/geometry/ng_physical_offset_rect.h"
 
 #include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/blink/renderer/platform/wtf/allocator/partitions.h"
 
 namespace blink {
 
 namespace {
 
 struct PhysicalOffsetRectUniteTestData {
+  const char* test_case;
   NGPhysicalOffsetRect a;
   NGPhysicalOffsetRect b;
   NGPhysicalOffsetRect expected;
 } physical_offset_rect_unite_test_data[] = {
-    {{}, {}, {}},
-    {{},
+    {"all_empty", {}, {}, {}},
+    {"a empty",
+     {},
      {{LayoutUnit(1), LayoutUnit(2)}, {LayoutUnit(3), LayoutUnit(4)}},
      {{LayoutUnit(1), LayoutUnit(2)}, {LayoutUnit(3), LayoutUnit(4)}}},
-    {{{LayoutUnit(1), LayoutUnit(2)}, {LayoutUnit(3), LayoutUnit(4)}},
+    {"b empty",
+     {{LayoutUnit(1), LayoutUnit(2)}, {LayoutUnit(3), LayoutUnit(4)}},
      {},
      {{LayoutUnit(1), LayoutUnit(2)}, {LayoutUnit(3), LayoutUnit(4)}}},
-    {{{LayoutUnit(100), LayoutUnit(50)}, {LayoutUnit(300), LayoutUnit(200)}},
+    {"a larger",
+     {{LayoutUnit(100), LayoutUnit(50)}, {LayoutUnit(300), LayoutUnit(200)}},
      {{LayoutUnit(200), LayoutUnit(50)}, {LayoutUnit(200), LayoutUnit(200)}},
      {{LayoutUnit(100), LayoutUnit(50)}, {LayoutUnit(300), LayoutUnit(200)}}},
-    {{{LayoutUnit(200), LayoutUnit(50)}, {LayoutUnit(200), LayoutUnit(200)}},
+    {"b larger",
+     {{LayoutUnit(200), LayoutUnit(50)}, {LayoutUnit(200), LayoutUnit(200)}},
      {{LayoutUnit(100), LayoutUnit(50)}, {LayoutUnit(300), LayoutUnit(200)}},
      {{LayoutUnit(100), LayoutUnit(50)}, {LayoutUnit(300), LayoutUnit(200)}}},
 };
 
 std::ostream& operator<<(std::ostream& os,
                          const PhysicalOffsetRectUniteTestData& data) {
-  WTF::Partitions::Initialize(nullptr);
-  return os << "Unite " << data.a << " and " << data.b;
+  return os << "Unite " << data.test_case;
 }
 
 class NGPhysicalOffsetRectUniteTest
diff --git a/third_party/blink/renderer/core/layout/ng/list/layout_ng_list_item.cc b/third_party/blink/renderer/core/layout/ng/list/layout_ng_list_item.cc
index 036a7cf..1f89a1e9 100644
--- a/third_party/blink/renderer/core/layout/ng/list/layout_ng_list_item.cc
+++ b/third_party/blink/renderer/core/layout/ng/list/layout_ng_list_item.cc
@@ -282,7 +282,8 @@
                                                          EDisplay::kInline);
       image->SetStyle(image_style);
       image->SetImageResource(
-          LayoutImageResourceStyleImage::Create(list_style_image));
+          MakeGarbageCollected<LayoutImageResourceStyleImage>(
+              list_style_image));
       image->SetIsGeneratedContent();
       marker_->AddChild(image);
     }
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_image.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_image.cc
index e82c209a..2e42111 100644
--- a/third_party/blink/renderer/core/layout/svg/layout_svg_image.cc
+++ b/third_party/blink/renderer/core/layout/svg/layout_svg_image.cc
@@ -48,7 +48,7 @@
     : LayoutSVGModelObject(impl),
       needs_boundaries_update_(true),
       needs_transform_update_(true),
-      image_resource_(LayoutImageResource::Create()) {
+      image_resource_(MakeGarbageCollected<LayoutImageResource>()) {
   image_resource_->Initialize(this);
 }
 
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.h b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.h
index 265c6b3d..49907fcf 100644
--- a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.h
+++ b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.h
@@ -52,8 +52,6 @@
     kPaintingFilterCycleDetected
   };
 
-  static FilterData* Create() { return MakeGarbageCollected<FilterData>(); }
-
   FilterData() : state_(kInitial) {}
 
   void Dispose();
diff --git a/third_party/blink/renderer/core/layout/text_autosizer.h b/third_party/blink/renderer/core/layout/text_autosizer.h
index b5c1c16..e1fad70 100644
--- a/third_party/blink/renderer/core/layout/text_autosizer.h
+++ b/third_party/blink/renderer/core/layout/text_autosizer.h
@@ -63,10 +63,6 @@
   explicit TextAutosizer(const Document*);
   ~TextAutosizer();
 
-  static TextAutosizer* Create(const Document* document) {
-    return MakeGarbageCollected<TextAutosizer>(document);
-  }
-
   // computed_size should include zoom.
   static float ComputeAutosizedFontSize(float computed_size,
                                         float multiplier,
diff --git a/third_party/blink/renderer/core/layout/text_autosizer_test.cc b/third_party/blink/renderer/core/layout/text_autosizer_test.cc
index 0127bbe7..76950ba 100644
--- a/third_party/blink/renderer/core/layout/text_autosizer_test.cc
+++ b/third_party/blink/renderer/core/layout/text_autosizer_test.cc
@@ -19,9 +19,6 @@
 namespace blink {
 class TextAutosizerClient : public EmptyChromeClient {
  public:
-  static TextAutosizerClient* Create() {
-    return MakeGarbageCollected<TextAutosizerClient>();
-  }
   float WindowToViewportScalar(const float value) const override {
     return value * device_scale_factor_;
   }
@@ -46,7 +43,7 @@
   }
   TextAutosizerClient& GetTextAutosizerClient() const {
     DEFINE_STATIC_LOCAL(Persistent<TextAutosizerClient>, client,
-                        (TextAutosizerClient::Create()));
+                        (MakeGarbageCollected<TextAutosizerClient>()));
     return *client;
   }
   void set_device_scale_factor(float device_scale_factor) {
diff --git a/third_party/blink/renderer/core/loader/appcache/application_cache.h b/third_party/blink/renderer/core/loader/appcache/application_cache.h
index ce5b712..7f60357e 100644
--- a/third_party/blink/renderer/core/loader/appcache/application_cache.h
+++ b/third_party/blink/renderer/core/loader/appcache/application_cache.h
@@ -44,10 +44,6 @@
   USING_GARBAGE_COLLECTED_MIXIN(ApplicationCache);
 
  public:
-  static ApplicationCache* Create(LocalFrame* frame) {
-    return MakeGarbageCollected<ApplicationCache>(frame);
-  }
-
   explicit ApplicationCache(LocalFrame*);
   ~ApplicationCache() override = default;
 
diff --git a/third_party/blink/renderer/core/loader/appcache/application_cache_host.h b/third_party/blink/renderer/core/loader/appcache/application_cache_host.h
index d6bf721..f251319 100644
--- a/third_party/blink/renderer/core/loader/appcache/application_cache_host.h
+++ b/third_party/blink/renderer/core/loader/appcache/application_cache_host.h
@@ -53,10 +53,6 @@
     : public GarbageCollectedFinalized<ApplicationCacheHost>,
       public WebApplicationCacheHostClient {
  public:
-  static ApplicationCacheHost* Create(DocumentLoader* loader) {
-    return MakeGarbageCollected<ApplicationCacheHost>(loader);
-  }
-
   explicit ApplicationCacheHost(DocumentLoader*);
   ~ApplicationCacheHost() override;
   void DetachFromDocumentLoader();
diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc
index a2407d1..c8b25ae 100644
--- a/third_party/blink/renderer/core/loader/document_loader.cc
+++ b/third_party/blink/renderer/core/loader/document_loader.cc
@@ -120,7 +120,7 @@
       data_received_(false),
       navigation_type_(navigation_type),
       document_load_timing_(*this),
-      application_cache_host_(ApplicationCacheHost::Create(this)),
+      application_cache_host_(MakeGarbageCollected<ApplicationCacheHost>(this)),
       service_worker_network_provider_(
           std::move(params_->service_worker_network_provider)),
       was_blocked_after_csp_(false),
@@ -458,7 +458,7 @@
     WebFrameLoadType load_type,
     HistoryNavigationType navigation_type) {
   if (!history_item_ || !IsBackForwardLoadType(load_type))
-    history_item_ = HistoryItem::Create();
+    history_item_ = MakeGarbageCollected<HistoryItem>();
 
   history_item_->SetURL(UrlForHistory());
   history_item_->SetReferrer(SecurityPolicy::GenerateReferrer(
diff --git a/third_party/blink/renderer/core/loader/empty_clients.cc b/third_party/blink/renderer/core/loader/empty_clients.cc
index 53702d9..b2a2c59b 100644
--- a/third_party/blink/renderer/core/loader/empty_clients.cc
+++ b/third_party/blink/renderer/core/loader/empty_clients.cc
@@ -46,7 +46,7 @@
 
 void FillWithEmptyClients(Page::PageClients& page_clients) {
   DEFINE_STATIC_LOCAL(Persistent<ChromeClient>, dummy_chrome_client,
-                      (EmptyChromeClient::Create()));
+                      (MakeGarbageCollected<EmptyChromeClient>()));
   page_clients.chrome_client = dummy_chrome_client;
 }
 
diff --git a/third_party/blink/renderer/core/loader/empty_clients.h b/third_party/blink/renderer/core/loader/empty_clients.h
index c277306..4c1f7b9 100644
--- a/third_party/blink/renderer/core/loader/empty_clients.h
+++ b/third_party/blink/renderer/core/loader/empty_clients.h
@@ -78,10 +78,6 @@
 
 class CORE_EXPORT EmptyChromeClient : public ChromeClient {
  public:
-  static EmptyChromeClient* Create() {
-    return MakeGarbageCollected<EmptyChromeClient>();
-  }
-
   ~EmptyChromeClient() override = default;
   void ChromeDestroyed() override {}
 
@@ -238,10 +234,6 @@
 
 class CORE_EXPORT EmptyLocalFrameClient : public LocalFrameClient {
  public:
-  static EmptyLocalFrameClient* Create() {
-    return MakeGarbageCollected<EmptyLocalFrameClient>();
-  }
-
   EmptyLocalFrameClient() = default;
   ~EmptyLocalFrameClient() override = default;
 
diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context_test.cc b/third_party/blink/renderer/core/loader/frame_fetch_context_test.cc
index d8cc7b6..1810689 100644
--- a/third_party/blink/renderer/core/loader/frame_fetch_context_test.cc
+++ b/third_party/blink/renderer/core/loader/frame_fetch_context_test.cc
@@ -81,10 +81,6 @@
 
 class StubLocalFrameClientWithParent final : public EmptyLocalFrameClient {
  public:
-  static StubLocalFrameClientWithParent* Create(Frame* parent) {
-    return MakeGarbageCollected<StubLocalFrameClientWithParent>(parent);
-  }
-
   explicit StubLocalFrameClientWithParent(Frame* parent) : parent_(parent) {}
 
   void Trace(blink::Visitor* visitor) override {
@@ -151,7 +147,8 @@
   }
 
   FrameFetchContext* CreateChildFrame() {
-    child_client = StubLocalFrameClientWithParent::Create(document->GetFrame());
+    child_client = MakeGarbageCollected<StubLocalFrameClientWithParent>(
+        document->GetFrame());
     child_frame = LocalFrame::Create(
         child_client.Get(), *document->GetFrame()->GetPage(), owner.Get());
     child_frame->SetView(
diff --git a/third_party/blink/renderer/core/loader/frame_loader.cc b/third_party/blink/renderer/core/loader/frame_loader.cc
index 9188670..cf5bad04 100644
--- a/third_party/blink/renderer/core/loader/frame_loader.cc
+++ b/third_party/blink/renderer/core/loader/frame_loader.cc
@@ -190,7 +190,7 @@
 
 FrameLoader::FrameLoader(LocalFrame* frame)
     : frame_(frame),
-      progress_tracker_(ProgressTracker::Create(frame)),
+      progress_tracker_(MakeGarbageCollected<ProgressTracker>(frame)),
       in_restore_scroll_(false),
       forced_sandbox_flags_(kSandboxNone),
       dispatching_did_clear_window_object_in_main_world_(false),
diff --git a/third_party/blink/renderer/core/loader/link_loader_test.cc b/third_party/blink/renderer/core/loader/link_loader_test.cc
index 61f68dc..d71dee2 100644
--- a/third_party/blink/renderer/core/loader/link_loader_test.cc
+++ b/third_party/blink/renderer/core/loader/link_loader_test.cc
@@ -36,10 +36,6 @@
   USING_GARBAGE_COLLECTED_MIXIN(MockLinkLoaderClient);
 
  public:
-  static MockLinkLoaderClient* Create(bool should_load) {
-    return MakeGarbageCollected<MockLinkLoaderClient>(should_load);
-  }
-
   explicit MockLinkLoaderClient(bool should_load) : should_load_(should_load) {}
 
   void Trace(blink::Visitor* visitor) override {
@@ -138,7 +134,8 @@
     ASSERT_TRUE(fetcher);
     dummy_page_holder_->GetFrame().GetSettings()->SetScriptEnabled(true);
     Persistent<MockLinkLoaderClient> loader_client =
-        MockLinkLoaderClient::Create(expected.link_loader_should_load_value);
+        MakeGarbageCollected<MockLinkLoaderClient>(
+            expected.link_loader_should_load_value);
     LinkLoader* loader = LinkLoader::Create(loader_client.Get());
     url_test_helpers::RegisterMockedErrorURLLoad(params.href);
     loader->LoadLink(params, dummy_page_holder_->GetDocument());
@@ -534,7 +531,7 @@
       ToScriptStateForMainWorld(dummy_page_holder->GetDocument().GetFrame()),
       modulator);
   Persistent<MockLinkLoaderClient> loader_client =
-      MockLinkLoaderClient::Create(true);
+      MakeGarbageCollected<MockLinkLoaderClient>(true);
   LinkLoader* loader = LinkLoader::Create(loader_client.Get());
   KURL href_url = KURL(NullURL(), test_case.href);
   LinkLoadParameters params(
@@ -585,7 +582,8 @@
         std::make_unique<DummyPageHolder>(IntSize(500, 500));
     dummy_page_holder->GetFrame().GetSettings()->SetScriptEnabled(true);
     Persistent<MockLinkLoaderClient> loader_client =
-        MockLinkLoaderClient::Create(test_case.link_loader_should_load_value);
+        MakeGarbageCollected<MockLinkLoaderClient>(
+            test_case.link_loader_should_load_value);
     LinkLoader* loader = LinkLoader::Create(loader_client.Get());
     KURL href_url = KURL(NullURL(), test_case.href);
     url_test_helpers::RegisterMockedErrorURLLoad(href_url);
@@ -634,7 +632,7 @@
     dummy_page_holder->GetDocument().GetSettings()->SetDNSPrefetchingEnabled(
         true);
     Persistent<MockLinkLoaderClient> loader_client =
-        MockLinkLoaderClient::Create(test_case.should_load);
+        MakeGarbageCollected<MockLinkLoaderClient>(test_case.should_load);
     LinkLoader* loader = LinkLoader::Create(loader_client.Get());
     KURL href_url = KURL(KURL(String("http://example.com")), test_case.href);
     LinkLoadParameters params(
@@ -671,7 +669,7 @@
     auto dummy_page_holder =
         std::make_unique<DummyPageHolder>(IntSize(500, 500));
     Persistent<MockLinkLoaderClient> loader_client =
-        MockLinkLoaderClient::Create(test_case.should_load);
+        MakeGarbageCollected<MockLinkLoaderClient>(test_case.should_load);
     LinkLoader* loader = LinkLoader::Create(loader_client.Get());
     KURL href_url = KURL(KURL(String("http://example.com")), test_case.href);
     LinkLoadParameters params(
@@ -700,7 +698,7 @@
   ASSERT_TRUE(fetcher);
   dummy_page_holder->GetFrame().GetSettings()->SetScriptEnabled(true);
   Persistent<MockLinkLoaderClient> loader_client =
-      MockLinkLoaderClient::Create(true);
+      MakeGarbageCollected<MockLinkLoaderClient>(true);
   LinkLoader* loader = LinkLoader::Create(loader_client.Get());
   KURL href_url = KURL(KURL(), "https://www.example.com/");
   url_test_helpers::RegisterMockedErrorURLLoad(href_url);
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_script_fetcher.cc b/third_party/blink/renderer/core/loader/modulescript/module_script_fetcher.cc
index 6b6f2b8..cd2690a 100644
--- a/third_party/blink/renderer/core/loader/modulescript/module_script_fetcher.cc
+++ b/third_party/blink/renderer/core/loader/modulescript/module_script_fetcher.cc
@@ -66,7 +66,7 @@
         mojom::ConsoleMessageSource::kJavaScript,
         mojom::ConsoleMessageLevel::kError, message,
         response.CurrentRequestUrl().GetString(), nullptr,
-        resource->Identifier()));
+        resource->InspectorId()));
     return false;
   }
 
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_script_loader_registry.h b/third_party/blink/renderer/core/loader/modulescript/module_script_loader_registry.h
index a2d9012c..bd037ef9 100644
--- a/third_party/blink/renderer/core/loader/modulescript/module_script_loader_registry.h
+++ b/third_party/blink/renderer/core/loader/modulescript/module_script_loader_registry.h
@@ -17,10 +17,6 @@
 class CORE_EXPORT ModuleScriptLoaderRegistry final
     : public GarbageCollected<ModuleScriptLoaderRegistry> {
  public:
-  static ModuleScriptLoaderRegistry* Create() {
-    return MakeGarbageCollected<ModuleScriptLoaderRegistry>();
-  }
-
   ModuleScriptLoaderRegistry() = default;
 
   void Trace(blink::Visitor*);
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc b/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc
index ff5d470..a6536ff 100644
--- a/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc
+++ b/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc
@@ -202,7 +202,7 @@
 void ModuleScriptLoaderTest::TestFetchDataURL(
     ModuleScriptCustomFetchType custom_fetch_type,
     TestModuleScriptLoaderClient* client) {
-  ModuleScriptLoaderRegistry* registry = ModuleScriptLoaderRegistry::Create();
+  auto* registry = MakeGarbageCollected<ModuleScriptLoaderRegistry>();
   KURL url("data:text/javascript,export default 'grapes';");
   ModuleScriptLoader::Fetch(ModuleScriptFetchRequest::CreateForTest(url),
                             fetcher_, ModuleGraphLevel::kTopLevelModuleFetch,
@@ -259,7 +259,7 @@
 void ModuleScriptLoaderTest::TestInvalidSpecifier(
     ModuleScriptCustomFetchType custom_fetch_type,
     TestModuleScriptLoaderClient* client) {
-  ModuleScriptLoaderRegistry* registry = ModuleScriptLoaderRegistry::Create();
+  auto* registry = MakeGarbageCollected<ModuleScriptLoaderRegistry>();
   KURL url("data:text/javascript,import 'invalid';export default 'grapes';");
   GetModulator()->SetModuleRequests({"invalid"});
   ModuleScriptLoader::Fetch(ModuleScriptFetchRequest::CreateForTest(url),
@@ -303,7 +303,7 @@
 void ModuleScriptLoaderTest::TestFetchInvalidURL(
     ModuleScriptCustomFetchType custom_fetch_type,
     TestModuleScriptLoaderClient* client) {
-  ModuleScriptLoaderRegistry* registry = ModuleScriptLoaderRegistry::Create();
+  auto* registry = MakeGarbageCollected<ModuleScriptLoaderRegistry>();
   KURL url;
   EXPECT_FALSE(url.IsValid());
   ModuleScriptLoader::Fetch(ModuleScriptFetchRequest::CreateForTest(url),
@@ -346,7 +346,7 @@
   url_test_helpers::RegisterMockedURLLoad(
       url, test::CoreTestDataPath("module.js"), "text/javascript");
 
-  ModuleScriptLoaderRegistry* registry = ModuleScriptLoaderRegistry::Create();
+  auto* registry = MakeGarbageCollected<ModuleScriptLoaderRegistry>();
   ModuleScriptLoader::Fetch(ModuleScriptFetchRequest::CreateForTest(url),
                             fetcher_, ModuleGraphLevel::kTopLevelModuleFetch,
                             GetModulator(), custom_fetch_type, registry,
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_registry.h b/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_registry.h
index 2867d9ca..a0a0f7a 100644
--- a/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_registry.h
+++ b/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_registry.h
@@ -19,10 +19,6 @@
     : public GarbageCollected<ModuleTreeLinkerRegistry>,
       public NameClient {
  public:
-  static ModuleTreeLinkerRegistry* Create() {
-    return MakeGarbageCollected<ModuleTreeLinkerRegistry>();
-  }
-
   ModuleTreeLinkerRegistry() = default;
 
   void Trace(blink::Visitor*);
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_test.cc b/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_test.cc
index cc804d25..4926edca 100644
--- a/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_test.cc
+++ b/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_test.cc
@@ -206,7 +206,7 @@
 }
 
 TEST_F(ModuleTreeLinkerTest, FetchTreeNoDeps) {
-  ModuleTreeLinkerRegistry* registry = ModuleTreeLinkerRegistry::Create();
+  auto* registry = MakeGarbageCollected<ModuleTreeLinkerRegistry>();
 
   KURL url("http://example.com/root.js");
   TestModuleTreeClient* client = MakeGarbageCollected<TestModuleTreeClient>();
@@ -228,7 +228,8 @@
 TEST_F(ModuleTreeLinkerTest, FetchTreeInstantiationFailure) {
   GetModulator()->SetInstantiateShouldFail(true);
 
-  ModuleTreeLinkerRegistry* registry = ModuleTreeLinkerRegistry::Create();
+  ModuleTreeLinkerRegistry* registry =
+      MakeGarbageCollected<ModuleTreeLinkerRegistry>();
 
   KURL url("http://example.com/root.js");
   TestModuleTreeClient* client = MakeGarbageCollected<TestModuleTreeClient>();
@@ -254,7 +255,8 @@
 }
 
 TEST_F(ModuleTreeLinkerTest, FetchTreeWithSingleDependency) {
-  ModuleTreeLinkerRegistry* registry = ModuleTreeLinkerRegistry::Create();
+  ModuleTreeLinkerRegistry* registry =
+      MakeGarbageCollected<ModuleTreeLinkerRegistry>();
 
   KURL url("http://example.com/root.js");
   TestModuleTreeClient* client = MakeGarbageCollected<TestModuleTreeClient>();
@@ -281,7 +283,8 @@
 }
 
 TEST_F(ModuleTreeLinkerTest, FetchTreeWith3Deps) {
-  ModuleTreeLinkerRegistry* registry = ModuleTreeLinkerRegistry::Create();
+  ModuleTreeLinkerRegistry* registry =
+      MakeGarbageCollected<ModuleTreeLinkerRegistry>();
 
   KURL url("http://example.com/root.js");
   TestModuleTreeClient* client = MakeGarbageCollected<TestModuleTreeClient>();
@@ -321,7 +324,8 @@
 }
 
 TEST_F(ModuleTreeLinkerTest, FetchTreeWith3Deps1Fail) {
-  ModuleTreeLinkerRegistry* registry = ModuleTreeLinkerRegistry::Create();
+  ModuleTreeLinkerRegistry* registry =
+      MakeGarbageCollected<ModuleTreeLinkerRegistry>();
 
   KURL url("http://example.com/root.js");
   TestModuleTreeClient* client = MakeGarbageCollected<TestModuleTreeClient>();
@@ -380,7 +384,8 @@
 }
 
 TEST_F(ModuleTreeLinkerTest, FetchDependencyTree) {
-  ModuleTreeLinkerRegistry* registry = ModuleTreeLinkerRegistry::Create();
+  ModuleTreeLinkerRegistry* registry =
+      MakeGarbageCollected<ModuleTreeLinkerRegistry>();
 
   KURL url("http://example.com/depth1.js");
   TestModuleTreeClient* client = MakeGarbageCollected<TestModuleTreeClient>();
@@ -406,7 +411,8 @@
 }
 
 TEST_F(ModuleTreeLinkerTest, FetchDependencyOfCyclicGraph) {
-  ModuleTreeLinkerRegistry* registry = ModuleTreeLinkerRegistry::Create();
+  ModuleTreeLinkerRegistry* registry =
+      MakeGarbageCollected<ModuleTreeLinkerRegistry>();
 
   KURL url("http://example.com/a.js");
   TestModuleTreeClient* client = MakeGarbageCollected<TestModuleTreeClient>();
diff --git a/third_party/blink/renderer/core/loader/navigation_scheduler.cc b/third_party/blink/renderer/core/loader/navigation_scheduler.cc
index 7b3faca..3084604 100644
--- a/third_party/blink/renderer/core/loader/navigation_scheduler.cc
+++ b/third_party/blink/renderer/core/loader/navigation_scheduler.cc
@@ -66,17 +66,6 @@
 
 class ScheduledRedirect final : public ScheduledNavigation {
  public:
-  static ScheduledRedirect* Create(double delay,
-                                   Document* origin_document,
-                                   const KURL& url,
-                                   Document::HttpRefreshType http_refresh_type,
-                                   WebFrameLoadType frame_load_type,
-                                   base::TimeTicks input_timestamp) {
-    return MakeGarbageCollected<ScheduledRedirect>(
-        delay, origin_document, url, http_refresh_type, frame_load_type,
-        input_timestamp);
-  }
-
   ScheduledRedirect(double delay,
                     Document* origin_document,
                     const KURL& url,
@@ -217,9 +206,9 @@
     WebFrameLoadType frame_load_type = WebFrameLoadType::kStandard;
     if (delay <= 1)
       frame_load_type = WebFrameLoadType::kReplaceCurrentItem;
-    Schedule(ScheduledRedirect::Create(delay, frame_->GetDocument(), url,
-                                       http_refresh_type, frame_load_type,
-                                       InputTimestamp()),
+    Schedule(MakeGarbageCollected<ScheduledRedirect>(
+                 delay, frame_->GetDocument(), url, http_refresh_type,
+                 frame_load_type, InputTimestamp()),
              kDoNotCancelParsing);
   }
 }
diff --git a/third_party/blink/renderer/core/loader/navigation_scheduler.h b/third_party/blink/renderer/core/loader/navigation_scheduler.h
index c09fcd1..294156f 100644
--- a/third_party/blink/renderer/core/loader/navigation_scheduler.h
+++ b/third_party/blink/renderer/core/loader/navigation_scheduler.h
@@ -55,10 +55,6 @@
 class CORE_EXPORT NavigationScheduler final
     : public GarbageCollectedFinalized<NavigationScheduler> {
  public:
-  static NavigationScheduler* Create(LocalFrame* frame) {
-    return MakeGarbageCollected<NavigationScheduler>(frame);
-  }
-
   explicit NavigationScheduler(LocalFrame*);
   ~NavigationScheduler();
 
diff --git a/third_party/blink/renderer/core/loader/progress_tracker.cc b/third_party/blink/renderer/core/loader/progress_tracker.cc
index 5b7bd5b..98ff4d6 100644
--- a/third_party/blink/renderer/core/loader/progress_tracker.cc
+++ b/third_party/blink/renderer/core/loader/progress_tracker.cc
@@ -65,10 +65,6 @@
   DISALLOW_COPY_AND_ASSIGN(ProgressItem);
 };
 
-ProgressTracker* ProgressTracker::Create(LocalFrame* frame) {
-  return MakeGarbageCollected<ProgressTracker>(frame);
-}
-
 ProgressTracker::ProgressTracker(LocalFrame* frame)
     : frame_(frame),
       last_notified_progress_value_(0),
diff --git a/third_party/blink/renderer/core/loader/progress_tracker.h b/third_party/blink/renderer/core/loader/progress_tracker.h
index 4675fcd..b81db1c 100644
--- a/third_party/blink/renderer/core/loader/progress_tracker.h
+++ b/third_party/blink/renderer/core/loader/progress_tracker.h
@@ -50,8 +50,6 @@
 class CORE_EXPORT ProgressTracker final
     : public GarbageCollectedFinalized<ProgressTracker> {
  public:
-  static ProgressTracker* Create(LocalFrame*);
-
   explicit ProgressTracker(LocalFrame*);
   ~ProgressTracker();
   void Trace(blink::Visitor*);
diff --git a/third_party/blink/renderer/core/loader/resource/image_resource.cc b/third_party/blink/renderer/core/loader/resource/image_resource.cc
index c0ebdfe..6260074 100644
--- a/third_party/blink/renderer/core/loader/resource/image_resource.cc
+++ b/third_party/blink/renderer/core/loader/resource/image_resource.cc
@@ -43,6 +43,7 @@
 #include "third_party/blink/renderer/platform/loader/fetch/resource_loader.h"
 #include "third_party/blink/renderer/platform/loader/fetch/resource_loader_options.h"
 #include "third_party/blink/renderer/platform/loader/fetch/resource_loading_log.h"
+#include "third_party/blink/renderer/platform/loader/fetch/unique_identifier.h"
 #include "third_party/blink/renderer/platform/network/http_parsers.h"
 #include "third_party/blink/renderer/platform/network/network_utils.h"
 #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
@@ -222,6 +223,7 @@
 
 ImageResource* ImageResource::CreateForTest(const KURL& url) {
   ResourceRequest request(url);
+  request.SetInspectorId(CreateUniqueIdentifier());
   return Create(request);
 }
 
diff --git a/third_party/blink/renderer/core/loader/resource/image_resource_test.cc b/third_party/blink/renderer/core/loader/resource/image_resource_test.cc
index 11245e0..987dd75 100644
--- a/third_party/blink/renderer/core/loader/resource/image_resource_test.cc
+++ b/third_party/blink/renderer/core/loader/resource/image_resource_test.cc
@@ -371,7 +371,6 @@
   // Emulate starting a real load, but don't expect any "real"
   // WebURLLoaderClient callbacks.
   ImageResource* image_resource = ImageResource::CreateForTest(test_url);
-  image_resource->SetIdentifier(CreateUniqueIdentifier());
   fetcher->StartLoad(image_resource);
 
   auto observer =
@@ -457,9 +456,9 @@
   ResourceFetcher* fetcher = CreateFetcher();
   KURL test_url(kTestURL);
   ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath());
-  ImageResource* image_resource =
-      ImageResource::Create(ResourceRequest(test_url));
-  image_resource->SetIdentifier(CreateUniqueIdentifier());
+  ResourceRequest resource_request(test_url);
+  resource_request.SetInspectorId(CreateUniqueIdentifier());
+  ImageResource* image_resource = ImageResource::Create(resource_request);
   fetcher->StartLoad(image_resource);
 
   ResourceResponse multipart_response(NullURL());
@@ -499,7 +498,6 @@
 
   // Emulate starting a real load.
   ImageResource* image_resource = ImageResource::CreateForTest(test_url);
-  image_resource->SetIdentifier(CreateUniqueIdentifier());
 
   fetcher->StartLoad(image_resource);
   GetMemoryCache()->Add(image_resource);
@@ -550,7 +548,6 @@
 
   // Emulate starting a real load.
   ImageResource* image_resource = ImageResource::CreateForTest(test_url);
-  image_resource->SetIdentifier(CreateUniqueIdentifier());
 
   fetcher->StartLoad(image_resource);
   GetMemoryCache()->Add(image_resource);
@@ -1862,9 +1859,9 @@
   FillWithEmptyClients(clients);
   clients.chrome_client = chrome_client;
   std::unique_ptr<DummyPageHolder> page_holder =
-      std::make_unique<DummyPageHolder>(IntSize(800, 600), &clients,
-                                        EmptyLocalFrameClient::Create(),
-                                        nullptr);
+      std::make_unique<DummyPageHolder>(
+          IntSize(800, 600), &clients,
+          MakeGarbageCollected<EmptyLocalFrameClient>(), nullptr);
 
   KURL test_url(kTestURL);
   ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath());
diff --git a/third_party/blink/renderer/core/loader/threadable_loader.cc b/third_party/blink/renderer/core/loader/threadable_loader.cc
index e2c2a6c26..aeb50db 100644
--- a/third_party/blink/renderer/core/loader/threadable_loader.cc
+++ b/third_party/blink/renderer/core/loader/threadable_loader.cc
@@ -581,7 +581,7 @@
       return client_->WillFollowRedirect(new_url, redirect_response);
 
     if (!actual_request_.IsNull()) {
-      ReportResponseReceived(resource->Identifier(), redirect_response);
+      ReportResponseReceived(resource->InspectorId(), redirect_response);
 
       HandlePreflightFailure(
           original_url,
@@ -649,7 +649,7 @@
     }
 
     probe::DidReceiveCorsRedirectResponse(
-        execution_context_, resource->Identifier(),
+        execution_context_, resource->InspectorId(),
         GetDocument() && GetDocument()->GetFrame()
             ? GetDocument()->GetFrame()->Loader().GetDocumentLoader()
             : nullptr,
@@ -835,13 +835,13 @@
   if (out_of_blink_cors_ && !response.WasFetchedViaServiceWorker()) {
     DCHECK(actual_request_.IsNull());
     fallback_request_for_service_worker_ = ResourceRequest();
-    client_->DidReceiveResponse(resource->Identifier(), response);
+    client_->DidReceiveResponse(resource->InspectorId(), response);
     return;
   }
 
   // Code path for legacy Blink CORS.
   if (!actual_request_.IsNull()) {
-    ReportResponseReceived(resource->Identifier(), response);
+    ReportResponseReceived(resource->InspectorId(), response);
     HandlePreflightResponse(response);
     return;
   }
@@ -853,7 +853,7 @@
       // therefore fallback-to-network is handled in the browser process when
       // the ServiceWorker does not call respondWith().)
       DCHECK(!fallback_request_for_service_worker_.IsNull());
-      ReportResponseReceived(resource->Identifier(), response);
+      ReportResponseReceived(resource->InspectorId(), response);
       LoadFallbackRequestForServiceWorker();
       return;
     }
@@ -873,7 +873,7 @@
     }
 
     fallback_request_for_service_worker_ = ResourceRequest();
-    client_->DidReceiveResponse(resource->Identifier(), response);
+    client_->DidReceiveResponse(resource->InspectorId(), response);
     return;
   }
 
@@ -895,7 +895,7 @@
         response.HttpHeaderFields(), fetch_credentials_mode_,
         *GetSecurityOrigin());
     if (access_error) {
-      ReportResponseReceived(resource->Identifier(), response);
+      ReportResponseReceived(resource->InspectorId(), response);
       DispatchDidFail(
           ResourceError(response.CurrentRequestUrl(), *access_error));
       return;
@@ -905,7 +905,7 @@
   DCHECK_EQ(&response, &resource->GetResponse());
   resource->SetResponseType(response_tainting_);
   DCHECK_EQ(response.GetType(), response_tainting_);
-  client_->DidReceiveResponse(resource->Identifier(), response);
+  client_->DidReceiveResponse(resource->InspectorId(), response);
 }
 
 void ThreadableLoader::ResponseBodyReceived(Resource*, BytesConsumer& body) {
@@ -968,7 +968,7 @@
   // downloaded file.
   Persistent<Resource> protect = GetResource();
   Clear();
-  client->DidFinishLoading(resource->Identifier());
+  client->DidFinishLoading(resource->InspectorId());
 }
 
 void ThreadableLoader::DidTimeout(TimerBase* timer) {
diff --git a/third_party/blink/renderer/core/messaging/message_channel.cc b/third_party/blink/renderer/core/messaging/message_channel.cc
index 2851445..b8f69fe9 100644
--- a/third_party/blink/renderer/core/messaging/message_channel.cc
+++ b/third_party/blink/renderer/core/messaging/message_channel.cc
@@ -32,8 +32,8 @@
 namespace blink {
 
 MessageChannel::MessageChannel(ExecutionContext* context)
-    : port1_(MessagePort::Create(*context)),
-      port2_(MessagePort::Create(*context)) {
+    : port1_(MakeGarbageCollected<MessagePort>(*context)),
+      port2_(MakeGarbageCollected<MessagePort>(*context)) {
   mojo::MessagePipe pipe;
   port1_->Entangle(std::move(pipe.handle0));
   port2_->Entangle(std::move(pipe.handle1));
diff --git a/third_party/blink/renderer/core/messaging/message_channel.h b/third_party/blink/renderer/core/messaging/message_channel.h
index 9e584a2..45fea2f 100644
--- a/third_party/blink/renderer/core/messaging/message_channel.h
+++ b/third_party/blink/renderer/core/messaging/message_channel.h
@@ -40,10 +40,6 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
-  static MessageChannel* Create(ExecutionContext* context) {
-    return MakeGarbageCollected<MessageChannel>(context);
-  }
-
   explicit MessageChannel(ExecutionContext*);
 
   MessagePort* port1() const { return port1_; }
diff --git a/third_party/blink/renderer/core/messaging/message_port.cc b/third_party/blink/renderer/core/messaging/message_port.cc
index be039ac..20dbefd 100644
--- a/third_party/blink/renderer/core/messaging/message_port.cc
+++ b/third_party/blink/renderer/core/messaging/message_port.cc
@@ -55,10 +55,6 @@
 constexpr base::TimeDelta kYieldThreshold =
     base::TimeDelta::FromMilliseconds(50);
 
-MessagePort* MessagePort::Create(ExecutionContext& execution_context) {
-  return MakeGarbageCollected<MessagePort>(execution_context);
-}
-
 MessagePort::MessagePort(ExecutionContext& execution_context)
     : ContextLifecycleObserver(&execution_context),
       task_runner_(execution_context.GetTaskRunner(TaskType::kPostedMessage)) {}
@@ -248,7 +244,7 @@
   wtf_size_t count = SafeCast<wtf_size_t>(channels.size());
   MessagePortArray* port_array = MakeGarbageCollected<MessagePortArray>(count);
   for (wtf_size_t i = 0; i < count; ++i) {
-    MessagePort* port = MessagePort::Create(context);
+    auto* port = MakeGarbageCollected<MessagePort>(context);
     port->Entangle(std::move(channels[i]));
     (*port_array)[i] = port;
   }
diff --git a/third_party/blink/renderer/core/messaging/message_port.h b/third_party/blink/renderer/core/messaging/message_port.h
index 3fe4331..1f9f0b4 100644
--- a/third_party/blink/renderer/core/messaging/message_port.h
+++ b/third_party/blink/renderer/core/messaging/message_port.h
@@ -57,8 +57,6 @@
   USING_GARBAGE_COLLECTED_MIXIN(MessagePort);
 
  public:
-  static MessagePort* Create(ExecutionContext&);
-
   explicit MessagePort(ExecutionContext&);
   ~MessagePort() override;
 
diff --git a/third_party/blink/renderer/core/mojo/mojo.cc b/third_party/blink/renderer/core/mojo/mojo.cc
index d57a82e..4f0e5632 100644
--- a/third_party/blink/renderer/core/mojo/mojo.cc
+++ b/third_party/blink/renderer/core/mojo/mojo.cc
@@ -40,10 +40,10 @@
 
   result_dict->setResult(result);
   if (result == MOJO_RESULT_OK) {
-    result_dict->setHandle0(
-        MojoHandle::Create(mojo::ScopedHandle::From(std::move(handle0))));
-    result_dict->setHandle1(
-        MojoHandle::Create(mojo::ScopedHandle::From(std::move(handle1))));
+    result_dict->setHandle0(MakeGarbageCollected<MojoHandle>(
+        mojo::ScopedHandle::From(std::move(handle0))));
+    result_dict->setHandle1(MakeGarbageCollected<MojoHandle>(
+        mojo::ScopedHandle::From(std::move(handle1))));
   }
   return result_dict;
 }
@@ -70,10 +70,10 @@
   MojoResult result = mojo::CreateDataPipe(&options, &producer, &consumer);
   result_dict->setResult(result);
   if (result == MOJO_RESULT_OK) {
-    result_dict->setProducer(
-        MojoHandle::Create(mojo::ScopedHandle::From(std::move(producer))));
-    result_dict->setConsumer(
-        MojoHandle::Create(mojo::ScopedHandle::From(std::move(consumer))));
+    result_dict->setProducer(MakeGarbageCollected<MojoHandle>(
+        mojo::ScopedHandle::From(std::move(producer))));
+    result_dict->setConsumer(MakeGarbageCollected<MojoHandle>(
+        mojo::ScopedHandle::From(std::move(consumer))));
   }
   return result_dict;
 }
@@ -89,7 +89,8 @@
 
   result_dict->setResult(result);
   if (result == MOJO_RESULT_OK) {
-    result_dict->setHandle(MojoHandle::Create(mojo::MakeScopedHandle(handle)));
+    result_dict->setHandle(
+        MakeGarbageCollected<MojoHandle>(mojo::MakeScopedHandle(handle)));
   }
   return result_dict;
 }
@@ -125,7 +126,8 @@
 
   mojo::MessagePipe pipe;
   document->BindDocumentInterfaceBroker(std::move(pipe.handle0));
-  return MojoHandle::Create(mojo::ScopedHandle::From(std::move(pipe.handle1)));
+  return MakeGarbageCollected<MojoHandle>(
+      mojo::ScopedHandle::From(std::move(pipe.handle1)));
 }
 
 // static
@@ -137,7 +139,7 @@
   Document* document = static_cast<Document*>(execution_context);
   DCHECK(document);
 
-  return MojoHandle::Create(
+  return MakeGarbageCollected<MojoHandle>(
       mojo::ScopedHandle::From(document->SetDocumentInterfaceBrokerForTesting(
           mojo::ScopedMessagePipeHandle(mojo::MessagePipeHandle(
               test_broker_handle->TakeHandle().release().value())))));
diff --git a/third_party/blink/renderer/core/mojo/mojo_handle.cc b/third_party/blink/renderer/core/mojo/mojo_handle.cc
index 2a5047b..b74bf25 100644
--- a/third_party/blink/renderer/core/mojo/mojo_handle.cc
+++ b/third_party/blink/renderer/core/mojo/mojo_handle.cc
@@ -29,10 +29,6 @@
 
 namespace blink {
 
-MojoHandle* MojoHandle::Create(mojo::ScopedHandle handle) {
-  return MakeGarbageCollected<MojoHandle>(std::move(handle));
-}
-
 mojo::ScopedHandle MojoHandle::TakeHandle() {
   return std::move(handle_);
 }
@@ -122,7 +118,7 @@
 
   HeapVector<Member<MojoHandle>> handles(num_handles);
   for (uint32_t i = 0; i < num_handles; ++i) {
-    handles[i] = MojoHandle::Create(
+    handles[i] = MakeGarbageCollected<MojoHandle>(
         mojo::MakeScopedHandle(mojo::Handle(raw_handles[i])));
   }
   result_dict->setHandles(handles);
@@ -262,7 +258,8 @@
                                                 handle.mutable_value());
   result_dict->setResult(result);
   if (result == MOJO_RESULT_OK) {
-    result_dict->setHandle(MojoHandle::Create(mojo::MakeScopedHandle(handle)));
+    result_dict->setHandle(
+        MakeGarbageCollected<MojoHandle>(mojo::MakeScopedHandle(handle)));
   }
   return result_dict;
 }
diff --git a/third_party/blink/renderer/core/mojo/mojo_handle.h b/third_party/blink/renderer/core/mojo/mojo_handle.h
index fb281a55..3c22fb08 100644
--- a/third_party/blink/renderer/core/mojo/mojo_handle.h
+++ b/third_party/blink/renderer/core/mojo/mojo_handle.h
@@ -31,8 +31,6 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
-  static MojoHandle* Create(mojo::ScopedHandle);
-
   explicit MojoHandle(mojo::ScopedHandle);
 
   mojo::ScopedHandle TakeHandle();
diff --git a/third_party/blink/renderer/core/mojo/test/mojo_interface_interceptor.cc b/third_party/blink/renderer/core/mojo/test/mojo_interface_interceptor.cc
index 396adfe..05ed60bc 100644
--- a/third_party/blink/renderer/core/mojo/test/mojo_interface_interceptor.cc
+++ b/third_party/blink/renderer/core/mojo/test/mojo_interface_interceptor.cc
@@ -174,8 +174,9 @@
 
 void MojoInterfaceInterceptor::DispatchInterfaceRequestEvent(
     mojo::ScopedMessagePipeHandle handle) {
-  DispatchEvent(*MojoInterfaceRequestEvent::Create(
-      MojoHandle::Create(mojo::ScopedHandle::From(std::move(handle)))));
+  DispatchEvent(*MakeGarbageCollected<MojoInterfaceRequestEvent>(
+      MakeGarbageCollected<MojoHandle>(
+          mojo::ScopedHandle::From(std::move(handle)))));
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/mojo/test/mojo_interface_request_event.h b/third_party/blink/renderer/core/mojo/test/mojo_interface_request_event.h
index 3015aa68..c67cf9a 100644
--- a/third_party/blink/renderer/core/mojo/test/mojo_interface_request_event.h
+++ b/third_party/blink/renderer/core/mojo/test/mojo_interface_request_event.h
@@ -23,10 +23,6 @@
  public:
   ~MojoInterfaceRequestEvent() override;
 
-  static MojoInterfaceRequestEvent* Create(MojoHandle* handle) {
-    return MakeGarbageCollected<MojoInterfaceRequestEvent>(handle);
-  }
-
   static MojoInterfaceRequestEvent* Create(
       const AtomicString& type,
       const MojoInterfaceRequestEventInit* initializer) {
diff --git a/third_party/blink/renderer/core/mojo/tests/js_to_cpp_test.cc b/third_party/blink/renderer/core/mojo/tests/js_to_cpp_test.cc
index b14267d..21a4f5e5 100644
--- a/third_party/blink/renderer/core/mojo/tests/js_to_cpp_test.cc
+++ b/third_party/blink/renderer/core/mojo/tests/js_to_cpp_test.cc
@@ -397,7 +397,7 @@
     ASSERT_TRUE(start_fn->IsFunction());
     v8::Local<v8::Object> global_proxy = scope.GetContext()->Global();
     v8::Local<v8::Value> args[1] = {
-        ToV8(MojoHandle::Create(
+        ToV8(MakeGarbageCollected<MojoHandle>(
                  mojo::ScopedHandle::From(js_side_request.PassMessagePipe())),
              global_proxy, scope.GetIsolate())};
     V8ScriptRunner::CallFunction(start_fn.As<v8::Function>(),
diff --git a/third_party/blink/renderer/core/page/chrome_client_test.cc b/third_party/blink/renderer/core/page/chrome_client_test.cc
index 6ecf7bd..3ae098dae 100644
--- a/third_party/blink/renderer/core/page/chrome_client_test.cc
+++ b/third_party/blink/renderer/core/page/chrome_client_test.cc
@@ -71,7 +71,7 @@
 }
 
 TEST_F(ChromeClientTest, SetToolTipEmptyString) {
-  ChromeClient* client = EmptyChromeClient::Create();
+  ChromeClient* client = MakeGarbageCollected<EmptyChromeClient>();
   HitTestLocation location(LayoutPoint(10, 20));
   HitTestResult result(HitTestRequest(HitTestRequest::kMove), location);
   auto& doc = *Document::CreateForTest();
diff --git a/third_party/blink/renderer/core/page/validation_message_overlay_delegate.cc b/third_party/blink/renderer/core/page/validation_message_overlay_delegate.cc
index 5a82ca5..9bd16ea 100644
--- a/third_party/blink/renderer/core/page/validation_message_overlay_delegate.cc
+++ b/third_party/blink/renderer/core/page/validation_message_overlay_delegate.cc
@@ -147,8 +147,8 @@
   page_->GetSettings().SetMinimumLogicalFontSize(
       main_settings.GetMinimumLogicalFontSize());
 
-  LocalFrame* frame =
-      LocalFrame::Create(EmptyLocalFrameClient::Create(), *page_, nullptr);
+  auto* frame = LocalFrame::Create(
+      MakeGarbageCollected<EmptyLocalFrameClient>(), *page_, nullptr);
   frame->SetView(LocalFrameView::Create(*frame, view_size));
   frame->Init();
   frame->View()->SetCanHaveScrollbars(false);
diff --git a/third_party/blink/renderer/core/paint/paint_and_raster_invalidation_test.cc b/third_party/blink/renderer/core/paint/paint_and_raster_invalidation_test.cc
index 8ddfcd8..c3e40f2e 100644
--- a/third_party/blink/renderer/core/paint/paint_and_raster_invalidation_test.cc
+++ b/third_party/blink/renderer/core/paint/paint_and_raster_invalidation_test.cc
@@ -1058,7 +1058,7 @@
 class PaintInvalidatorCustomClientTest : public RenderingTest {
  public:
   PaintInvalidatorCustomClientTest()
-      : RenderingTest(EmptyLocalFrameClient::Create()),
+      : RenderingTest(MakeGarbageCollected<EmptyLocalFrameClient>()),
         chrome_client_(MakeGarbageCollected<PaintInvalidatorTestClient>()) {}
 
   PaintInvalidatorTestClient& GetChromeClient() const override {
diff --git a/third_party/blink/renderer/core/paint/paint_layer_clipper_test.cc b/third_party/blink/renderer/core/paint/paint_layer_clipper_test.cc
index 3e738351..1d8332f 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_clipper_test.cc
+++ b/third_party/blink/renderer/core/paint/paint_layer_clipper_test.cc
@@ -17,7 +17,8 @@
 
 class PaintLayerClipperTest : public RenderingTest {
  public:
-  PaintLayerClipperTest() : RenderingTest(EmptyLocalFrameClient::Create()) {}
+  PaintLayerClipperTest()
+      : RenderingTest(MakeGarbageCollected<EmptyLocalFrameClient>()) {}
 
   void SetUp() override {
     WebTestSupport::SetMockThemeEnabledForTest(true);
diff --git a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area_test.cc b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area_test.cc
index 202022b..098aabd 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area_test.cc
+++ b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area_test.cc
@@ -34,7 +34,7 @@
 class PaintLayerScrollableAreaTestBase : public RenderingTest {
  public:
   PaintLayerScrollableAreaTestBase()
-      : RenderingTest(EmptyLocalFrameClient::Create()),
+      : RenderingTest(MakeGarbageCollected<EmptyLocalFrameClient>()),
         chrome_client_(MakeGarbageCollected<ScrollableAreaMockChromeClient>()) {
   }
 
diff --git a/third_party/blink/renderer/core/paint/svg_filter_painter.cc b/third_party/blink/renderer/core/paint/svg_filter_painter.cc
index cfa1cca..c0c61403 100644
--- a/third_party/blink/renderer/core/paint/svg_filter_painter.cc
+++ b/third_party/blink/renderer/core/paint/svg_filter_painter.cc
@@ -109,7 +109,7 @@
       Intersection(filter->FilterRegion(), object.StrokeBoundingBox()));
   filter->GetSourceGraphic()->SetSourceRect(source_region);
 
-  FilterData* filter_data = FilterData::Create();
+  auto* filter_data = MakeGarbageCollected<FilterData>();
   filter_data->last_effect = filter->LastEffect();
   filter_data->node_map = node_map;
   DCHECK_EQ(filter_data->state_, FilterData::kInitial);
diff --git a/third_party/blink/renderer/core/script/classic_pending_script.cc b/third_party/blink/renderer/core/script/classic_pending_script.cc
index 6ae8918..787ee879 100644
--- a/third_party/blink/renderer/core/script/classic_pending_script.cc
+++ b/third_party/blink/renderer/core/script/classic_pending_script.cc
@@ -269,7 +269,7 @@
       TRACE_DISABLED_BY_DEFAULT("v8.compile"),
       "ClassicPendingScript::NotifyFinished", this, TRACE_EVENT_FLAG_FLOW_OUT,
       "data",
-      inspector_parse_script_event::Data(GetResource()->Identifier(),
+      inspector_parse_script_event::Data(GetResource()->InspectorId(),
                                          GetResource()->Url().GetString()));
 
   bool error_occurred = GetResource()->ErrorOccurred() || integrity_failure_;
diff --git a/third_party/blink/renderer/core/script/modulator_impl_base.cc b/third_party/blink/renderer/core/script/modulator_impl_base.cc
index e6bf8c8..341dae3 100644
--- a/third_party/blink/renderer/core/script/modulator_impl_base.cc
+++ b/third_party/blink/renderer/core/script/modulator_impl_base.cc
@@ -31,7 +31,7 @@
       task_runner_(ExecutionContext::From(script_state_)
                        ->GetTaskRunner(TaskType::kNetworking)),
       map_(ModuleMap::Create(this)),
-      tree_linker_registry_(ModuleTreeLinkerRegistry::Create()),
+      tree_linker_registry_(MakeGarbageCollected<ModuleTreeLinkerRegistry>()),
       module_record_resolver_(ModuleRecordResolverImpl::Create(
           this,
           ExecutionContext::From(script_state_))),
diff --git a/third_party/blink/renderer/core/script/module_map.cc b/third_party/blink/renderer/core/script/module_map.cc
index 84b7fbc8..67c7f0ed 100644
--- a/third_party/blink/renderer/core/script/module_map.cc
+++ b/third_party/blink/renderer/core/script/module_map.cc
@@ -100,7 +100,7 @@
 
 ModuleMap::ModuleMap(Modulator* modulator)
     : modulator_(modulator),
-      loader_registry_(ModuleScriptLoaderRegistry::Create()) {
+      loader_registry_(MakeGarbageCollected<ModuleScriptLoaderRegistry>()) {
   DCHECK(modulator);
 }
 
diff --git a/third_party/blink/renderer/core/streams/readable_stream_operations_test.cc b/third_party/blink/renderer/core/streams/readable_stream_operations_test.cc
index 5d05c22..605a1b46 100644
--- a/third_party/blink/renderer/core/streams/readable_stream_operations_test.cc
+++ b/third_party/blink/renderer/core/streams/readable_stream_operations_test.cc
@@ -613,7 +613,8 @@
                               V8String(scope.GetIsolate(), "hello")));
   ScriptValue internal_stream =
       CheckedGetInternalStream(scope.GetScriptState(), stream);
-  MessageChannel* channel = MessageChannel::Create(scope.GetExecutionContext());
+  auto* channel =
+      MakeGarbageCollected<MessageChannel>(scope.GetExecutionContext());
   ReadableStreamOperations::Serialize(scope.GetScriptState(), internal_stream,
                                       channel->port1(), ASSERT_NO_EXCEPTION);
   EXPECT_TRUE(ReadableStreamOperations::IsLocked(
diff --git a/third_party/blink/renderer/core/streams/readable_stream_test.cc b/third_party/blink/renderer/core/streams/readable_stream_test.cc
index d94f0750..8347364a 100644
--- a/third_party/blink/renderer/core/streams/readable_stream_test.cc
+++ b/third_party/blink/renderer/core/streams/readable_stream_test.cc
@@ -427,7 +427,8 @@
       script_state, underlying_source, 0);
   ASSERT_TRUE(stream);
 
-  MessageChannel* channel = MessageChannel::Create(scope.GetExecutionContext());
+  auto* channel =
+      MakeGarbageCollected<MessageChannel>(scope.GetExecutionContext());
 
   stream->Serialize(script_state, channel->port1(), ASSERT_NO_EXCEPTION);
   EXPECT_TRUE(stream->IsLocked(script_state, ASSERT_NO_EXCEPTION));
diff --git a/third_party/blink/renderer/core/streams/writable_stream_test.cc b/third_party/blink/renderer/core/streams/writable_stream_test.cc
index fe69ef3..5401cc7 100644
--- a/third_party/blink/renderer/core/streams/writable_stream_test.cc
+++ b/third_party/blink/renderer/core/streams/writable_stream_test.cc
@@ -86,7 +86,8 @@
                                         ASSERT_NO_EXCEPTION);
   ASSERT_TRUE(stream);
 
-  MessageChannel* channel = MessageChannel::Create(scope.GetExecutionContext());
+  auto* channel =
+      MakeGarbageCollected<MessageChannel>(scope.GetExecutionContext());
 
   stream->Serialize(script_state, channel->port1(), ASSERT_NO_EXCEPTION);
   EXPECT_TRUE(stream->locked(script_state, ASSERT_NO_EXCEPTION));
diff --git a/third_party/blink/renderer/core/style/content_data.cc b/third_party/blink/renderer/core/style/content_data.cc
index ef2b5f5..4d64cf10 100644
--- a/third_party/blink/renderer/core/style/content_data.cc
+++ b/third_party/blink/renderer/core/style/content_data.cc
@@ -73,11 +73,12 @@
                                                    LegacyLayout) const {
   LayoutImage* image = LayoutImage::CreateAnonymous(pseudo);
   image->SetPseudoStyle(&pseudo_style);
-  if (image_)
+  if (image_) {
     image->SetImageResource(
-        LayoutImageResourceStyleImage::Create(image_.Get()));
-  else
-    image->SetImageResource(LayoutImageResource::Create());
+        MakeGarbageCollected<LayoutImageResourceStyleImage>(image_.Get()));
+  } else {
+    image->SetImageResource(MakeGarbageCollected<LayoutImageResource>());
+  }
   return image;
 }
 
diff --git a/third_party/blink/renderer/core/testing/core_unit_test_helper.cc b/third_party/blink/renderer/core/testing/core_unit_test_helper.cc
index 845c060..3119e92 100644
--- a/third_party/blink/renderer/core/testing/core_unit_test_helper.cc
+++ b/third_party/blink/renderer/core/testing/core_unit_test_helper.cc
@@ -35,7 +35,7 @@
 
 ChromeClient& RenderingTest::GetChromeClient() const {
   DEFINE_STATIC_LOCAL(Persistent<EmptyChromeClient>, client,
-                      (EmptyChromeClient::Create()));
+                      (MakeGarbageCollected<EmptyChromeClient>()));
   return *client;
 }
 
diff --git a/third_party/blink/renderer/core/workers/shared_worker.cc b/third_party/blink/renderer/core/workers/shared_worker.cc
index f499d31..5746444f 100644
--- a/third_party/blink/renderer/core/workers/shared_worker.cc
+++ b/third_party/blink/renderer/core/workers/shared_worker.cc
@@ -58,7 +58,7 @@
 
   SharedWorker* worker = MakeGarbageCollected<SharedWorker>(context);
 
-  MessageChannel* channel = MessageChannel::Create(context);
+  auto* channel = MakeGarbageCollected<MessageChannel>(context);
   worker->port_ = channel->port1();
   MessagePortChannel remote_port = channel->port2()->Disentangle();
 
diff --git a/third_party/blink/renderer/core/workers/shared_worker_global_scope.cc b/third_party/blink/renderer/core/workers/shared_worker_global_scope.cc
index a3b1201..9d87464 100644
--- a/third_party/blink/renderer/core/workers/shared_worker_global_scope.cc
+++ b/third_party/blink/renderer/core/workers/shared_worker_global_scope.cc
@@ -115,7 +115,7 @@
 
 void SharedWorkerGlobalScope::Connect(MessagePortChannel channel) {
   DCHECK(!IsContextPaused());
-  MessagePort* port = MessagePort::Create(*this);
+  auto* port = MakeGarbageCollected<MessagePort>(*this);
   port->Entangle(std::move(channel));
   MessageEvent* event =
       MessageEvent::Create(MakeGarbageCollected<MessagePortArray>(1, port),
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc
index f2a22d6..bce9488 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc
@@ -1613,6 +1613,10 @@
   PostNotification(obj, ax::mojom::Event::kScrolledToAnchor);
 }
 
+void AXObjectCacheImpl::HandleFrameRectsChanged(Document& document) {
+  MarkAXObjectDirty(Get(&document), false);
+}
+
 void AXObjectCacheImpl::HandleScrollPositionChanged(
     LocalFrameView* frame_view) {
   AXObject* target_ax_object =
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h
index d65b44f5..6503355 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h
+++ b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h
@@ -150,6 +150,10 @@
   void HandleLayoutComplete(LayoutObject*) override;
   void HandleScrolledToAnchor(const Node* anchor_node) override;
 
+  // Called when the frame rect changes, which can sometimes happen
+  // without producing any layout or other notifications.
+  void HandleFrameRectsChanged(Document&) override;
+
   const AtomicString& ComputedRoleForNode(Node*) override;
   String ComputedNameForNode(Node*) override;
 
diff --git a/third_party/blink/renderer/modules/audio_output_devices/BUILD.gn b/third_party/blink/renderer/modules/audio_output_devices/BUILD.gn
index 97d26c8d..075e27c 100644
--- a/third_party/blink/renderer/modules/audio_output_devices/BUILD.gn
+++ b/third_party/blink/renderer/modules/audio_output_devices/BUILD.gn
@@ -8,7 +8,5 @@
   sources = [
     "html_media_element_audio_output_device.cc",
     "html_media_element_audio_output_device.h",
-    "set_sink_id_callbacks.cc",
-    "set_sink_id_callbacks.h",
   ]
 }
diff --git a/third_party/blink/renderer/modules/audio_output_devices/html_media_element_audio_output_device.cc b/third_party/blink/renderer/modules/audio_output_devices/html_media_element_audio_output_device.cc
index 75eeaca..e784c5b 100644
--- a/third_party/blink/renderer/modules/audio_output_devices/html_media_element_audio_output_device.cc
+++ b/third_party/blink/renderer/modules/audio_output_devices/html_media_element_audio_output_device.cc
@@ -9,13 +9,13 @@
 
 #include "base/macros.h"
 #include "third_party/blink/public/platform/task_type.h"
+#include "third_party/blink/public/platform/web_set_sink_id_callbacks.h"
 #include "third_party/blink/public/web/web_local_frame_client.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
 #include "third_party/blink/renderer/core/dom/document.h"
 #include "third_party/blink/renderer/core/dom/dom_exception.h"
 #include "third_party/blink/renderer/core/execution_context/execution_context.h"
 #include "third_party/blink/renderer/core/frame/web_local_frame_impl.h"
-#include "third_party/blink/renderer/modules/audio_output_devices/set_sink_id_callbacks.h"
 #include "third_party/blink/renderer/platform/bindings/script_state.h"
 #include "third_party/blink/renderer/platform/heap/persistent.h"
 #include "third_party/blink/renderer/platform/wtf/functional.h"
@@ -24,6 +24,28 @@
 
 namespace {
 
+DOMException* ToException(WebSetSinkIdError error) {
+  switch (error) {
+    case WebSetSinkIdError::kNotFound:
+      return DOMException::Create(DOMExceptionCode::kNotFoundError,
+                                  "Requested device not found");
+    case WebSetSinkIdError::kNotAuthorized:
+      return DOMException::Create(DOMExceptionCode::kSecurityError,
+                                  "No permission to use requested device");
+    case WebSetSinkIdError::kAborted:
+      return DOMException::Create(
+          DOMExceptionCode::kAbortError,
+          "The operation could not be performed and was aborted");
+    case WebSetSinkIdError::kNotSupported:
+      return DOMException::Create(DOMExceptionCode::kNotSupportedError,
+                                  "Operation not supported");
+    default:
+      NOTREACHED();
+      return DOMException::Create(DOMExceptionCode::kAbortError,
+                                  "Invalid error code");
+  }
+}
+
 class SetSinkIdResolver : public ScriptPromiseResolver {
  public:
   static SetSinkIdResolver* Create(ScriptState*,
@@ -38,6 +60,8 @@
  private:
   void DoSetSinkId();
 
+  void OnSetSinkIdComplete(base::Optional<WebSetSinkIdError> error);
+
   Member<HTMLMediaElement> element_;
   String sink_id_;
 
@@ -70,15 +94,16 @@
 }
 
 void SetSinkIdResolver::DoSetSinkId() {
-  ExecutionContext* context = GetExecutionContext();
-  std::unique_ptr<SetSinkIdCallbacks> callbacks =
-      std::make_unique<SetSinkIdCallbacks>(this, *element_, sink_id_);
+  auto set_sink_id_completion_callback =
+      WTF::Bind(&SetSinkIdResolver::OnSetSinkIdComplete, WrapPersistent(this));
   WebMediaPlayer* web_media_player = element_->GetWebMediaPlayer();
   if (web_media_player) {
-    web_media_player->SetSinkId(sink_id_, std::move(callbacks));
+    web_media_player->SetSinkId(sink_id_,
+                                std::move(set_sink_id_completion_callback));
     return;
   }
 
+  ExecutionContext* context = GetExecutionContext();
   if (!context) {
     // Detached contexts shouldn't be playing audio. Note that despite this
     // explicit Reject(), any associated JS callbacks will never be called
@@ -95,7 +120,7 @@
       WebLocalFrameImpl::FromFrame(document.GetFrame());
   if (web_frame && web_frame->Client()) {
     web_frame->Client()->CheckIfAudioSinkExistsAndIsAuthorized(
-        sink_id_, std::move(callbacks));
+        sink_id_, std::move(set_sink_id_completion_callback));
   } else {
     Reject(DOMException::Create(
         DOMExceptionCode::kSecurityError,
@@ -104,6 +129,22 @@
   }
 }
 
+void SetSinkIdResolver::OnSetSinkIdComplete(
+    base::Optional<WebSetSinkIdError> error) {
+  if (!GetExecutionContext() || GetExecutionContext()->IsContextDestroyed())
+    return;
+
+  if (error) {
+    Reject(ToException(*error));
+    return;
+  }
+
+  HTMLMediaElementAudioOutputDevice& aod_element =
+      HTMLMediaElementAudioOutputDevice::From(*element_);
+  aod_element.setSinkId(sink_id_);
+  Resolve();
+}
+
 void SetSinkIdResolver::Trace(blink::Visitor* visitor) {
   visitor->Trace(element_);
   ScriptPromiseResolver::Trace(visitor);
diff --git a/third_party/blink/renderer/modules/audio_output_devices/set_sink_id_callbacks.cc b/third_party/blink/renderer/modules/audio_output_devices/set_sink_id_callbacks.cc
deleted file mode 100644
index 557d26f4..0000000
--- a/third_party/blink/renderer/modules/audio_output_devices/set_sink_id_callbacks.cc
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "third_party/blink/renderer/modules/audio_output_devices/set_sink_id_callbacks.h"
-
-#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
-#include "third_party/blink/renderer/core/dom/dom_exception.h"
-#include "third_party/blink/renderer/modules/audio_output_devices/html_media_element_audio_output_device.h"
-
-namespace blink {
-
-namespace {
-
-DOMException* ToException(WebSetSinkIdError error) {
-  switch (error) {
-    case WebSetSinkIdError::kNotFound:
-      return DOMException::Create(DOMExceptionCode::kNotFoundError,
-                                  "Requested device not found");
-    case WebSetSinkIdError::kNotAuthorized:
-      return DOMException::Create(DOMExceptionCode::kSecurityError,
-                                  "No permission to use requested device");
-    case WebSetSinkIdError::kAborted:
-      return DOMException::Create(
-          DOMExceptionCode::kAbortError,
-          "The operation could not be performed and was aborted");
-    case WebSetSinkIdError::kNotSupported:
-      return DOMException::Create(DOMExceptionCode::kNotSupportedError,
-                                  "Operation not supported");
-    default:
-      NOTREACHED();
-      return DOMException::Create(DOMExceptionCode::kAbortError,
-                                  "Invalid error code");
-  }
-}
-
-}  // namespace
-
-SetSinkIdCallbacks::SetSinkIdCallbacks(ScriptPromiseResolver* resolver,
-                                       HTMLMediaElement& element,
-                                       const String& sink_id)
-    : resolver_(resolver), element_(element), sink_id_(sink_id) {
-  DCHECK(resolver_);
-}
-
-SetSinkIdCallbacks::~SetSinkIdCallbacks() = default;
-
-void SetSinkIdCallbacks::OnSuccess() {
-  if (!resolver_->GetExecutionContext() ||
-      resolver_->GetExecutionContext()->IsContextDestroyed())
-    return;
-
-  HTMLMediaElementAudioOutputDevice& aod_element =
-      HTMLMediaElementAudioOutputDevice::From(*element_);
-  aod_element.setSinkId(sink_id_);
-  resolver_->Resolve();
-}
-
-void SetSinkIdCallbacks::OnError(WebSetSinkIdError error) {
-  if (!resolver_->GetExecutionContext() ||
-      resolver_->GetExecutionContext()->IsContextDestroyed())
-    return;
-
-  resolver_->Reject(ToException(error));
-}
-
-}  // namespace blink
diff --git a/third_party/blink/renderer/modules/audio_output_devices/set_sink_id_callbacks.h b/third_party/blink/renderer/modules/audio_output_devices/set_sink_id_callbacks.h
deleted file mode 100644
index f03a830..0000000
--- a/third_party/blink/renderer/modules/audio_output_devices/set_sink_id_callbacks.h
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_AUDIO_OUTPUT_DEVICES_SET_SINK_ID_CALLBACKS_H_
-#define THIRD_PARTY_BLINK_RENDERER_MODULES_AUDIO_OUTPUT_DEVICES_SET_SINK_ID_CALLBACKS_H_
-
-#include "base/macros.h"
-#include "base/memory/scoped_refptr.h"
-#include "third_party/blink/public/platform/web_set_sink_id_callbacks.h"
-#include "third_party/blink/renderer/platform/heap/persistent.h"
-#include "third_party/blink/renderer/platform/timer.h"
-#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
-
-namespace blink {
-
-class HTMLMediaElement;
-class ScriptPromiseResolver;
-
-class SetSinkIdCallbacks final : public WebSetSinkIdCallbacks {
-  // FIXME(tasak): When making public/platform classes to use PartitionAlloc,
-  // the following macro should be moved to WebCallbacks defined in
-  // public/platform/WebCallbacks.h.
-  USING_FAST_MALLOC(SetSinkIdCallbacks);
-
- public:
-  SetSinkIdCallbacks(ScriptPromiseResolver*,
-                     HTMLMediaElement&,
-                     const String& sink_id);
-  ~SetSinkIdCallbacks() override;
-
-  void OnSuccess() override;
-  void OnError(WebSetSinkIdError) override;
-
- private:
-  Persistent<ScriptPromiseResolver> resolver_;
-  Persistent<HTMLMediaElement> element_;
-  String sink_id_;
-
-  DISALLOW_COPY_AND_ASSIGN(SetSinkIdCallbacks);
-};
-
-}  // namespace blink
-
-#endif  // THIRD_PARTY_BLINK_RENDERER_MODULES_AUDIO_OUTPUT_DEVICES_SET_SINK_ID_CALLBACKS_H_
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
index fcdccf7..875e0ca 100644
--- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
@@ -661,7 +661,7 @@
 HitTestCanvasResult* CanvasRenderingContext2D::GetControlAndIdIfHitRegionExists(
     const LayoutPoint& location) {
   if (HitRegionsCount() <= 0)
-    return HitTestCanvasResult::Create(String(), nullptr);
+    return MakeGarbageCollected<HitTestCanvasResult>(String(), nullptr);
 
   LayoutBox* box = canvas()->GetLayoutBox();
   FloatPoint local_pos =
@@ -680,12 +680,12 @@
   if (hit_region) {
     Element* control = hit_region->Control();
     if (control && canvas()->IsSupportedInteractiveCanvasFallback(*control)) {
-      return HitTestCanvasResult::Create(hit_region->Id(),
-                                         hit_region->Control());
+      return MakeGarbageCollected<HitTestCanvasResult>(hit_region->Id(),
+                                                       hit_region->Control());
     }
-    return HitTestCanvasResult::Create(hit_region->Id(), nullptr);
+    return MakeGarbageCollected<HitTestCanvasResult>(hit_region->Id(), nullptr);
   }
-  return HitTestCanvasResult::Create(String(), nullptr);
+  return MakeGarbageCollected<HitTestCanvasResult>(String(), nullptr);
 }
 
 String CanvasRenderingContext2D::GetIdFromControl(const Element* element) {
diff --git a/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope_test.cc b/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope_test.cc
index 1bb542b..f6be94d 100644
--- a/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope_test.cc
+++ b/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope_test.cc
@@ -17,6 +17,7 @@
 #include "third_party/blink/renderer/modules/csspaint/paint_worklet_proxy_client.h"
 #include "third_party/blink/renderer/modules/worklet/animation_and_paint_worklet_thread.h"
 #include "third_party/blink/renderer/modules/worklet/worklet_thread_test_common.h"
+#include "third_party/blink/renderer/platform/graphics/paint_worklet_paint_dispatcher.h"
 #include "third_party/blink/renderer/platform/testing/runtime_enabled_features_test_helpers.h"
 
 namespace blink {
@@ -32,24 +33,32 @@
     Document* document = &GetDocument();
     document->SetURL(KURL("https://example.com/"));
     document->UpdateSecurityOrigin(SecurityOrigin::Create(document->Url()));
+
+    dispatcher_ = base::MakeRefCounted<PaintWorkletPaintDispatcher>();
+    proxy_client_ =
+        MakeGarbageCollected<PaintWorkletProxyClient>(1, dispatcher_);
     reporting_proxy_ = std::make_unique<WorkerReportingProxy>();
   }
 
-  using TestCalback = void (
-      PaintWorkletGlobalScopeTest::*)(WorkerThread*, base::WaitableEvent*);
+  using TestCallback =
+      void (PaintWorkletGlobalScopeTest::*)(WorkerThread*,
+                                            PaintWorkletProxyClient*,
+                                            base::WaitableEvent*);
 
   // Create a new paint worklet and run the callback task on it. Terminate the
   // worklet once the task completion is signaled.
-  void RunTestOnWorkletThread(TestCalback callback) {
+  void RunTestOnWorkletThread(TestCallback callback) {
     std::unique_ptr<WorkerThread> worklet =
-        CreateThreadAndProvidePaintWorkletProxyClient(&GetDocument(),
-                                                      reporting_proxy_.get());
+        CreateThreadAndProvidePaintWorkletProxyClient(
+            &GetDocument(), reporting_proxy_.get(), proxy_client_);
     base::WaitableEvent waitable_event;
     PostCrossThreadTask(
         *worklet->GetTaskRunner(TaskType::kInternalTest), FROM_HERE,
-        CrossThreadBind(callback, CrossThreadUnretained(this),
-                        CrossThreadUnretained(worklet.get()),
-                        CrossThreadUnretained(&waitable_event)));
+        CrossThreadBind(
+            callback, CrossThreadUnretained(this),
+            CrossThreadUnretained(worklet.get()),
+            CrossThreadPersistent<PaintWorkletProxyClient>(proxy_client_),
+            CrossThreadUnretained(&waitable_event)));
     waitable_event.Wait();
     waitable_event.Reset();
 
@@ -58,9 +67,14 @@
   }
 
   void RunBasicParsingTestOnWorklet(WorkerThread* thread,
+                                    PaintWorkletProxyClient* proxy_client,
                                     base::WaitableEvent* waitable_event) {
     ASSERT_TRUE(thread->IsCurrentThread());
-    auto* global_scope = To<PaintWorkletGlobalScope>(thread->GlobalScope());
+    proxy_client->SetGlobalScopeForTesting(
+        static_cast<PaintWorkletGlobalScope*>(
+            To<WorkletGlobalScope>(thread->GlobalScope())));
+    CrossThreadPersistent<PaintWorkletGlobalScope> global_scope =
+        proxy_client->global_scope_;
     ScriptState* script_state =
         global_scope->ScriptController()->GetScriptState();
     ASSERT_TRUE(script_state);
@@ -101,6 +115,8 @@
   }
 
  private:
+  scoped_refptr<PaintWorkletPaintDispatcher> dispatcher_;
+  Persistent<PaintWorkletProxyClient> proxy_client_;
   std::unique_ptr<WorkerReportingProxy> reporting_proxy_;
 };
 
diff --git a/third_party/blink/renderer/modules/csspaint/paint_worklet_proxy_client.cc b/third_party/blink/renderer/modules/csspaint/paint_worklet_proxy_client.cc
index 0a1ac7c..f70f53e 100644
--- a/third_party/blink/renderer/modules/csspaint/paint_worklet_proxy_client.cc
+++ b/third_party/blink/renderer/modules/csspaint/paint_worklet_proxy_client.cc
@@ -4,6 +4,7 @@
 
 #include "third_party/blink/renderer/modules/csspaint/paint_worklet_proxy_client.h"
 
+#include "base/single_thread_task_runner.h"
 #include "third_party/blink/renderer/core/dom/document.h"
 #include "third_party/blink/renderer/core/frame/web_frame_widget_base.h"
 #include "third_party/blink/renderer/core/frame/web_local_frame_impl.h"
@@ -41,6 +42,14 @@
 
 void PaintWorkletProxyClient::Trace(blink::Visitor* visitor) {
   Supplement<WorkerClients>::Trace(visitor);
+  PaintWorkletPainter::Trace(visitor);
+}
+
+void PaintWorkletProxyClient::SetGlobalScopeForTesting(
+    PaintWorkletGlobalScope* global_scope) {
+  DCHECK(global_scope);
+  DCHECK(global_scope->IsContextThread());
+  global_scope_ = global_scope;
 }
 
 void PaintWorkletProxyClient::SetGlobalScope(WorkletGlobalScope* global_scope) {
@@ -51,11 +60,17 @@
   DCHECK(state_ == RunState::kUninitialized);
 
   global_scope_ = static_cast<PaintWorkletGlobalScope*>(global_scope);
+  scoped_refptr<base::SingleThreadTaskRunner> global_scope_runner =
+      global_scope_->GetThread()->GetTaskRunner(TaskType::kMiscPlatformAPI);
   state_ = RunState::kWorking;
+
+  compositor_paintee_->RegisterPaintWorkletPainter(this, global_scope_runner);
 }
 
 void PaintWorkletProxyClient::Dispose() {
   if (state_ == RunState::kWorking) {
+    compositor_paintee_->UnregisterPaintWorkletPainter(this);
+
     DCHECK(global_scope_);
     DCHECK(global_scope_->IsContextThread());
 
@@ -64,6 +79,8 @@
     global_scope_ = nullptr;
   }
 
+  compositor_paintee_ = nullptr;
+
   DCHECK(state_ != RunState::kDisposed);
   state_ = RunState::kDisposed;
 }
diff --git a/third_party/blink/renderer/modules/csspaint/paint_worklet_proxy_client.h b/third_party/blink/renderer/modules/csspaint/paint_worklet_proxy_client.h
index 4ad2396..639b999 100644
--- a/third_party/blink/renderer/modules/csspaint/paint_worklet_proxy_client.h
+++ b/third_party/blink/renderer/modules/csspaint/paint_worklet_proxy_client.h
@@ -11,6 +11,7 @@
 #include "third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope.h"
 #include "third_party/blink/renderer/modules/modules_export.h"
 #include "third_party/blink/renderer/platform/graphics/paint_worklet_paint_dispatcher.h"
+#include "third_party/blink/renderer/platform/graphics/paint_worklet_painter.h"
 
 namespace blink {
 
@@ -26,7 +27,8 @@
 // TODO(smcgruer): Add the dispatcher logic.
 class MODULES_EXPORT PaintWorkletProxyClient
     : public GarbageCollectedFinalized<PaintWorkletProxyClient>,
-      public Supplement<WorkerClients> {
+      public Supplement<WorkerClients>,
+      public PaintWorkletPainter {
   USING_GARBAGE_COLLECTED_MIXIN(PaintWorkletProxyClient);
   DISALLOW_COPY_AND_ASSIGN(PaintWorkletProxyClient);
 
@@ -38,18 +40,22 @@
   PaintWorkletProxyClient(
       int worklet_id,
       scoped_refptr<PaintWorkletPaintDispatcher> compositor_paintee);
-  virtual ~PaintWorkletProxyClient() = default;
+  ~PaintWorkletProxyClient() override = default;
 
   void Trace(blink::Visitor*) override;
 
   virtual void SetGlobalScope(WorkletGlobalScope*);
+  void SetGlobalScopeForTesting(PaintWorkletGlobalScope*);
   void Dispose();
 
   static PaintWorkletProxyClient* From(WorkerClients*);
 
  private:
+  friend class PaintWorkletGlobalScopeTest;
+  friend class PaintWorkletProxyClientTest;
   FRIEND_TEST_ALL_PREFIXES(PaintWorkletProxyClientTest,
                            PaintWorkletProxyClientConstruction);
+  FRIEND_TEST_ALL_PREFIXES(PaintWorkletProxyClientTest, SetGlobalScope);
 
   scoped_refptr<PaintWorkletPaintDispatcher> compositor_paintee_;
   const int worklet_id_;
diff --git a/third_party/blink/renderer/modules/csspaint/paint_worklet_proxy_client_test.cc b/third_party/blink/renderer/modules/csspaint/paint_worklet_proxy_client_test.cc
index 2aa76747..4c099d85d 100644
--- a/third_party/blink/renderer/modules/csspaint/paint_worklet_proxy_client_test.cc
+++ b/third_party/blink/renderer/modules/csspaint/paint_worklet_proxy_client_test.cc
@@ -7,13 +7,43 @@
 #include <memory>
 #include <utility>
 
+#include "base/synchronization/waitable_event.h"
+#include "base/test/test_simple_task_runner.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/renderer/core/testing/core_unit_test_helper.h"
+#include "third_party/blink/renderer/core/workers/worker_reporting_proxy.h"
+#include "third_party/blink/renderer/modules/worklet/worklet_thread_test_common.h"
 #include "third_party/blink/renderer/platform/graphics/paint_worklet_paint_dispatcher.h"
 
 namespace blink {
 
-using PaintWorkletProxyClientTest = RenderingTest;
+class PaintWorkletProxyClientTest : public RenderingTest {
+ public:
+  PaintWorkletProxyClientTest() = default;
+
+  void SetUp() override {
+    RenderingTest::SetUp();
+    dispatcher_ = base::MakeRefCounted<PaintWorkletPaintDispatcher>();
+
+    proxy_client_ =
+        MakeGarbageCollected<PaintWorkletProxyClient>(1, dispatcher_);
+    reporting_proxy_ = std::make_unique<WorkerReportingProxy>();
+  }
+
+  void SetAndCheckGlobalScope(WorkerThread* thread,
+                              PaintWorkletProxyClient* proxy_client,
+                              base::WaitableEvent* waitable_event) {
+    proxy_client->SetGlobalScope(To<WorkletGlobalScope>(thread->GlobalScope()));
+    EXPECT_EQ(proxy_client->global_scope_,
+              To<WorkletGlobalScope>(thread->GlobalScope()));
+    EXPECT_EQ(dispatcher_->painter_map_.size(), 1u);
+    waitable_event->Signal();
+  }
+
+  scoped_refptr<PaintWorkletPaintDispatcher> dispatcher_;
+  Persistent<PaintWorkletProxyClient> proxy_client_;
+  std::unique_ptr<WorkerReportingProxy> reporting_proxy_;
+};
 
 TEST_F(PaintWorkletProxyClientTest, PaintWorkletProxyClientConstruction) {
   PaintWorkletProxyClient* proxy_client =
@@ -30,4 +60,30 @@
   EXPECT_NE(proxy_client->compositor_paintee_, nullptr);
 }
 
+TEST_F(PaintWorkletProxyClientTest, SetGlobalScope) {
+  ScopedOffMainThreadCSSPaintForTest off_main_thread_css_paint(true);
+  // Global scopes must be created on worker threads.
+  std::unique_ptr<WorkerThread> worklet_thread =
+      CreateThreadAndProvidePaintWorkletProxyClient(
+          &GetDocument(), reporting_proxy_.get(), proxy_client_);
+
+  EXPECT_EQ(proxy_client_->global_scope_, nullptr);
+
+  // Register global scopes with proxy client. This step must be performed on
+  // the worker threads.
+  base::WaitableEvent waitable_event;
+  PostCrossThreadTask(
+      *worklet_thread->GetTaskRunner(TaskType::kInternalTest), FROM_HERE,
+      CrossThreadBind(
+          &PaintWorkletProxyClientTest::SetAndCheckGlobalScope,
+          CrossThreadUnretained(this),
+          CrossThreadUnretained(worklet_thread.get()),
+          CrossThreadPersistent<PaintWorkletProxyClient>(proxy_client_),
+          CrossThreadUnretained(&waitable_event)));
+  waitable_event.Wait();
+
+  worklet_thread->Terminate();
+  worklet_thread->WaitForShutdownForTesting();
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/filesystem/choose_file_system_entries_options.idl b/third_party/blink/renderer/modules/filesystem/choose_file_system_entries_options.idl
index 9907820..a3e158fb 100644
--- a/third_party/blink/renderer/modules/filesystem/choose_file_system_entries_options.idl
+++ b/third_party/blink/renderer/modules/filesystem/choose_file_system_entries_options.idl
@@ -2,10 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// https://wicg.github.io/writable-files/#enumdef-choosefilesystementriestype
+// https://wicg.github.io/native-file-system/#enumdef-choosefilesystementriestype
 enum ChooseFileSystemEntriesType { "openFile", "saveFile", "openDirectory" };
 
-// https://wicg.github.io/writable-files/#dictdef-choosefilesystementriesoptions
+// https://wicg.github.io/native-file-system/#dictdef-choosefilesystementriesoptions
 dictionary ChooseFileSystemEntriesOptions {
     ChooseFileSystemEntriesType type = "openFile";
     boolean multiple = false;
diff --git a/third_party/blink/renderer/modules/filesystem/file_system_base_handle.idl b/third_party/blink/renderer/modules/filesystem/file_system_base_handle.idl
index 20008ad4..b0b9fd2 100644
--- a/third_party/blink/renderer/modules/filesystem/file_system_base_handle.idl
+++ b/third_party/blink/renderer/modules/filesystem/file_system_base_handle.idl
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// https://wicg.github.io/writable-files/#filesystemhandle
+// https://wicg.github.io/native-file-system/#filesystemhandle
 [
     RuntimeEnabled=WritableFiles,
     NoInterfaceObject
diff --git a/third_party/blink/renderer/modules/filesystem/file_system_directory_handle.idl b/third_party/blink/renderer/modules/filesystem/file_system_directory_handle.idl
index 5e2309e..561f945 100644
--- a/third_party/blink/renderer/modules/filesystem/file_system_directory_handle.idl
+++ b/third_party/blink/renderer/modules/filesystem/file_system_directory_handle.idl
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// https://wicg.github.io/writable-files/#filesystemdirectoryhandle
+// https://wicg.github.io/native-file-system/#filesystemdirectoryhandle
 [
     RuntimeEnabled=WritableFiles
 ] interface FileSystemDirectoryHandle : FileSystemBaseHandle {
diff --git a/third_party/blink/renderer/modules/filesystem/file_system_file_handle.idl b/third_party/blink/renderer/modules/filesystem/file_system_file_handle.idl
index 74f5582..89290e63 100644
--- a/third_party/blink/renderer/modules/filesystem/file_system_file_handle.idl
+++ b/third_party/blink/renderer/modules/filesystem/file_system_file_handle.idl
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// https://wicg.github.io/writable-files/#filesystemfilehandle
+// https://wicg.github.io/native-file-system/#filesystemfilehandle
 [
     RuntimeEnabled=WritableFiles
 ] interface FileSystemFileHandle : FileSystemBaseHandle {
diff --git a/third_party/blink/renderer/modules/filesystem/file_system_get_directory_options.idl b/third_party/blink/renderer/modules/filesystem/file_system_get_directory_options.idl
index 246e8108..529b8dd2 100644
--- a/third_party/blink/renderer/modules/filesystem/file_system_get_directory_options.idl
+++ b/third_party/blink/renderer/modules/filesystem/file_system_get_directory_options.idl
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// https://wicg.github.io/writable-files/#dictdef-filesystemgetdirectoryoptions
+// https://wicg.github.io/native-file-system/#dictdef-filesystemgetdirectoryoptions
 dictionary FileSystemGetDirectoryOptions {
   boolean create = false;
 };
diff --git a/third_party/blink/renderer/modules/filesystem/file_system_get_file_options.idl b/third_party/blink/renderer/modules/filesystem/file_system_get_file_options.idl
index 19c7978f..57c5a7d 100644
--- a/third_party/blink/renderer/modules/filesystem/file_system_get_file_options.idl
+++ b/third_party/blink/renderer/modules/filesystem/file_system_get_file_options.idl
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// https://wicg.github.io/writable-files/#dictdef-filesystemgetfileoptions
+// https://wicg.github.io/native-file-system/#dictdef-filesystemgetfileoptions
 dictionary FileSystemGetFileOptions {
   boolean create = false;
 };
diff --git a/third_party/blink/renderer/modules/filesystem/file_system_writer.idl b/third_party/blink/renderer/modules/filesystem/file_system_writer.idl
index 4c96379..8a3e5dec 100644
--- a/third_party/blink/renderer/modules/filesystem/file_system_writer.idl
+++ b/third_party/blink/renderer/modules/filesystem/file_system_writer.idl
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// https://wicg.github.io/writable-files/#filesystemwriter
+// https://wicg.github.io/native-file-system/#filesystemwriter
 [
     NoInterfaceObject,
     RuntimeEnabled=WritableFiles
diff --git a/third_party/blink/renderer/modules/filesystem/get_system_directory_options.idl b/third_party/blink/renderer/modules/filesystem/get_system_directory_options.idl
index 831ac356..0d51d29 100644
--- a/third_party/blink/renderer/modules/filesystem/get_system_directory_options.idl
+++ b/third_party/blink/renderer/modules/filesystem/get_system_directory_options.idl
@@ -2,12 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// https://wicg.github.io/writable-files/#enumdef-systemdirectorytype
+// https://wicg.github.io/native-file-system/#enumdef-systemdirectorytype
 enum SystemDirectoryType {
   "sandbox"
 };
 
-// https://wicg.github.io/writable-files/#dictdef-getsystemdirectoryoptions
+// https://wicg.github.io/native-file-system/#dictdef-getsystemdirectoryoptions
 dictionary GetSystemDirectoryOptions {
   required SystemDirectoryType type;
 };
diff --git a/third_party/blink/renderer/modules/filesystem/window_file_system.idl b/third_party/blink/renderer/modules/filesystem/window_file_system.idl
index 935f48bc..187e6ac6 100644
--- a/third_party/blink/renderer/modules/filesystem/window_file_system.idl
+++ b/third_party/blink/renderer/modules/filesystem/window_file_system.idl
@@ -38,7 +38,7 @@
     [RuntimeEnabled=FileSystem] void webkitResolveLocalFileSystemURL(DOMString url,
             EntryCallback successCallback, optional ErrorCallback? errorCallback);
 
-    // https://wicg.github.io/writable-files/#api-choosefilesystementries
+    // https://wicg.github.io/native-file-system/#api-choosefilesystementries
     [RuntimeEnabled=WritableFiles, CallWith=ScriptState, SecureContext]
     Promise<(FileSystemBaseHandle or sequence<FileSystemBaseHandle>)>
         chooseFileSystemEntries(optional ChooseFileSystemEntriesOptions options);
diff --git a/third_party/blink/renderer/modules/media_controls/elements/media_control_display_cutout_fullscreen_button_element_test.cc b/third_party/blink/renderer/modules/media_controls/elements/media_control_display_cutout_fullscreen_button_element_test.cc
index 4ea2bc5..fc203ad 100644
--- a/third_party/blink/renderer/modules/media_controls/elements/media_control_display_cutout_fullscreen_button_element_test.cc
+++ b/third_party/blink/renderer/modules/media_controls/elements/media_control_display_cutout_fullscreen_button_element_test.cc
@@ -47,7 +47,8 @@
     Page::PageClients clients;
     FillWithEmptyClients(clients);
     clients.chrome_client = chrome_client_.Get();
-    SetupPageWithClients(&clients, EmptyLocalFrameClient::Create());
+    SetupPageWithClients(&clients,
+                         MakeGarbageCollected<EmptyLocalFrameClient>());
 
     RuntimeEnabledFeatures::SetDisplayCutoutAPIEnabled(true);
 
diff --git a/third_party/blink/renderer/modules/media_controls/media_controls_display_cutout_delegate_test.cc b/third_party/blink/renderer/modules/media_controls/media_controls_display_cutout_delegate_test.cc
index d770f964..cf72f74b 100644
--- a/third_party/blink/renderer/modules/media_controls/media_controls_display_cutout_delegate_test.cc
+++ b/third_party/blink/renderer/modules/media_controls/media_controls_display_cutout_delegate_test.cc
@@ -44,7 +44,8 @@
     Page::PageClients clients;
     FillWithEmptyClients(clients);
     clients.chrome_client = chrome_client_.Get();
-    SetupPageWithClients(&clients, EmptyLocalFrameClient::Create());
+    SetupPageWithClients(&clients,
+                         MakeGarbageCollected<EmptyLocalFrameClient>());
 
     RuntimeEnabledFeatures::SetDisplayCutoutAPIEnabled(true);
     RuntimeEnabledFeatures::SetMediaControlsExpandGestureEnabled(true);
diff --git a/third_party/blink/renderer/modules/modules_idl_files.gni b/third_party/blink/renderer/modules/modules_idl_files.gni
index 87768b6..8df2552 100644
--- a/third_party/blink/renderer/modules/modules_idl_files.gni
+++ b/third_party/blink/renderer/modules/modules_idl_files.gni
@@ -428,6 +428,8 @@
           "webgl/webgl_uniform_location.idl",
           "webgl/webgl_vertex_array_object.idl",
           "webgl/webgl_vertex_array_object_oes.idl",
+          "webgl/webgl_video_frame_info.idl",
+          "webgl/webgl_video_texture.idl",
           "webgpu/gpu.idl",
           "webgpu/gpu_adapter.idl",
           "webgpu/gpu_device.idl",
diff --git a/third_party/blink/renderer/modules/payments/payment_request_details_test.cc b/third_party/blink/renderer/modules/payments/payment_request_details_test.cc
index 074b5c8..0697b9c 100644
--- a/third_party/blink/renderer/modules/payments/payment_request_details_test.cc
+++ b/third_party/blink/renderer/modules/payments/payment_request_details_test.cc
@@ -20,8 +20,6 @@
 namespace {
 
 class DetailsTestCase {
-  USING_FAST_MALLOC(DetailsTestCase);
-
  public:
   DetailsTestCase(
       PaymentTestDetailToChange detail,
diff --git a/third_party/blink/renderer/modules/webaudio/audio_param.cc b/third_party/blink/renderer/modules/webaudio/audio_param.cc
index 63388a8f..3a0bb6e 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_param.cc
+++ b/third_party/blink/renderer/modules/webaudio/audio_param.cc
@@ -305,14 +305,6 @@
       sample_rate, sample_rate, MinValue(), MaxValue()));
 }
 
-int AudioParamHandler::ComputeQHistogramValue(float new_value) const {
-  // For the Q value, assume a useful range is [0, 25] and that 0.25 dB
-  // resolution is good enough.  Then, we can map the floating point Q value (in
-  // dB) to an integer just by multipling by 4 and rounding.
-  new_value = clampTo(new_value, 0.0, 25.0);
-  return static_cast<int>(4 * new_value + 0.5);
-}
-
 // ----------------------------------------------------------------
 
 AudioParam::AudioParam(BaseAudioContext& context,
diff --git a/third_party/blink/renderer/modules/webaudio/audio_param.h b/third_party/blink/renderer/modules/webaudio/audio_param.h
index efc3ebd..9986cdf 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_param.h
+++ b/third_party/blink/renderer/modules/webaudio/audio_param.h
@@ -216,8 +216,6 @@
                             bool sample_accurate);
   void CalculateTimelineValues(float* values, unsigned number_of_values);
 
-  int ComputeQHistogramValue(float) const;
-
   // The type of AudioParam, indicating what this AudioParam represents and what
   // node it belongs to.  Mostly for informational purposes and doesn't affect
   // implementation.
diff --git a/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc b/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc
index 1c39df0..f7e47cbf 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc
+++ b/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc
@@ -182,7 +182,7 @@
         global_scope->FindDefinition("testProcessor");
     EXPECT_TRUE(definition);
     EXPECT_EQ(definition->GetName(), "testProcessor");
-    MessageChannel* channel = MessageChannel::Create(thread->GlobalScope());
+    auto* channel = MakeGarbageCollected<MessageChannel>(thread->GlobalScope());
     MessagePortChannel dummy_port_channel = channel->port2()->Disentangle();
 
     AudioWorkletProcessor* processor =
@@ -283,7 +283,7 @@
         )JS";
     ASSERT_TRUE(EvaluateScriptModule(global_scope, source_code));
 
-    MessageChannel* channel = MessageChannel::Create(thread->GlobalScope());
+    auto* channel = MakeGarbageCollected<MessageChannel>(thread->GlobalScope());
     MessagePortChannel dummy_port_channel = channel->port2()->Disentangle();
     AudioWorkletProcessor* processor =
         global_scope->CreateProcessor("testProcessor",
diff --git a/third_party/blink/renderer/modules/webaudio/audio_worklet_node.cc b/third_party/blink/renderer/modules/webaudio/audio_worklet_node.cc
index 50e9fde..a596133a 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_worklet_node.cc
+++ b/third_party/blink/renderer/modules/webaudio/audio_worklet_node.cc
@@ -316,8 +316,8 @@
     return nullptr;
   }
 
-  MessageChannel* channel =
-      MessageChannel::Create(context->GetExecutionContext());
+  auto* channel =
+      MakeGarbageCollected<MessageChannel>(context->GetExecutionContext());
   MessagePortChannel processor_port_channel = channel->port2()->Disentangle();
 
   AudioWorkletNode* node = MakeGarbageCollected<AudioWorkletNode>(
diff --git a/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.cc b/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.cc
index bc094b73..8c19bd3b 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.cc
+++ b/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.cc
@@ -21,7 +21,7 @@
   ProcessorCreationParams* params = global_scope->GetProcessorCreationParams();
   DCHECK(params);
 
-  MessagePort* port = MessagePort::Create(*global_scope);
+  auto* port = MakeGarbageCollected<MessagePort>(*global_scope);
   port->Entangle(std::move(params->PortChannel()));
   return MakeGarbageCollected<AudioWorkletProcessor>(global_scope,
                                                      params->Name(), port);
diff --git a/third_party/blink/renderer/modules/webgl/BUILD.gn b/third_party/blink/renderer/modules/webgl/BUILD.gn
index 2cd01d1a..c6e827d 100644
--- a/third_party/blink/renderer/modules/webgl/BUILD.gn
+++ b/third_party/blink/renderer/modules/webgl/BUILD.gn
@@ -137,6 +137,11 @@
     "webgl_vertex_array_object_base.h",
     "webgl_vertex_array_object_oes.cc",
     "webgl_vertex_array_object_oes.h",
+    "webgl_video_frame_info.cc",
+    "webgl_video_frame_info.h",
+    "webgl_video_texture.cc",
+    "webgl_video_texture.h",
+    "webgl_video_texture_enum.h",
   ]
 
   if (support_webgl2_compute_context) {
diff --git a/third_party/blink/renderer/modules/webgl/webgl2_compute_rendering_context.cc b/third_party/blink/renderer/modules/webgl/webgl2_compute_rendering_context.cc
index aa028c9..4035087 100644
--- a/third_party/blink/renderer/modules/webgl/webgl2_compute_rendering_context.cc
+++ b/third_party/blink/renderer/modules/webgl/webgl2_compute_rendering_context.cc
@@ -30,6 +30,7 @@
 #include "third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.h"
 #include "third_party/blink/renderer/modules/webgl/webgl_debug_shaders.h"
 #include "third_party/blink/renderer/modules/webgl/webgl_lose_context.h"
+#include "third_party/blink/renderer/modules/webgl/webgl_video_texture.h"
 #include "third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h"
 
 namespace blink {
@@ -137,6 +138,7 @@
   RegisterExtension<WebGLDebugRendererInfo>(webgl_debug_renderer_info_);
   RegisterExtension<WebGLDebugShaders>(webgl_debug_shaders_);
   RegisterExtension<WebGLLoseContext>(webgl_lose_context_);
+  RegisterExtension<WebGLVideoTexture>(webgl_video_texture_, kDraftExtension);
 }
 
 void WebGL2ComputeRenderingContext::Trace(blink::Visitor* visitor) {
@@ -154,6 +156,7 @@
   visitor->Trace(webgl_debug_renderer_info_);
   visitor->Trace(webgl_debug_shaders_);
   visitor->Trace(webgl_lose_context_);
+  visitor->Trace(webgl_video_texture_);
   WebGL2ComputeRenderingContextBase::Trace(visitor);
 }
 
diff --git a/third_party/blink/renderer/modules/webgl/webgl2_compute_rendering_context.h b/third_party/blink/renderer/modules/webgl/webgl2_compute_rendering_context.h
index 4958768..8aef6a0 100644
--- a/third_party/blink/renderer/modules/webgl/webgl2_compute_rendering_context.h
+++ b/third_party/blink/renderer/modules/webgl/webgl2_compute_rendering_context.h
@@ -20,6 +20,7 @@
 class OESTextureFloatLinear;
 class WebGLDebugRendererInfo;
 class WebGLLoseContext;
+class WebGLVideoTexture;
 
 class WebGL2ComputeRenderingContext : public WebGL2ComputeRenderingContextBase {
   DEFINE_WRAPPERTYPEINFO();
@@ -76,6 +77,7 @@
   Member<WebGLDebugRendererInfo> webgl_debug_renderer_info_;
   Member<WebGLDebugShaders> webgl_debug_shaders_;
   Member<WebGLLoseContext> webgl_lose_context_;
+  Member<WebGLVideoTexture> webgl_video_texture_;
 };
 
 DEFINE_TYPE_CASTS(WebGL2ComputeRenderingContext,
diff --git a/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.cc b/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.cc
index f0038bb..96adf00 100644
--- a/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.cc
+++ b/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.cc
@@ -34,6 +34,7 @@
 #include "third_party/blink/renderer/modules/webgl/webgl_multi_draw.h"
 #include "third_party/blink/renderer/modules/webgl/webgl_multi_draw_instanced.h"
 #include "third_party/blink/renderer/modules/webgl/webgl_multiview.h"
+#include "third_party/blink/renderer/modules/webgl/webgl_video_texture.h"
 #include "third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h"
 
 namespace blink {
@@ -146,6 +147,7 @@
   RegisterExtension<WebGLMultiDrawInstanced>(webgl_multi_draw_instanced_,
                                              kDraftExtension);
   RegisterExtension<WebGLMultiview>(webgl_multiview_, kDraftExtension);
+  RegisterExtension<WebGLVideoTexture>(webgl_video_texture_, kDraftExtension);
 }
 
 void WebGL2RenderingContext::Trace(blink::Visitor* visitor) {
@@ -167,6 +169,7 @@
   visitor->Trace(webgl_multi_draw_);
   visitor->Trace(webgl_multi_draw_instanced_);
   visitor->Trace(webgl_multiview_);
+  visitor->Trace(webgl_video_texture_);
   WebGL2RenderingContextBase::Trace(visitor);
 }
 
diff --git a/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.h b/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.h
index bcb02281..36c2d17c 100644
--- a/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.h
+++ b/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.h
@@ -24,6 +24,7 @@
 class WebGLMultiDrawInstanced;
 class WebGLMultiview;
 class KHRParallelShaderCompile;
+class WebGLVideoTexture;
 
 class WebGL2RenderingContext : public WebGL2RenderingContextBase {
   DEFINE_WRAPPERTYPEINFO();
@@ -82,6 +83,7 @@
   Member<WebGLMultiDraw> webgl_multi_draw_;
   Member<WebGLMultiDrawInstanced> webgl_multi_draw_instanced_;
   Member<WebGLMultiview> webgl_multiview_;
+  Member<WebGLVideoTexture> webgl_video_texture_;
 };
 
 DEFINE_TYPE_CASTS(WebGL2RenderingContext,
diff --git a/third_party/blink/renderer/modules/webgl/webgl_extension_name.h b/third_party/blink/renderer/modules/webgl/webgl_extension_name.h
index 6500ecb..03e849c 100644
--- a/third_party/blink/renderer/modules/webgl/webgl_extension_name.h
+++ b/third_party/blink/renderer/modules/webgl/webgl_extension_name.h
@@ -44,6 +44,7 @@
   kWebGLMultiDrawName,
   kWebGLMultiDrawInstancedName,
   kWebGLMultiviewName,
+  kWebGLVideoTextureName,
   kWebGLExtensionNameCount,  // Must be the last entry
 };
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context.cc b/third_party/blink/renderer/modules/webgl/webgl_rendering_context.cc
index 13c3353..4251c1d 100644
--- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context.cc
+++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context.cc
@@ -68,6 +68,7 @@
 #include "third_party/blink/renderer/modules/webgl/webgl_lose_context.h"
 #include "third_party/blink/renderer/modules/webgl/webgl_multi_draw.h"
 #include "third_party/blink/renderer/modules/webgl/webgl_multi_draw_instanced.h"
+#include "third_party/blink/renderer/modules/webgl/webgl_video_texture.h"
 #include "third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h"
 
 namespace blink {
@@ -194,6 +195,7 @@
   RegisterExtension<WebGLMultiDraw>(webgl_multi_draw_, kDraftExtension);
   RegisterExtension<WebGLMultiDrawInstanced>(webgl_multi_draw_instanced_,
                                              kDraftExtension);
+  RegisterExtension<WebGLVideoTexture>(webgl_video_texture_, kDraftExtension);
 }
 
 void WebGLRenderingContext::Trace(blink::Visitor* visitor) {
@@ -228,6 +230,7 @@
   visitor->Trace(webgl_lose_context_);
   visitor->Trace(webgl_multi_draw_);
   visitor->Trace(webgl_multi_draw_instanced_);
+  visitor->Trace(webgl_video_texture_);
   WebGLRenderingContextBase::Trace(visitor);
 }
 
diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context.h b/third_party/blink/renderer/modules/webgl/webgl_rendering_context.h
index d5e70ce..7e9d112b 100644
--- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context.h
+++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context.h
@@ -56,6 +56,7 @@
 class WebGLLoseContext;
 class WebGLMultiDraw;
 class WebGLMultiDrawInstanced;
+class WebGLVideoTexture;
 
 class WebGLRenderingContext final : public WebGLRenderingContextBase {
   DEFINE_WRAPPERTYPEINFO();
@@ -128,6 +129,7 @@
   Member<WebGLLoseContext> webgl_lose_context_;
   Member<WebGLMultiDraw> webgl_multi_draw_;
   Member<WebGLMultiDrawInstanced> webgl_multi_draw_instanced_;
+  Member<WebGLVideoTexture> webgl_video_texture_;
 };
 
 DEFINE_TYPE_CASTS(WebGLRenderingContext,
diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
index 06c08f4..093d1b3 100644
--- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
+++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
@@ -92,6 +92,8 @@
 #include "third_party/blink/renderer/modules/webgl/webgl_uniform_location.h"
 #include "third_party/blink/renderer/modules/webgl/webgl_vertex_array_object.h"
 #include "third_party/blink/renderer/modules/webgl/webgl_vertex_array_object_oes.h"
+#include "third_party/blink/renderer/modules/webgl/webgl_video_texture.h"
+#include "third_party/blink/renderer/modules/webgl/webgl_video_texture_enum.h"
 #include "third_party/blink/renderer/platform/bindings/exception_state.h"
 #include "third_party/blink/renderer/platform/bindings/v8_binding_macros.h"
 #include "third_party/blink/renderer/platform/cross_thread_functional.h"
@@ -1834,12 +1836,39 @@
     texture_units_[active_texture_unit_].texture2d_array_binding_ = texture;
   } else if (IsWebGL2OrHigher() && target == GL_TEXTURE_3D) {
     texture_units_[active_texture_unit_].texture3d_binding_ = texture;
+  } else if (target == GL_TEXTURE_VIDEO_IMAGE_WEBGL) {
+    if (!ExtensionEnabled(kWebGLVideoTextureName)) {
+      SynthesizeGLError(
+          GL_INVALID_VALUE, "bindTexture",
+          "unhandled type, WEBGL_video_texture extension not enabled");
+      return;
+    }
+    texture_units_[active_texture_unit_].texture_video_image_binding_ = texture;
   } else {
     SynthesizeGLError(GL_INVALID_ENUM, "bindTexture", "invalid target");
     return;
   }
 
-  ContextGL()->BindTexture(target, ObjectOrZero(texture));
+  // We use TEXTURE_EXTERNAL_OES to implement video texture on Android platform
+  if (target == GL_TEXTURE_VIDEO_IMAGE_WEBGL) {
+#if defined(OS_ANDROID)
+    ContextGL()->BindTexture(GL_TEXTURE_EXTERNAL_OES, ObjectOrZero(texture));
+#else
+    ContextGL()->BindTexture(GL_TEXTURE_2D, ObjectOrZero(texture));
+    if (texture && !texture->GetTarget()) {
+      ContextGL()->TexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
+                                 GL_LINEAR);
+      ContextGL()->TexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
+                                 GL_LINEAR);
+      ContextGL()->TexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,
+                                 GL_CLAMP_TO_EDGE);
+      ContextGL()->TexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,
+                                 GL_CLAMP_TO_EDGE);
+    }
+#endif  // defined OS_ANDROID
+  } else {
+    ContextGL()->BindTexture(target, ObjectOrZero(texture));
+  }
   if (texture) {
     texture->SetTarget(target);
     one_plus_max_non_default_texture_unit_ =
@@ -3770,6 +3799,16 @@
             base_type = GL_INT;
             length = 1;
             break;
+          case GL_SAMPLER_VIDEO_IMAGE_WEBGL:
+            if (!ExtensionEnabled(kWebGLVideoTextureName)) {
+              SynthesizeGLError(
+                  GL_INVALID_VALUE, "getUniform",
+                  "unhandled type, WEBGL_video_texture extension not enabled");
+              return ScriptValue::CreateNull(script_state);
+            }
+            base_type = GL_INT;
+            length = 1;
+            break;
           default:
             if (!IsWebGL2OrHigher()) {
               // Can't handle this type
@@ -5752,6 +5791,15 @@
     return;
   switch (pname) {
     case GL_TEXTURE_MIN_FILTER:
+      if (target == GL_TEXTURE_VIDEO_IMAGE_WEBGL) {
+        if ((is_float && paramf != GL_NEAREST && paramf != GL_LINEAR) ||
+            (!is_float && parami != GL_NEAREST && parami != GL_LINEAR)) {
+          SynthesizeGLError(GL_INVALID_ENUM, "texParameter",
+                            "invalid parameter name");
+          return;
+        }
+      }
+      break;
     case GL_TEXTURE_MAG_FILTER:
       break;
     case GL_TEXTURE_WRAP_R:
@@ -5770,6 +5818,15 @@
         SynthesizeGLError(GL_INVALID_ENUM, "texParameter", "invalid parameter");
         return;
       }
+
+      if (target == GL_TEXTURE_VIDEO_IMAGE_WEBGL) {
+        if ((is_float && paramf != GL_CLAMP_TO_EDGE) ||
+            (!is_float && parami != GL_CLAMP_TO_EDGE)) {
+          SynthesizeGLError(GL_INVALID_ENUM, "texParameter",
+                            "invalid parameter");
+          return;
+        }
+      }
       break;
     case GL_TEXTURE_MAX_ANISOTROPY_EXT:  // EXT_texture_filter_anisotropic
       if (!ExtensionEnabled(kEXTTextureFilterAnisotropicName)) {
@@ -6856,6 +6913,15 @@
       }
       tex = texture_units_[active_texture_unit_].texture2d_array_binding_.Get();
       break;
+    case GL_TEXTURE_VIDEO_IMAGE_WEBGL:
+      if (!ExtensionEnabled(kWebGLVideoTextureName)) {
+        SynthesizeGLError(GL_INVALID_ENUM, function_name,
+                          "invalid texture target");
+        return nullptr;
+      }
+      tex = texture_units_[active_texture_unit_]
+                .texture_video_image_binding_.Get();
+      break;
     default:
       SynthesizeGLError(GL_INVALID_ENUM, function_name,
                         "invalid texture target");
@@ -7071,6 +7137,8 @@
     case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
     case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
       return max_cube_map_texture_level_;
+    case GL_TEXTURE_VIDEO_IMAGE_WEBGL:
+      return 1;
   }
   return 0;
 }
@@ -7108,6 +7176,7 @@
 
   switch (target) {
     case GL_TEXTURE_2D:
+    case GL_TEXTURE_VIDEO_IMAGE_WEBGL:
       if (width > (max_texture_size_ >> level) ||
           height > (max_texture_size_ >> level)) {
         SynthesizeGLError(GL_INVALID_VALUE, function_name,
@@ -8013,6 +8082,7 @@
   visitor->Trace(texture_cube_map_binding_);
   visitor->Trace(texture3d_binding_);
   visitor->Trace(texture2d_array_binding_);
+  visitor->Trace(texture_video_image_binding_);
 }
 
 void WebGLRenderingContextBase::Trace(blink::Visitor* visitor) {
diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
index f0b7867..7fb4669 100644
--- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
+++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
@@ -586,6 +586,7 @@
     TraceWrapperMember<WebGLTexture> texture_cube_map_binding_;
     TraceWrapperMember<WebGLTexture> texture3d_binding_;
     TraceWrapperMember<WebGLTexture> texture2d_array_binding_;
+    TraceWrapperMember<WebGLTexture> texture_video_image_binding_;
 
     void Trace(blink::Visitor*);
     // Wrappers are traced by parent since TextureUnitState is not a heap
@@ -637,6 +638,7 @@
   friend class WebGLMultiview;
   friend class WebGLRenderingContextErrorMessageCallback;
   friend class WebGLVertexArrayObjectBase;
+  friend class WebGLVideoTexture;
   friend class ScopedDrawingBufferBinder;
   friend class ScopedTexture2DRestorer;
   friend class ScopedFramebufferRestorer;
diff --git a/third_party/blink/renderer/modules/webgl/webgl_video_frame_info.cc b/third_party/blink/renderer/modules/webgl/webgl_video_frame_info.cc
new file mode 100644
index 0000000..feff9e11
--- /dev/null
+++ b/third_party/blink/renderer/modules/webgl/webgl_video_frame_info.cc
@@ -0,0 +1,21 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/modules/webgl/webgl_video_frame_info.h"
+
+namespace blink {
+
+WebGLVideoFrameInfo* WebGLVideoFrameInfo::Create(
+    WebMediaPlayer::VideoFrameUploadMetadata* frame_metadata_ptr) {
+  return MakeGarbageCollected<WebGLVideoFrameInfo>(frame_metadata_ptr);
+}
+
+WebGLVideoFrameInfo::WebGLVideoFrameInfo(
+    WebMediaPlayer::VideoFrameUploadMetadata* frame_metadata_ptr) {
+  current_time_ = frame_metadata_ptr->timestamp.InMicrosecondsF();
+  texture_width_ = frame_metadata_ptr->visible_rect.width();
+  texture_height_ = frame_metadata_ptr->visible_rect.height();
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/modules/webgl/webgl_video_frame_info.h b/third_party/blink/renderer/modules/webgl/webgl_video_frame_info.h
new file mode 100644
index 0000000..e49b4d4f
--- /dev/null
+++ b/third_party/blink/renderer/modules/webgl/webgl_video_frame_info.h
@@ -0,0 +1,32 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGL_WEBGL_VIDEO_FRAME_INFO_H_
+#define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGL_WEBGL_VIDEO_FRAME_INFO_H_
+
+#include "third_party/blink/public/platform/web_media_player.h"
+#include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
+
+namespace blink {
+
+class WebGLVideoFrameInfo final : public ScriptWrappable {
+  DEFINE_WRAPPERTYPEINFO();
+
+ public:
+  static WebGLVideoFrameInfo* Create(WebMediaPlayer::VideoFrameUploadMetadata*);
+  explicit WebGLVideoFrameInfo(WebMediaPlayer::VideoFrameUploadMetadata*);
+
+  double currentTime() const { return current_time_; }
+  unsigned textureWidth() const { return texture_width_; }
+  unsigned textureHeight() const { return texture_height_; }
+
+ private:
+  double current_time_ = 0;
+  unsigned texture_width_ = 0;
+  unsigned texture_height_ = 0;
+};
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGL_WEBGL_VIDEO_FRAME_INFO_H_
diff --git a/third_party/blink/renderer/modules/webgl/webgl_video_frame_info.idl b/third_party/blink/renderer/modules/webgl/webgl_video_frame_info.idl
new file mode 100644
index 0000000..dc5e5be0
--- /dev/null
+++ b/third_party/blink/renderer/modules/webgl/webgl_video_frame_info.idl
@@ -0,0 +1,12 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://www.khronos.org/registry/webgl/extensions/proposals/WEBGL_video_texture/
+[
+    RuntimeEnabled=WebGLDraftExtensions
+] interface WebGLVideoFrameInfo {
+    readonly attribute double currentTime;
+    readonly attribute unsigned long textureWidth;
+    readonly attribute unsigned long textureHeight;
+};
diff --git a/third_party/blink/renderer/modules/webgl/webgl_video_texture.cc b/third_party/blink/renderer/modules/webgl/webgl_video_texture.cc
new file mode 100644
index 0000000..b0cc578
--- /dev/null
+++ b/third_party/blink/renderer/modules/webgl/webgl_video_texture.cc
@@ -0,0 +1,106 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/modules/webgl/webgl_video_texture.h"
+
+#include "build/build_config.h"
+#include "third_party/blink/renderer/core/html/media/html_video_element.h"
+#include "third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h"
+#include "third_party/blink/renderer/modules/webgl/webgl_video_frame_info.h"
+#include "third_party/blink/renderer/modules/webgl/webgl_video_texture_enum.h"
+#include "third_party/blink/renderer/platform/bindings/exception_state.h"
+
+namespace blink {
+
+WebGLVideoTexture::WebGLVideoTexture(WebGLRenderingContextBase* context)
+    : WebGLExtension(context) {
+  context->ExtensionsUtil()->EnsureExtensionEnabled("WEBGL_video_texture");
+}
+
+WebGLExtensionName WebGLVideoTexture::GetName() const {
+  return kWebGLVideoTextureName;
+}
+
+WebGLVideoTexture* WebGLVideoTexture::Create(
+    WebGLRenderingContextBase* context) {
+  return MakeGarbageCollected<WebGLVideoTexture>(context);
+}
+
+// We only need GL_OES_EGL_image_external extension on Android.
+bool WebGLVideoTexture::Supported(WebGLRenderingContextBase* context) {
+#if defined(OS_ANDROID)
+  return context->ExtensionsUtil()->SupportsExtension(
+      "GL_OES_EGL_image_external");
+#else  // defined OS_ANDROID
+  return true;
+#endif
+}
+
+const char* WebGLVideoTexture::ExtensionName() {
+  return "WEBGL_video_texture";
+}
+
+void WebGLVideoTexture::Trace(blink::Visitor* visitor) {
+  visitor->Trace(current_frame_info_);
+  WebGLExtension::Trace(visitor);
+}
+
+WebGLVideoFrameInfo* WebGLVideoTexture::VideoElementTargetVideoTexture(
+    ExecutionContext* execution_context,
+    unsigned target,
+    HTMLVideoElement* video,
+    ExceptionState& exceptionState) {
+  WebGLExtensionScopedContext scoped(this);
+  if (!video || scoped.IsLost())
+    return nullptr;
+
+  if (target != GL_TEXTURE_VIDEO_IMAGE_WEBGL) {
+    scoped.Context()->SynthesizeGLError(GL_INVALID_ENUM, "WEBGLVideoTexture",
+                                        "invalid texture target");
+  }
+
+  if (!scoped.Context()->ValidateHTMLVideoElement(
+          execution_context->GetSecurityOrigin(), "WEBGLVideoTexture", video,
+          exceptionState) ||
+      !scoped.Context()->ValidateTexFuncDimensions(
+          "WEBGLVideoTexture", WebGLRenderingContextBase::kTexImage, target, 0,
+          video->videoWidth(), video->videoHeight(), 1))
+    return nullptr;
+
+  WebGLTexture* texture =
+      scoped.Context()->ValidateTextureBinding("WEBGLVideoTexture", target);
+  if (!texture)
+    return nullptr;
+
+  // For WebGL last-uploaded-frame-metadata API.
+  WebMediaPlayer::VideoFrameUploadMetadata frame_metadata = {};
+  int already_uploaded_id = HTMLVideoElement::kNoAlreadyUploadedFrame;
+  WebMediaPlayer::VideoFrameUploadMetadata* frame_metadata_ptr =
+      &frame_metadata;
+  if (RuntimeEnabledFeatures::ExtraWebGLVideoTextureMetadataEnabled()) {
+    already_uploaded_id = texture->GetLastUploadedVideoFrameId();
+  }
+
+#if defined(OS_ANDROID)
+  target = GL_TEXTURE_EXTERNAL_OES;
+#else  // defined OS_ANDROID
+  target = GL_TEXTURE_2D;
+
+#endif  // defined OS_ANDROID
+
+  video->PrepareVideoFrameForWebGL(scoped.Context()->ContextGL(), target,
+                                   texture->Object(), already_uploaded_id,
+                                   frame_metadata_ptr);
+
+  if (!frame_metadata_ptr) {
+    return nullptr;
+  }
+
+  if (frame_metadata_ptr)
+    current_frame_info_ = WebGLVideoFrameInfo::Create(frame_metadata_ptr);
+
+  return current_frame_info_;
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/modules/webgl/webgl_video_texture.h b/third_party/blink/renderer/modules/webgl/webgl_video_texture.h
new file mode 100644
index 0000000..c6674299
--- /dev/null
+++ b/third_party/blink/renderer/modules/webgl/webgl_video_texture.h
@@ -0,0 +1,42 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGL_WEBGL_VIDEO_TEXTURE_H_
+#define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGL_WEBGL_VIDEO_TEXTURE_H_
+
+#include "third_party/blink/renderer/modules/webgl/webgl_extension.h"
+
+namespace blink {
+
+class HTMLVideoElement;
+class WebGLVideoFrameInfo;
+
+class WebGLVideoTexture final : public WebGLExtension {
+  DEFINE_WRAPPERTYPEINFO();
+
+ public:
+  static WebGLVideoTexture* Create(WebGLRenderingContextBase*);
+  static bool Supported(WebGLRenderingContextBase*);
+  static const char* ExtensionName();
+
+  explicit WebGLVideoTexture(WebGLRenderingContextBase*);
+
+  WebGLExtensionName GetName() const override;
+
+  void Trace(blink::Visitor*) override;
+
+  // Get video frame from video frame compositor and bind it to platform
+  // texture.
+  WebGLVideoFrameInfo* VideoElementTargetVideoTexture(ExecutionContext*,
+                                                      unsigned,
+                                                      HTMLVideoElement*,
+                                                      ExceptionState&);
+
+ private:
+  Member<WebGLVideoFrameInfo> current_frame_info_;
+};
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGL_WEBGL_VIDEO_TEXTURE_H_
diff --git a/third_party/blink/renderer/modules/webgl/webgl_video_texture.idl b/third_party/blink/renderer/modules/webgl/webgl_video_texture.idl
new file mode 100644
index 0000000..998d2b8
--- /dev/null
+++ b/third_party/blink/renderer/modules/webgl/webgl_video_texture.idl
@@ -0,0 +1,18 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://www.khronos.org/registry/webgl/extensions/proposals/WEBGL_video_texture/
+
+typedef unsigned long GLenum;
+
+[
+    RuntimeEnabled=WebGLDraftExtensions,
+    DoNotCheckConstants,
+    NoInterfaceObject
+] interface WebGLVideoTexture {
+    const GLenum TEXTURE_VIDEO_IMAGE = 0x9248;
+    const GLenum SAMPLER_VIDEO_IMAGE = 0x9249;
+
+    [CallWith=ExecutionContext, RaisesException] WebGLVideoFrameInfo VideoElementTargetVideoTexture(GLenum target, HTMLVideoElement video);
+};
\ No newline at end of file
diff --git a/third_party/blink/renderer/modules/webgl/webgl_video_texture_enum.h b/third_party/blink/renderer/modules/webgl/webgl_video_texture_enum.h
new file mode 100644
index 0000000..6f59a154
--- /dev/null
+++ b/third_party/blink/renderer/modules/webgl/webgl_video_texture_enum.h
@@ -0,0 +1,10 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGL_WEBGL_VIDEO_TEXTURE_ENUM_H_
+#define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGL_WEBGL_VIDEO_TEXTURE_ENUM_H_
+
+#define GL_TEXTURE_VIDEO_IMAGE_WEBGL 0x9248
+#define GL_SAMPLER_VIDEO_IMAGE_WEBGL 0x9249
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGL_WEBGL_VIDEO_TEXTURE_ENUM_H_
diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn
index c7504e6..5a83754 100644
--- a/third_party/blink/renderer/platform/BUILD.gn
+++ b/third_party/blink/renderer/platform/BUILD.gn
@@ -1093,6 +1093,7 @@
     "graphics/paint_record_pattern.h",
     "graphics/paint_worklet_paint_dispatcher.cc",
     "graphics/paint_worklet_paint_dispatcher.h",
+    "graphics/paint_worklet_painter.h",
     "graphics/path.cc",
     "graphics/path.h",
     "graphics/path_traversal_state.cc",
diff --git a/third_party/blink/renderer/platform/graphics/paint_worklet_paint_dispatcher.cc b/third_party/blink/renderer/platform/graphics/paint_worklet_paint_dispatcher.cc
index dd31267f..71a24f2 100644
--- a/third_party/blink/renderer/platform/graphics/paint_worklet_paint_dispatcher.cc
+++ b/third_party/blink/renderer/platform/graphics/paint_worklet_paint_dispatcher.cc
@@ -24,6 +24,27 @@
   return std::make_unique<PlatformPaintWorkletLayerPainter>(dispatcher);
 }
 
+void PaintWorkletPaintDispatcher::RegisterPaintWorkletPainter(
+    PaintWorkletPainter* painter,
+    scoped_refptr<base::SingleThreadTaskRunner> painter_runner) {
+  TRACE_EVENT0("cc",
+               "PaintWorkletPaintDispatcher::RegisterPaintWorkletPainter");
+
+  DCHECK(painter);
+  DCHECK(painter_map_.find(painter) == painter_map_.end());
+  painter_map_.insert(painter, painter_runner);
+}
+
+void PaintWorkletPaintDispatcher::UnregisterPaintWorkletPainter(
+    PaintWorkletPainter* painter) {
+  TRACE_EVENT0("cc",
+               "PaintWorkletPaintDispatcher::"
+               "UnregisterPaintWorkletPainter");
+  DCHECK(painter);
+  DCHECK(painter_map_.find(painter) != painter_map_.end());
+  painter_map_.erase(painter);
+}
+
 // TODO(xidachen): we should bundle all PaintWorkletInputs and send them to the
 // |worklet_queue| once, instead of sending one PaintWorkletInput at a time.
 // This avoids thread hop and boost performance.
diff --git a/third_party/blink/renderer/platform/graphics/paint_worklet_paint_dispatcher.h b/third_party/blink/renderer/platform/graphics/paint_worklet_paint_dispatcher.h
index ae585376..a86eaeb 100644
--- a/third_party/blink/renderer/platform/graphics/paint_worklet_paint_dispatcher.h
+++ b/third_party/blink/renderer/platform/graphics/paint_worklet_paint_dispatcher.h
@@ -8,7 +8,13 @@
 #include <memory>
 
 #include "base/macros.h"
+#include "base/single_thread_task_runner.h"
+#include "third_party/blink/renderer/platform/graphics/paint_worklet_painter.h"
 #include "third_party/blink/renderer/platform/graphics/platform_paint_worklet_layer_painter.h"
+#include "third_party/blink/renderer/platform/heap/handle.h"
+#include "third_party/blink/renderer/platform/heap/persistent.h"
+#include "third_party/blink/renderer/platform/heap/visitor.h"
+#include "third_party/blink/renderer/platform/wtf/hash_map.h"
 #include "third_party/blink/renderer/platform/wtf/thread_safe_ref_counted.h"
 
 namespace blink {
@@ -25,9 +31,26 @@
 
   PaintWorkletPaintDispatcher() = default;
 
+  // Interface for use by the PaintWorklet thread(s) to request calls.
+  // (To the given Painter on the given TaskRunner.)
+  void RegisterPaintWorkletPainter(
+      PaintWorkletPainter*,
+      scoped_refptr<base::SingleThreadTaskRunner> mutator_runner);
+
+  void UnregisterPaintWorkletPainter(PaintWorkletPainter*);
+
   sk_sp<cc::PaintRecord> Paint(cc::PaintWorkletInput*);
 
  private:
+  friend class PaintWorkletProxyClientTest;
+  // We can have more than one task-runner because using a worklet inside a
+  // frame with a different origin causes a new global scope => new thread.
+  using PaintWorkletPainterToTaskRunnerMap =
+      HashMap<CrossThreadPersistent<PaintWorkletPainter>,
+              scoped_refptr<base::SingleThreadTaskRunner>>;
+
+  PaintWorkletPainterToTaskRunnerMap painter_map_;
+
   DISALLOW_COPY_AND_ASSIGN(PaintWorkletPaintDispatcher);
 };
 
diff --git a/third_party/blink/renderer/platform/graphics/paint_worklet_painter.h b/third_party/blink/renderer/platform/graphics/paint_worklet_painter.h
new file mode 100644
index 0000000..d900eba3
--- /dev/null
+++ b/third_party/blink/renderer/platform/graphics/paint_worklet_painter.h
@@ -0,0 +1,36 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_WORKLET_PAINTER_H_
+#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_WORKLET_PAINTER_H_
+
+#include "cc/paint/paint_worklet_input.h"
+#include "third_party/blink/renderer/platform/graphics/paint/paint_record.h"
+#include "third_party/blink/renderer/platform/heap/handle.h"
+#include "third_party/blink/renderer/platform/platform_export.h"
+#include "third_party/skia/include/core/SkRefCnt.h"
+
+namespace blink {
+
+// This class exists for layering needs, and it is implemented by
+// PaintWorkletProxyClient.
+//
+// PaintWorkletProxyClient lives in modules/csspaint as it needs to
+// call the worklet code there. However it is referenced from
+// PaintWorkletPaintDispatcher, which lives in platform/graphics,
+// which is not allowed to depend on modules/csspaint.
+// PaintWorkletPaintDispatcher cannot be moved into modules/csspaint as it is
+// referenced from elsewhere in core/ (which also cannot depend on modules).
+// Therefore an intermediate interface is required to solve the layering issue.
+//
+// TODO(xidachen): consider making this a delegate class of
+// PaintWorkletPaintDispatcher.
+class PLATFORM_EXPORT PaintWorkletPainter : public GarbageCollectedMixin {
+ public:
+  virtual ~PaintWorkletPainter() = default;
+};
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_WORKLET_PAINTER_H_
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource.cc b/third_party/blink/renderer/platform/loader/fetch/resource.cc
index ad6b958..fb7a9475eb 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/resource.cc
@@ -125,7 +125,6 @@
                    const ResourceLoaderOptions& options)
     : type_(type),
       status_(ResourceStatus::kNotStarted),
-      identifier_(0),
       encoded_size_(0),
       encoded_size_memory_usage_(0),
       decoded_size_(0),
@@ -927,7 +926,7 @@
   return String::Format(
              "web_cache/%s_resources/",
              ResourceTypeToString(GetType(), Options().initiator_info.name)) +
-         String::Number(identifier_);
+         String::Number(InspectorId());
 }
 
 void Resource::SetCachePolicyBypassingCache() {
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource.h b/third_party/blink/renderer/platform/loader/fetch/resource.h
index 213b81e..ae0da43 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource.h
+++ b/third_party/blink/renderer/platform/loader/fetch/resource.h
@@ -168,8 +168,7 @@
     return *error_;
   }
 
-  void SetIdentifier(uint64_t identifier) { identifier_ = identifier; }
-  uint64_t Identifier() const { return identifier_; }
+  uint64_t InspectorId() const { return LastResourceRequest().InspectorId(); }
 
   virtual bool ShouldIgnoreHTTPStatusCodeErrors() const { return false; }
 
@@ -534,8 +533,6 @@
 
   TimeTicks load_response_end_;
 
-  uint64_t identifier_;
-
   size_t encoded_size_;
   size_t encoded_size_memory_usage_;
   size_t decoded_size_;
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
index 96136805..0e96155 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
@@ -695,7 +695,6 @@
   resource->SetDataBufferingPolicy(kBufferData);
   if (data->size())
     resource->SetResourceBuffer(data);
-  resource->SetIdentifier(CreateUniqueIdentifier());
   resource->SetCacheIdentifier(cache_identifier);
   resource->Finish(TimeTicks(), task_runner_.get());
 
@@ -918,6 +917,7 @@
                                            ResourceClient* client) {
   uint64_t identifier = CreateUniqueIdentifier();
   ResourceRequest& resource_request = params.MutableResourceRequest();
+  resource_request.SetInspectorId(identifier);
   TRACE_EVENT_NESTABLE_ASYNC_BEGIN1(
       TRACE_DISABLED_BY_DEFAULT("network"), "ResourceLoad",
       TRACE_ID_WITH_SCOPE("BlinkResourceID", TRACE_ID_LOCAL(identifier)),
@@ -1043,10 +1043,8 @@
   // TODO(yoav): turn to a DCHECK. See https://crbug.com/690632
   CHECK_EQ(resource->GetType(), resource_type);
 
-  if (policy != kUse) {
-    resource->SetIdentifier(identifier);
+  if (policy != kUse)
     resource->VirtualTimePauser() = std::move(pauser);
-  }
 
   if (client)
     client->SetResource(resource, task_runner_.get());
@@ -1089,7 +1087,7 @@
   if (policy != kUse)
     InsertAsPreloadIfNecessary(resource, params, resource_type);
 
-  if (resource->Identifier() != identifier ||
+  if (resource->InspectorId() != identifier ||
       (!resource->StillNeedsLoad() && !resource->IsLoading())) {
     TRACE_EVENT_NESTABLE_ASYNC_END1(
         TRACE_DISABLED_BY_DEFAULT("network"), "ResourceLoad",
@@ -1828,7 +1826,7 @@
     }
   }
   Context().DispatchDidFinishLoading(
-      resource->Identifier(), response_end, encoded_data_length,
+      resource->InspectorId(), response_end, encoded_data_length,
       resource->GetResponse().DecodedBodyLength(), should_report_corb_blocking,
       FetchContext::ResourceResponseType::kNotFromMemoryCache);
   resource->ReloadIfLoFiOrPlaceholderImage(this, Resource::kReloadIfNeeded);
@@ -1858,7 +1856,7 @@
   const bool is_internal_request = resource->Options().initiator_info.name ==
                                    fetch_initiator_type_names::kInternal;
   Context().DispatchDidFail(
-      resource->LastResourceRequest().Url(), resource->Identifier(), error,
+      resource->LastResourceRequest().Url(), resource->InspectorId(), error,
       resource->GetResponse().EncodedDataLength(), is_internal_request);
   resource->ReloadIfLoFiOrPlaceholderImage(this, Resource::kReloadIfNeeded);
 }
@@ -1892,13 +1890,13 @@
 
     ResourceResponse response;
 
-    blink::probe::PlatformSendRequest probe(&Context(), resource->Identifier(),
+    blink::probe::PlatformSendRequest probe(&Context(), resource->InspectorId(),
                                             request, response,
                                             resource->Options().initiator_info);
 
     resource->VirtualTimePauser().PauseVirtualTime();
-    Context().DispatchWillSendRequest(resource->Identifier(), request, response,
-                                      resource->GetType(),
+    Context().DispatchWillSendRequest(resource->InspectorId(), request,
+                                      response, resource->GetType(),
                                       resource->Options().initiator_info);
 
     // TODO(shaochuan): Saving modified ResourceRequest back to |resource|,
@@ -1990,10 +1988,10 @@
     TRACE_EVENT_NESTABLE_ASYNC_INSTANT1(
         TRACE_DISABLED_BY_DEFAULT("network"), "ResourcePrioritySet",
         TRACE_ID_WITH_SCOPE("BlinkResourceID",
-                            TRACE_ID_LOCAL(resource->Identifier())),
+                            TRACE_ID_LOCAL(resource->InspectorId())),
         "data", ResourcePrioritySetData(resource_load_priority));
     Context().DispatchDidChangeResourcePriority(
-        resource->Identifier(), resource_load_priority,
+        resource->InspectorId(), resource_load_priority,
         resource_priority.intra_priority_value);
   }
 }
@@ -2032,7 +2030,7 @@
                        resource->LastResourceRequest().Url(), params.Options(),
                        SecurityViolationReportingPolicy::kReport,
                        resource->LastResourceRequest().GetRedirectStatus());
-  RequestLoadStarted(resource->Identifier(), resource, params, kUse);
+  RequestLoadStarted(resource->InspectorId(), resource, params, kUse);
 }
 
 void ResourceFetcher::PrepareForLeakDetection() {
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc b/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc
index d61cb18..dd183e0 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc
@@ -792,7 +792,7 @@
                            unused_virtual_time_pauser,
                            resource_->GetType());
   Context().DispatchWillSendRequest(
-      resource_->Identifier(), *new_request, redirect_response_to_pass,
+      resource_->InspectorId(), *new_request, redirect_response_to_pass,
       resource_->GetType(), options.initiator_info);
 
   // First-party cookie logic moved from DocumentLoader in Blink to
@@ -1009,7 +1009,7 @@
 
   // FrameType never changes during the lifetime of a request.
   Context().DispatchDidReceiveResponse(
-      resource_->Identifier(), initial_request, response_to_pass, resource_,
+      resource_->InspectorId(), initial_request, response_to_pass, resource_,
       FetchContext::ResourceResponseType::kNotFromMemoryCache);
 
   // When streaming, unpause virtual time early to prevent deadlocking
@@ -1082,13 +1082,13 @@
 void ResourceLoader::DidReceiveData(const char* data, int length) {
   CHECK_GE(length, 0);
 
-  Context().DispatchDidReceiveData(resource_->Identifier(), data, length);
+  Context().DispatchDidReceiveData(resource_->InspectorId(), data, length);
   resource_->AppendData(data, length);
 }
 
 void ResourceLoader::DidReceiveTransferSizeUpdate(int transfer_size_diff) {
   DCHECK_GT(transfer_size_diff, 0);
-  Context().DispatchDidReceiveEncodedData(resource_->Identifier(),
+  Context().DispatchDidReceiveEncodedData(resource_->InspectorId(),
                                           transfer_size_diff);
 }
 
@@ -1096,7 +1096,7 @@
   TRACE_EVENT_NESTABLE_ASYNC_END1(
       TRACE_DISABLED_BY_DEFAULT("network"), "ResourceLoad",
       TRACE_ID_WITH_SCOPE("BlinkResourceID",
-                          TRACE_ID_LOCAL(resource_->Identifier())),
+                          TRACE_ID_LOCAL(resource_->InspectorId())),
       "endData", EndResourceLoadData(RequestOutcome::kSuccess));
 
   fetcher_->HandleLoaderFinish(
@@ -1142,7 +1142,7 @@
   TRACE_EVENT_NESTABLE_ASYNC_END1(
       TRACE_DISABLED_BY_DEFAULT("network"), "ResourceLoad",
       TRACE_ID_WITH_SCOPE("BlinkResourceID",
-                          TRACE_ID_LOCAL(resource_->Identifier())),
+                          TRACE_ID_LOCAL(resource_->InspectorId())),
       "endData", EndResourceLoadData(RequestOutcome::kSuccess));
 
   fetcher_->HandleLoaderFinish(
@@ -1205,7 +1205,7 @@
   TRACE_EVENT_NESTABLE_ASYNC_END1(
       TRACE_DISABLED_BY_DEFAULT("network"), "ResourceLoad",
       TRACE_ID_WITH_SCOPE("BlinkResourceID",
-                          TRACE_ID_LOCAL(resource_->Identifier())),
+                          TRACE_ID_LOCAL(resource_->InspectorId())),
       "endData", EndResourceLoadData(RequestOutcome::kFail));
 
   fetcher_->HandleLoaderError(resource_.Get(), error,
@@ -1367,7 +1367,7 @@
   if (scheduler_client_id_ == ResourceLoadScheduler::kInvalidClientId)
     return;
 
-  Context().DispatchDidReceiveData(resource_->Identifier(), nullptr, delta);
+  Context().DispatchDidReceiveData(resource_->InspectorId(), nullptr, delta);
   resource_->DidDownloadData(delta);
 }
 
@@ -1378,7 +1378,7 @@
   if (scheduler_client_id_ == ResourceLoadScheduler::kInvalidClientId)
     return;
 
-  Context().DispatchDidDownloadToBlob(resource_->Identifier(), blob.get());
+  Context().DispatchDidDownloadToBlob(resource_->InspectorId(), blob.get());
   resource_->DidDownloadToBlob(blob);
 
   blob_finished_ = true;
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_request.cc b/third_party/blink/renderer/platform/loader/fetch/resource_request.cc
index 275526d4..528db75 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_request.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_request.cc
@@ -129,6 +129,7 @@
   request->SetRequestedWithHeader(GetRequestedWithHeader());
   request->SetClientDataHeader(GetClientDataHeader());
   request->SetUkmSourceId(GetUkmSourceId());
+  request->SetInspectorId(InspectorId());
 
   return request;
 }
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_request.h b/third_party/blink/renderer/platform/loader/fetch/resource_request.h
index 33cab98..f8da25b9 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_request.h
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_request.h
@@ -418,6 +418,9 @@
     return fetch_window_id_;
   }
 
+  void SetInspectorId(uint64_t inspector_id) { inspector_id_ = inspector_id; }
+  uint64_t InspectorId() const { return inspector_id_; }
+
  private:
   using SharableExtraData =
       base::RefCountedData<std::unique_ptr<WebURLRequest::ExtraData>>;
@@ -495,6 +498,8 @@
   ukm::SourceId ukm_source_id_ = ukm::kInvalidSourceId;
 
   base::UnguessableToken fetch_window_id_;
+
+  uint64_t inspector_id_ = 0;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/testing/empty_web_media_player.h b/third_party/blink/renderer/platform/testing/empty_web_media_player.h
index ec54f68..47b89036 100644
--- a/third_party/blink/renderer/platform/testing/empty_web_media_player.h
+++ b/third_party/blink/renderer/platform/testing/empty_web_media_player.h
@@ -35,7 +35,7 @@
   WebTimeRanges Buffered() const override;
   WebTimeRanges Seekable() const override;
   void SetSinkId(const WebString& sink_id,
-                 std::unique_ptr<WebSetSinkIdCallbacks>) override {}
+                 WebSetSinkIdCompleteCallback) override {}
   bool HasVideo() const override { return false; }
   bool HasAudio() const override { return false; }
   WebSize NaturalSize() const override;
diff --git a/third_party/blink/renderer/platform/wtf/text/wtf_string.cc b/third_party/blink/renderer/platform/wtf/text/wtf_string.cc
index a8a7c7cf..233e6593 100644
--- a/third_party/blink/renderer/platform/wtf/text/wtf_string.cc
+++ b/third_party/blink/renderer/platform/wtf/text/wtf_string.cc
@@ -29,9 +29,11 @@
 #include "build/build_config.h"
 #include "third_party/blink/renderer/platform/wtf/ascii_ctype.h"
 #include "third_party/blink/renderer/platform/wtf/dtoa.h"
+#include "third_party/blink/renderer/platform/wtf/hex_number.h"
 #include "third_party/blink/renderer/platform/wtf/math_extras.h"
 #include "third_party/blink/renderer/platform/wtf/text/character_names.h"
 #include "third_party/blink/renderer/platform/wtf/text/cstring.h"
+#include "third_party/blink/renderer/platform/wtf/text/string_builder.h"
 #include "third_party/blink/renderer/platform/wtf/text/unicode.h"
 #include "third_party/blink/renderer/platform/wtf/text/utf8.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
@@ -364,46 +366,42 @@
   if (IsNull())
     return "<null>";
 
-  String str;
-  str.append('"');
+  StringBuilder builder;
+  builder.Append('"');
   for (unsigned index = 0; index < length(); ++index) {
     // Print shorthands for select cases.
     UChar character = (*impl_)[index];
     switch (character) {
       case '\t':
-        str.append("\\t");
+        builder.Append("\\t");
         break;
       case '\n':
-        str.append("\\n");
+        builder.Append("\\n");
         break;
       case '\r':
-        str.append("\\r");
+        builder.Append("\\r");
         break;
       case '"':
-        str.append("\\\"");
+        builder.Append("\\\"");
         break;
       case '\\':
-        str.append("\\\\");
+        builder.Append("\\\\");
         break;
       default:
         if (IsASCIIPrintable(character)) {
-          str.append(static_cast<char>(character));
+          builder.Append(static_cast<char>(character));
         } else {
           // Print "\uXXXX" for control or non-ASCII characters.
-          str.append("\\u");
-          std::stringstream out;
-          out.width(4);
-          out.fill('0');
-          out.setf(std::ios_base::hex, std::ios_base::basefield);
-          out.setf(std::ios::uppercase);
-          out << character;
-          str.append(out.str().c_str());
+          builder.Append("\\u");
+          HexNumber::AppendByteAsHex(character >> 8, builder,
+                                     HexNumber::kUppercase);
+          HexNumber::AppendByteAsHex(character, builder, HexNumber::kUppercase);
         }
         break;
     }
   }
-  str.append('"');
-  return str;
+  builder.Append('"');
+  return builder.ToString();
 }
 
 String String::Number(float number) {
diff --git a/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py b/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
index 4a9876e7..e93f44b 100755
--- a/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
+++ b/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
@@ -393,6 +393,12 @@
         ],
     },
     {
+        'paths': ['third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator.cc'],
+        'allowed': [
+            'base::MemoryPressureListener',
+        ],
+    },
+    {
         'paths': ['third_party/blink/renderer/core/animation'],
         'allowed': [
             '[a-z_]+_functions::.+',
diff --git a/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG b/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG
index 62bc914..c5fca84 100644
--- a/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG
+++ b/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG
@@ -315,7 +315,6 @@
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-align-self-001.html [ Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-align-self-vertWM-004.html [ Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-vertWM-001.html [ Failure ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-multicol-002.html [ Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/counter-styles-3/descriptor-suffix.html [ Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/counter-styles-3/redefine-builtin.html [ Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-horiz-002.xhtml [ Pass ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index f4e569aa..1056682 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -560,7 +560,6 @@
 crbug.com/881057 [ Mac ] external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-clip-005.html [ Failure ]
 crbug.com/880802 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ruby-stacking-and-clipping-001.html [ Failure ]
 crbug.com/881057 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-stacking-context-001b.html [ Failure ]
-crbug.com/863454 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-multicol-002.html [ Failure ]
 crbug.com/863454 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-multicol-003.html [ Failure ]
 
 # [css-align]
@@ -6191,4 +6190,6 @@
 
 ## Temp while landing a fix from webrtc importer
 crbug.com/948055 external/wpt/webrtc/RTCDataChannel-id.html [ Failure Pass ]
-
+crbug.com/948055 external/wpt/webrtc/RTCPeerConnection-createDataChannel.html [ Failure Pass ]
+crbug.com/948055 virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCDataChannel-id.html [ Failure Pass ]
+crbug.com/948055 virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCPeerConnection-createDataChannel.html [ Failure Pass ]
diff --git a/third_party/blink/web_tests/compositing/video-frame-size-change.html b/third_party/blink/web_tests/compositing/video-frame-size-change.html
index 801a33b9..9e61dae2 100644
--- a/third_party/blink/web_tests/compositing/video-frame-size-change.html
+++ b/third_party/blink/web_tests/compositing/video-frame-size-change.html
@@ -10,11 +10,7 @@
             }
 
             function load() {
-                var canplayCount = 0;
                 function oncanplay() {
-                    if (++canplayCount < 2) {
-                        return;
-                    }
                     // Make sure we render the first frame.
                     requestAnimationFrame(function() {
                         video.play();
@@ -24,12 +20,12 @@
                 // Get the first video to stay on frame zero for comparison purposes.
                 var video = document.getElementsByTagName("video")[0];
                 video.src = "../media/resources/frame_size_change.webm";
-                video.addEventListener('canplay', oncanplay);
+                video.addEventListener('canplay', oncanplay, {once: true});
 
                 // Get the second video to play through the clip with changing dimensions.
                 video = document.getElementsByTagName("video")[1];
                 video.src = "../media/resources/frame_size_change.webm";
-                video.addEventListener('canplay', oncanplay);
+                video.addEventListener('canplay', oncanplay, {once: true});
 
                 video.addEventListener('playing', function() {
                     // Make sure the video plays for a bit.
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
index 7ee797b..25903f9 100644
--- a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
+++ b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
@@ -10233,6 +10233,12 @@
 interface WebGLVertexArrayObject
     attribute @@toStringTag
     method constructor
+interface WebGLVideoFrameInfo
+    attribute @@toStringTag
+    getter currentTime
+    getter textureHeight
+    getter textureWidth
+    method constructor
 interface WebKitCSSMatrix : DOMMatrixReadOnly
     attribute @@toStringTag
     getter a
diff --git a/third_party/cacheinvalidation/overrides/google/cacheinvalidation/deps/gmock.h b/third_party/cacheinvalidation/overrides/google/cacheinvalidation/deps/gmock.h
index d896e723..6b1b1a7e 100644
--- a/third_party/cacheinvalidation/overrides/google/cacheinvalidation/deps/gmock.h
+++ b/third_party/cacheinvalidation/overrides/google/cacheinvalidation/deps/gmock.h
@@ -25,7 +25,7 @@
 
   // Deserializes the string as a protobuf of the same type as the expected
   // protobuf.
-  Proto* Deserialize(const string& str) const {
+  Proto* Deserialize(const std::string& str) const {
     Proto* proto = new Proto;
     if (proto->ParsePartialFromString(str)) {
       return proto;
@@ -45,7 +45,8 @@
     proto_matcher_.DescribeTo(os);
   }
 
-  bool MatchAndExplain(const string& arg, MatchResultListener* listener) const {
+  bool MatchAndExplain(const std::string& arg,
+                       MatchResultListener* listener) const {
     // Deserializes the string arg as a protobuf of the same type as the
     // expected protobuf.
     std::unique_ptr<const Proto> deserialized_arg(Deserialize(arg));
diff --git a/third_party/googletest/README.chromium b/third_party/googletest/README.chromium
index e70e558..13744c7 100644
--- a/third_party/googletest/README.chromium
+++ b/third_party/googletest/README.chromium
@@ -1,7 +1,7 @@
 Name: Google Test: Google's C++ Testing Framework
 Short Name: googletest
 URL: https://github.com/google/googletest.git
-Version: a18ac392d883ca88d1849b90071cea5608fd9293
+Version: b617b277186e03b1065ac6d43912b1c4147c2982
 License: BSD
 License File: NOT_SHIPPED
 Security critical: no
diff --git a/third_party/minizip/minizip_uncompress_fuzzer.cc b/third_party/minizip/minizip_uncompress_fuzzer.cc
index 18434f7b..82624b8f 100644
--- a/third_party/minizip/minizip_uncompress_fuzzer.cc
+++ b/third_party/minizip/minizip_uncompress_fuzzer.cc
@@ -15,6 +15,7 @@
 const char kTestPassword[] = "test123";
 const char kTestFileName[] = "foo";
 const char kTestFileNameUppercase[] = "FOO";
+const int kMaxFiles = 128;
 }
 
 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
@@ -37,7 +38,7 @@
     mz_zip_get_number_entry(zip_file, &num_entries);
 
     result = mz_zip_goto_first_entry(zip_file);
-    while (result == MZ_OK) {
+    for (int i = 0; result == MZ_OK && i < kMaxFiles; i++) {
       mz_zip_file* file_info = nullptr;
       result = mz_zip_entry_get_info(zip_file, &file_info);
       if (result != MZ_OK) {
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index e32684de6..18cff590 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -33338,6 +33338,7 @@
   <int value="60023885" label="AutofillNoLocalSaveOnUnmaskSuccess:disabled"/>
   <int value="61205887" label="enable-text-input-focus-manager"/>
   <int value="61466986" label="AsyncDns:disabled"/>
+  <int value="63187126" label="DownloadsAutoResumptionNative:enabled"/>
   <int value="64942701" label="OfflinePagesSvelteConcurrentLoading:disabled"/>
   <int value="66897259" label="ModalPermissionDialogView:enabled"/>
   <int value="67639499" label="stop-loading-in-background:disabled"/>
@@ -33736,6 +33737,7 @@
   <int value="730024226" label="enable-out-of-process-pdf"/>
   <int value="730750097" label="PermissionsBlacklist:disabled"/>
   <int value="731757746" label="ArcEnableDocumentsProviderInFilesApp:disabled"/>
+  <int value="731775657" label="DownloadsAutoResumptionNative:disabled"/>
   <int value="731779469" label="BlinkHeapUnifiedGarbageCollection:enabled"/>
   <int value="732703958" label="enable-gesture-tap-highlight"/>
   <int value="734900932" label="RecurrentInterstitialFeature:enabled"/>
@@ -44985,6 +44987,7 @@
   <int value="56" label="NOSTATE_PREFETCH_FINISHED"/>
   <int value="57" label="LOW_END_DEVICE"/>
   <int value="58" label="FINAL_STATUS_BROWSER_SWITCH"/>
+  <int value="59" label="FINAL_STATUS_GWS_HOLDBACK"/>
 </enum>
 
 <enum name="PrerenderHoverEvent">
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index a7f396b..cdebabee 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -54982,6 +54982,28 @@
   </summary>
 </histogram>
 
+<histogram
+    name="Memory.Experimental.UserLevelMemoryPressureSignal.RendererPrivateMemoryFootprintAfter"
+    units="MB" expires_after="2019-09-30">
+  <owner>keishi@chromium.org</owner>
+  <owner>tasak@chromium.org</owner>
+  <summary>
+    The renderer process' private memory footprint 10 seconds after a memory
+    pressure signal is generated.
+  </summary>
+</histogram>
+
+<histogram
+    name="Memory.Experimental.UserLevelMemoryPressureSignal.RendererPrivateMemoryFootprintBefore"
+    units="MB" expires_after="2019-09-30">
+  <owner>keishi@chromium.org</owner>
+  <owner>tasak@chromium.org</owner>
+  <summary>
+    The renderer process' private memory footprint right before a memory
+    pressure signal is generated.
+  </summary>
+</histogram>
+
 <histogram base="true" name="Memory.Experimental.Utility2" units="MB"
     expires_after="2019-12-31">
 <!-- Name completed by histogram_suffixes name="ProcessMemoryAllocator2" -->
@@ -66136,6 +66158,9 @@
 
 <histogram name="Net.QuicSession.CookieSentToAccountsOverChannelId"
     enum="BooleanUsage" expires_after="2018-08-30">
+  <obsolete>
+    Removed in M75
+  </obsolete>
   <owner>rch@chromium.org</owner>
   <summary>
     Logs whether channel ID was used when a cookie is sent over QUIC to
@@ -80636,6 +80661,9 @@
 
 <histogram name="PageLoad.Clients.Ads.Resources.Bytes.Ads" units="KB"
     expires_after="2019-09-05">
+  <obsolete>
+    Deprecated March 2019 in favor of PageLoad.Clients.Ads.Resources.Bytes.Ads2.
+  </obsolete>
   <owner>jkarlin@chromium.org</owner>
   <owner>johnidel@chromium.org</owner>
   <summary>
@@ -80645,6 +80673,17 @@
   </summary>
 </histogram>
 
+<histogram name="PageLoad.Clients.Ads.Resources.Bytes.Ads2" units="KB"
+    expires_after="2019-09-05">
+  <owner>johnidel@chromium.org</owner>
+  <owner>jkarlin@chromium.org</owner>
+  <summary>
+    Total number of network bytes that went towards loading ad resources for a
+    single page over it's entire lifetime. This includes resources that did not
+    finish or were canceled. Only recorded for pages with non-zero ad bytes.
+  </summary>
+</histogram>
+
 <histogram name="PageLoad.Clients.Ads.Resources.Bytes.TopLevelAds" units="KB"
     expires_after="2019-09-05">
   <obsolete>
diff --git a/tools/perf/core/bot_platforms.py b/tools/perf/core/bot_platforms.py
index 1b20ff8..c19d062 100644
--- a/tools/perf/core/bot_platforms.py
+++ b/tools/perf/core/bot_platforms.py
@@ -166,7 +166,7 @@
 
 ANDROID_NEXUS_6_WEBVIEW = PerfPlatform(
     'Android Nexus6 WebView Perf', 'Android AOSP MOB30K',
-    num_shards=8)  # Reduced from 16 per crbug.com/891848.
+    num_shards=12)  # Reduced from 16 per crbug.com/891848.
 
 
 # FYI bots
diff --git a/tools/perf/core/perf_data_generator.py b/tools/perf/core/perf_data_generator.py
index 25e771bd..b44b316 100755
--- a/tools/perf/core/perf_data_generator.py
+++ b/tools/perf/core/perf_data_generator.py
@@ -270,7 +270,7 @@
       'tests': [
         {
           'isolate': 'performance_webview_test_suite',
-          'num_shards': 8,
+          'num_shards': 12,
           'extra_args': [
               '--test-shard-map-filename=android_nexus6_webview_perf_map.json',
               '--assert-gpu-compositing',
diff --git a/tools/perf/core/shard_maps/android-go-perf_map.json b/tools/perf/core/shard_maps/android-go-perf_map.json
index b5a039d..ab2f34d 100644
--- a/tools/perf/core/shard_maps/android-go-perf_map.json
+++ b/tools/perf/core/shard_maps/android-go-perf_map.json
@@ -2,127 +2,118 @@
     "0": {
         "benchmarks": {
             "memory.top_10_mobile": {
-                "end": 8
+                "end": 9
             }
         }
     },
     "1": {
         "benchmarks": {
             "memory.top_10_mobile": {
-                "begin": 8,
-                "end": 16
+                "begin": 9
             }
         }
     },
     "2": {
         "benchmarks": {
-            "memory.top_10_mobile": {
-                "begin": 16
-            },
-            "power.typical_10_mobile": {
-                "end": 8
-            }
+            "power.typical_10_mobile": {},
+            "speedometer": {},
+            "speedometer2": {}
         }
     },
     "3": {
         "benchmarks": {
-            "power.typical_10_mobile": {
-                "begin": 8
-            },
-            "speedometer": {},
-            "speedometer2": {},
             "startup.mobile": {},
             "system_health.common_mobile": {
-                "end": 2
+                "end": 7
             }
         }
     },
     "4": {
         "benchmarks": {
             "system_health.common_mobile": {
-                "begin": 2,
-                "end": 17
+                "begin": 7,
+                "end": 20
             }
         }
     },
     "5": {
         "benchmarks": {
             "system_health.common_mobile": {
-                "begin": 17,
-                "end": 36
+                "begin": 20,
+                "end": 47
             }
         }
     },
     "6": {
         "benchmarks": {
             "system_health.common_mobile": {
-                "begin": 36,
-                "end": 74
+                "begin": 47,
+                "end": 78
             }
         }
     },
     "7": {
         "benchmarks": {
             "system_health.common_mobile": {
-                "begin": 74
+                "begin": 78
             },
             "system_health.memory_mobile": {
-                "end": 6
+                "end": 9
             }
         }
     },
     "8": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 6,
-                "end": 13
+                "begin": 9,
+                "end": 17
             }
         }
     },
     "9": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 13,
-                "end": 19
+                "begin": 17,
+                "end": 22
             }
         }
     },
     "10": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 19,
-                "end": 24
+                "begin": 22,
+                "end": 29
             }
         }
     },
     "11": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 24,
-                "end": 34
+                "begin": 29,
+                "end": 41
             }
         }
     },
     "12": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 34,
-                "end": 51
+                "begin": 41,
+                "end": 54
             }
         }
     },
     "13": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 51,
-                "end": 67
+                "begin": 54,
+                "end": 66
             }
         }
     },
     "14": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 67,
+                "begin": 66,
                 "end": 74
             }
         }
@@ -130,61 +121,61 @@
     "15": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 74
-            },
-            "system_health.webview_startup": {},
-            "v8.browsing_mobile": {
-                "end": 1
+                "begin": 74,
+                "end": 81
             }
         }
     },
     "16": {
         "benchmarks": {
+            "system_health.memory_mobile": {
+                "begin": 81
+            },
+            "system_health.webview_startup": {},
             "v8.browsing_mobile": {
-                "begin": 1,
-                "end": 12
+                "end": 11
             }
         }
     },
     "17": {
         "benchmarks": {
             "v8.browsing_mobile": {
-                "begin": 12,
-                "end": 20
+                "begin": 11,
+                "end": 22
             }
         }
     },
     "18": {
         "benchmarks": {
             "v8.browsing_mobile": {
-                "begin": 20
+                "begin": 22
             }
         }
     },
     "extra_infos": {
-        "num_stories": 223,
-        "predicted_min_shard_time": 2148.0,
-        "predicted_min_shard_index": 10,
-        "predicted_max_shard_time": 3000.0,
-        "predicted_max_shard_index": 8,
-        "shard #0": 2350.0,
-        "shard #1": 2450.0,
-        "shard #2": 2538.0,
-        "shard #3": 2358.0,
-        "shard #4": 2546.0,
-        "shard #5": 2326.0,
-        "shard #6": 2558.0,
-        "shard #7": 2234.0,
-        "shard #8": 3000.0,
-        "shard #9": 2220.0,
-        "shard #10": 2148.0,
-        "shard #11": 2406.0,
-        "shard #12": 2568.0,
-        "shard #13": 2370.0,
-        "shard #14": 2544.0,
-        "shard #15": 2214.0,
-        "shard #16": 2574.0,
-        "shard #17": 2532.0,
-        "shard #18": 2254.0
+        "num_stories": 233,
+        "predicted_min_shard_time": 2394.0,
+        "predicted_min_shard_index": 8,
+        "predicted_max_shard_time": 2796.0,
+        "predicted_max_shard_index": 15,
+        "shard #0": 2510.0,
+        "shard #1": 2660.0,
+        "shard #2": 2598.0,
+        "shard #3": 2568.0,
+        "shard #4": 2478.0,
+        "shard #5": 2674.0,
+        "shard #6": 2640.0,
+        "shard #7": 2716.0,
+        "shard #8": 2394.0,
+        "shard #9": 2502.0,
+        "shard #10": 2610.0,
+        "shard #11": 2538.0,
+        "shard #12": 2694.0,
+        "shard #13": 2526.0,
+        "shard #14": 2448.0,
+        "shard #15": 2796.0,
+        "shard #16": 2566.0,
+        "shard #17": 2500.0,
+        "shard #18": 2624.0
     }
 }
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android-go_webview-perf_map.json b/tools/perf/core/shard_maps/android-go_webview-perf_map.json
index af8735fb..abcc62c 100644
--- a/tools/perf/core/shard_maps/android-go_webview-perf_map.json
+++ b/tools/perf/core/shard_maps/android-go_webview-perf_map.json
@@ -2,190 +2,186 @@
     "0": {
         "benchmarks": {
             "memory.top_10_mobile": {
-                "end": 9
+                "end": 8
             }
         }
     },
     "1": {
         "benchmarks": {
             "memory.top_10_mobile": {
-                "begin": 9,
-                "end": 15
+                "begin": 8,
+                "end": 14
             }
         }
     },
     "2": {
         "benchmarks": {
             "memory.top_10_mobile": {
-                "begin": 15
+                "begin": 14
             },
             "power.typical_10_mobile": {
-                "end": 3
+                "end": 1
             }
         }
     },
     "3": {
         "benchmarks": {
             "power.typical_10_mobile": {
-                "begin": 3
-            },
-            "speedometer": {},
-            "speedometer2": {},
-            "startup.mobile": {},
-            "system_health.common_mobile": {
-                "end": 6
+                "begin": 1
             }
         }
     },
     "4": {
         "benchmarks": {
+            "speedometer": {},
+            "speedometer2": {},
+            "startup.mobile": {},
             "system_health.common_mobile": {
-                "begin": 6,
-                "end": 16
+                "end": 13
             }
         }
     },
     "5": {
         "benchmarks": {
             "system_health.common_mobile": {
-                "begin": 16,
-                "end": 23
+                "begin": 13,
+                "end": 19
             }
         }
     },
     "6": {
         "benchmarks": {
             "system_health.common_mobile": {
-                "begin": 23,
-                "end": 45
+                "begin": 19,
+                "end": 30
             }
         }
     },
     "7": {
         "benchmarks": {
             "system_health.common_mobile": {
-                "begin": 45,
-                "end": 73
+                "begin": 30,
+                "end": 59
             }
         }
     },
     "8": {
         "benchmarks": {
             "system_health.common_mobile": {
-                "begin": 73
-            },
-            "system_health.memory_mobile": {
-                "end": 5
+                "begin": 59,
+                "end": 78
             }
         }
     },
     "9": {
         "benchmarks": {
+            "system_health.common_mobile": {
+                "begin": 78
+            },
             "system_health.memory_mobile": {
-                "begin": 5,
-                "end": 12
+                "end": 6
             }
         }
     },
     "10": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 12,
-                "end": 17
+                "begin": 6,
+                "end": 13
             }
         }
     },
     "11": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 17,
-                "end": 22
+                "begin": 13,
+                "end": 19
             }
         }
     },
     "12": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 22,
-                "end": 26
+                "begin": 19,
+                "end": 24
             }
         }
     },
     "13": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 26,
-                "end": 36
+                "begin": 24,
+                "end": 28
             }
         }
     },
     "14": {
         "benchmarks": {
             "system_health.memory_mobile": {
+                "begin": 28,
+                "end": 36
+            }
+        }
+    },
+    "15": {
+        "benchmarks": {
+            "system_health.memory_mobile": {
                 "begin": 36,
                 "end": 46
             }
         }
     },
-    "15": {
-        "benchmarks": {
-            "system_health.memory_mobile": {
-                "begin": 46,
-                "end": 55
-            }
-        }
-    },
     "16": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 55,
-                "end": 64
+                "begin": 46,
+                "end": 56
             }
         }
     },
     "17": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 64,
-                "end": 73
+                "begin": 56,
+                "end": 64
             }
         }
     },
     "18": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 73,
-                "end": 78
+                "begin": 64,
+                "end": 74
             }
         }
     },
     "19": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 78
-            },
-            "system_health.webview_startup": {}
+                "begin": 74,
+                "end": 79
+            }
         }
     },
     "20": {
         "benchmarks": {
-            "v8.browsing_mobile": {
-                "end": 7
+            "system_health.memory_mobile": {
+                "begin": 79
             }
         }
     },
     "21": {
         "benchmarks": {
+            "system_health.webview_startup": {},
             "v8.browsing_mobile": {
-                "begin": 7,
-                "end": 13
+                "end": 8
             }
         }
     },
     "22": {
         "benchmarks": {
             "v8.browsing_mobile": {
-                "begin": 13,
+                "begin": 8,
                 "end": 14
             }
         }
@@ -194,47 +190,47 @@
         "benchmarks": {
             "v8.browsing_mobile": {
                 "begin": 14,
-                "end": 20
+                "end": 23
             }
         }
     },
     "24": {
         "benchmarks": {
             "v8.browsing_mobile": {
-                "begin": 20
+                "begin": 23
             }
         }
     },
     "extra_infos": {
-        "num_stories": 223,
-        "predicted_min_shard_time": 1262.0,
-        "predicted_min_shard_index": 22,
-        "predicted_max_shard_time": 1656.0,
-        "predicted_max_shard_index": 24,
-        "shard #0": 1510.0,
-        "shard #1": 1410.0,
-        "shard #2": 1560.0,
-        "shard #3": 1396.0,
-        "shard #4": 1448.0,
-        "shard #5": 1588.0,
-        "shard #6": 1404.0,
-        "shard #7": 1518.0,
-        "shard #8": 1440.0,
-        "shard #9": 1422.0,
-        "shard #10": 1512.0,
-        "shard #11": 1632.0,
-        "shard #12": 1356.0,
-        "shard #13": 1530.0,
-        "shard #14": 1512.0,
-        "shard #15": 1386.0,
-        "shard #16": 1518.0,
-        "shard #17": 1518.0,
-        "shard #18": 1374.0,
-        "shard #19": 1544.0,
-        "shard #20": 1516.0,
-        "shard #21": 1524.0,
-        "shard #22": 1262.0,
-        "shard #23": 1398.0,
-        "shard #24": 1656.0
+        "num_stories": 233,
+        "predicted_min_shard_time": 1266.0,
+        "predicted_min_shard_index": 20,
+        "predicted_max_shard_time": 2136.0,
+        "predicted_max_shard_index": 10,
+        "shard #0": 1670.0,
+        "shard #1": 1510.0,
+        "shard #2": 1556.0,
+        "shard #3": 1542.0,
+        "shard #4": 1536.0,
+        "shard #5": 1678.0,
+        "shard #6": 1530.0,
+        "shard #7": 1604.0,
+        "shard #8": 1452.0,
+        "shard #9": 1510.0,
+        "shard #10": 2136.0,
+        "shard #11": 1476.0,
+        "shard #12": 1380.0,
+        "shard #13": 1584.0,
+        "shard #14": 1560.0,
+        "shard #15": 1590.0,
+        "shard #16": 1620.0,
+        "shard #17": 1452.0,
+        "shard #18": 1638.0,
+        "shard #19": 1716.0,
+        "shard #20": 1266.0,
+        "shard #21": 1566.0,
+        "shard #22": 1866.0,
+        "shard #23": 1562.0,
+        "shard #24": 1484.0
     }
 }
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android-nexus5x-perf-fyi_map.json b/tools/perf/core/shard_maps/android-nexus5x-perf-fyi_map.json
index d2811b4..de84982 100644
--- a/tools/perf/core/shard_maps/android-nexus5x-perf-fyi_map.json
+++ b/tools/perf/core/shard_maps/android-nexus5x-perf-fyi_map.json
@@ -9,34 +9,33 @@
     "1": {
         "benchmarks": {
             "heap_profiling.mobile.disabled": {
-                "begin": 1
+                "begin": 1,
+                "end": 2
             }
         }
     },
     "2": {
         "benchmarks": {
-            "heap_profiling.mobile.native": {
-                "end": 1
+            "heap_profiling.mobile.disabled": {
+                "begin": 2
             }
         }
     },
     "3": {
         "benchmarks": {
-            "heap_profiling.mobile.native": {
-                "begin": 1
-            },
+            "heap_profiling.mobile.native": {},
             "heap_profiling.mobile.pseudo": {}
         }
     },
     "extra_infos": {
         "num_stories": 9,
-        "predicted_min_shard_time": 70.0,
-        "predicted_min_shard_index": 3,
-        "predicted_max_shard_time": 192.0,
-        "predicted_max_shard_index": 1,
-        "shard #0": 88.0,
-        "shard #1": 192.0,
-        "shard #2": 86.0,
-        "shard #3": 70.0
+        "predicted_min_shard_time": 50.0,
+        "predicted_min_shard_index": 1,
+        "predicted_max_shard_time": 108.0,
+        "predicted_max_shard_index": 2,
+        "shard #0": 68.0,
+        "shard #1": 50.0,
+        "shard #2": 108.0,
+        "shard #3": 80.0
     }
 }
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android-nexus5x-perf_map.json b/tools/perf/core/shard_maps/android-nexus5x-perf_map.json
index 006fe38..37fbeb8f5 100644
--- a/tools/perf/core/shard_maps/android-nexus5x-perf_map.json
+++ b/tools/perf/core/shard_maps/android-nexus5x-perf_map.json
@@ -5,22 +5,31 @@
             "blink_perf.bindings": {},
             "blink_perf.canvas": {},
             "blink_perf.css": {},
-            "blink_perf.dom": {},
-            "blink_perf.events": {},
-            "blink_perf.image_decoder": {},
-            "blink_perf.layout": {},
-            "blink_perf.owp_storage": {
-                "end": 2
+            "blink_perf.dom": {
+                "end": 1
             }
         }
     },
     "1": {
         "benchmarks": {
-            "blink_perf.owp_storage": {
-                "begin": 2
+            "blink_perf.dom": {
+                "begin": 1
             },
+            "blink_perf.events": {},
+            "blink_perf.image_decoder": {},
+            "blink_perf.layout": {},
+            "blink_perf.owp_storage": {},
             "blink_perf.paint": {},
-            "blink_perf.parser": {},
+            "blink_perf.parser": {
+                "end": 4
+            }
+        }
+    },
+    "2": {
+        "benchmarks": {
+            "blink_perf.parser": {
+                "begin": 4
+            },
             "blink_perf.shadow_dom": {},
             "blink_perf.svg": {},
             "dromaeo": {},
@@ -29,165 +38,156 @@
             "jetstream": {},
             "kraken": {},
             "loading.mobile": {
-                "end": 16
-            }
-        }
-    },
-    "2": {
-        "benchmarks": {
-            "loading.mobile": {
-                "begin": 16,
-                "end": 45
+                "end": 35
             }
         }
     },
     "3": {
         "benchmarks": {
             "loading.mobile": {
-                "begin": 45,
-                "end": 90
+                "begin": 35
+            },
+            "media.mobile": {
+                "end": 4
             }
         }
     },
     "4": {
         "benchmarks": {
-            "loading.mobile": {
-                "begin": 90
+            "media.mobile": {
+                "begin": 4
             },
-            "media.mobile": {},
-            "memory.top_10_mobile": {
-                "end": 10
-            }
+            "memory.top_10_mobile": {},
+            "octane": {}
         }
     },
     "5": {
         "benchmarks": {
-            "memory.top_10_mobile": {
-                "begin": 10
-            },
-            "octane": {},
             "power.typical_10_mobile": {},
             "rasterize_and_record_micro.partial_invalidation": {},
             "rasterize_and_record_micro.top_25": {},
             "rendering.mobile": {
-                "end": 2
+                "end": 39
             }
         }
     },
     "6": {
         "benchmarks": {
             "rendering.mobile": {
-                "begin": 2,
-                "end": 103
+                "begin": 39,
+                "end": 132
             }
         }
     },
     "7": {
         "benchmarks": {
             "rendering.mobile": {
-                "begin": 103,
-                "end": 234
+                "begin": 132,
+                "end": 236
             }
         }
     },
     "8": {
         "benchmarks": {
             "rendering.mobile": {
-                "begin": 234,
-                "end": 360
+                "begin": 236,
+                "end": 347
             }
         }
     },
     "9": {
         "benchmarks": {
             "rendering.mobile": {
-                "begin": 360
-            }
-        }
-    },
-    "10": {
-        "benchmarks": {
+                "begin": 347
+            },
             "speedometer": {},
             "speedometer-future": {},
             "speedometer2": {},
             "speedometer2-future": {},
             "startup.mobile": {},
             "system_health.common_mobile": {
-                "end": 49
+                "end": 26
+            }
+        }
+    },
+    "10": {
+        "benchmarks": {
+            "system_health.common_mobile": {
+                "begin": 26
+            },
+            "system_health.memory_mobile": {
+                "end": 10
             }
         }
     },
     "11": {
         "benchmarks": {
-            "system_health.common_mobile": {
-                "begin": 49
-            },
             "system_health.memory_mobile": {
-                "end": 16
+                "begin": 10,
+                "end": 25
             }
         }
     },
     "12": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 16,
-                "end": 49
+                "begin": 25,
+                "end": 56
             }
         }
     },
     "13": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 49
+                "begin": 56
             },
             "system_health.webview_startup": {},
             "tracing.tracing_with_background_memory_infra": {},
             "v8.browsing_mobile": {
-                "end": 8
+                "end": 6
             }
         }
     },
     "14": {
         "benchmarks": {
             "v8.browsing_mobile": {
-                "begin": 8
+                "begin": 6
             },
             "v8.browsing_mobile-future": {
-                "end": 8
+                "end": 6
             }
         }
     },
     "15": {
         "benchmarks": {
             "v8.browsing_mobile-future": {
-                "begin": 8
+                "begin": 6
             },
-            "v8.runtime_stats.top_25": {},
             "wasm": {},
             "webrtc": {}
         }
     },
     "extra_infos": {
-        "num_stories": 2037,
-        "predicted_min_shard_time": 6604.0,
-        "predicted_min_shard_index": 15,
-        "predicted_max_shard_time": 7162.0,
-        "predicted_max_shard_index": 14,
-        "shard #0": 6882.0,
-        "shard #1": 6928.0,
-        "shard #2": 6744.0,
-        "shard #3": 6984.0,
-        "shard #4": 6860.0,
-        "shard #5": 6786.0,
-        "shard #6": 6870.0,
-        "shard #7": 6882.0,
-        "shard #8": 6852.0,
-        "shard #9": 6872.0,
-        "shard #10": 6870.0,
-        "shard #11": 6990.0,
-        "shard #12": 6708.0,
-        "shard #13": 6890.0,
-        "shard #14": 7162.0,
-        "shard #15": 6604.0
+        "num_stories": 1151,
+        "predicted_min_shard_time": 5412.0,
+        "predicted_min_shard_index": 11,
+        "predicted_max_shard_time": 5868.0,
+        "predicted_max_shard_index": 12,
+        "shard #0": 5612.0,
+        "shard #1": 5640.0,
+        "shard #2": 5556.0,
+        "shard #3": 5578.0,
+        "shard #4": 5652.0,
+        "shard #5": 5548.0,
+        "shard #6": 5602.0,
+        "shard #7": 5600.0,
+        "shard #8": 5562.0,
+        "shard #9": 5552.0,
+        "shard #10": 5690.0,
+        "shard #11": 5412.0,
+        "shard #12": 5868.0,
+        "shard #13": 5426.0,
+        "shard #14": 5554.0,
+        "shard #15": 5740.0
     }
-}
+}
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android-pixel2-perf_map.json b/tools/perf/core/shard_maps/android-pixel2-perf_map.json
index 543de43..c8a48e2 100644
--- a/tools/perf/core/shard_maps/android-pixel2-perf_map.json
+++ b/tools/perf/core/shard_maps/android-pixel2-perf_map.json
@@ -16,28 +16,23 @@
             "blink_perf.svg": {},
             "dromaeo": {},
             "dummy_benchmark.noisy_benchmark_1": {},
-            "dummy_benchmark.stable_benchmark_1": {},
-            "jetstream": {},
-            "kraken": {},
-            "loading.mobile": {
-                "end": 21
-            }
+            "dummy_benchmark.stable_benchmark_1": {}
         }
     },
     "1": {
         "benchmarks": {
-            "loading.mobile": {
-                "begin": 21
-            },
+            "jetstream": {},
+            "kraken": {},
+            "loading.mobile": {},
             "media.mobile": {
-                "end": 20
+                "end": 21
             }
         }
     },
     "2": {
         "benchmarks": {
             "media.mobile": {
-                "begin": 20
+                "begin": 21
             },
             "memory.top_10_mobile": {},
             "octane": {},
@@ -45,45 +40,45 @@
             "rasterize_and_record_micro.partial_invalidation": {},
             "rasterize_and_record_micro.top_25": {},
             "rendering.mobile": {
-                "end": 106
+                "end": 98
             }
         }
     },
     "3": {
         "benchmarks": {
             "rendering.mobile": {
-                "begin": 106,
-                "end": 395
-            }
+                "begin": 98
+            },
+            "speedometer": {},
+            "speedometer-future": {}
         }
     },
     "4": {
         "benchmarks": {
-            "rendering.mobile": {
-                "begin": 395
-            },
-            "speedometer": {},
-            "speedometer-future": {},
             "speedometer2": {},
             "speedometer2-future": {},
             "startup.mobile": {},
             "system_health.common_mobile": {},
             "system_health.memory_mobile": {
-                "end": 13
+                "end": 19
             }
         }
     },
     "5": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 13
-            },
-            "system_health.webview_startup": {},
-            "tracing.tracing_with_background_memory_infra": {}
+                "begin": 19,
+                "end": 78
+            }
         }
     },
     "6": {
         "benchmarks": {
+            "system_health.memory_mobile": {
+                "begin": 78
+            },
+            "system_health.webview_startup": {},
+            "tracing.tracing_with_background_memory_infra": {},
             "v8.browsing_mobile": {},
             "v8.browsing_mobile-future": {},
             "wasm": {},
@@ -91,17 +86,17 @@
         }
     },
     "extra_infos": {
-        "num_stories": 2061,
-        "predicted_min_shard_time": 16218.0,
-        "predicted_min_shard_index": 5,
-        "predicted_max_shard_time": 16548.0,
-        "predicted_max_shard_index": 4,
-        "shard #0": 16282.0,
-        "shard #1": 16498.0,
-        "shard #2": 16380.0,
-        "shard #3": 16348.0,
-        "shard #4": 16548.0,
-        "shard #5": 16218.0,
-        "shard #6": 16378.0
+        "num_stories": 1151,
+        "predicted_min_shard_time": 10376.0,
+        "predicted_min_shard_index": 6,
+        "predicted_max_shard_time": 10752.0,
+        "predicted_max_shard_index": 1,
+        "shard #0": 10414.0,
+        "shard #1": 10752.0,
+        "shard #2": 10566.0,
+        "shard #3": 10538.0,
+        "shard #4": 10686.0,
+        "shard #5": 10698.0,
+        "shard #6": 10376.0
     }
-}
+}
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android-pixel2_webview-perf_map.json b/tools/perf/core/shard_maps/android-pixel2_webview-perf_map.json
index 06f949fb..bfb9051c 100644
--- a/tools/perf/core/shard_maps/android-pixel2_webview-perf_map.json
+++ b/tools/perf/core/shard_maps/android-pixel2_webview-perf_map.json
@@ -13,97 +13,100 @@
             "blink_perf.paint": {},
             "blink_perf.parser": {},
             "blink_perf.shadow_dom": {},
-            "blink_perf.svg": {},
-            "dromaeo": {},
-            "dummy_benchmark.noisy_benchmark_1": {},
-            "dummy_benchmark.stable_benchmark_1": {},
-            "jetstream": {},
-            "kraken": {},
-            "loading.mobile": {
-                "end": 40
+            "blink_perf.svg": {
+                "end": 2
             }
         }
     },
     "1": {
         "benchmarks": {
-            "loading.mobile": {
-                "begin": 40
+            "blink_perf.svg": {
+                "begin": 2
             },
+            "dromaeo": {},
+            "dummy_benchmark.noisy_benchmark_1": {},
+            "dummy_benchmark.stable_benchmark_1": {},
+            "jetstream": {},
+            "kraken": {},
+            "loading.mobile": {},
             "media.mobile": {},
             "memory.top_10_mobile": {
-                "end": 14
+                "end": 9
             }
         }
     },
     "2": {
         "benchmarks": {
             "memory.top_10_mobile": {
-                "begin": 14
+                "begin": 9
             },
             "octane": {},
             "power.typical_10_mobile": {},
             "rasterize_and_record_micro.partial_invalidation": {},
             "rasterize_and_record_micro.top_25": {},
             "rendering.mobile": {
-                "end": 165
+                "end": 116
             }
         }
     },
     "3": {
         "benchmarks": {
             "rendering.mobile": {
-                "begin": 165
-            }
-        }
-    },
-    "4": {
-        "benchmarks": {
+                "begin": 116
+            },
             "speedometer": {},
             "speedometer-future": {},
             "speedometer2": {},
             "speedometer2-future": {},
             "startup.mobile": {},
-            "system_health.common_mobile": {},
+            "system_health.common_mobile": {
+                "end": 13
+            }
+        }
+    },
+    "4": {
+        "benchmarks": {
+            "system_health.common_mobile": {
+                "begin": 13
+            },
             "system_health.memory_mobile": {
-                "end": 22
+                "end": 23
             }
         }
     },
     "5": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 22
-            },
-            "system_health.webview_startup": {},
-            "tracing.tracing_with_background_memory_infra": {},
-            "v8.browsing_mobile": {
-                "end": 10
+                "begin": 23,
+                "end": 80
             }
         }
     },
     "6": {
         "benchmarks": {
-            "v8.browsing_mobile": {
-                "begin": 10
+            "system_health.memory_mobile": {
+                "begin": 80
             },
+            "system_health.webview_startup": {},
+            "tracing.tracing_with_background_memory_infra": {},
+            "v8.browsing_mobile": {},
             "v8.browsing_mobile-future": {},
-            "v8.runtime_stats.top_25": {},
             "wasm": {},
             "webrtc": {}
         }
     },
     "extra_infos": {
-        "num_stories": 2061,
-        "predicted_min_shard_time": 14198.0,
-        "predicted_min_shard_index": 5,
-        "predicted_max_shard_time": 14340.0,
+        "num_stories": 1151,
+        "predicted_min_shard_time": 8660.0,
+        "predicted_min_shard_index": 4,
+        "predicted_max_shard_time": 8852.0,
         "predicted_max_shard_index": 1,
-        "shard #0": 14252.0,
-        "shard #1": 14340.0,
-        "shard #2": 14242.0,
-        "shard #3": 14268.0,
-        "shard #4": 14322.0,
-        "shard #5": 14198.0,
-        "shard #6": 14298.0
+        "shard #0": 8762.0,
+        "shard #1": 8852.0,
+        "shard #2": 8668.0,
+        "shard #3": 8764.0,
+        "shard #4": 8660.0,
+        "shard #5": 8802.0,
+        "shard #6": 8830.0
     }
-}
+}
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android_nexus5_perf_map.json b/tools/perf/core/shard_maps/android_nexus5_perf_map.json
index 7e8b5879..ee680e9 100644
--- a/tools/perf/core/shard_maps/android_nexus5_perf_map.json
+++ b/tools/perf/core/shard_maps/android_nexus5_perf_map.json
@@ -5,144 +5,157 @@
             "blink_perf.bindings": {},
             "blink_perf.canvas": {},
             "blink_perf.css": {},
-            "blink_perf.dom": {},
-            "blink_perf.events": {},
-            "blink_perf.image_decoder": {},
-            "blink_perf.layout": {
-                "end": 43
+            "blink_perf.dom": {
+                "end": 2
             }
         }
     },
     "1": {
         "benchmarks": {
-            "blink_perf.layout": {
-                "begin": 43
+            "blink_perf.dom": {
+                "begin": 2
             },
+            "blink_perf.events": {},
+            "blink_perf.image_decoder": {},
+            "blink_perf.layout": {},
             "blink_perf.owp_storage": {},
             "blink_perf.paint": {},
-            "blink_perf.parser": {},
+            "blink_perf.parser": {
+                "end": 4
+            }
+        }
+    },
+    "2": {
+        "benchmarks": {
+            "blink_perf.parser": {
+                "begin": 4
+            },
             "blink_perf.shadow_dom": {},
             "blink_perf.svg": {},
             "dromaeo": {},
             "dummy_benchmark.noisy_benchmark_1": {},
             "dummy_benchmark.stable_benchmark_1": {},
-            "jetstream": {}
-        }
-    },
-    "2": {
-        "benchmarks": {
+            "jetstream": {},
             "kraken": {},
             "loading.mobile": {
-                "end": 24
+                "end": 6
             }
         }
     },
     "3": {
         "benchmarks": {
             "loading.mobile": {
-                "begin": 24,
-                "end": 60
+                "begin": 6,
+                "end": 69
             }
         }
     },
     "4": {
         "benchmarks": {
             "loading.mobile": {
-                "begin": 60
+                "begin": 69
             },
-            "media.mobile": {}
+            "media.mobile": {},
+            "memory.top_10_mobile": {
+                "end": 11
+            }
         }
     },
     "5": {
         "benchmarks": {
-            "memory.top_10_mobile": {},
+            "memory.top_10_mobile": {
+                "begin": 11
+            },
             "octane": {},
             "power.typical_10_mobile": {},
             "rasterize_and_record_micro.partial_invalidation": {},
-            "rasterize_and_record_micro.top_25": {
-                "end": 10
+            "rasterize_and_record_micro.top_25": {},
+            "rendering.mobile": {
+                "end": 5
             }
         }
     },
     "6": {
         "benchmarks": {
-            "rasterize_and_record_micro.top_25": {
-                "begin": 10
-            },
             "rendering.mobile": {
-                "end": 85
+                "begin": 5,
+                "end": 109
             }
         }
     },
     "7": {
         "benchmarks": {
             "rendering.mobile": {
-                "begin": 85,
-                "end": 222
+                "begin": 109,
+                "end": 215
             }
         }
     },
     "8": {
         "benchmarks": {
             "rendering.mobile": {
-                "begin": 222,
-                "end": 362
+                "begin": 215,
+                "end": 333
             }
         }
     },
     "9": {
         "benchmarks": {
             "rendering.mobile": {
-                "begin": 362
-            }
-        }
-    },
-    "10": {
-        "benchmarks": {
+                "begin": 333
+            },
             "speedometer": {},
             "speedometer-future": {},
             "speedometer2": {},
             "speedometer2-future": {},
             "startup.mobile": {},
             "system_health.common_mobile": {
-                "end": 46
+                "end": 18
+            }
+        }
+    },
+    "10": {
+        "benchmarks": {
+            "system_health.common_mobile": {
+                "begin": 18
+            },
+            "system_health.memory_mobile": {
+                "end": 6
             }
         }
     },
     "11": {
         "benchmarks": {
-            "system_health.common_mobile": {
-                "begin": 46
-            },
             "system_health.memory_mobile": {
-                "end": 14
+                "begin": 6,
+                "end": 24
             }
         }
     },
     "12": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 14,
-                "end": 46
+                "begin": 24,
+                "end": 55
             }
         }
     },
     "13": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 46
+                "begin": 55
             },
             "system_health.webview_startup": {},
             "tracing.tracing_with_background_memory_infra": {},
             "v8.browsing_mobile": {
-                "end": 2
+                "end": 1
             }
         }
     },
     "14": {
         "benchmarks": {
             "v8.browsing_mobile": {
-                "begin": 2
+                "begin": 1
             },
             "v8.browsing_mobile-future": {
                 "end": 6
@@ -159,26 +172,26 @@
         }
     },
     "extra_infos": {
-        "num_stories": 2037,
-        "predicted_min_shard_time": 7376.0,
-        "predicted_min_shard_index": 3,
-        "predicted_max_shard_time": 8110.0,
+        "num_stories": 1151,
+        "predicted_min_shard_time": 6990.0,
+        "predicted_min_shard_index": 2,
+        "predicted_max_shard_time": 7358.0,
         "predicted_max_shard_index": 1,
-        "shard #0": 7666.0,
-        "shard #1": 8110.0,
-        "shard #2": 7542.0,
-        "shard #3": 7376.0,
-        "shard #4": 7640.0,
-        "shard #5": 7684.0,
-        "shard #6": 7664.0,
-        "shard #7": 7660.0,
-        "shard #8": 7644.0,
-        "shard #9": 7668.0,
-        "shard #10": 7696.0,
-        "shard #11": 7456.0,
-        "shard #12": 7800.0,
-        "shard #13": 7810.0,
-        "shard #14": 7564.0,
-        "shard #15": 7712.0
+        "shard #0": 7192.0,
+        "shard #1": 7358.0,
+        "shard #2": 6990.0,
+        "shard #3": 7128.0,
+        "shard #4": 7282.0,
+        "shard #5": 7100.0,
+        "shard #6": 7198.0,
+        "shard #7": 7208.0,
+        "shard #8": 7154.0,
+        "shard #9": 7138.0,
+        "shard #10": 7140.0,
+        "shard #11": 7290.0,
+        "shard #12": 7134.0,
+        "shard #13": 7274.0,
+        "shard #14": 7100.0,
+        "shard #15": 7216.0
     }
-}
+}
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android_nexus5x_webview_perf_map.json b/tools/perf/core/shard_maps/android_nexus5x_webview_perf_map.json
index 7ca02bf..f65f426 100644
--- a/tools/perf/core/shard_maps/android_nexus5x_webview_perf_map.json
+++ b/tools/perf/core/shard_maps/android_nexus5x_webview_perf_map.json
@@ -5,99 +5,100 @@
             "blink_perf.bindings": {},
             "blink_perf.canvas": {},
             "blink_perf.css": {},
-            "blink_perf.dom": {},
-            "blink_perf.events": {},
-            "blink_perf.image_decoder": {},
-            "blink_perf.layout": {
-                "end": 23
+            "blink_perf.dom": {
+                "end": 3
             }
         }
     },
     "1": {
         "benchmarks": {
-            "blink_perf.layout": {
-                "begin": 23
+            "blink_perf.dom": {
+                "begin": 3
             },
+            "blink_perf.events": {},
+            "blink_perf.image_decoder": {},
+            "blink_perf.layout": {},
             "blink_perf.owp_storage": {},
             "blink_perf.paint": {},
-            "blink_perf.parser": {},
+            "blink_perf.parser": {
+                "end": 4
+            }
+        }
+    },
+    "2": {
+        "benchmarks": {
+            "blink_perf.parser": {
+                "begin": 4
+            },
             "blink_perf.shadow_dom": {},
             "blink_perf.svg": {},
             "dromaeo": {},
             "dummy_benchmark.noisy_benchmark_1": {},
             "dummy_benchmark.stable_benchmark_1": {},
-            "jetstream": {}
-        }
-    },
-    "2": {
-        "benchmarks": {
+            "jetstream": {},
             "kraken": {},
             "loading.mobile": {
-                "end": 33
+                "end": 43
             }
         }
     },
     "3": {
         "benchmarks": {
             "loading.mobile": {
-                "begin": 33,
-                "end": 56
+                "begin": 43
+            },
+            "media.mobile": {},
+            "memory.top_10_mobile": {
+                "end": 3
             }
         }
     },
     "4": {
         "benchmarks": {
-            "loading.mobile": {
-                "begin": 56,
-                "end": 92
-            }
+            "memory.top_10_mobile": {
+                "begin": 3
+            },
+            "octane": {},
+            "power.typical_10_mobile": {}
         }
     },
     "5": {
         "benchmarks": {
-            "loading.mobile": {
-                "begin": 92
-            },
-            "media.mobile": {},
-            "memory.top_10_mobile": {
-                "end": 18
+            "rasterize_and_record_micro.partial_invalidation": {},
+            "rasterize_and_record_micro.top_25": {},
+            "rendering.mobile": {
+                "end": 54
             }
         }
     },
     "6": {
         "benchmarks": {
-            "memory.top_10_mobile": {
-                "begin": 18
-            },
-            "octane": {},
-            "power.typical_10_mobile": {},
-            "rasterize_and_record_micro.partial_invalidation": {},
-            "rasterize_and_record_micro.top_25": {},
             "rendering.mobile": {
-                "end": 19
+                "begin": 54,
+                "end": 134
             }
         }
     },
     "7": {
         "benchmarks": {
             "rendering.mobile": {
-                "begin": 19,
-                "end": 178
+                "begin": 134,
+                "end": 232
             }
         }
     },
     "8": {
         "benchmarks": {
             "rendering.mobile": {
-                "begin": 178,
-                "end": 403
+                "begin": 232,
+                "end": 355
             }
         }
     },
     "9": {
         "benchmarks": {
             "rendering.mobile": {
-                "begin": 403
+                "begin": 355
             },
             "speedometer": {},
             "speedometer-future": {},
@@ -105,84 +106,83 @@
             "speedometer2-future": {},
             "startup.mobile": {},
             "system_health.common_mobile": {
-                "end": 12
+                "end": 32
             }
         }
     },
     "10": {
         "benchmarks": {
             "system_health.common_mobile": {
-                "begin": 12
+                "begin": 32
+            },
+            "system_health.memory_mobile": {
+                "end": 12
             }
         }
     },
     "11": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "end": 20
+                "begin": 12,
+                "end": 26
             }
         }
     },
     "12": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 20,
-                "end": 59
+                "begin": 26,
+                "end": 55
             }
         }
     },
     "13": {
         "benchmarks": {
             "system_health.memory_mobile": {
-                "begin": 59
+                "begin": 55
             },
-            "system_health.webview_startup": {},
-            "tracing.tracing_with_background_memory_infra": {},
-            "v8.browsing_mobile": {
-                "end": 7
-            }
+            "system_health.webview_startup": {}
         }
     },
     "14": {
         "benchmarks": {
-            "v8.browsing_mobile": {
-                "begin": 7
-            },
+            "tracing.tracing_with_background_memory_infra": {},
+            "v8.browsing_mobile": {},
             "v8.browsing_mobile-future": {
-                "end": 7
+                "end": 5
             }
         }
     },
     "15": {
         "benchmarks": {
             "v8.browsing_mobile-future": {
-                "begin": 7
+                "begin": 5
             },
             "wasm": {},
             "webrtc": {}
         }
     },
     "extra_infos": {
-        "num_stories": 2037,
-        "predicted_min_shard_time": 5582.0,
-        "predicted_min_shard_index": 14,
-        "predicted_max_shard_time": 6032.0,
+        "num_stories": 1151,
+        "predicted_min_shard_time": 4362.0,
+        "predicted_min_shard_index": 2,
+        "predicted_max_shard_time": 5004.0,
         "predicted_max_shard_index": 3,
-        "shard #0": 5826.0,
-        "shard #1": 5848.0,
-        "shard #2": 5682.0,
-        "shard #3": 6032.0,
-        "shard #4": 5932.0,
-        "shard #5": 5754.0,
-        "shard #6": 5802.0,
-        "shard #7": 5844.0,
-        "shard #8": 5796.0,
-        "shard #9": 5808.0,
-        "shard #10": 5872.0,
-        "shard #11": 5844.0,
-        "shard #12": 5922.0,
-        "shard #13": 5950.0,
-        "shard #14": 5582.0,
-        "shard #15": 5914.0
+        "shard #0": 4730.0,
+        "shard #1": 4874.0,
+        "shard #2": 4362.0,
+        "shard #3": 5004.0,
+        "shard #4": 4708.0,
+        "shard #5": 4678.0,
+        "shard #6": 4758.0,
+        "shard #7": 4704.0,
+        "shard #8": 4736.0,
+        "shard #9": 4758.0,
+        "shard #10": 4712.0,
+        "shard #11": 4902.0,
+        "shard #12": 4464.0,
+        "shard #13": 4940.0,
+        "shard #14": 4554.0,
+        "shard #15": 4758.0
     }
-}
+}
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android_nexus6_webview_perf_map.json b/tools/perf/core/shard_maps/android_nexus6_webview_perf_map.json
index ae1209d..16d9825 100644
--- a/tools/perf/core/shard_maps/android_nexus6_webview_perf_map.json
+++ b/tools/perf/core/shard_maps/android_nexus6_webview_perf_map.json
@@ -8,86 +8,130 @@
             "blink_perf.dom": {},
             "blink_perf.events": {},
             "blink_perf.image_decoder": {},
-            "blink_perf.layout": {},
-            "blink_perf.owp_storage": {},
-            "blink_perf.paint": {},
-            "blink_perf.parser": {},
-            "blink_perf.shadow_dom": {},
-            "blink_perf.svg": {},
-            "dromaeo": {},
-            "dummy_benchmark.noisy_benchmark_1": {},
-            "dummy_benchmark.stable_benchmark_1": {}
+            "blink_perf.layout": {
+                "end": 11
+            }
         }
     },
     "1": {
         "benchmarks": {
-            "jetstream": {},
-            "kraken": {},
-            "loading.mobile": {
-                "end": 73
+            "blink_perf.layout": {
+                "begin": 11
+            },
+            "blink_perf.owp_storage": {},
+            "blink_perf.paint": {},
+            "blink_perf.parser": {},
+            "blink_perf.shadow_dom": {},
+            "blink_perf.svg": {
+                "end": 7
             }
         }
     },
     "2": {
         "benchmarks": {
-            "loading.mobile": {
-                "begin": 73
+            "blink_perf.svg": {
+                "begin": 7
             },
-            "media.mobile": {},
-            "memory.top_10_mobile": {},
-            "octane": {},
-            "power.typical_10_mobile": {},
-            "rasterize_and_record_micro.partial_invalidation": {},
-            "rasterize_and_record_micro.top_25": {},
-            "rendering.mobile": {
-                "end": 4
+            "dromaeo": {},
+            "dummy_benchmark.noisy_benchmark_1": {},
+            "dummy_benchmark.stable_benchmark_1": {},
+            "jetstream": {},
+            "kraken": {},
+            "loading.mobile": {
+                "end": 70
             }
         }
     },
     "3": {
         "benchmarks": {
-            "rendering.mobile": {
-                "begin": 4,
-                "end": 254
+            "loading.mobile": {
+                "begin": 70
+            },
+            "media.mobile": {},
+            "memory.top_10_mobile": {},
+            "octane": {},
+            "power.typical_10_mobile": {
+                "end": 1
             }
         }
     },
     "4": {
         "benchmarks": {
-            "rendering.mobile": {
-                "begin": 254
+            "power.typical_10_mobile": {
+                "begin": 1
             },
-            "speedometer": {},
-            "speedometer-future": {},
-            "speedometer2": {},
-            "speedometer2-future": {}
+            "rasterize_and_record_micro.partial_invalidation": {},
+            "rasterize_and_record_micro.top_25": {},
+            "rendering.mobile": {
+                "end": 74
+            }
         }
     },
     "5": {
         "benchmarks": {
-            "startup.mobile": {},
-            "system_health.common_mobile": {},
-            "system_health.memory_mobile": {
-                "end": 18
+            "rendering.mobile": {
+                "begin": 74,
+                "end": 222
             }
         }
     },
     "6": {
         "benchmarks": {
-            "system_health.memory_mobile": {
-                "begin": 18
+            "rendering.mobile": {
+                "begin": 222
             },
-            "system_health.webview_startup": {},
-            "tracing.tracing_with_background_memory_infra": {},
-            "v8.browsing_mobile": {
-                "end": 3
+            "speedometer": {},
+            "speedometer-future": {},
+            "speedometer2": {},
+            "speedometer2-future": {},
+            "startup.mobile": {},
+            "system_health.common_mobile": {
+                "end": 8
             }
         }
     },
     "7": {
         "benchmarks": {
+            "system_health.common_mobile": {
+                "begin": 8
+            },
+            "system_health.memory_mobile": {
+                "end": 6
+            }
+        }
+    },
+    "8": {
+        "benchmarks": {
+            "system_health.memory_mobile": {
+                "begin": 6,
+                "end": 27
+            }
+        }
+    },
+    "9": {
+        "benchmarks": {
+            "system_health.memory_mobile": {
+                "begin": 27,
+                "end": 74
+            }
+        }
+    },
+    "10": {
+        "benchmarks": {
+            "system_health.memory_mobile": {
+                "begin": 74
+            },
+            "system_health.webview_startup": {},
+            "tracing.tracing_with_background_memory_infra": {},
             "v8.browsing_mobile": {
-                "begin": 3
+                "end": 20
+            }
+        }
+    },
+    "11": {
+        "benchmarks": {
+            "v8.browsing_mobile": {
+                "begin": 20
             },
             "v8.browsing_mobile-future": {},
             "wasm": {},
@@ -95,18 +139,22 @@
         }
     },
     "extra_infos": {
-        "num_stories": 2037,
-        "predicted_min_shard_time": 12810.0,
-        "predicted_min_shard_index": 0,
-        "predicted_max_shard_time": 13408.0,
-        "predicted_max_shard_index": 1,
-        "shard #0": 12810.0,
-        "shard #1": 13408.0,
-        "shard #2": 13028.0,
-        "shard #3": 13130.0,
-        "shard #4": 13202.0,
-        "shard #5": 13020.0,
-        "shard #6": 13124.0,
-        "shard #7": 12992.0
+        "num_stories": 1151,
+        "predicted_min_shard_time": 6124.0,
+        "predicted_min_shard_index": 10,
+        "predicted_max_shard_time": 6450.0,
+        "predicted_max_shard_index": 9,
+        "shard #0": 6268.0,
+        "shard #1": 6278.0,
+        "shard #2": 6288.0,
+        "shard #3": 6218.0,
+        "shard #4": 6326.0,
+        "shard #5": 6272.0,
+        "shard #6": 6254.0,
+        "shard #7": 6296.0,
+        "shard #8": 6186.0,
+        "shard #9": 6450.0,
+        "shard #10": 6124.0,
+        "shard #11": 6312.0
     }
-}
+}
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/linux-perf_map.json b/tools/perf/core/shard_maps/linux-perf_map.json
index c2b4a8c..c64ec29 100644
--- a/tools/perf/core/shard_maps/linux-perf_map.json
+++ b/tools/perf/core/shard_maps/linux-perf_map.json
@@ -4,64 +4,65 @@
             "blink_perf.accessibility": {},
             "blink_perf.bindings": {},
             "blink_perf.canvas": {},
-            "blink_perf.css": {},
-            "blink_perf.dom": {},
-            "blink_perf.events": {},
-            "blink_perf.image_decoder": {},
-            "blink_perf.layout": {
-                "end": 16
+            "blink_perf.css": {
+                "end": 17
             }
         }
     },
     "1": {
         "benchmarks": {
-            "blink_perf.layout": {
-                "begin": 16
+            "blink_perf.css": {
+                "begin": 17
             },
-            "blink_perf.owp_storage": {},
-            "blink_perf.paint": {},
-            "blink_perf.parser": {},
-            "blink_perf.shadow_dom": {},
-            "blink_perf.svg": {
-                "end": 4
+            "blink_perf.dom": {},
+            "blink_perf.events": {},
+            "blink_perf.image_decoder": {},
+            "blink_perf.layout": {
+                "end": 72
             }
         }
     },
     "2": {
         "benchmarks": {
-            "blink_perf.svg": {
-                "begin": 4
+            "blink_perf.layout": {
+                "begin": 72
             },
-            "dromaeo": {},
-            "dummy_benchmark.noisy_benchmark_1": {},
-            "dummy_benchmark.stable_benchmark_1": {},
-            "jetstream": {},
-            "kraken": {},
-            "loading.desktop": {
-                "end": 28
+            "blink_perf.owp_storage": {},
+            "blink_perf.paint": {},
+            "blink_perf.parser": {},
+            "blink_perf.shadow_dom": {},
+            "blink_perf.svg": {},
+            "dromaeo": {
+                "end": 2
             }
         }
     },
     "3": {
         "benchmarks": {
+            "dromaeo": {
+                "begin": 2
+            },
+            "dummy_benchmark.noisy_benchmark_1": {},
+            "dummy_benchmark.stable_benchmark_1": {},
+            "jetstream": {},
+            "kraken": {},
             "loading.desktop": {
-                "begin": 28,
-                "end": 63
+                "end": 41
             }
         }
     },
     "4": {
         "benchmarks": {
             "loading.desktop": {
-                "begin": 63,
-                "end": 98
+                "begin": 41,
+                "end": 89
             }
         }
     },
     "5": {
         "benchmarks": {
             "loading.desktop": {
-                "begin": 98
+                "begin": 89
             },
             "media.desktop": {},
             "memory.desktop": {
@@ -75,211 +76,211 @@
                 "begin": 4
             },
             "octane": {},
-            "power.desktop": {
-                "end": 6
+            "power.desktop": {},
+            "rasterize_and_record_micro.partial_invalidation": {},
+            "rasterize_and_record_micro.top_25": {
+                "end": 11
             }
         }
     },
     "7": {
         "benchmarks": {
-            "power.desktop": {
-                "begin": 6
+            "rasterize_and_record_micro.top_25": {
+                "begin": 11
             },
-            "rasterize_and_record_micro.partial_invalidation": {},
-            "rasterize_and_record_micro.top_25": {},
             "rendering.desktop": {
-                "end": 1
+                "end": 58
             }
         }
     },
     "8": {
         "benchmarks": {
             "rendering.desktop": {
-                "begin": 1,
-                "end": 56
+                "begin": 58,
+                "end": 140
             }
         }
     },
     "9": {
         "benchmarks": {
             "rendering.desktop": {
-                "begin": 56,
-                "end": 114
+                "begin": 140,
+                "end": 232
             }
         }
     },
     "10": {
         "benchmarks": {
             "rendering.desktop": {
-                "begin": 114,
-                "end": 194
-            }
-        }
-    },
-    "11": {
-        "benchmarks": {
-            "rendering.desktop": {
-                "begin": 194
-            }
-        }
-    },
-    "12": {
-        "benchmarks": {
+                "begin": 232
+            },
             "speedometer": {},
             "speedometer-future": {},
             "speedometer2": {},
             "speedometer2-future": {},
             "system_health.common_desktop": {
-                "end": 22
+                "end": 24
+            }
+        }
+    },
+    "11": {
+        "benchmarks": {
+            "system_health.common_desktop": {
+                "begin": 24,
+                "end": 90
+            }
+        }
+    },
+    "12": {
+        "benchmarks": {
+            "system_health.common_desktop": {
+                "begin": 90,
+                "end": 112
             }
         }
     },
     "13": {
         "benchmarks": {
             "system_health.common_desktop": {
-                "begin": 22,
-                "end": 92
+                "begin": 112
+            },
+            "system_health.memory_desktop": {
+                "end": 15
             }
         }
     },
     "14": {
         "benchmarks": {
-            "system_health.common_desktop": {
-                "begin": 92
-            },
             "system_health.memory_desktop": {
-                "end": 10
+                "begin": 15,
+                "end": 27
             }
         }
     },
     "15": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 10,
-                "end": 20
+                "begin": 27,
+                "end": 52
             }
         }
     },
     "16": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 20,
-                "end": 51
+                "begin": 52,
+                "end": 78
             }
         }
     },
     "17": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 51,
-                "end": 91
+                "begin": 78,
+                "end": 95
             }
         }
     },
     "18": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 91,
-                "end": 109
+                "begin": 95,
+                "end": 105
             }
         }
     },
     "19": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 109
+                "begin": 105
             },
             "tab_switching.typical_25": {},
-            "tracing.tracing_with_background_memory_infra": {},
-            "v8.browsing_desktop": {
-                "end": 7
-            }
+            "tracing.tracing_with_background_memory_infra": {}
         }
     },
     "20": {
         "benchmarks": {
             "v8.browsing_desktop": {
-                "begin": 7
-            },
-            "v8.browsing_desktop-future": {
-                "end": 3
+                "end": 25
             }
         }
     },
     "21": {
         "benchmarks": {
+            "v8.browsing_desktop": {
+                "begin": 25
+            },
             "v8.browsing_desktop-future": {
-                "begin": 3,
-                "end": 33
+                "end": 24
             }
         }
     },
     "22": {
         "benchmarks": {
             "v8.browsing_desktop-future": {
-                "begin": 33
+                "begin": 24
             },
             "v8.runtime_stats.top_25": {
-                "end": 34
+                "end": 26
             }
         }
     },
     "23": {
         "benchmarks": {
             "v8.runtime_stats.top_25": {
-                "begin": 34,
-                "end": 74
+                "begin": 26,
+                "end": 67
             }
         }
     },
     "24": {
         "benchmarks": {
             "v8.runtime_stats.top_25": {
-                "begin": 74,
-                "end": 113
+                "begin": 67,
+                "end": 108
             }
         }
     },
     "25": {
         "benchmarks": {
             "v8.runtime_stats.top_25": {
-                "begin": 113
+                "begin": 108
             },
             "wasm": {},
             "webrtc": {}
         }
     },
     "extra_infos": {
-        "num_stories": 2037,
-        "predicted_min_shard_time": 2826.0,
-        "predicted_min_shard_index": 20,
-        "predicted_max_shard_time": 3108.0,
-        "predicted_max_shard_index": 21,
-        "shard #0": 2922.0,
-        "shard #1": 2924.0,
-        "shard #2": 2950.0,
-        "shard #3": 2864.0,
-        "shard #4": 2960.0,
-        "shard #5": 2930.0,
-        "shard #6": 2876.0,
-        "shard #7": 2966.0,
-        "shard #8": 2914.0,
-        "shard #9": 2902.0,
-        "shard #10": 2944.0,
-        "shard #11": 2910.0,
-        "shard #12": 2870.0,
-        "shard #13": 2938.0,
-        "shard #14": 3056.0,
-        "shard #15": 2886.0,
-        "shard #16": 2880.0,
-        "shard #17": 2880.0,
-        "shard #18": 2928.0,
-        "shard #19": 2916.0,
-        "shard #20": 2826.0,
-        "shard #21": 3108.0,
-        "shard #22": 2830.0,
-        "shard #23": 2946.0,
-        "shard #24": 2882.0,
-        "shard #25": 2958.0
+        "num_stories": 1240,
+        "predicted_min_shard_time": 2286.0,
+        "predicted_min_shard_index": 14,
+        "predicted_max_shard_time": 2676.0,
+        "predicted_max_shard_index": 13,
+        "shard #0": 2542.0,
+        "shard #1": 2540.0,
+        "shard #2": 2542.0,
+        "shard #3": 2542.0,
+        "shard #4": 2544.0,
+        "shard #5": 2500.0,
+        "shard #6": 2566.0,
+        "shard #7": 2538.0,
+        "shard #8": 2516.0,
+        "shard #9": 2554.0,
+        "shard #10": 2498.0,
+        "shard #11": 2560.0,
+        "shard #12": 2520.0,
+        "shard #13": 2676.0,
+        "shard #14": 2286.0,
+        "shard #15": 2658.0,
+        "shard #16": 2598.0,
+        "shard #17": 2550.0,
+        "shard #18": 2424.0,
+        "shard #19": 2594.0,
+        "shard #20": 2564.0,
+        "shard #21": 2496.0,
+        "shard #22": 2560.0,
+        "shard #23": 2572.0,
+        "shard #24": 2530.0,
+        "shard #25": 2522.0
     }
-}
+}
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/mac-10_12_laptop_low_end-perf_map.json b/tools/perf/core/shard_maps/mac-10_12_laptop_low_end-perf_map.json
index 632b272..60d9de2 100644
--- a/tools/perf/core/shard_maps/mac-10_12_laptop_low_end-perf_map.json
+++ b/tools/perf/core/shard_maps/mac-10_12_laptop_low_end-perf_map.json
@@ -4,22 +4,26 @@
             "blink_perf.accessibility": {},
             "blink_perf.bindings": {},
             "blink_perf.canvas": {},
-            "blink_perf.css": {},
-            "blink_perf.dom": {},
-            "blink_perf.events": {},
-            "blink_perf.image_decoder": {},
-            "blink_perf.layout": {
-                "end": 65
-            }
+            "blink_perf.css": {}
         }
     },
     "1": {
         "benchmarks": {
-            "blink_perf.layout": {
-                "begin": 65
-            },
+            "blink_perf.dom": {},
+            "blink_perf.events": {},
+            "blink_perf.image_decoder": {},
+            "blink_perf.layout": {},
             "blink_perf.owp_storage": {},
-            "blink_perf.paint": {},
+            "blink_perf.paint": {
+                "end": 15
+            }
+        }
+    },
+    "2": {
+        "benchmarks": {
+            "blink_perf.paint": {
+                "begin": 15
+            },
             "blink_perf.parser": {},
             "blink_perf.shadow_dom": {},
             "blink_perf.svg": {},
@@ -29,164 +33,156 @@
             "jetstream": {},
             "kraken": {},
             "loading.desktop": {
-                "end": 11
-            }
-        }
-    },
-    "2": {
-        "benchmarks": {
-            "loading.desktop": {
-                "begin": 11,
-                "end": 43
+                "end": 14
             }
         }
     },
     "3": {
         "benchmarks": {
             "loading.desktop": {
-                "begin": 43,
-                "end": 71
+                "begin": 14,
+                "end": 68
             }
         }
     },
     "4": {
         "benchmarks": {
             "loading.desktop": {
-                "begin": 71,
-                "end": 99
+                "begin": 68
+            },
+            "media.desktop": {
+                "end": 25
             }
         }
     },
     "5": {
         "benchmarks": {
-            "loading.desktop": {
-                "begin": 99
+            "media.desktop": {
+                "begin": 25
             },
-            "media.desktop": {},
-            "memory.desktop": {
-                "end": 6
+            "memory.desktop": {},
+            "octane": {},
+            "power.desktop": {
+                "end": 11
             }
         }
     },
     "6": {
         "benchmarks": {
-            "memory.desktop": {
-                "begin": 6
-            },
-            "octane": {},
             "power.desktop": {
-                "end": 10
+                "begin": 11
+            },
+            "rasterize_and_record_micro.partial_invalidation": {},
+            "rasterize_and_record_micro.top_25": {},
+            "rendering.desktop": {
+                "end": 51
             }
         }
     },
     "7": {
         "benchmarks": {
-            "power.desktop": {
-                "begin": 10
-            },
-            "rasterize_and_record_micro.partial_invalidation": {},
-            "rasterize_and_record_micro.top_25": {},
             "rendering.desktop": {
-                "end": 25
+                "begin": 51,
+                "end": 147
             }
         }
     },
     "8": {
         "benchmarks": {
             "rendering.desktop": {
-                "begin": 25,
-                "end": 74
-            }
+                "begin": 147
+            },
+            "speedometer": {},
+            "speedometer-future": {},
+            "speedometer2": {}
         }
     },
     "9": {
         "benchmarks": {
-            "rendering.desktop": {
-                "begin": 74,
-                "end": 125
+            "speedometer2-future": {},
+            "system_health.common_desktop": {
+                "end": 28
             }
         }
     },
     "10": {
         "benchmarks": {
-            "rendering.desktop": {
-                "begin": 125,
-                "end": 215
+            "system_health.common_desktop": {
+                "begin": 28,
+                "end": 93
             }
         }
     },
     "11": {
         "benchmarks": {
-            "rendering.desktop": {
-                "begin": 215
-            },
-            "speedometer": {},
-            "speedometer-future": {}
+            "system_health.common_desktop": {
+                "begin": 93,
+                "end": 111
+            }
         }
     },
     "12": {
         "benchmarks": {
-            "speedometer2": {},
-            "speedometer2-future": {},
             "system_health.common_desktop": {
-                "end": 32
+                "begin": 111
+            },
+            "system_health.memory_desktop": {
+                "end": 13
             }
         }
     },
     "13": {
         "benchmarks": {
-            "system_health.common_desktop": {
-                "begin": 32,
-                "end": 100
+            "system_health.memory_desktop": {
+                "begin": 13,
+                "end": 22
             }
         }
     },
     "14": {
         "benchmarks": {
-            "system_health.common_desktop": {
-                "begin": 100
-            },
             "system_health.memory_desktop": {
-                "end": 11
+                "begin": 22,
+                "end": 46
             }
         }
     },
     "15": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 11,
-                "end": 27
+                "begin": 46,
+                "end": 75
             }
         }
     },
     "16": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 27,
-                "end": 59
+                "begin": 75,
+                "end": 91
             }
         }
     },
     "17": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 59,
-                "end": 90
+                "begin": 91,
+                "end": 99
             }
         }
     },
     "18": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 90,
-                "end": 101
+                "begin": 99,
+                "end": 106
             }
         }
     },
     "19": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 101
+                "begin": 106
             },
             "tab_switching.typical_25": {},
             "tracing.tracing_with_background_memory_infra": {},
@@ -199,86 +195,86 @@
         "benchmarks": {
             "v8.browsing_desktop": {
                 "begin": 5,
-                "end": 33
+                "end": 27
             }
         }
     },
     "21": {
         "benchmarks": {
             "v8.browsing_desktop": {
-                "begin": 33
+                "begin": 27
             },
             "v8.browsing_desktop-future": {
-                "end": 28
+                "end": 19
             }
         }
     },
     "22": {
         "benchmarks": {
             "v8.browsing_desktop-future": {
-                "begin": 28
+                "begin": 19
             },
             "v8.runtime_stats.top_25": {
-                "end": 28
+                "end": 16
             }
         }
     },
     "23": {
         "benchmarks": {
             "v8.runtime_stats.top_25": {
-                "begin": 28,
-                "end": 65
+                "begin": 16,
+                "end": 57
             }
         }
     },
     "24": {
         "benchmarks": {
             "v8.runtime_stats.top_25": {
-                "begin": 65,
-                "end": 107
+                "begin": 57,
+                "end": 99
             }
         }
     },
     "25": {
         "benchmarks": {
             "v8.runtime_stats.top_25": {
-                "begin": 107
+                "begin": 99
             },
             "wasm": {},
             "webrtc": {}
         }
     },
     "extra_infos": {
-        "num_stories": 2037,
-        "predicted_min_shard_time": 2820.0,
-        "predicted_min_shard_index": 17,
-        "predicted_max_shard_time": 3804.0,
-        "predicted_max_shard_index": 18,
-        "shard #0": 3262.0,
-        "shard #1": 3294.0,
-        "shard #2": 3232.0,
-        "shard #3": 3212.0,
-        "shard #4": 3308.0,
-        "shard #5": 3258.0,
-        "shard #6": 3230.0,
-        "shard #7": 3288.0,
-        "shard #8": 3244.0,
-        "shard #9": 3292.0,
-        "shard #10": 3226.0,
-        "shard #11": 3258.0,
-        "shard #12": 3284.0,
-        "shard #13": 3220.0,
-        "shard #14": 3144.0,
-        "shard #15": 3216.0,
-        "shard #16": 3378.0,
-        "shard #17": 2820.0,
-        "shard #18": 3804.0,
-        "shard #19": 3292.0,
-        "shard #20": 3254.0,
-        "shard #21": 3244.0,
-        "shard #22": 3136.0,
-        "shard #23": 3356.0,
-        "shard #24": 3270.0,
-        "shard #25": 3226.0
+        "num_stories": 1240,
+        "predicted_min_shard_time": 1992.0,
+        "predicted_min_shard_index": 16,
+        "predicted_max_shard_time": 2712.0,
+        "predicted_max_shard_index": 17,
+        "shard #0": 2306.0,
+        "shard #1": 2334.0,
+        "shard #2": 2364.0,
+        "shard #3": 2312.0,
+        "shard #4": 2312.0,
+        "shard #5": 2330.0,
+        "shard #6": 2334.0,
+        "shard #7": 2320.0,
+        "shard #8": 2248.0,
+        "shard #9": 2422.0,
+        "shard #10": 2350.0,
+        "shard #11": 2338.0,
+        "shard #12": 2230.0,
+        "shard #13": 2388.0,
+        "shard #14": 2292.0,
+        "shard #15": 2316.0,
+        "shard #16": 1992.0,
+        "shard #17": 2712.0,
+        "shard #18": 2298.0,
+        "shard #19": 2382.0,
+        "shard #20": 2340.0,
+        "shard #21": 2342.0,
+        "shard #22": 2246.0,
+        "shard #23": 2338.0,
+        "shard #24": 2318.0,
+        "shard #25": 2330.0
     }
-}
+}
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/mac-10_13_laptop_high_end-perf_map.json b/tools/perf/core/shard_maps/mac-10_13_laptop_high_end-perf_map.json
index 57cfe83d..c8e41ef 100644
--- a/tools/perf/core/shard_maps/mac-10_13_laptop_high_end-perf_map.json
+++ b/tools/perf/core/shard_maps/mac-10_13_laptop_high_end-perf_map.json
@@ -5,22 +5,31 @@
             "blink_perf.bindings": {},
             "blink_perf.canvas": {},
             "blink_perf.css": {},
-            "blink_perf.dom": {},
-            "blink_perf.events": {},
-            "blink_perf.image_decoder": {},
-            "blink_perf.layout": {},
-            "blink_perf.owp_storage": {
-                "end": 3
+            "blink_perf.dom": {
+                "end": 8
             }
         }
     },
     "1": {
         "benchmarks": {
-            "blink_perf.owp_storage": {
-                "begin": 3
+            "blink_perf.dom": {
+                "begin": 8
             },
+            "blink_perf.events": {},
+            "blink_perf.image_decoder": {},
+            "blink_perf.layout": {},
+            "blink_perf.owp_storage": {},
             "blink_perf.paint": {},
-            "blink_perf.parser": {},
+            "blink_perf.parser": {
+                "end": 14
+            }
+        }
+    },
+    "2": {
+        "benchmarks": {
+            "blink_perf.parser": {
+                "begin": 14
+            },
             "blink_perf.shadow_dom": {},
             "blink_perf.svg": {},
             "dromaeo": {},
@@ -29,252 +38,252 @@
             "jetstream": {},
             "kraken": {},
             "loading.desktop": {
-                "end": 12
-            }
-        }
-    },
-    "2": {
-        "benchmarks": {
-            "loading.desktop": {
-                "begin": 12,
-                "end": 46
+                "end": 26
             }
         }
     },
     "3": {
         "benchmarks": {
             "loading.desktop": {
-                "begin": 46,
-                "end": 77
+                "begin": 26,
+                "end": 82
             }
         }
     },
     "4": {
         "benchmarks": {
             "loading.desktop": {
-                "begin": 77
+                "begin": 82
             },
-            "media.desktop": {
-                "end": 2
+            "media.desktop": {},
+            "memory.desktop": {
+                "end": 6
             }
         }
     },
     "5": {
         "benchmarks": {
-            "media.desktop": {
-                "begin": 2
+            "memory.desktop": {
+                "begin": 6
             },
-            "memory.desktop": {}
-        }
-    },
-    "6": {
-        "benchmarks": {
             "octane": {},
             "power.desktop": {},
             "rasterize_and_record_micro.partial_invalidation": {},
             "rasterize_and_record_micro.top_25": {
-                "end": 17
+                "end": 22
+            }
+        }
+    },
+    "6": {
+        "benchmarks": {
+            "rasterize_and_record_micro.top_25": {
+                "begin": 22
+            },
+            "rendering.desktop": {
+                "end": 78
             }
         }
     },
     "7": {
         "benchmarks": {
-            "rasterize_and_record_micro.top_25": {
-                "begin": 17
-            },
             "rendering.desktop": {
-                "end": 42
+                "begin": 78,
+                "end": 186
             }
         }
     },
     "8": {
         "benchmarks": {
             "rendering.desktop": {
-                "begin": 42,
-                "end": 99
-            }
-        }
-    },
-    "9": {
-        "benchmarks": {
-            "rendering.desktop": {
-                "begin": 99,
-                "end": 177
-            }
-        }
-    },
-    "10": {
-        "benchmarks": {
-            "rendering.desktop": {
-                "begin": 177
-            }
-        }
-    },
-    "11": {
-        "benchmarks": {
+                "begin": 186
+            },
             "speedometer": {},
             "speedometer-future": {},
             "speedometer2": {},
             "speedometer2-future": {},
             "system_health.common_desktop": {
-                "end": 15
+                "end": 11
             }
         }
     },
-    "12": {
+    "9": {
         "benchmarks": {
             "system_health.common_desktop": {
-                "begin": 15,
-                "end": 89
+                "begin": 11,
+                "end": 54
             }
         }
     },
-    "13": {
+    "10": {
         "benchmarks": {
             "system_health.common_desktop": {
-                "begin": 89
+                "begin": 54,
+                "end": 98
+            }
+        }
+    },
+    "11": {
+        "benchmarks": {
+            "system_health.common_desktop": {
+                "begin": 98
             },
             "system_health.memory_desktop": {
                 "end": 6
             }
         }
     },
-    "14": {
+    "12": {
         "benchmarks": {
             "system_health.memory_desktop": {
                 "begin": 6,
-                "end": 16
+                "end": 15
+            }
+        }
+    },
+    "13": {
+        "benchmarks": {
+            "system_health.memory_desktop": {
+                "begin": 15,
+                "end": 27
+            }
+        }
+    },
+    "14": {
+        "benchmarks": {
+            "system_health.memory_desktop": {
+                "begin": 27,
+                "end": 55
             }
         }
     },
     "15": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 16,
-                "end": 41
+                "begin": 55,
+                "end": 84
             }
         }
     },
     "16": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 41,
-                "end": 75
+                "begin": 84,
+                "end": 94
             }
         }
     },
     "17": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 75,
-                "end": 92
+                "begin": 94,
+                "end": 101
             }
         }
     },
     "18": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 92,
-                "end": 105
+                "begin": 101,
+                "end": 109
             }
         }
     },
     "19": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 105
+                "begin": 109
             },
             "tab_switching.typical_25": {},
             "tracing.tracing_with_background_memory_infra": {},
             "v8.browsing_desktop": {
-                "end": 11
+                "end": 7
             }
         }
     },
     "20": {
         "benchmarks": {
             "v8.browsing_desktop": {
-                "begin": 11
-            },
-            "v8.browsing_desktop-future": {
-                "end": 4
+                "begin": 7,
+                "end": 29
             }
         }
     },
     "21": {
         "benchmarks": {
+            "v8.browsing_desktop": {
+                "begin": 29
+            },
             "v8.browsing_desktop-future": {
-                "begin": 4,
-                "end": 30
+                "end": 22
             }
         }
     },
     "22": {
         "benchmarks": {
             "v8.browsing_desktop-future": {
-                "begin": 30
+                "begin": 22
             },
             "v8.runtime_stats.top_25": {
-                "end": 30
+                "end": 21
             }
         }
     },
     "23": {
         "benchmarks": {
             "v8.runtime_stats.top_25": {
-                "begin": 30,
-                "end": 66
+                "begin": 21,
+                "end": 60
             }
         }
     },
     "24": {
         "benchmarks": {
             "v8.runtime_stats.top_25": {
-                "begin": 66,
-                "end": 106
+                "begin": 60,
+                "end": 100
             }
         }
     },
     "25": {
         "benchmarks": {
             "v8.runtime_stats.top_25": {
-                "begin": 106
+                "begin": 100
             },
             "wasm": {},
             "webrtc": {}
         }
     },
     "extra_infos": {
-        "num_stories": 2037,
-        "predicted_min_shard_time": 2472.0,
-        "predicted_min_shard_index": 18,
-        "predicted_max_shard_time": 3246.0,
-        "predicted_max_shard_index": 17,
-        "shard #0": 2876.0,
-        "shard #1": 2870.0,
-        "shard #2": 2924.0,
-        "shard #3": 2812.0,
-        "shard #4": 2870.0,
-        "shard #5": 2862.0,
-        "shard #6": 2896.0,
-        "shard #7": 2876.0,
-        "shard #8": 2886.0,
-        "shard #9": 2848.0,
-        "shard #10": 2904.0,
-        "shard #11": 2826.0,
-        "shard #12": 2918.0,
-        "shard #13": 2880.0,
-        "shard #14": 2886.0,
-        "shard #15": 2898.0,
-        "shard #16": 2754.0,
-        "shard #17": 3246.0,
-        "shard #18": 2472.0,
-        "shard #19": 2890.0,
-        "shard #20": 2930.0,
-        "shard #21": 2816.0,
-        "shard #22": 2998.0,
-        "shard #23": 2826.0,
-        "shard #24": 2878.0,
-        "shard #25": 2860.0
+        "num_stories": 1240,
+        "predicted_min_shard_time": 2010.0,
+        "predicted_min_shard_index": 16,
+        "predicted_max_shard_time": 2310.0,
+        "predicted_max_shard_index": 14,
+        "shard #0": 2136.0,
+        "shard #1": 2132.0,
+        "shard #2": 2138.0,
+        "shard #3": 2144.0,
+        "shard #4": 2142.0,
+        "shard #5": 2056.0,
+        "shard #6": 2194.0,
+        "shard #7": 2130.0,
+        "shard #8": 2088.0,
+        "shard #9": 2186.0,
+        "shard #10": 2086.0,
+        "shard #11": 2142.0,
+        "shard #12": 2064.0,
+        "shard #13": 2064.0,
+        "shard #14": 2310.0,
+        "shard #15": 2166.0,
+        "shard #16": 2010.0,
+        "shard #17": 2142.0,
+        "shard #18": 2196.0,
+        "shard #19": 2184.0,
+        "shard #20": 2102.0,
+        "shard #21": 2056.0,
+        "shard #22": 2210.0,
+        "shard #23": 2144.0,
+        "shard #24": 2118.0,
+        "shard #25": 2146.0
     }
-}
+}
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/android-go-perf_timing.json b/tools/perf/core/shard_maps/timing_data/android-go-perf_timing.json
index 03c04922..9add4ec 100644
--- a/tools/perf/core/shard_maps/timing_data/android-go-perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/android-go-perf_timing.json
@@ -1,118 +1,118 @@
 [
     {
-        "duration": "26.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/after_http_en_m_wikipedia_org_wiki_Science"
     },
     {
-        "duration": "26.0",
+        "duration": "19.0",
         "name": "memory.top_10_mobile/after_http_m_intl_taobao_com_group_purchase_html"
     },
     {
-        "duration": "25.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/after_http_m_youtube_com_results_q_science"
     },
     {
-        "duration": "26.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/after_http_search_yahoo_com_search__ylt_p_google"
     },
     {
-        "duration": "26.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/after_http_www_amazon_com_gp_aw_s_k_nexus"
     },
     {
-        "duration": "26.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/after_http_www_baidu_com_s_word_google"
     },
     {
-        "duration": "26.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/after_http_yandex_ru_touchsearch_text_science"
     },
     {
-        "duration": "25.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/after_https_m_facebook_com_rihanna"
     },
     {
-        "duration": "26.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/after_https_mobile_twitter_com_justinbieber_skip_interstitial_true"
     },
     {
-        "duration": "26.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/after_https_www_google_co_uk_hl_en_q_science"
     },
     {
-        "duration": "35.0",
+        "duration": "31.0",
         "name": "memory.top_10_mobile/http_en_m_wikipedia_org_wiki_Science"
     },
     {
-        "duration": "36.0",
+        "duration": "30.0",
         "name": "memory.top_10_mobile/http_m_intl_taobao_com_group_purchase_html"
     },
     {
-        "duration": "33.0",
+        "duration": "29.0",
         "name": "memory.top_10_mobile/http_m_youtube_com_results_q_science"
     },
     {
-        "duration": "31.0",
+        "duration": "28.0",
         "name": "memory.top_10_mobile/http_search_yahoo_com_search__ylt_p_google"
     },
     {
-        "duration": "33.0",
+        "duration": "29.0",
         "name": "memory.top_10_mobile/http_www_amazon_com_gp_aw_s_k_nexus"
     },
     {
-        "duration": "40.0",
+        "duration": "54.0",
         "name": "memory.top_10_mobile/http_www_baidu_com_s_word_google"
     },
     {
-        "duration": "33.0",
+        "duration": "29.0",
         "name": "memory.top_10_mobile/http_yandex_ru_touchsearch_text_science"
     },
     {
-        "duration": "32.0",
+        "duration": "29.0",
         "name": "memory.top_10_mobile/https_m_facebook_com_rihanna"
     },
     {
-        "duration": "33.0",
+        "duration": "28.0",
         "name": "memory.top_10_mobile/https_mobile_twitter_com_justinbieber_skip_interstitial_true"
     },
     {
-        "duration": "37.0",
+        "duration": "31.0",
         "name": "memory.top_10_mobile/https_www_google_co_uk_hl_en_q_science"
     },
     {
-        "duration": "75.0",
+        "duration": "76.0",
         "name": "power.typical_10_mobile/http://de.m.wikipedia.org/wiki/K%C3%B6lner_Dom"
     },
     {
-        "duration": "81.0",
+        "duration": "96.0",
         "name": "power.typical_10_mobile/http://m.chiebukuro.yahoo.co.jp/detail/q10136829180"
     },
     {
-        "duration": "93.0",
+        "duration": "74.0",
         "name": "power.typical_10_mobile/http://m.ebay.com/itm/351157205404"
     },
     {
-        "duration": "99.0",
+        "duration": "85.0",
         "name": "power.typical_10_mobile/http://m.facebook.com/barackobama"
     },
     {
-        "duration": "81.0",
+        "duration": "80.0",
         "name": "power.typical_10_mobile/http://m.huffpost.com/us/entry/6004486"
     },
     {
-        "duration": "78.0",
+        "duration": "79.0",
         "name": "power.typical_10_mobile/http://m.ynet.co.il"
     },
     {
-        "duration": "79.0",
+        "duration": "88.0",
         "name": "power.typical_10_mobile/http://siriuslymeg.tumblr.com/"
     },
     {
-        "duration": "75.0",
+        "duration": "83.0",
         "name": "power.typical_10_mobile/http://wapbaike.baidu.com/"
     },
     {
-        "duration": "72.0",
+        "duration": "74.0",
         "name": "power.typical_10_mobile/http://www.cnn.com/2014/03/31/showbiz/tv/himym-finale/index.html"
     },
     {
@@ -120,115 +120,119 @@
         "name": "power.typical_10_mobile/http://www.rg.ru/2014/10/21/cska-site.html"
     },
     {
-        "duration": "76.0",
+        "duration": "79.0",
         "name": "power.typical_10_mobile/https://en.wikipedia.org/wiki/File:Rotating_earth_(large).gif"
     },
     {
-        "duration": "155.0",
+        "duration": "140.0",
         "name": "speedometer/http://browserbench.org/Speedometer/"
     },
     {
-        "duration": "289.0",
+        "duration": "260.0",
         "name": "speedometer2/Speedometer2"
     },
     {
-        "duration": "223.0",
+        "duration": "240.0",
+        "name": "startup.mobile/cct:coldish:bbc"
+    },
+    {
+        "duration": "253.0",
         "name": "startup.mobile/intent:coldish:bbc"
     },
     {
-        "duration": "177.0",
+        "duration": "218.0",
         "name": "startup.mobile/intent:warm:bbc"
     },
     {
-        "duration": "31.0",
+        "duration": "263.0",
+        "name": "startup.mobile/maps_pwa:with_http_cache"
+    },
+    {
+        "duration": "28.0",
         "name": "system_health.common_mobile/background:media:imgur"
     },
     {
-        "duration": "66.0",
+        "duration": "63.0",
         "name": "system_health.common_mobile/background:news:nytimes"
     },
     {
-        "duration": "33.0",
+        "duration": "34.0",
         "name": "system_health.common_mobile/background:search:google"
     },
     {
-        "duration": "55.0",
+        "duration": "32.0",
         "name": "system_health.common_mobile/background:social:facebook"
     },
     {
-        "duration": "49.0",
-        "name": "system_health.common_mobile/background:tools:gmail"
-    },
-    {
-        "duration": "189.0",
-        "name": "system_health.common_mobile/browse:chrome:newtab"
-    },
-    {
-        "duration": "55.0",
+        "duration": "52.0",
         "name": "system_health.common_mobile/browse:chrome:omnibox"
     },
     {
-        "duration": "152.0",
+        "duration": "124.0",
         "name": "system_health.common_mobile/browse:media:facebook_photos"
     },
     {
-        "duration": "78.0",
+        "duration": "73.0",
         "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "105.0",
+        "duration": "67.0",
+        "name": "system_health.common_mobile/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "100.0",
         "name": "system_health.common_mobile/browse:media:imgur"
     },
     {
-        "duration": "160.0",
+        "duration": "156.0",
         "name": "system_health.common_mobile/browse:media:youtube"
     },
     {
-        "duration": "261.0",
+        "duration": "268.0",
         "name": "system_health.common_mobile/browse:news:cnn"
     },
     {
-        "duration": "234.0",
+        "duration": "235.0",
         "name": "system_health.common_mobile/browse:news:cnn:2018"
     },
     {
-        "duration": "92.0",
+        "duration": "86.0",
         "name": "system_health.common_mobile/browse:news:cricbuzz"
     },
     {
-        "duration": "78.0",
+        "duration": "125.0",
         "name": "system_health.common_mobile/browse:news:qq"
     },
     {
-        "duration": "109.0",
+        "duration": "83.0",
         "name": "system_health.common_mobile/browse:news:reddit"
     },
     {
-        "duration": "76.0",
+        "duration": "75.0",
         "name": "system_health.common_mobile/browse:news:washingtonpost"
     },
     {
-        "duration": "137.0",
+        "duration": "33.0",
+        "name": "system_health.common_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "118.0",
         "name": "system_health.common_mobile/browse:shopping:amazon"
     },
     {
-        "duration": "114.0",
-        "name": "system_health.common_mobile/browse:shopping:avito"
-    },
-    {
-        "duration": "58.0",
+        "duration": "52.0",
         "name": "system_health.common_mobile/browse:shopping:lazada"
     },
     {
-        "duration": "99.0",
+        "duration": "98.0",
         "name": "system_health.common_mobile/browse:social:facebook"
     },
     {
-        "duration": "153.0",
+        "duration": "145.0",
         "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "135.0",
+        "duration": "133.0",
         "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll:2018"
     },
     {
@@ -236,455 +240,587 @@
         "name": "system_health.common_mobile/browse:social:instagram"
     },
     {
-        "duration": "122.0",
+        "duration": "129.0",
         "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll"
     },
     {
-        "duration": "155.0",
+        "duration": "151.0",
         "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "77.0",
-        "name": "system_health.common_mobile/browse:social:twitter"
-    },
-    {
-        "duration": "97.0",
-        "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "119.0",
-        "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.common_mobile/load:chrome:blank"
-    },
-    {
-        "duration": "38.0",
-        "name": "system_health.common_mobile/load:games:bubbles"
-    },
-    {
-        "duration": "51.0",
-        "name": "system_health.common_mobile/load:games:lazors"
-    },
-    {
-        "duration": "50.0",
-        "name": "system_health.common_mobile/load:games:spychase"
-    },
-    {
-        "duration": "38.0",
-        "name": "system_health.common_mobile/load:media:dailymotion"
-    },
-    {
-        "duration": "33.0",
-        "name": "system_health.common_mobile/load:media:facebook_photos"
-    },
-    {
-        "duration": "32.0",
-        "name": "system_health.common_mobile/load:media:google_images"
-    },
-    {
-        "duration": "32.0",
-        "name": "system_health.common_mobile/load:media:imgur"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.common_mobile/load:media:soundcloud"
-    },
-    {
-        "duration": "32.0",
-        "name": "system_health.common_mobile/load:media:youtube"
+        "duration": "175.0",
+        "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018"
     },
     {
         "duration": "76.0",
-        "name": "system_health.common_mobile/load:news:cnn"
+        "name": "system_health.common_mobile/browse:social:twitter"
     },
     {
-        "duration": "49.0",
-        "name": "system_health.common_mobile/load:news:irctc"
+        "duration": "99.0",
+        "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "42.0",
-        "name": "system_health.common_mobile/load:news:nytimes"
+        "duration": "128.0",
+        "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "32.0",
-        "name": "system_health.common_mobile/load:news:qq"
+        "duration": "66.0",
+        "name": "system_health.common_mobile/browse:tools:maps"
     },
     {
         "duration": "34.0",
-        "name": "system_health.common_mobile/load:news:reddit"
+        "name": "system_health.common_mobile/load:chrome:blank"
     },
     {
         "duration": "36.0",
+        "name": "system_health.common_mobile/load:games:bubbles"
+    },
+    {
+        "duration": "27.0",
+        "name": "system_health.common_mobile/load:games:lazors"
+    },
+    {
+        "duration": "48.0",
+        "name": "system_health.common_mobile/load:games:spychase"
+    },
+    {
+        "duration": "48.0",
+        "name": "system_health.common_mobile/load:games:spychase:2018"
+    },
+    {
+        "duration": "34.0",
+        "name": "system_health.common_mobile/load:media:dailymotion"
+    },
+    {
+        "duration": "30.0",
+        "name": "system_health.common_mobile/load:media:facebook_photos"
+    },
+    {
+        "duration": "39.0",
+        "name": "system_health.common_mobile/load:media:flickr:2018"
+    },
+    {
+        "duration": "29.0",
+        "name": "system_health.common_mobile/load:media:google_images"
+    },
+    {
+        "duration": "33.0",
+        "name": "system_health.common_mobile/load:media:google_images:2018"
+    },
+    {
+        "duration": "30.0",
+        "name": "system_health.common_mobile/load:media:imgur"
+    },
+    {
+        "duration": "47.0",
+        "name": "system_health.common_mobile/load:media:imgur:2018"
+    },
+    {
+        "duration": "28.0",
+        "name": "system_health.common_mobile/load:media:soundcloud"
+    },
+    {
+        "duration": "28.0",
+        "name": "system_health.common_mobile/load:media:soundcloud:2018"
+    },
+    {
+        "duration": "28.0",
+        "name": "system_health.common_mobile/load:media:youtube"
+    },
+    {
+        "duration": "39.0",
+        "name": "system_health.common_mobile/load:media:youtube:2018"
+    },
+    {
+        "duration": "72.0",
+        "name": "system_health.common_mobile/load:news:cnn"
+    },
+    {
+        "duration": "57.0",
+        "name": "system_health.common_mobile/load:news:cnn:2018"
+    },
+    {
+        "duration": "46.0",
+        "name": "system_health.common_mobile/load:news:irctc"
+    },
+    {
+        "duration": "39.0",
+        "name": "system_health.common_mobile/load:news:nytimes"
+    },
+    {
+        "duration": "42.0",
+        "name": "system_health.common_mobile/load:news:qq"
+    },
+    {
+        "duration": "32.0",
+        "name": "system_health.common_mobile/load:news:reddit"
+    },
+    {
+        "duration": "34.0",
         "name": "system_health.common_mobile/load:news:washingtonpost"
     },
     {
-        "duration": "34.0",
+        "duration": "31.0",
         "name": "system_health.common_mobile/load:news:wikipedia"
     },
     {
-        "duration": "32.0",
+        "duration": "30.0",
+        "name": "system_health.common_mobile/load:news:wikipedia:2018"
+    },
+    {
+        "duration": "60.0",
         "name": "system_health.common_mobile/load:search:baidu"
     },
     {
-        "duration": "34.0",
+        "duration": "54.0",
+        "name": "system_health.common_mobile/load:search:baidu:2018"
+    },
+    {
+        "duration": "41.0",
         "name": "system_health.common_mobile/load:search:ebay"
     },
     {
-        "duration": "30.0",
+        "duration": "36.0",
+        "name": "system_health.common_mobile/load:search:ebay:2018"
+    },
+    {
+        "duration": "27.0",
         "name": "system_health.common_mobile/load:search:google"
     },
     {
-        "duration": "32.0",
+        "duration": "30.0",
+        "name": "system_health.common_mobile/load:search:google:2018"
+    },
+    {
+        "duration": "33.0",
         "name": "system_health.common_mobile/load:search:taobao"
     },
     {
-        "duration": "30.0",
+        "duration": "26.0",
         "name": "system_health.common_mobile/load:search:yahoo"
     },
     {
-        "duration": "30.0",
+        "duration": "26.0",
+        "name": "system_health.common_mobile/load:search:yahoo:2018"
+    },
+    {
+        "duration": "28.0",
         "name": "system_health.common_mobile/load:search:yandex"
     },
     {
         "duration": "31.0",
+        "name": "system_health.common_mobile/load:search:yandex:2018"
+    },
+    {
+        "duration": "28.0",
         "name": "system_health.common_mobile/load:social:twitter"
     },
     {
-        "duration": "31.0",
+        "duration": "27.0",
         "name": "system_health.common_mobile/load:tools:docs"
     },
     {
-        "duration": "37.0",
+        "duration": "33.0",
         "name": "system_health.common_mobile/load:tools:drive"
     },
     {
-        "duration": "29.0",
+        "duration": "27.0",
         "name": "system_health.common_mobile/load:tools:dropbox"
     },
     {
-        "duration": "49.0",
-        "name": "system_health.common_mobile/load:tools:gmail"
-    },
-    {
-        "duration": "32.0",
+        "duration": "30.0",
         "name": "system_health.common_mobile/load:tools:stackoverflow"
     },
     {
-        "duration": "46.0",
+        "duration": "32.0",
+        "name": "system_health.common_mobile/load:tools:stackoverflow:2018"
+    },
+    {
+        "duration": "43.0",
         "name": "system_health.common_mobile/load:tools:weather"
     },
     {
-        "duration": "36.0",
+        "duration": "32.0",
         "name": "system_health.memory_mobile/background:media:imgur"
     },
     {
-        "duration": "37.0",
+        "duration": "36.0",
         "name": "system_health.memory_mobile/background:search:google"
     },
     {
-        "duration": "43.0",
+        "duration": "33.0",
         "name": "system_health.memory_mobile/background:social:facebook"
     },
     {
-        "duration": "48.0",
-        "name": "system_health.memory_mobile/background:tools:gmail"
-    },
-    {
-        "duration": "181.0",
+        "duration": "173.0",
         "name": "system_health.memory_mobile/browse:chrome:newtab"
     },
     {
-        "duration": "62.0",
+        "duration": "52.0",
         "name": "system_health.memory_mobile/browse:chrome:omnibox"
     },
     {
-        "duration": "108.0",
+        "duration": "102.0",
         "name": "system_health.memory_mobile/browse:media:facebook_photos"
     },
     {
-        "duration": "68.0",
+        "duration": "57.0",
         "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "86.0",
-        "name": "system_health.memory_mobile/browse:media:imgur"
-    },
-    {
-        "duration": "106.0",
-        "name": "system_health.memory_mobile/browse:media:youtube"
-    },
-    {
-        "duration": "73.0",
-        "name": "system_health.memory_mobile/browse:news:cricbuzz"
-    },
-    {
-        "duration": "67.0",
-        "name": "system_health.memory_mobile/browse:news:qq"
-    },
-    {
-        "duration": "76.0",
-        "name": "system_health.memory_mobile/browse:news:reddit"
-    },
-    {
-        "duration": "188.0",
-        "name": "system_health.memory_mobile/browse:news:toi"
-    },
-    {
-        "duration": "64.0",
-        "name": "system_health.memory_mobile/browse:news:washingtonpost"
-    },
-    {
-        "duration": "85.0",
-        "name": "system_health.memory_mobile/browse:shopping:amazon"
-    },
-    {
-        "duration": "99.0",
-        "name": "system_health.memory_mobile/browse:shopping:avito"
-    },
-    {
-        "duration": "53.0",
-        "name": "system_health.memory_mobile/browse:shopping:lazada"
-    },
-    {
-        "duration": "83.0",
-        "name": "system_health.memory_mobile/browse:social:facebook"
-    },
-    {
-        "duration": "96.0",
-        "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "107.0",
-        "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll:2018"
-    },
-    {
-        "duration": "94.0",
-        "name": "system_health.memory_mobile/browse:social:instagram"
-    },
-    {
-        "duration": "97.0",
-        "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll"
-    },
-    {
-        "duration": "67.0",
-        "name": "system_health.memory_mobile/browse:social:twitter"
-    },
-    {
-        "duration": "86.0",
-        "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "91.0",
-        "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "33.0",
-        "name": "system_health.memory_mobile/load:chrome:blank"
-    },
-    {
-        "duration": "45.0",
-        "name": "system_health.memory_mobile/load:games:bubbles"
-    },
-    {
-        "duration": "34.0",
-        "name": "system_health.memory_mobile/load:games:lazors"
-    },
-    {
-        "duration": "43.0",
-        "name": "system_health.memory_mobile/load:games:spychase"
-    },
-    {
-        "duration": "42.0",
-        "name": "system_health.memory_mobile/load:media:dailymotion"
-    },
-    {
-        "duration": "37.0",
-        "name": "system_health.memory_mobile/load:media:facebook_photos"
-    },
-    {
-        "duration": "37.0",
-        "name": "system_health.memory_mobile/load:media:google_images"
-    },
-    {
-        "duration": "36.0",
-        "name": "system_health.memory_mobile/load:media:imgur"
-    },
-    {
-        "duration": "36.0",
-        "name": "system_health.memory_mobile/load:media:soundcloud"
-    },
-    {
-        "duration": "36.0",
-        "name": "system_health.memory_mobile/load:media:youtube"
-    },
-    {
-        "duration": "71.0",
-        "name": "system_health.memory_mobile/load:news:cnn"
-    },
-    {
-        "duration": "51.0",
-        "name": "system_health.memory_mobile/load:news:irctc"
-    },
-    {
-        "duration": "44.0",
-        "name": "system_health.memory_mobile/load:news:nytimes"
-    },
-    {
-        "duration": "36.0",
-        "name": "system_health.memory_mobile/load:news:qq"
-    },
-    {
-        "duration": "39.0",
-        "name": "system_health.memory_mobile/load:news:reddit"
-    },
-    {
-        "duration": "47.0",
-        "name": "system_health.memory_mobile/load:news:washingtonpost"
-    },
-    {
-        "duration": "38.0",
-        "name": "system_health.memory_mobile/load:news:wikipedia"
-    },
-    {
-        "duration": "36.0",
-        "name": "system_health.memory_mobile/load:search:baidu"
-    },
-    {
-        "duration": "37.0",
-        "name": "system_health.memory_mobile/load:search:ebay"
-    },
-    {
-        "duration": "35.0",
-        "name": "system_health.memory_mobile/load:search:google"
-    },
-    {
-        "duration": "36.0",
-        "name": "system_health.memory_mobile/load:search:taobao"
-    },
-    {
-        "duration": "35.0",
-        "name": "system_health.memory_mobile/load:search:yahoo"
-    },
-    {
-        "duration": "35.0",
-        "name": "system_health.memory_mobile/load:search:yandex"
-    },
-    {
-        "duration": "36.0",
-        "name": "system_health.memory_mobile/load:social:twitter"
-    },
-    {
-        "duration": "37.0",
-        "name": "system_health.memory_mobile/load:tools:docs"
-    },
-    {
-        "duration": "40.0",
-        "name": "system_health.memory_mobile/load:tools:drive"
-    },
-    {
-        "duration": "34.0",
-        "name": "system_health.memory_mobile/load:tools:dropbox"
-    },
-    {
-        "duration": "37.0",
-        "name": "system_health.memory_mobile/load:tools:stackoverflow"
-    },
-    {
-        "duration": "46.0",
-        "name": "system_health.memory_mobile/load:tools:weather"
-    },
-    {
-        "duration": "214.0",
-        "name": "v8.browsing_mobile/browse:chrome:newtab"
-    },
-    {
-        "duration": "64.0",
-        "name": "v8.browsing_mobile/browse:chrome:omnibox"
-    },
-    {
-        "duration": "168.0",
-        "name": "v8.browsing_mobile/browse:media:facebook_photos"
-    },
-    {
-        "duration": "108.0",
-        "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll"
-    },
-    {
-        "duration": "138.0",
-        "name": "v8.browsing_mobile/browse:media:imgur"
-    },
-    {
-        "duration": "221.0",
-        "name": "v8.browsing_mobile/browse:media:youtube"
-    },
-    {
-        "duration": "420.0",
-        "name": "v8.browsing_mobile/browse:news:cnn:2018"
-    },
-    {
-        "duration": "119.0",
-        "name": "v8.browsing_mobile/browse:news:cricbuzz"
-    },
-    {
-        "duration": "102.0",
-        "name": "v8.browsing_mobile/browse:news:qq"
-    },
-    {
-        "duration": "120.0",
-        "name": "v8.browsing_mobile/browse:news:reddit"
-    },
-    {
-        "duration": "98.0",
-        "name": "v8.browsing_mobile/browse:news:washingtonpost"
-    },
-    {
-        "duration": "187.0",
-        "name": "v8.browsing_mobile/browse:shopping:amazon"
-    },
-    {
-        "duration": "185.0",
-        "name": "v8.browsing_mobile/browse:shopping:avito"
+        "duration": "57.0",
+        "name": "system_health.memory_mobile/browse:media:googleplaystore:2019"
     },
     {
         "duration": "81.0",
+        "name": "system_health.memory_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "100.0",
+        "name": "system_health.memory_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "69.0",
+        "name": "system_health.memory_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "100.0",
+        "name": "system_health.memory_mobile/browse:news:qq"
+    },
+    {
+        "duration": "72.0",
+        "name": "system_health.memory_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "187.0",
+        "name": "system_health.memory_mobile/browse:news:toi"
+    },
+    {
+        "duration": "61.0",
+        "name": "system_health.memory_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "39.0",
+        "name": "system_health.memory_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "88.0",
+        "name": "system_health.memory_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "48.0",
+        "name": "system_health.memory_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "78.0",
+        "name": "system_health.memory_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "88.0",
+        "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "92.0",
+        "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "91.0",
+        "name": "system_health.memory_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "95.0",
+        "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "116.0",
+        "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "64.0",
+        "name": "system_health.memory_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "73.0",
+        "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "87.0",
+        "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "58.0",
+        "name": "system_health.memory_mobile/browse:tools:maps"
+    },
+    {
+        "duration": "31.0",
+        "name": "system_health.memory_mobile/load:chrome:blank"
+    },
+    {
+        "duration": "32.0",
+        "name": "system_health.memory_mobile/load:games:bubbles"
+    },
+    {
+        "duration": "30.0",
+        "name": "system_health.memory_mobile/load:games:lazors"
+    },
+    {
+        "duration": "39.0",
+        "name": "system_health.memory_mobile/load:games:spychase"
+    },
+    {
+        "duration": "39.0",
+        "name": "system_health.memory_mobile/load:games:spychase:2018"
+    },
+    {
+        "duration": "37.0",
+        "name": "system_health.memory_mobile/load:media:dailymotion"
+    },
+    {
+        "duration": "32.0",
+        "name": "system_health.memory_mobile/load:media:facebook_photos"
+    },
+    {
+        "duration": "38.0",
+        "name": "system_health.memory_mobile/load:media:flickr:2018"
+    },
+    {
+        "duration": "32.0",
+        "name": "system_health.memory_mobile/load:media:google_images"
+    },
+    {
+        "duration": "35.0",
+        "name": "system_health.memory_mobile/load:media:google_images:2018"
+    },
+    {
+        "duration": "31.0",
+        "name": "system_health.memory_mobile/load:media:imgur"
+    },
+    {
+        "duration": "40.0",
+        "name": "system_health.memory_mobile/load:media:imgur:2018"
+    },
+    {
+        "duration": "32.0",
+        "name": "system_health.memory_mobile/load:media:soundcloud"
+    },
+    {
+        "duration": "31.0",
+        "name": "system_health.memory_mobile/load:media:soundcloud:2018"
+    },
+    {
+        "duration": "37.0",
+        "name": "system_health.memory_mobile/load:media:youtube"
+    },
+    {
+        "duration": "35.0",
+        "name": "system_health.memory_mobile/load:media:youtube:2018"
+    },
+    {
+        "duration": "64.0",
+        "name": "system_health.memory_mobile/load:news:cnn"
+    },
+    {
+        "duration": "53.0",
+        "name": "system_health.memory_mobile/load:news:cnn:2018"
+    },
+    {
+        "duration": "37.0",
+        "name": "system_health.memory_mobile/load:news:irctc"
+    },
+    {
+        "duration": "39.0",
+        "name": "system_health.memory_mobile/load:news:nytimes"
+    },
+    {
+        "duration": "44.0",
+        "name": "system_health.memory_mobile/load:news:qq"
+    },
+    {
+        "duration": "34.0",
+        "name": "system_health.memory_mobile/load:news:reddit"
+    },
+    {
+        "duration": "34.0",
+        "name": "system_health.memory_mobile/load:news:washingtonpost"
+    },
+    {
+        "duration": "35.0",
+        "name": "system_health.memory_mobile/load:news:wikipedia"
+    },
+    {
+        "duration": "34.0",
+        "name": "system_health.memory_mobile/load:news:wikipedia:2018"
+    },
+    {
+        "duration": "55.0",
+        "name": "system_health.memory_mobile/load:search:baidu"
+    },
+    {
+        "duration": "54.0",
+        "name": "system_health.memory_mobile/load:search:baidu:2018"
+    },
+    {
+        "duration": "36.0",
+        "name": "system_health.memory_mobile/load:search:ebay"
+    },
+    {
+        "duration": "34.0",
+        "name": "system_health.memory_mobile/load:search:ebay:2018"
+    },
+    {
+        "duration": "31.0",
+        "name": "system_health.memory_mobile/load:search:google"
+    },
+    {
+        "duration": "33.0",
+        "name": "system_health.memory_mobile/load:search:google:2018"
+    },
+    {
+        "duration": "40.0",
+        "name": "system_health.memory_mobile/load:search:taobao"
+    },
+    {
+        "duration": "30.0",
+        "name": "system_health.memory_mobile/load:search:yahoo"
+    },
+    {
+        "duration": "30.0",
+        "name": "system_health.memory_mobile/load:search:yahoo:2018"
+    },
+    {
+        "duration": "31.0",
+        "name": "system_health.memory_mobile/load:search:yandex"
+    },
+    {
+        "duration": "35.0",
+        "name": "system_health.memory_mobile/load:search:yandex:2018"
+    },
+    {
+        "duration": "31.0",
+        "name": "system_health.memory_mobile/load:social:twitter"
+    },
+    {
+        "duration": "31.0",
+        "name": "system_health.memory_mobile/load:tools:docs"
+    },
+    {
+        "duration": "35.0",
+        "name": "system_health.memory_mobile/load:tools:drive"
+    },
+    {
+        "duration": "30.0",
+        "name": "system_health.memory_mobile/load:tools:dropbox"
+    },
+    {
+        "duration": "33.0",
+        "name": "system_health.memory_mobile/load:tools:stackoverflow"
+    },
+    {
+        "duration": "35.0",
+        "name": "system_health.memory_mobile/load:tools:stackoverflow:2018"
+    },
+    {
+        "duration": "41.0",
+        "name": "system_health.memory_mobile/load:tools:weather"
+    },
+    {
+        "duration": "61.0",
+        "name": "v8.browsing_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "155.0",
+        "name": "v8.browsing_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "93.0",
+        "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "85.0",
+        "name": "v8.browsing_mobile/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "129.0",
+        "name": "v8.browsing_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "193.0",
+        "name": "v8.browsing_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "314.0",
+        "name": "v8.browsing_mobile/browse:news:cnn:2018"
+    },
+    {
+        "duration": "106.0",
+        "name": "v8.browsing_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "144.0",
+        "name": "v8.browsing_mobile/browse:news:qq"
+    },
+    {
+        "duration": "110.0",
+        "name": "v8.browsing_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "92.0",
+        "name": "v8.browsing_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "36.0",
+        "name": "v8.browsing_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "169.0",
+        "name": "v8.browsing_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "71.0",
         "name": "v8.browsing_mobile/browse:shopping:lazada"
     },
     {
-        "duration": "143.0",
+        "duration": "135.0",
         "name": "v8.browsing_mobile/browse:social:facebook"
     },
     {
-        "duration": "204.0",
+        "duration": "180.0",
         "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "248.0",
+        "duration": "187.0",
         "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "185.0",
+        "duration": "164.0",
         "name": "v8.browsing_mobile/browse:social:instagram"
     },
     {
-        "duration": "184.0",
+        "duration": "168.0",
         "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll"
     },
     {
-        "duration": "240.0",
+        "duration": "208.0",
         "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "98.0",
+        "duration": "248.0",
+        "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "88.0",
         "name": "v8.browsing_mobile/browse:social:twitter"
     },
     {
-        "duration": "154.0",
+        "duration": "126.0",
         "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "181.0",
+        "duration": "172.0",
         "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "85.0",
+        "name": "v8.browsing_mobile/browse:tools:maps"
     }
 ]
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/android-go_webview-perf_timing.json b/tools/perf/core/shard_maps/timing_data/android-go_webview-perf_timing.json
index cd64f47..f66ec11 100644
--- a/tools/perf/core/shard_maps/timing_data/android-go_webview-perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/android-go_webview-perf_timing.json
@@ -1,2994 +1,390 @@
 [
     {
-        "duration": "30.0",
-        "name": "blink_perf.accessibility/textarea-append.html"
-    },
-    {
-        "duration": "22.0",
-        "name": "blink_perf.events/EventsDispatching.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV0ShadowTrees.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html"
-    },
-    {
-        "duration": "24.0",
-        "name": "blink_perf.events/EventsDispatchingInV0ShadowTrees.html"
-    },
-    {
-        "duration": "23.0",
-        "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html"
-    },
-    {
-        "duration": "24.0",
-        "name": "blink_perf.events/hit-test-lots-of-layers.html"
-    },
-    {
-        "duration": "65.0",
-        "name": "blink_perf.image_decoder/decode-gif.html"
-    },
-    {
         "duration": "20.0",
-        "name": "blink_perf.image_decoder/decode-jpeg.html"
-    },
-    {
-        "duration": "54.0",
-        "name": "blink_perf.image_decoder/decode-lossless-webp.html"
-    },
-    {
-        "duration": "13.0",
-        "name": "blink_perf.image_decoder/decode-lossy-webp.html"
-    },
-    {
-        "duration": "35.0",
-        "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
-    },
-    {
-        "duration": "21.0",
-        "name": "blink_perf.image_decoder/decode-png-palette.html"
-    },
-    {
-        "duration": "60.0",
-        "name": "blink_perf.image_decoder/decode-png.html"
-    },
-    {
-        "duration": "21.0",
-        "name": "blink_perf.layout/ArabicLineLayout.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.layout/Shapes/MultipleShapes.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "blink_perf.layout/SimpleTextPathLineLayout.html"
-    },
-    {
-        "duration": "8.0",
-        "name": "blink_perf.layout/add-remove-inline-floats.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "blink_perf.layout/attach-inlines-2.html"
-    },
-    {
-        "duration": "10.0",
-        "name": "blink_perf.layout/attach-inlines.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "blink_perf.layout/auto-grid-lots-of-data.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "blink_perf.layout/change-text-css-contain.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "blink_perf.layout/chapter-reflow-once-random.html"
-    },
-    {
-        "duration": "13.0",
-        "name": "blink_perf.layout/chapter-reflow-once.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "blink_perf.layout/chapter-reflow-thrice.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "blink_perf.layout/chapter-reflow-twice.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "blink_perf.layout/chapter-reflow.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.layout/character_fallback.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.layout/character_fallback_aat.html"
-    },
-    {
-        "duration": "17.0",
-        "name": "blink_perf.layout/contain-content-style-change.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.layout/fixed-grid-lots-of-stretched-data.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "blink_perf.layout/flexbox-column-nowrap.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "blink_perf.layout/flexbox-column-wrap.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "blink_perf.layout/flexbox-lots-of-data.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "blink_perf.layout/flexbox-row-nowrap.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "blink_perf.layout/flexbox-row-stretch-height-definite.html"
-    },
-    {
-        "duration": "10.0",
-        "name": "blink_perf.layout/flexbox-row-wrap.html"
-    },
-    {
-        "duration": "10.0",
-        "name": "blink_perf.layout/flexbox-with-stretch-layout.html"
-    },
-    {
-        "duration": "21.0",
-        "name": "blink_perf.layout/floats_100_100.html"
-    },
-    {
-        "duration": "21.0",
-        "name": "blink_perf.layout/floats_100_100_nested.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "blink_perf.layout/floats_10_1000.html"
-    },
-    {
-        "duration": "9.0",
-        "name": "blink_perf.layout/floats_20_100.html"
-    },
-    {
-        "duration": "10.0",
-        "name": "blink_perf.layout/floats_20_100_nested.html"
-    },
-    {
-        "duration": "7.0",
-        "name": "blink_perf.layout/floats_2_100.html"
-    },
-    {
-        "duration": "7.0",
-        "name": "blink_perf.layout/floats_2_100_nested.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "blink_perf.layout/floats_50_100.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "blink_perf.layout/floats_50_100_nested.html"
-    },
-    {
-        "duration": "23.0",
-        "name": "blink_perf.owp_storage/blob-perf-files.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.owp_storage/blob-perf-ipc.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "blink_perf.owp_storage/blob-perf-shm.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "blink_perf.owp_storage/blob-perf-tiny.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.owp_storage/idb-load-docs.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.shadow_dom/declarative-api.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/imperative-api-appendchild.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/imperative-api-assign.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/imperative-api-assigned-elements.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/imperative-api-assigned-slot.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary-large.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/imperative-api-detail-summary-large.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/imperative-api-detail-summary.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/imperative-api-insertbefore.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/imperative-api.html"
-    },
-    {
-        "duration": "6.0",
-        "name": "blink_perf.shadow_dom/shadow-style-share-attr-selectors.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/shadow-style-share-media-query.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/shadow-style-share-with-distribution.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/shadow-style-share.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/style-sheet-insert.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/v0-changing-classname-with-shadow-dom.html"
-    },
-    {
-        "duration": "6.0",
-        "name": "blink_perf.shadow_dom/v0-changing-classname-without-shadow-dom.html"
-    },
-    {
-        "duration": "9.0",
-        "name": "blink_perf.shadow_dom/v0-changing-select-with-shadow-dom.html"
-    },
-    {
-        "duration": "9.0",
-        "name": "blink_perf.shadow_dom/v0-changing-select-without-shadow-dom.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/v0-content-reprojection.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/v0-large-distribution-without-layout.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/v0-multiple-insertion-points.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/v0-shadow-reprojection.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/v0-small-distribution-with-layout.html"
-    },
-    {
-        "duration": "25.0",
-        "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/v1-distribution.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/v1-host-child-append.html"
-    },
-    {
-        "duration": "25.0",
-        "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html"
-    },
-    {
-        "duration": "57.0",
-        "name": "blink_perf.shadow_dom/v1-large-deep-layout.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/v1-large-shallow-distribution.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/v1-large-shallow-layout.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-re-layout.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-assigned-nodes.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-flatten.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-re-layout.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-assigned-nodes.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-flatten.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/v1-slot-append.html"
-    },
-    {
-        "duration": "7.0",
-        "name": "blink_perf.shadow_dom/v1-small-deep-distribution.html"
-    },
-    {
-        "duration": "7.0",
-        "name": "blink_perf.shadow_dom/v1-small-deep-layout.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/v1-small-shallow-distribution.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.shadow_dom/v1-small-shallow-layout.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.svg/AzLizardBenjiPark.html"
-    },
-    {
-        "duration": "8.0",
-        "name": "blink_perf.svg/Bamboo.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.svg/Cactus.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.svg/Cowboy.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.svg/CrawFishGanson.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.svg/Debian.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.svg/DropsOnABlade.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.svg/FlowerFromMyGarden.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.svg/FoodLeifLodahl.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.svg/France.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.svg/FrancoBolloGnomeEzechi.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.svg/GearFlowers.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.svg/HarveyRayner.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.svg/HereGear.html"
-    },
-    {
-        "duration": "8.0",
-        "name": "blink_perf.svg/MtSaintHelens.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.svg/Samurai.html"
-    },
-    {
-        "duration": "60.0",
-        "name": "blink_perf.svg/SierpinskiCarpet.html"
-    },
-    {
-        "duration": "6.0",
-        "name": "blink_perf.svg/SvgCubics.html"
-    },
-    {
-        "duration": "6.0",
-        "name": "blink_perf.svg/SvgHitTesting.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "blink_perf.svg/SvgNestedUse.html"
-    },
-    {
-        "duration": "5.0",
-        "name": "blink_perf.svg/UnderTheSee.html"
-    },
-    {
-        "duration": "6.0",
-        "name": "blink_perf.svg/WorldIso.html"
-    },
-    {
-        "duration": "8.0",
-        "name": "blink_perf.svg/Worldcup.html"
-    },
-    {
-        "duration": "13.0",
-        "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html"
-    },
-    {
-        "duration": "281.0",
-        "name": "jetstream/http://browserbench.org/JetStream/"
-    },
-    {
-        "duration": "16.0",
-        "name": "loading.mobile/58Pic"
-    },
-    {
-        "duration": "166.0",
-        "name": "loading.mobile/58Pic_3g"
-    },
-    {
-        "duration": "19.0",
-        "name": "loading.mobile/Amazon"
-    },
-    {
-        "duration": "233.0",
-        "name": "loading.mobile/Amazon_3g"
-    },
-    {
-        "duration": "21.0",
-        "name": "loading.mobile/BOLNoticias"
-    },
-    {
-        "duration": "275.0",
-        "name": "loading.mobile/BOLNoticias_3g"
-    },
-    {
-        "duration": "22.0",
-        "name": "loading.mobile/Baidu"
-    },
-    {
-        "duration": "173.0",
-        "name": "loading.mobile/Baidu_3g"
-    },
-    {
-        "duration": "18.0",
-        "name": "loading.mobile/Bradesco"
-    },
-    {
-        "duration": "18.0",
-        "name": "loading.mobile/Dailymotion"
-    },
-    {
-        "duration": "23.0",
-        "name": "loading.mobile/Dawn"
-    },
-    {
-        "duration": "16.0",
-        "name": "loading.mobile/DevOpera_cold"
-    },
-    {
-        "duration": "168.0",
-        "name": "loading.mobile/DevOpera_cold_3g"
-    },
-    {
-        "duration": "22.0",
-        "name": "loading.mobile/DevOpera_hot"
-    },
-    {
-        "duration": "156.0",
-        "name": "loading.mobile/DevOpera_hot_3g"
-    },
-    {
-        "duration": "19.0",
-        "name": "loading.mobile/DevOpera_warm"
-    },
-    {
-        "duration": "148.0",
-        "name": "loading.mobile/DevOpera_warm_3g"
-    },
-    {
-        "duration": "20.0",
-        "name": "loading.mobile/Dramaq"
-    },
-    {
-        "duration": "141.0",
-        "name": "loading.mobile/Dramaq_3g"
-    },
-    {
-        "duration": "15.0",
-        "name": "loading.mobile/EnquiryIndianRail"
-    },
-    {
-        "duration": "143.0",
-        "name": "loading.mobile/EnquiryIndianRail_3g"
-    },
-    {
-        "duration": "15.0",
-        "name": "loading.mobile/Facebook"
-    },
-    {
-        "duration": "36.0",
-        "name": "loading.mobile/Facebook_3g"
-    },
-    {
-        "duration": "17.0",
-        "name": "loading.mobile/FlipBoard_cold"
-    },
-    {
-        "duration": "26.0",
-        "name": "loading.mobile/FlipBoard_hot"
-    },
-    {
-        "duration": "38.0",
-        "name": "loading.mobile/FlipBoard_hot_3g"
-    },
-    {
-        "duration": "21.0",
-        "name": "loading.mobile/FlipBoard_warm"
-    },
-    {
-        "duration": "21.0",
-        "name": "loading.mobile/FlipKart_cold"
-    },
-    {
-        "duration": "32.0",
-        "name": "loading.mobile/FlipKart_hot"
-    },
-    {
-        "duration": "29.0",
-        "name": "loading.mobile/FlipKart_hot_3g"
-    },
-    {
-        "duration": "25.0",
-        "name": "loading.mobile/FlipKart_warm"
-    },
-    {
-        "duration": "252.0",
-        "name": "loading.mobile/FlipKart_warm_3g"
-    },
-    {
-        "duration": "16.0",
-        "name": "loading.mobile/FranceTVInfo"
-    },
-    {
-        "duration": "65.0",
-        "name": "loading.mobile/FranceTVInfo_3g"
-    },
-    {
-        "duration": "22.0",
-        "name": "loading.mobile/GSShop"
-    },
-    {
-        "duration": "14.0",
-        "name": "loading.mobile/GoogleBrazil"
-    },
-    {
-        "duration": "245.0",
-        "name": "loading.mobile/GoogleBrazil_3g"
-    },
-    {
-        "duration": "15.0",
-        "name": "loading.mobile/GoogleIndia"
-    },
-    {
-        "duration": "15.0",
-        "name": "loading.mobile/GoogleIndonesia"
-    },
-    {
-        "duration": "237.0",
-        "name": "loading.mobile/GoogleIndonesia_3g"
-    },
-    {
-        "duration": "20.0",
-        "name": "loading.mobile/GoogleRedirectToGoogleJapan"
-    },
-    {
-        "duration": "18.0",
-        "name": "loading.mobile/Hongkiat"
-    },
-    {
-        "duration": "271.0",
-        "name": "loading.mobile/Hongkiat_3g"
-    },
-    {
-        "duration": "20.0",
-        "name": "loading.mobile/KapanLagi"
-    },
-    {
-        "duration": "25.0",
-        "name": "loading.mobile/Kaskus"
-    },
-    {
-        "duration": "18.0",
-        "name": "loading.mobile/LocalMoxie"
-    },
-    {
-        "duration": "14.0",
-        "name": "loading.mobile/Locanto"
-    },
-    {
-        "duration": "102.0",
-        "name": "loading.mobile/Locanto_3g"
-    },
-    {
-        "duration": "17.0",
-        "name": "loading.mobile/OLX"
-    },
-    {
-        "duration": "249.0",
-        "name": "loading.mobile/OLX_3g"
-    },
-    {
-        "duration": "19.0",
-        "name": "loading.mobile/QQNews"
-    },
-    {
-        "duration": "217.0",
-        "name": "loading.mobile/QQNews_3g"
-    },
-    {
-        "duration": "16.0",
-        "name": "loading.mobile/SlideShare"
-    },
-    {
-        "duration": "227.0",
-        "name": "loading.mobile/SlideShare_3g"
-    },
-    {
-        "duration": "15.0",
-        "name": "loading.mobile/Suumo_cold"
-    },
-    {
-        "duration": "37.0",
-        "name": "loading.mobile/Suumo_cold_3g"
-    },
-    {
-        "duration": "19.0",
-        "name": "loading.mobile/Suumo_hot"
-    },
-    {
-        "duration": "27.0",
-        "name": "loading.mobile/Suumo_hot_3g"
-    },
-    {
-        "duration": "17.0",
-        "name": "loading.mobile/Suumo_warm"
-    },
-    {
-        "duration": "24.0",
-        "name": "loading.mobile/Suumo_warm_3g"
-    },
-    {
-        "duration": "17.0",
-        "name": "loading.mobile/Thairath"
-    },
-    {
-        "duration": "23.0",
-        "name": "loading.mobile/TheStar"
-    },
-    {
-        "duration": "21.0",
-        "name": "loading.mobile/TribunNews"
-    },
-    {
-        "duration": "15.0",
-        "name": "loading.mobile/Twitter"
-    },
-    {
-        "duration": "135.0",
-        "name": "loading.mobile/Twitter_3g"
-    },
-    {
-        "duration": "16.0",
-        "name": "loading.mobile/VoiceMemos_cold"
-    },
-    {
-        "duration": "260.0",
-        "name": "loading.mobile/VoiceMemos_cold_3g"
-    },
-    {
-        "duration": "22.0",
-        "name": "loading.mobile/VoiceMemos_hot"
-    },
-    {
-        "duration": "49.0",
-        "name": "loading.mobile/VoiceMemos_hot_3g"
-    },
-    {
-        "duration": "19.0",
-        "name": "loading.mobile/VoiceMemos_warm"
-    },
-    {
-        "duration": "46.0",
-        "name": "loading.mobile/VoiceMemos_warm_3g"
-    },
-    {
-        "duration": "14.0",
-        "name": "loading.mobile/Wikipedia"
-    },
-    {
-        "duration": "191.0",
-        "name": "loading.mobile/Wikipedia_3g"
-    },
-    {
-        "duration": "21.0",
-        "name": "loading.mobile/YahooNews"
-    },
-    {
-        "duration": "15.0",
-        "name": "loading.mobile/Youtube"
-    },
-    {
-        "duration": "252.0",
-        "name": "memory.long_running_idle_gmail_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "22.0",
         "name": "memory.top_10_mobile/after_http_en_m_wikipedia_org_wiki_Science"
     },
     {
-        "duration": "22.0",
+        "duration": "19.0",
         "name": "memory.top_10_mobile/after_http_m_intl_taobao_com_group_purchase_html"
     },
     {
-        "duration": "21.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/after_http_m_youtube_com_results_q_science"
     },
     {
-        "duration": "22.0",
+        "duration": "19.0",
         "name": "memory.top_10_mobile/after_http_search_yahoo_com_search__ylt_p_google"
     },
     {
-        "duration": "22.0",
+        "duration": "28.0",
         "name": "memory.top_10_mobile/after_http_www_amazon_com_gp_aw_s_k_nexus"
     },
     {
-        "duration": "22.0",
+        "duration": "24.0",
         "name": "memory.top_10_mobile/after_http_www_baidu_com_s_word_google"
     },
     {
-        "duration": "22.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/after_http_yandex_ru_touchsearch_text_science"
     },
     {
-        "duration": "29.0",
+        "duration": "19.0",
         "name": "memory.top_10_mobile/after_https_m_facebook_com_rihanna"
     },
     {
-        "duration": "22.0",
+        "duration": "19.0",
         "name": "memory.top_10_mobile/after_https_mobile_twitter_com_justinbieber_skip_interstitial_true"
     },
     {
-        "duration": "25.0",
+        "duration": "20.0",
+        "name": "memory.top_10_mobile/after_https_www_google_co_uk_hl_en_q_science"
+    },
+    {
+        "duration": "27.0",
         "name": "memory.top_10_mobile/http_en_m_wikipedia_org_wiki_Science"
     },
     {
-        "duration": "25.0",
+        "duration": "24.0",
         "name": "memory.top_10_mobile/http_m_intl_taobao_com_group_purchase_html"
     },
     {
-        "duration": "25.0",
+        "duration": "24.0",
         "name": "memory.top_10_mobile/http_m_youtube_com_results_q_science"
     },
     {
-        "duration": "24.0",
+        "duration": "23.0",
         "name": "memory.top_10_mobile/http_search_yahoo_com_search__ylt_p_google"
     },
     {
-        "duration": "25.0",
+        "duration": "24.0",
         "name": "memory.top_10_mobile/http_www_amazon_com_gp_aw_s_k_nexus"
     },
     {
-        "duration": "27.0",
+        "duration": "38.0",
         "name": "memory.top_10_mobile/http_www_baidu_com_s_word_google"
     },
     {
-        "duration": "25.0",
+        "duration": "24.0",
         "name": "memory.top_10_mobile/http_yandex_ru_touchsearch_text_science"
     },
     {
-        "duration": "25.0",
+        "duration": "22.0",
+        "name": "memory.top_10_mobile/https_m_facebook_com_rihanna"
+    },
+    {
+        "duration": "23.0",
         "name": "memory.top_10_mobile/https_mobile_twitter_com_justinbieber_skip_interstitial_true"
     },
     {
-        "duration": "63.0",
-        "name": "octane/http://chromium.github.io/octane/index.html?auto=1"
+        "duration": "20.0",
+        "name": "memory.top_10_mobile/https_www_google_co_uk_hl_en_q_science"
     },
     {
-        "duration": "22.0",
-        "name": "oortonline_tbmv2/http://oortonline.gl/#run"
-    },
-    {
-        "duration": "63.0",
+        "duration": "75.0",
         "name": "power.typical_10_mobile/http://de.m.wikipedia.org/wiki/K%C3%B6lner_Dom"
     },
     {
-        "duration": "67.0",
+        "duration": "92.0",
         "name": "power.typical_10_mobile/http://m.chiebukuro.yahoo.co.jp/detail/q10136829180"
     },
     {
-        "duration": "58.0",
+        "duration": "67.0",
         "name": "power.typical_10_mobile/http://m.ebay.com/itm/351157205404"
     },
     {
-        "duration": "70.0",
+        "duration": "83.0",
         "name": "power.typical_10_mobile/http://m.facebook.com/barackobama"
     },
     {
-        "duration": "63.0",
+        "duration": "82.0",
         "name": "power.typical_10_mobile/http://m.huffpost.com/us/entry/6004486"
     },
     {
-        "duration": "62.0",
+        "duration": "76.0",
         "name": "power.typical_10_mobile/http://m.ynet.co.il"
     },
     {
-        "duration": "63.0",
+        "duration": "75.0",
         "name": "power.typical_10_mobile/http://siriuslymeg.tumblr.com/"
     },
     {
-        "duration": "59.0",
+        "duration": "79.0",
         "name": "power.typical_10_mobile/http://wapbaike.baidu.com/"
     },
     {
-        "duration": "59.0",
+        "duration": "73.0",
         "name": "power.typical_10_mobile/http://www.cnn.com/2014/03/31/showbiz/tv/himym-finale/index.html"
     },
     {
-        "duration": "61.0",
+        "duration": "77.0",
         "name": "power.typical_10_mobile/http://www.rg.ru/2014/10/21/cska-site.html"
     },
     {
-        "duration": "63.0",
+        "duration": "75.0",
         "name": "power.typical_10_mobile/https://en.wikipedia.org/wiki/File:Rotating_earth_(large).gif"
     },
     {
-        "duration": "21.0",
-        "name": "rasterize_and_record_micro.partial_invalidation/800_relpos_divs.html"
-    },
-    {
-        "duration": "31.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html"
-    },
-    {
-        "duration": "22.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html"
-    },
-    {
-        "duration": "10.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/ebay.html"
-    },
-    {
-        "duration": "19.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html"
-    },
-    {
-        "duration": "20.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html"
-    },
-    {
-        "duration": "35.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html"
-    },
-    {
-        "duration": "29.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/google.html"
-    },
-    {
-        "duration": "27.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googlecalendar.html"
-    },
-    {
-        "duration": "21.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googledocs.html"
-    },
-    {
-        "duration": "24.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html"
-    },
-    {
-        "duration": "19.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html"
-    },
-    {
-        "duration": "20.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html"
-    },
-    {
-        "duration": "9.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html"
-    },
-    {
-        "duration": "26.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html"
-    },
-    {
-        "duration": "13.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html"
-    },
-    {
-        "duration": "20.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html"
-    },
-    {
-        "duration": "62.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html"
-    },
-    {
-        "duration": "86.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html"
-    },
-    {
-        "duration": "33.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html"
-    },
-    {
-        "duration": "43.0",
-        "name": "rendering.mobile/accu_weather_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/accu_weather_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/amazon_2018"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/amazon_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/amazon_mobile_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/analog_clock_svg"
-    },
-    {
-        "duration": "53.0",
-        "name": "rendering.mobile/androidpolice_mobile_2018"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/animometer_webgl"
-    },
-    {
-        "duration": "39.0",
-        "name": "rendering.mobile/aquarium"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/background_color_animation"
-    },
-    {
-        "duration": "65.0",
-        "name": "rendering.mobile/background_color_animation_with_gradient"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/baidu_mobile_2018"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/balls_css_key_frame_animations"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/balls_css_transition_2_properties"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/balls_css_transition_40_properties"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/balls_css_transition_all_properties"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/balls_javascript_canvas"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/balls_javascript_css"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/balls_svg_animations"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/bing_mobile_2018"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/blob"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/blogspot_2018"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/blogspot_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/blogspot_mobile_2018"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/blur_rotating_background"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/boingboing_mobile_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/booking.com_2018"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/booking.com_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/booking.com_mobile_2018"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.mobile/bouncing_balls_15"
-    },
-    {
-        "duration": "18.0",
-        "name": "rendering.mobile/bouncing_clipped_rectangles"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/bouncing_gradient_circles"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.mobile/bouncing_png_images"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/bouncing_svg_images"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/camera_to_webgl"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/canvas_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/canvas_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/canvas_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.mobile/canvas_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "18.0",
-        "name": "rendering.mobile/canvas_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.mobile/canvas_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "16.0",
-        "name": "rendering.mobile/canvas_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "16.0",
-        "name": "rendering.mobile/canvas_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/canvas_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/canvas_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/canvas_animation_no_clear"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/canvas_arcs"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/canvas_font_cycler"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/canvas_lines"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.mobile/canvas_to_blob"
-    },
-    {
-        "duration": "42.0",
-        "name": "rendering.mobile/capitolvolkswagen_mobile_2018"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/card_expansion"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/card_expansion_animated"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/card_expansion_images_text"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/card_flying"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.mobile/cats_unscaled"
-    },
-    {
-        "duration": "12.0",
-        "name": "rendering.mobile/cats_viewport_width"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/cc_poster_circle"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/cc_scroll_text_only"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/chip_tune"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/cnn_2018"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.mobile/cnn_article_mobile_2018"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/cnn_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/cnn_mobile_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/cnn_pathological_2018"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/compositor_heavy_animation"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/coordinated_animation"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/crafty_mind"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/css_animations_many_keyframes"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/css_animations_simultaneous_inline_style"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/css_animations_simultaneous_new_element"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/css_animations_simultaneous_style_element"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/css_animations_simultaneous_updating_class"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/css_animations_staggered_infinite_iterations"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/css_animations_staggered_inline_style"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/css_animations_staggered_new_element"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/css_animations_staggered_style_element"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/css_animations_staggered_updating_class"
-    },
-    {
-        "duration": "43.0",
-        "name": "rendering.mobile/css_animations_triggered_inline_style"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.mobile/css_animations_triggered_new_element"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/css_animations_triggered_style_element"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/css_animations_triggered_updating_class"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/css_opacity_plus_n_layers_0"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/css_opacity_plus_n_layers_75"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/css_opacity_plus_n_layers_99"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/css_transitions_inline_style"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/css_transitions_new_element"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/css_transitions_staggered_inline_style"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/css_transitions_staggered_new_element"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/css_transitions_staggered_style_element"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/css_transitions_staggered_updating_class"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/css_transitions_style_element"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/css_transitions_triggered_inline_style"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/css_transitions_triggered_new_element"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/css_transitions_triggered_style_element"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/css_transitions_triggered_updating_class"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/css_transitions_updating_class"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/css_value_type_color"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/css_value_type_filter"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/css_value_type_length"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/css_value_type_length_complex"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/css_value_type_length_simple"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/css_value_type_path"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.mobile/css_value_type_shadow"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/css_value_type_transform_complex"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/css_value_type_transform_simple"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.mobile/deviantart_mobile_2018"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/digg_mobile_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/dynamic_cube_map"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/earth"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/ebay_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/ebay_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/ebay_mobile_2018"
-    },
-    {
-        "duration": "41.0",
-        "name": "rendering.mobile/ebay_scroll_2018"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/espn_2018"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/espn_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/espn_mobile_2018"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/espn_pathological_2018"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/extra_large_texture_uploads"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/facebook_2018"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/facebook_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "42.0",
-        "name": "rendering.mobile/facebook_mobile_2018"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/fill_shapes"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/filter_terrain_svg"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.mobile/flickr_scroll_2018"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/font_wipe"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/forecast.io_mobile_2018"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/geo_apis"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/gmail_2018"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.mobile/gmail_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/google_calendar_2018"
-    },
-    {
-        "duration": "18.0",
-        "name": "rendering.mobile/google_calendar_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/google_docs_2018"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/google_docs_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/google_image_search_2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/google_image_search_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/google_image_search_mobile_2018"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/google_news_ios"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/google_news_mobile_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/google_plus_2018"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/google_plus_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "39.0",
-        "name": "rendering.mobile/google_plus_mobile_2018"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/google_web_search_2018"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.mobile/google_web_search_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/google_web_search_mobile_2018"
-    },
-    {
-        "duration": "37.0",
-        "name": "rendering.mobile/gsp.ro_mobile_2018"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/guardian_pathological_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/guimark_vector_chart"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/gws_boogie_expansion"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/gws_google_expansion"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/hakim"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/horizontal_vertical_expansion"
-    },
-    {
-        "duration": "41.0",
-        "name": "rendering.mobile/idle_power_animated_gif"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/idle_power_blank"
-    },
-    {
-        "duration": "45.0",
-        "name": "rendering.mobile/idle_power_css_animation"
-    },
-    {
-        "duration": "60.0",
-        "name": "rendering.mobile/idle_power_request_animation_frame"
-    },
-    {
-        "duration": "133.0",
-        "name": "rendering.mobile/idle_power_set_timeout_long"
-    },
-    {
-        "duration": "50.0",
-        "name": "rendering.mobile/idle_power_set_timetout"
-    },
-    {
-        "duration": "45.0",
-        "name": "rendering.mobile/ie_chalkboard"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/ie_pirate_mark"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.mobile/infinite_scroll_element_n_layers_0"
-    },
-    {
-        "duration": "37.0",
-        "name": "rendering.mobile/infinite_scroll_element_n_layers_75"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.mobile/infinite_scroll_element_n_layers_99"
-    },
-    {
-        "duration": "37.0",
-        "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_0"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_75"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_99"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.mobile/infinite_scroll_root_n_layers_0"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.mobile/infinite_scroll_root_n_layers_75"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/infinite_scroll_root_n_layers_99"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/infinite_scrolling"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/jarro_doverson"
-    },
-    {
-        "duration": "43.0",
-        "name": "rendering.mobile/js_full_screen_invalidation"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/js_opacity_plus_n_layers_0"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/js_opacity_plus_n_layers_75"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/js_opacity_plus_n_layers_99"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.mobile/js_paint_plus_n_layers_0"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.mobile/js_paint_plus_n_layers_75"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/js_paint_plus_n_layers_99"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/js_poster_circle"
-    },
-    {
-        "duration": "18.0",
-        "name": "rendering.mobile/js_scroll_text_only"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/keyframed_animations"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/large_texture_uploads"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.mobile/latimes_pathological_2018"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/linkedin_2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/linkedin_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "60.0",
-        "name": "rendering.mobile/linkedin_mobile_2018"
-    },
-    {
-        "duration": "39.0",
-        "name": "rendering.mobile/linkedin_pathological_2018"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/list_animation_simple"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/list_recycle_transform"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/man_in_blue"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/many_images"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/many_planets_deep"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/mask_transition_animation"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/medium_texture_uploads"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/megi_dish"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/microsoft_asteroid_belt"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/microsoft_fish_ie_tank"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/microsoft_snow"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/microsoft_speed_reading"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/microsoft_tweet_map"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/microsoft_video_city"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/microsoft_worker_fountains"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/mix_10k"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/mix_blend_mode_animation_difference"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/mix_blend_mode_animation_hue"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/mix_blend_mode_animation_propagating_isolation"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/mix_blend_mode_animation_screen"
-    },
-    {
-        "duration": "45.0",
-        "name": "rendering.mobile/mlb_mobile_2018"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/mobile_news_sandbox"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/motion_mark_canvas_fill_shapes"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/motion_mark_canvas_stroke_shapes"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/motionmark_anim_design_15"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/motionmark_anim_focus_25"
-    },
-    {
-        "duration": "42.0",
-        "name": "rendering.mobile/motionmark_anim_images_50"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/motionmark_anim_leaves_250"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/motionmark_anim_multiply_175"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/motionmark_anim_suits_125"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/motionmark_html_composited_transforms_125"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/motionmark_html_css_bouncing_blend_circles_25"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/motionmark_html_css_bouncing_circles_250"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/motionmark_html_css_bouncing_clipped_rects_100"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/motionmark_html_css_bouncing_filter_circles_15"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/motionmark_html_css_bouncing_gradient_circles_250"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/motionmark_html_css_bouncing_svg_images_50"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/motionmark_html_css_bouncing_tagged_images_225"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/motionmark_html_dom_particles_svg_masks_25"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/motionmark_html_focus_20_15"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/motionmark_html_leaves_20_50"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/motionmark_svg_bouncing_circles_250"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/motionmark_svg_bouncing_clipped_rects_100"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/motionmark_svg_bouncing_gradient_circles_200"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/motionmark_svg_bouncing_png_images_200"
-    },
-    {
-        "duration": "67.0",
-        "name": "rendering.mobile/motionmark_svg_bouncing_svg_images_50"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/new_tilings"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/no_op_raf"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/no_op_scroll"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.mobile/no_op_settimeout"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/no_op_touch_handler"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/nvidia_vertex_buffer_object"
-    },
-    {
-        "duration": "39.0",
-        "name": "rendering.mobile/nyc_gov_scroll_2018"
-    },
-    {
-        "duration": "37.0",
-        "name": "rendering.mobile/nytimes_mobile_2018"
-    },
-    {
-        "duration": "42.0",
-        "name": "rendering.mobile/nytimes_scroll_2018"
-    },
-    {
-        "duration": "163.0",
-        "name": "rendering.mobile/overlay_background_color_css_transitions_page"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/parallax_effect"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/particles"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/pbs_pathological_2018"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/physical_simulation"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.mobile/pinterest_2018"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/pinterest_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/pinterest_mobile_2018"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/put_get_image_data"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/raf"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/raf_animation"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/raf_canvas"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/raf_touch_animation"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.mobile/recode_pathological_2018"
-    },
-    {
-        "duration": "39.0",
-        "name": "rendering.mobile/reddit_mobile_2018"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/runway"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/san_angeles"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/second_batch_js_heavy"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/second_batch_js_light"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/second_batch_js_medium"
-    },
-    {
-        "duration": "43.0",
-        "name": "rendering.mobile/sfgate_mobile_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/silk_finance"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/simple_text_page"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.mobile/simple_touch_drag"
-    },
-    {
-        "duration": "37.0",
-        "name": "rendering.mobile/slashdot_mobile_2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/small_texture_uploads"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/spielzeugz"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/sticky_using_webkit"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.mobile/stress_hidey_bars"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/stroke_shapes"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/svg_icon_raster"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/swipe_to_dismiss"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/sync_scroll_offset"
-    },
-    {
-        "duration": "43.0",
-        "name": "rendering.mobile/techcrunch_2018"
-    },
-    {
-        "duration": "39.0",
-        "name": "rendering.mobile/techcrunch_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "45.0",
-        "name": "rendering.mobile/techcrunch_mobile_2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/text_05000_pixels_per_second"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/text_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/text_10000_pixels_per_second"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/text_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/text_15000_pixels_per_second"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/text_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/text_20000_pixels_per_second"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/text_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/text_30000_pixels_per_second"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/text_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.mobile/text_40000_pixels_per_second"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.mobile/text_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.mobile/text_50000_pixels_per_second"
-    },
-    {
-        "duration": "16.0",
-        "name": "rendering.mobile/text_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "16.0",
-        "name": "rendering.mobile/text_60000_pixels_per_second"
-    },
-    {
-        "duration": "16.0",
-        "name": "rendering.mobile/text_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/text_75000_pixels_per_second"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/text_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/text_90000_pixels_per_second"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/text_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "16.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second"
-    },
-    {
-        "duration": "16.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/text_hover_05000_pixels_per_second"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/text_hover_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/text_hover_10000_pixels_per_second"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/text_hover_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.mobile/text_hover_15000_pixels_per_second"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.mobile/text_hover_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "16.0",
-        "name": "rendering.mobile/text_hover_20000_pixels_per_second"
-    },
-    {
-        "duration": "16.0",
-        "name": "rendering.mobile/text_hover_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/text_hover_30000_pixels_per_second"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/text_hover_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.mobile/text_hover_40000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.mobile/text_hover_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.mobile/text_hover_50000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.mobile/text_hover_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.mobile/text_hover_60000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.mobile/text_hover_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.mobile/text_hover_75000_pixels_per_second"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.mobile/text_hover_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.mobile/text_hover_90000_pixels_per_second"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.mobile/text_hover_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "40.0",
-        "name": "rendering.mobile/theverge_article_mobile_2018"
-    },
-    {
-        "duration": "43.0",
-        "name": "rendering.mobile/theverge_mobile_2018"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/toggle_drawer"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/touch_handler_scrolling"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/transform_transitions"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/transform_transitions_js_block"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/twitch_2018"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/twitch_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/twitter_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/twitter_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/twitter_mobile_2018"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/update_history_state"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.mobile/usatoday_mobile_2018"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/vertical_expansion"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/web_animation_value_type_color"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/web_animation_value_type_length_3d"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/web_animation_value_type_length_complex"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/web_animation_value_type_length_simple"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/web_animation_value_type_path"
-    },
-    {
-        "duration": "37.0",
-        "name": "rendering.mobile/web_animation_value_type_shadow"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/web_animation_value_type_transform_complex"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/web_animation_value_type_transform_simple"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/web_animations_many_keyframes"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/web_animations_set_current_time"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/web_animations_simultaneous"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/web_animations_staggered_chaining"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/web_animations_staggered_infinite_iterations"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/web_animations_staggered_triggering_page"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.mobile/wikipedia_2018"
-    },
-    {
-        "duration": "39.0",
-        "name": "rendering.mobile/wikipedia_delayed_scroll_start_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/wikipedia_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/wikipedia_mobile_2018"
-    },
-    {
-        "duration": "40.0",
-        "name": "rendering.mobile/wordpress_2018"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.mobile/wordpress_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "41.0",
-        "name": "rendering.mobile/wordpress_mobile_2018"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/worldjournal_mobile_2018"
-    },
-    {
-        "duration": "42.0",
-        "name": "rendering.mobile/wow_wiki_pathological_2018"
-    },
-    {
-        "duration": "71.0",
-        "name": "rendering.mobile/wowwiki_mobile_2018"
-    },
-    {
-        "duration": "47.0",
-        "name": "rendering.mobile/wsj_mobile_2018"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/yahoo_answers_2018"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/yahoo_answers_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/yahoo_news_2018"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/yahoo_news_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.mobile/yahoo_news_mobile_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/yahoo_sports_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/yahoo_sports_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/yahoo_sports_pathological_2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/youtube_2018"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/youtube_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/youtube_mobile_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/yuv_decoding"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/yuv_decoding_gpu_rasterization_and_decoding"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/zdnet_pathological_2018"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/zoom_in_animation"
-    },
-    {
-        "duration": "43.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/accu_weather_pinch_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/amazon_pinch_2018"
-    },
-    {
-        "duration": "25.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/blogspot_pinch_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/booking_pinch_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/cnn_pinch_2018"
-    },
-    {
-        "duration": "24.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/ebay_pinch_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/espn_pinch_2018"
-    },
-    {
-        "duration": "26.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/facebook_pinch_2018"
-    },
-    {
-        "duration": "47.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/gmail_pinch_2018"
-    },
-    {
-        "duration": "38.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_calendar_pinch_2018"
-    },
-    {
-        "duration": "22.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_image_pinch_2018"
-    },
-    {
-        "duration": "36.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_search_pinch_2018"
-    },
-    {
-        "duration": "41.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/linkedin_pinch_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/twitch_pinch_2018"
-    },
-    {
-        "duration": "25.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/twitter_pinch_2018"
-    },
-    {
-        "duration": "35.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_news_pinch_2018"
-    },
-    {
-        "duration": "37.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_sports_pinch_2018"
-    },
-    {
-        "duration": "26.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/youtube_pinch_2018"
-    },
-    {
-        "duration": "42.0",
-        "name": "smoothness.tough_pinch_zoom_cases/accu_weather_pinch_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "smoothness.tough_pinch_zoom_cases/amazon_pinch_2018"
-    },
-    {
-        "duration": "25.0",
-        "name": "smoothness.tough_pinch_zoom_cases/blogspot_pinch_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "smoothness.tough_pinch_zoom_cases/booking_pinch_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "smoothness.tough_pinch_zoom_cases/cnn_pinch_2018"
-    },
-    {
-        "duration": "24.0",
-        "name": "smoothness.tough_pinch_zoom_cases/ebay_pinch_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "smoothness.tough_pinch_zoom_cases/espn_pinch_2018"
-    },
-    {
-        "duration": "26.0",
-        "name": "smoothness.tough_pinch_zoom_cases/facebook_pinch_2018"
-    },
-    {
-        "duration": "47.0",
-        "name": "smoothness.tough_pinch_zoom_cases/gmail_pinch_2018"
-    },
-    {
-        "duration": "38.0",
-        "name": "smoothness.tough_pinch_zoom_cases/google_calendar_pinch_2018"
-    },
-    {
-        "duration": "22.0",
-        "name": "smoothness.tough_pinch_zoom_cases/google_image_pinch_2018"
-    },
-    {
-        "duration": "35.0",
-        "name": "smoothness.tough_pinch_zoom_cases/google_search_pinch_2018"
-    },
-    {
-        "duration": "41.0",
-        "name": "smoothness.tough_pinch_zoom_cases/linkedin_pinch_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "smoothness.tough_pinch_zoom_cases/twitch_pinch_2018"
-    },
-    {
-        "duration": "25.0",
-        "name": "smoothness.tough_pinch_zoom_cases/twitter_pinch_2018"
-    },
-    {
-        "duration": "35.0",
-        "name": "smoothness.tough_pinch_zoom_cases/yahoo_news_pinch_2018"
-    },
-    {
-        "duration": "37.0",
-        "name": "smoothness.tough_pinch_zoom_cases/yahoo_sports_pinch_2018"
-    },
-    {
-        "duration": "26.0",
-        "name": "smoothness.tough_pinch_zoom_cases/youtube_pinch_2018"
-    },
-    {
-        "duration": "38.0",
-        "name": "speedometer-future/http://browserbench.org/Speedometer/"
-    },
-    {
-        "duration": "38.0",
+        "duration": "135.0",
         "name": "speedometer/http://browserbench.org/Speedometer/"
     },
     {
-        "duration": "62.0",
-        "name": "speedometer2-future/Speedometer2"
-    },
-    {
-        "duration": "62.0",
+        "duration": "253.0",
         "name": "speedometer2/Speedometer2"
     },
     {
-        "duration": "24.0",
+        "duration": "22.0",
         "name": "system_health.common_mobile/background:media:imgur"
     },
     {
-        "duration": "25.0",
+        "duration": "53.0",
+        "name": "system_health.common_mobile/background:news:nytimes"
+    },
+    {
+        "duration": "30.0",
         "name": "system_health.common_mobile/background:search:google"
     },
     {
-        "duration": "35.0",
+        "duration": "21.0",
         "name": "system_health.common_mobile/background:social:facebook"
     },
     {
-        "duration": "10.0",
-        "name": "system_health.common_mobile/browse:chrome:newtab"
-    },
-    {
-        "duration": "10.0",
+        "duration": "13.0",
         "name": "system_health.common_mobile/browse:chrome:omnibox"
     },
     {
-        "duration": "95.0",
+        "duration": "109.0",
         "name": "system_health.common_mobile/browse:media:facebook_photos"
     },
     {
-        "duration": "63.0",
+        "duration": "60.0",
         "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll"
     },
     {
+        "duration": "57.0",
+        "name": "system_health.common_mobile/browse:media:googleplaystore:2019"
+    },
+    {
         "duration": "88.0",
         "name": "system_health.common_mobile/browse:media:imgur"
     },
     {
-        "duration": "112.0",
+        "duration": "140.0",
         "name": "system_health.common_mobile/browse:media:youtube"
     },
     {
-        "duration": "109.0",
+        "duration": "238.0",
         "name": "system_health.common_mobile/browse:news:cnn"
     },
     {
-        "duration": "89.0",
+        "duration": "194.0",
         "name": "system_health.common_mobile/browse:news:cnn:2018"
     },
     {
-        "duration": "76.0",
+        "duration": "74.0",
         "name": "system_health.common_mobile/browse:news:cricbuzz"
     },
     {
-        "duration": "72.0",
+        "duration": "111.0",
         "name": "system_health.common_mobile/browse:news:qq"
     },
     {
-        "duration": "60.0",
+        "duration": "73.0",
         "name": "system_health.common_mobile/browse:news:reddit"
     },
     {
-        "duration": "162.0",
-        "name": "system_health.common_mobile/browse:news:toi"
-    },
-    {
-        "duration": "65.0",
+        "duration": "63.0",
         "name": "system_health.common_mobile/browse:news:washingtonpost"
     },
     {
-        "duration": "82.0",
+        "duration": "28.0",
+        "name": "system_health.common_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "98.0",
         "name": "system_health.common_mobile/browse:shopping:amazon"
     },
     {
-        "duration": "81.0",
-        "name": "system_health.common_mobile/browse:shopping:avito"
-    },
-    {
-        "duration": "41.0",
+        "duration": "44.0",
         "name": "system_health.common_mobile/browse:shopping:lazada"
     },
     {
-        "duration": "76.0",
+        "duration": "95.0",
         "name": "system_health.common_mobile/browse:social:facebook"
     },
     {
-        "duration": "270.0",
+        "duration": "128.0",
         "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "126.0",
+        "duration": "122.0",
         "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "86.0",
+        "duration": "106.0",
         "name": "system_health.common_mobile/browse:social:instagram"
     },
     {
-        "duration": "106.0",
+        "duration": "114.0",
         "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll"
     },
     {
-        "duration": "136.0",
+        "duration": "130.0",
         "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll"
     },
     {
+        "duration": "149.0",
+        "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
         "duration": "64.0",
         "name": "system_health.common_mobile/browse:social:twitter"
     },
     {
-        "duration": "82.0",
+        "duration": "87.0",
         "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "113.0",
+        "duration": "116.0",
         "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "51.0",
+        "duration": "55.0",
         "name": "system_health.common_mobile/browse:tools:maps"
     },
     {
-        "duration": "21.0",
+        "duration": "29.0",
         "name": "system_health.common_mobile/load:chrome:blank"
     },
     {
-        "duration": "27.0",
+        "duration": "30.0",
         "name": "system_health.common_mobile/load:games:bubbles"
     },
     {
-        "duration": "22.0",
+        "duration": "20.0",
         "name": "system_health.common_mobile/load:games:lazors"
     },
     {
-        "duration": "35.0",
+        "duration": "40.0",
         "name": "system_health.common_mobile/load:games:spychase"
     },
     {
-        "duration": "36.0",
+        "duration": "41.0",
         "name": "system_health.common_mobile/load:games:spychase:2018"
     },
     {
-        "duration": "27.0",
+        "duration": "28.0",
         "name": "system_health.common_mobile/load:media:dailymotion"
     },
     {
-        "duration": "26.0",
+        "duration": "24.0",
         "name": "system_health.common_mobile/load:media:facebook_photos"
     },
     {
-        "duration": "30.0",
+        "duration": "36.0",
         "name": "system_health.common_mobile/load:media:flickr:2018"
     },
     {
-        "duration": "24.0",
+        "duration": "23.0",
         "name": "system_health.common_mobile/load:media:google_images"
     },
     {
-        "duration": "24.0",
+        "duration": "27.0",
         "name": "system_health.common_mobile/load:media:google_images:2018"
     },
     {
-        "duration": "24.0",
+        "duration": "23.0",
         "name": "system_health.common_mobile/load:media:imgur"
     },
     {
-        "duration": "35.0",
+        "duration": "38.0",
         "name": "system_health.common_mobile/load:media:imgur:2018"
     },
     {
         "duration": "24.0",
-        "name": "system_health.common_mobile/load:media:soundcloud:2018"
-    },
-    {
-        "duration": "24.0",
         "name": "system_health.common_mobile/load:media:youtube"
     },
     {
-        "duration": "26.0",
+        "duration": "32.0",
         "name": "system_health.common_mobile/load:media:youtube:2018"
     },
     {
-        "duration": "38.0",
+        "duration": "57.0",
         "name": "system_health.common_mobile/load:news:cnn"
     },
     {
-        "duration": "37.0",
+        "duration": "50.0",
         "name": "system_health.common_mobile/load:news:cnn:2018"
     },
     {
-        "duration": "29.0",
+        "duration": "39.0",
         "name": "system_health.common_mobile/load:news:irctc"
     },
     {
-        "duration": "28.0",
+        "duration": "32.0",
         "name": "system_health.common_mobile/load:news:nytimes"
     },
     {
-        "duration": "27.0",
+        "duration": "36.0",
         "name": "system_health.common_mobile/load:news:qq"
     },
     {
-        "duration": "25.0",
+        "duration": "26.0",
         "name": "system_health.common_mobile/load:news:reddit"
     },
     {
-        "duration": "27.0",
+        "duration": "28.0",
         "name": "system_health.common_mobile/load:news:washingtonpost"
     },
     {
-        "duration": "24.0",
+        "duration": "26.0",
         "name": "system_health.common_mobile/load:news:wikipedia"
     },
     {
-        "duration": "23.0",
+        "duration": "24.0",
         "name": "system_health.common_mobile/load:news:wikipedia:2018"
     },
     {
-        "duration": "26.0",
+        "duration": "48.0",
         "name": "system_health.common_mobile/load:search:baidu"
     },
     {
-        "duration": "28.0",
+        "duration": "43.0",
         "name": "system_health.common_mobile/load:search:baidu:2018"
     },
     {
-        "duration": "26.0",
+        "duration": "25.0",
         "name": "system_health.common_mobile/load:search:ebay"
     },
     {
-        "duration": "30.0",
+        "duration": "28.0",
         "name": "system_health.common_mobile/load:search:ebay:2018"
     },
     {
-        "duration": "23.0",
+        "duration": "21.0",
         "name": "system_health.common_mobile/load:search:google"
     },
     {
-        "duration": "25.0",
+        "duration": "24.0",
         "name": "system_health.common_mobile/load:search:google:2018"
     },
     {
-        "duration": "25.0",
+        "duration": "39.0",
         "name": "system_health.common_mobile/load:search:taobao"
     },
     {
-        "duration": "23.0",
+        "duration": "21.0",
         "name": "system_health.common_mobile/load:search:yahoo"
     },
     {
-        "duration": "22.0",
+        "duration": "21.0",
         "name": "system_health.common_mobile/load:search:yahoo:2018"
     },
     {
-        "duration": "23.0",
+        "duration": "22.0",
         "name": "system_health.common_mobile/load:search:yandex"
     },
     {
-        "duration": "25.0",
+        "duration": "26.0",
         "name": "system_health.common_mobile/load:search:yandex:2018"
     },
     {
@@ -2996,15 +392,15 @@
         "name": "system_health.common_mobile/load:social:twitter"
     },
     {
-        "duration": "25.0",
+        "duration": "22.0",
         "name": "system_health.common_mobile/load:tools:docs"
     },
     {
-        "duration": "28.0",
+        "duration": "29.0",
         "name": "system_health.common_mobile/load:tools:drive"
     },
     {
-        "duration": "24.0",
+        "duration": "21.0",
         "name": "system_health.common_mobile/load:tools:dropbox"
     },
     {
@@ -3012,139 +408,139 @@
         "name": "system_health.common_mobile/load:tools:stackoverflow"
     },
     {
-        "duration": "24.0",
+        "duration": "26.0",
         "name": "system_health.common_mobile/load:tools:stackoverflow:2018"
     },
     {
-        "duration": "29.0",
+        "duration": "35.0",
         "name": "system_health.common_mobile/load:tools:weather"
     },
     {
-        "duration": "28.0",
+        "duration": "26.0",
         "name": "system_health.memory_mobile/background:media:imgur"
     },
     {
-        "duration": "29.0",
+        "duration": "32.0",
         "name": "system_health.memory_mobile/background:search:google"
     },
     {
-        "duration": "32.0",
+        "duration": "25.0",
         "name": "system_health.memory_mobile/background:social:facebook"
     },
     {
-        "duration": "12.0",
+        "duration": "15.0",
         "name": "system_health.memory_mobile/browse:chrome:newtab"
     },
     {
-        "duration": "79.0",
+        "duration": "15.0",
+        "name": "system_health.memory_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "96.0",
         "name": "system_health.memory_mobile/browse:media:facebook_photos"
     },
     {
-        "duration": "51.0",
+        "duration": "56.0",
         "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "74.0",
+        "duration": "52.0",
+        "name": "system_health.memory_mobile/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "82.0",
         "name": "system_health.memory_mobile/browse:media:imgur"
     },
     {
-        "duration": "84.0",
+        "duration": "94.0",
         "name": "system_health.memory_mobile/browse:media:youtube"
     },
     {
-        "duration": "62.0",
-        "name": "system_health.memory_mobile/browse:news:cnn"
-    },
-    {
-        "duration": "55.0",
-        "name": "system_health.memory_mobile/browse:news:cnn:2018"
-    },
-    {
-        "duration": "60.0",
+        "duration": "63.0",
         "name": "system_health.memory_mobile/browse:news:cricbuzz"
     },
     {
-        "duration": "58.0",
+        "duration": "95.0",
         "name": "system_health.memory_mobile/browse:news:qq"
     },
     {
-        "duration": "52.0",
+        "duration": "66.0",
         "name": "system_health.memory_mobile/browse:news:reddit"
     },
     {
-        "duration": "76.0",
+        "duration": "171.0",
         "name": "system_health.memory_mobile/browse:news:toi"
     },
     {
-        "duration": "50.0",
+        "duration": "59.0",
         "name": "system_health.memory_mobile/browse:news:washingtonpost"
     },
     {
-        "duration": "56.0",
+        "duration": "31.0",
+        "name": "system_health.memory_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "76.0",
         "name": "system_health.memory_mobile/browse:shopping:amazon"
     },
     {
-        "duration": "58.0",
-        "name": "system_health.memory_mobile/browse:shopping:avito"
-    },
-    {
-        "duration": "35.0",
+        "duration": "43.0",
         "name": "system_health.memory_mobile/browse:shopping:lazada"
     },
     {
-        "duration": "60.0",
+        "duration": "77.0",
         "name": "system_health.memory_mobile/browse:social:facebook"
     },
     {
-        "duration": "81.0",
+        "duration": "89.0",
         "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "75.0",
+        "duration": "86.0",
         "name": "system_health.memory_mobile/browse:social:instagram"
     },
     {
-        "duration": "74.0",
+        "duration": "89.0",
         "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll"
     },
     {
-        "duration": "74.0",
-        "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "52.0",
-        "name": "system_health.memory_mobile/browse:social:twitter"
+        "duration": "109.0",
+        "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018"
     },
     {
         "duration": "58.0",
+        "name": "system_health.memory_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "70.0",
         "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "48.0",
+        "duration": "53.0",
         "name": "system_health.memory_mobile/browse:tools:maps"
     },
     {
-        "duration": "26.0",
+        "duration": "28.0",
         "name": "system_health.memory_mobile/load:chrome:blank"
     },
     {
-        "duration": "26.0",
+        "duration": "27.0",
         "name": "system_health.memory_mobile/load:games:bubbles"
     },
     {
-        "duration": "26.0",
+        "duration": "27.0",
         "name": "system_health.memory_mobile/load:games:lazors"
     },
     {
-        "duration": "31.0",
+        "duration": "34.0",
         "name": "system_health.memory_mobile/load:games:spychase"
     },
     {
-        "duration": "32.0",
+        "duration": "35.0",
         "name": "system_health.memory_mobile/load:games:spychase:2018"
     },
     {
-        "duration": "28.0",
+        "duration": "32.0",
         "name": "system_health.memory_mobile/load:media:dailymotion"
     },
     {
@@ -3152,127 +548,123 @@
         "name": "system_health.memory_mobile/load:media:facebook_photos"
     },
     {
-        "duration": "30.0",
+        "duration": "38.0",
         "name": "system_health.memory_mobile/load:media:flickr:2018"
     },
     {
-        "duration": "28.0",
+        "duration": "27.0",
         "name": "system_health.memory_mobile/load:media:google_images"
     },
     {
-        "duration": "27.0",
+        "duration": "30.0",
         "name": "system_health.memory_mobile/load:media:google_images:2018"
     },
     {
-        "duration": "27.0",
+        "duration": "26.0",
         "name": "system_health.memory_mobile/load:media:imgur"
     },
     {
-        "duration": "29.0",
+        "duration": "36.0",
         "name": "system_health.memory_mobile/load:media:imgur:2018"
     },
     {
         "duration": "27.0",
-        "name": "system_health.memory_mobile/load:media:soundcloud:2018"
-    },
-    {
-        "duration": "27.0",
         "name": "system_health.memory_mobile/load:media:youtube"
     },
     {
-        "duration": "26.0",
+        "duration": "30.0",
         "name": "system_health.memory_mobile/load:media:youtube:2018"
     },
     {
-        "duration": "31.0",
+        "duration": "55.0",
         "name": "system_health.memory_mobile/load:news:cnn"
     },
     {
-        "duration": "31.0",
+        "duration": "48.0",
         "name": "system_health.memory_mobile/load:news:cnn:2018"
     },
     {
-        "duration": "28.0",
+        "duration": "33.0",
         "name": "system_health.memory_mobile/load:news:irctc"
     },
     {
-        "duration": "29.0",
+        "duration": "34.0",
         "name": "system_health.memory_mobile/load:news:nytimes"
     },
     {
-        "duration": "29.0",
+        "duration": "39.0",
         "name": "system_health.memory_mobile/load:news:qq"
     },
     {
-        "duration": "28.0",
+        "duration": "30.0",
         "name": "system_health.memory_mobile/load:news:reddit"
     },
     {
-        "duration": "28.0",
+        "duration": "29.0",
         "name": "system_health.memory_mobile/load:news:washingtonpost"
     },
     {
-        "duration": "29.0",
+        "duration": "30.0",
         "name": "system_health.memory_mobile/load:news:wikipedia"
     },
     {
-        "duration": "30.0",
+        "duration": "28.0",
         "name": "system_health.memory_mobile/load:news:wikipedia:2018"
     },
     {
-        "duration": "29.0",
+        "duration": "44.0",
         "name": "system_health.memory_mobile/load:search:baidu"
     },
     {
-        "duration": "30.0",
+        "duration": "46.0",
         "name": "system_health.memory_mobile/load:search:baidu:2018"
     },
     {
-        "duration": "27.0",
+        "duration": "32.0",
         "name": "system_health.memory_mobile/load:search:ebay"
     },
     {
-        "duration": "28.0",
+        "duration": "29.0",
         "name": "system_health.memory_mobile/load:search:ebay:2018"
     },
     {
-        "duration": "27.0",
+        "duration": "26.0",
         "name": "system_health.memory_mobile/load:search:google"
     },
     {
-        "duration": "27.0",
+        "duration": "28.0",
         "name": "system_health.memory_mobile/load:search:google:2018"
     },
     {
-        "duration": "28.0",
+        "duration": "36.0",
         "name": "system_health.memory_mobile/load:search:taobao"
     },
     {
-        "duration": "26.0",
+        "duration": "30.0",
         "name": "system_health.memory_mobile/load:search:yahoo"
     },
     {
-        "duration": "26.0",
+        "duration": "25.0",
         "name": "system_health.memory_mobile/load:search:yahoo:2018"
     },
     {
-        "duration": "27.0",
+        "duration": "26.0",
         "name": "system_health.memory_mobile/load:search:yandex"
     },
     {
-        "duration": "27.0",
+        "duration": "29.0",
         "name": "system_health.memory_mobile/load:search:yandex:2018"
     },
     {
-        "duration": "28.0",
+        "duration": "27.0",
         "name": "system_health.memory_mobile/load:social:twitter"
     },
     {
-        "duration": "27.0",
+        "duration": "26.0",
         "name": "system_health.memory_mobile/load:tools:docs"
     },
     {
-        "duration": "26.0",
+        "duration": "25.0",
         "name": "system_health.memory_mobile/load:tools:dropbox"
     },
     {
@@ -3280,287 +672,111 @@
         "name": "system_health.memory_mobile/load:tools:stackoverflow"
     },
     {
-        "duration": "28.0",
+        "duration": "29.0",
         "name": "system_health.memory_mobile/load:tools:stackoverflow:2018"
     },
     {
-        "duration": "30.0",
+        "duration": "35.0",
         "name": "system_health.memory_mobile/load:tools:weather"
     },
     {
-        "duration": "26.0",
+        "duration": "25.0",
         "name": "system_health.webview_startup/load:chrome:blank"
     },
     {
-        "duration": "12.0",
-        "name": "tracing.tracing_with_background_memory_infra/Facebook"
-    },
-    {
         "duration": "13.0",
-        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
+        "name": "v8.browsing_mobile/browse:chrome:omnibox"
     },
     {
-        "duration": "10.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
-    },
-    {
-        "duration": "10.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
-    },
-    {
-        "duration": "10.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
-    },
-    {
-        "duration": "11.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
-    },
-    {
-        "duration": "13.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
-    },
-    {
-        "duration": "21.0",
-        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
-    },
-    {
-        "duration": "13.0",
-        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
-    },
-    {
-        "duration": "122.0",
-        "name": "v8.browsing_mobile-future/browse:media:facebook_photos"
-    },
-    {
-        "duration": "93.0",
-        "name": "v8.browsing_mobile-future/browse:media:flickr_infinite_scroll"
-    },
-    {
-        "duration": "116.0",
-        "name": "v8.browsing_mobile-future/browse:media:imgur"
-    },
-    {
-        "duration": "148.0",
-        "name": "v8.browsing_mobile-future/browse:media:youtube"
-    },
-    {
-        "duration": "211.0",
-        "name": "v8.browsing_mobile-future/browse:news:cnn"
-    },
-    {
-        "duration": "147.0",
-        "name": "v8.browsing_mobile-future/browse:news:cnn:2018"
-    },
-    {
-        "duration": "102.0",
-        "name": "v8.browsing_mobile-future/browse:news:cricbuzz"
-    },
-    {
-        "duration": "95.0",
-        "name": "v8.browsing_mobile-future/browse:news:qq"
-    },
-    {
-        "duration": "78.0",
-        "name": "v8.browsing_mobile-future/browse:news:reddit"
-    },
-    {
-        "duration": "336.0",
-        "name": "v8.browsing_mobile-future/browse:news:toi"
-    },
-    {
-        "duration": "94.0",
-        "name": "v8.browsing_mobile-future/browse:news:washingtonpost"
-    },
-    {
-        "duration": "138.0",
-        "name": "v8.browsing_mobile-future/browse:shopping:amazon"
-    },
-    {
-        "duration": "53.0",
-        "name": "v8.browsing_mobile-future/browse:shopping:lazada"
-    },
-    {
-        "duration": "114.0",
-        "name": "v8.browsing_mobile-future/browse:social:facebook"
-    },
-    {
-        "duration": "621.0",
-        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "282.0",
-        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll:2018"
-    },
-    {
-        "duration": "138.0",
-        "name": "v8.browsing_mobile-future/browse:social:instagram"
-    },
-    {
-        "duration": "190.0",
-        "name": "v8.browsing_mobile-future/browse:social:pinterest_infinite_scroll"
-    },
-    {
-        "duration": "279.0",
-        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "81.0",
-        "name": "v8.browsing_mobile-future/browse:social:twitter"
-    },
-    {
-        "duration": "143.0",
-        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "243.0",
-        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "68.0",
-        "name": "v8.browsing_mobile-future/browse:tools:maps"
-    },
-    {
-        "duration": "121.0",
+        "duration": "126.0",
         "name": "v8.browsing_mobile/browse:media:facebook_photos"
     },
     {
-        "duration": "93.0",
+        "duration": "76.0",
         "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "115.0",
+        "duration": "66.0",
+        "name": "v8.browsing_mobile/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "111.0",
         "name": "v8.browsing_mobile/browse:media:imgur"
     },
     {
-        "duration": "146.0",
+        "duration": "279.0",
         "name": "v8.browsing_mobile/browse:news:cnn:2018"
     },
     {
-        "duration": "98.0",
+        "duration": "88.0",
         "name": "v8.browsing_mobile/browse:news:cricbuzz"
     },
     {
-        "duration": "104.0",
+        "duration": "123.0",
         "name": "v8.browsing_mobile/browse:news:qq"
     },
     {
-        "duration": "78.0",
+        "duration": "91.0",
         "name": "v8.browsing_mobile/browse:news:reddit"
     },
     {
-        "duration": "350.0",
-        "name": "v8.browsing_mobile/browse:news:toi"
-    },
-    {
-        "duration": "94.0",
+        "duration": "74.0",
         "name": "v8.browsing_mobile/browse:news:washingtonpost"
     },
     {
-        "duration": "137.0",
+        "duration": "28.0",
+        "name": "v8.browsing_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "136.0",
         "name": "v8.browsing_mobile/browse:shopping:amazon"
     },
     {
-        "duration": "119.0",
-        "name": "v8.browsing_mobile/browse:shopping:avito"
-    },
-    {
-        "duration": "52.0",
+        "duration": "54.0",
         "name": "v8.browsing_mobile/browse:shopping:lazada"
     },
     {
-        "duration": "114.0",
+        "duration": "107.0",
         "name": "v8.browsing_mobile/browse:social:facebook"
     },
     {
-        "duration": "631.0",
+        "duration": "165.0",
         "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "285.0",
+        "duration": "157.0",
         "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "137.0",
+        "duration": "136.0",
         "name": "v8.browsing_mobile/browse:social:instagram"
     },
     {
-        "duration": "188.0",
+        "duration": "142.0",
         "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll"
     },
     {
-        "duration": "281.0",
+        "duration": "171.0",
         "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "81.0",
+        "duration": "198.0",
+        "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "71.0",
         "name": "v8.browsing_mobile/browse:social:twitter"
     },
     {
-        "duration": "143.0",
+        "duration": "108.0",
         "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "237.0",
+        "duration": "148.0",
         "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "68.0",
+        "duration": "64.0",
         "name": "v8.browsing_mobile/browse:tools:maps"
-    },
-    {
-        "duration": "9.0",
-        "name": "wasm/AsmJsZenGarden"
-    },
-    {
-        "duration": "20.0",
-        "name": "wasm/WasmSpaceBuggy"
-    },
-    {
-        "duration": "9.0",
-        "name": "wasm/WasmStylizedRenderer"
-    },
-    {
-        "duration": "9.0",
-        "name": "wasm/WasmSunTemple"
-    },
-    {
-        "duration": "16.0",
-        "name": "wasm/WasmTanks"
-    },
-    {
-        "duration": "8.0",
-        "name": "wasm/WasmZenGarden"
-    },
-    {
-        "duration": "20.0",
-        "name": "webrtc/10s_datachannel_transfer"
-    },
-    {
-        "duration": "25.0",
-        "name": "webrtc/canvas_capture_peer_connection"
-    },
-    {
-        "duration": "35.0",
-        "name": "webrtc/codec_constraints_h264"
-    },
-    {
-        "duration": "35.0",
-        "name": "webrtc/codec_constraints_vp8"
-    },
-    {
-        "duration": "35.0",
-        "name": "webrtc/codec_constraints_vp9"
-    },
-    {
-        "duration": "22.0",
-        "name": "webrtc/hd_local_stream_10s"
-    },
-    {
-        "duration": "43.0",
-        "name": "webrtc/multiple_peerconnections"
-    },
-    {
-        "duration": "65.0",
-        "name": "webrtc/pause_play_peerconnections"
     }
 ]
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/android-nexus5x-perf-fyi_timing.json b/tools/perf/core/shard_maps/timing_data/android-nexus5x-perf-fyi_timing.json
index 6098db7..3962f6fa 100644
--- a/tools/perf/core/shard_maps/timing_data/android-nexus5x-perf-fyi_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/android-nexus5x-perf-fyi_timing.json
@@ -1,22 +1,18 @@
 [
     {
-        "duration": "66.0",
+        "duration": "54.0",
         "name": "heap_profiling.mobile.disabled/load:news:cnn"
     },
     {
-        "duration": "44.0",
+        "duration": "34.0",
         "name": "heap_profiling.mobile.disabled/load:search:google"
     },
     {
-        "duration": "30.0",
+        "duration": "25.0",
         "name": "heap_profiling.mobile.disabled/load:social:twitter"
     },
     {
-        "duration": "43.0",
+        "duration": "35.0",
         "name": "heap_profiling.mobile.native/load:search:google"
-    },
-    {
-        "duration": "31.0",
-        "name": "heap_profiling.mobile.native/load:social:twitter"
     }
 ]
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/android-nexus5x-perf_timing.json b/tools/perf/core/shard_maps/timing_data/android-nexus5x-perf_timing.json
index df93ea6..0b50449 100644
--- a/tools/perf/core/shard_maps/timing_data/android-nexus5x-perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/android-nexus5x-perf_timing.json
@@ -1,26 +1,30 @@
 [
     {
-        "duration": "34.0",
-        "name": "blink_perf.accessibility/textarea-append.html"
+        "duration": "38.0",
+        "name": "blink_perf.accessibility/line-breaks.html"
     },
     {
         "duration": "25.0",
+        "name": "blink_perf.accessibility/textarea-append.html"
+    },
+    {
+        "duration": "30.0",
         "name": "blink_perf.bindings/append-child.html"
     },
     {
-        "duration": "15.0",
+        "duration": "18.0",
         "name": "blink_perf.bindings/create-element.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/document-implementation.html"
     },
     {
-        "duration": "14.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/dom-attribute-on-prototoype.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/first-child.html"
     },
     {
@@ -32,271 +36,423 @@
         "name": "blink_perf.bindings/gc-mini-tree.html"
     },
     {
-        "duration": "60.0",
+        "duration": "66.0",
         "name": "blink_perf.bindings/gc-tree.html"
     },
     {
-        "duration": "13.0",
+        "duration": "16.0",
         "name": "blink_perf.bindings/get-attribute-rare.html"
     },
     {
-        "duration": "15.0",
+        "duration": "16.0",
         "name": "blink_perf.bindings/get-attribute.html"
     },
     {
-        "duration": "14.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/get-element-by-id.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/get-elements-by-tag-name.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/id-getter.html"
     },
     {
-        "duration": "14.0",
+        "duration": "16.0",
         "name": "blink_perf.bindings/id-setter.html"
     },
     {
-        "duration": "17.0",
+        "duration": "18.0",
         "name": "blink_perf.bindings/indexed-getter.html"
     },
     {
-        "duration": "14.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/insert-before.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/named-property-enumerator.html"
     },
     {
-        "duration": "146.0",
+        "duration": "94.0",
         "name": "blink_perf.bindings/node-list-access.html"
     },
     {
-        "duration": "14.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/node-type.html"
     },
     {
-        "duration": "9.0",
+        "duration": "12.0",
         "name": "blink_perf.bindings/post-message.html"
     },
     {
-        "duration": "14.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/sequence-conversion-array.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/sequence-conversion-custom-iterator.html"
     },
     {
-        "duration": "10.0",
+        "duration": "11.0",
         "name": "blink_perf.bindings/serialize-array.html"
     },
     {
-        "duration": "8.0",
+        "duration": "10.0",
         "name": "blink_perf.bindings/serialize-long-string.html"
     },
     {
-        "duration": "14.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/serialize-map.html"
     },
     {
-        "duration": "8.0",
+        "duration": "10.0",
         "name": "blink_perf.bindings/serialize-nested-array.html"
     },
     {
-        "duration": "14.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/set-attribute-rare.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/set-attribute.html"
     },
     {
-        "duration": "16.0",
+        "duration": "18.0",
         "name": "blink_perf.bindings/typed-array-construct-from-array.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/typed-array-construct-from-same-type.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/typed-array-construct-from-typed.html"
     },
     {
-        "duration": "15.0",
+        "duration": "16.0",
         "name": "blink_perf.bindings/typed-array-set-from-typed.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/undefined-first-child.html"
     },
     {
-        "duration": "14.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/undefined-get-element-by-id.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/undefined-id-getter.html"
     },
     {
-        "duration": "25.0",
-        "name": "blink_perf.canvas/createImageBitmapFromImageData.html"
+        "duration": "11.0",
+        "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html"
     },
     {
-        "duration": "36.0",
-        "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d.html"
+        "duration": "17.0",
+        "name": "blink_perf.bindings/worker-structured-clone-workerDOM-DBMon-from-worker.html"
     },
     {
         "duration": "11.0",
+        "name": "blink_perf.bindings/worker-structured-clone-workerDOM-Map-from-worker.html"
+    },
+    {
+        "duration": "141.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-from-worker.html"
+    },
+    {
+        "duration": "142.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-roundtrip.html"
+    },
+    {
+        "duration": "141.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-to-worker.html"
+    },
+    {
+        "duration": "30.0",
+        "name": "blink_perf.bindings/worker-transferable-from-worker.html"
+    },
+    {
+        "duration": "30.0",
+        "name": "blink_perf.bindings/worker-transferable-roundtrip.html"
+    },
+    {
+        "duration": "29.0",
+        "name": "blink_perf.bindings/worker-transferable-to-worker.html"
+    },
+    {
+        "duration": "30.0",
+        "name": "blink_perf.canvas/createImageBitmapFromImageData.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.canvas/createImageBitmapFromImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "23.0",
+        "name": "blink_perf.canvas/docs-paper.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.canvas/docs-paper_RAF.html?RAF"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.canvas/docs-resume.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.canvas/docs-resume_RAF.html?RAF"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.canvas/docs-table.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.canvas/docs-table_RAF.html?RAF"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "37.0",
+        "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "14.0",
         "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d.html"
     },
     {
-        "duration": "10.0",
+        "duration": "12.0",
+        "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "12.0",
         "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d.html"
     },
     {
         "duration": "12.0",
+        "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "16.0",
         "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d.html"
     },
     {
-        "duration": "15.0",
+        "duration": "13.0",
+        "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "18.0",
         "name": "blink_perf.canvas/drawimage-not-pixelaligned.html"
     },
     {
-        "duration": "15.0",
+        "duration": "18.0",
+        "name": "blink_perf.canvas/drawimage-not-pixelaligned_RAF.html?RAF"
+    },
+    {
+        "duration": "18.0",
         "name": "blink_perf.canvas/drawimage.html"
     },
     {
-        "duration": "26.0",
+        "duration": "18.0",
+        "name": "blink_perf.canvas/drawimage_RAF.html?RAF"
+    },
+    {
+        "duration": "17.0",
         "name": "blink_perf.canvas/getImageData.html"
     },
     {
-        "duration": "13.0",
+        "duration": "17.0",
         "name": "blink_perf.canvas/getImageDataColorManaged.html"
     },
     {
         "duration": "17.0",
+        "name": "blink_perf.canvas/getImageDataColorManaged_RAF.html?RAF"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.canvas/getImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.canvas/gpu-bound-shader.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.canvas/gpu-bound-shader_RAF.html?RAF"
+    },
+    {
+        "duration": "17.0",
         "name": "blink_perf.canvas/putImageData.html"
     },
     {
-        "duration": "13.0",
+        "duration": "17.0",
+        "name": "blink_perf.canvas/putImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "24.0",
+        "name": "blink_perf.canvas/sheets-render.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.canvas/sheets-render_RAF.html?RAF"
+    },
+    {
+        "duration": "21.0",
         "name": "blink_perf.canvas/toBlob_duration.html"
     },
     {
-        "duration": "12.0",
+        "duration": "21.0",
+        "name": "blink_perf.canvas/toBlob_duration_RAF.html?RAF"
+    },
+    {
+        "duration": "17.0",
         "name": "blink_perf.canvas/toBlob_duration_jpeg.html"
     },
     {
-        "duration": "8.0",
+        "duration": "17.0",
+        "name": "blink_perf.canvas/toBlob_duration_jpeg_RAF.html?RAF"
+    },
+    {
+        "duration": "14.0",
         "name": "blink_perf.canvas/transferFromImageBitmap.html"
     },
     {
         "duration": "12.0",
+        "name": "blink_perf.canvas/transferFromImageBitmap_RAF.html?RAF"
+    },
+    {
+        "duration": "15.0",
         "name": "blink_perf.canvas/upload-canvas-2d-to-texture.html"
     },
     {
-        "duration": "15.0",
+        "duration": "20.0",
+        "name": "blink_perf.canvas/upload-canvas-2d-to-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "19.0",
         "name": "blink_perf.canvas/upload-video-to-sub-texture.html"
     },
     {
-        "duration": "8.0",
+        "duration": "13.0",
+        "name": "blink_perf.canvas/upload-video-to-sub-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "16.0",
         "name": "blink_perf.canvas/upload-video-to-texture.html"
     },
     {
-        "duration": "12.0",
+        "duration": "14.0",
+        "name": "blink_perf.canvas/upload-video-to-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "15.0",
         "name": "blink_perf.canvas/upload-webgl-to-texture.html"
     },
     {
-        "duration": "36.0",
+        "duration": "19.0",
+        "name": "blink_perf.canvas/upload-webgl-to-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "37.0",
         "name": "blink_perf.css/AttributeDescendantSelector.html"
     },
     {
-        "duration": "15.0",
+        "duration": "18.0",
         "name": "blink_perf.css/CSSPropertySetterGetter.html"
     },
     {
-        "duration": "16.0",
+        "duration": "19.0",
         "name": "blink_perf.css/CSSPropertySetterGetterMethods.html"
     },
     {
-        "duration": "16.0",
+        "duration": "18.0",
         "name": "blink_perf.css/CSSPropertyUpdateValue.html"
     },
     {
-        "duration": "12.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleChildClassSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleChildElementSelectors.html"
     },
     {
-        "duration": "12.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleElementSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "17.0",
         "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "17.0",
         "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "17.0",
         "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html"
     },
     {
-        "duration": "15.0",
+        "duration": "18.0",
         "name": "blink_perf.css/ChangeStyleShallowTree.html"
     },
     {
-        "duration": "12.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleSingleClassSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "15.0",
         "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "17.0",
         "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "17.0",
         "name": "blink_perf.css/ChangeStyleUniversalSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "17.0",
         "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html"
     },
     {
@@ -304,379 +460,399 @@
         "name": "blink_perf.css/ClassDescendantSelector.html"
     },
     {
-        "duration": "18.0",
+        "duration": "21.0",
         "name": "blink_perf.css/ClassInvalidation.html"
     },
     {
-        "duration": "17.0",
+        "duration": "19.0",
         "name": "blink_perf.css/CustomPropertiesCascade.html"
     },
     {
-        "duration": "10.0",
+        "duration": "13.0",
         "name": "blink_perf.css/CustomPropertiesNonRootInheritance.html"
     },
     {
-        "duration": "10.0",
+        "duration": "13.0",
         "name": "blink_perf.css/CustomPropertiesRootInheritance.html"
     },
     {
-        "duration": "9.0",
+        "duration": "11.0",
         "name": "blink_perf.css/CustomPropertiesVarAlias.html"
     },
     {
-        "duration": "19.0",
+        "duration": "20.0",
         "name": "blink_perf.css/FocusUpdate.html"
     },
     {
-        "duration": "13.0",
+        "duration": "17.0",
         "name": "blink_perf.css/LoadBootstrapBlog.html"
     },
     {
-        "duration": "13.0",
+        "duration": "16.0",
         "name": "blink_perf.css/LoadMaterializeStarterPage.html"
     },
     {
-        "duration": "15.0",
+        "duration": "18.0",
         "name": "blink_perf.css/LoadSemanticPageExample.html"
     },
     {
-        "duration": "16.0",
+        "duration": "18.0",
         "name": "blink_perf.css/PseudoClassSelectors.html"
     },
     {
-        "duration": "21.0",
+        "duration": "49.0",
         "name": "blink_perf.css/SelectorCountScaling.html"
     },
     {
-        "duration": "37.0",
-        "name": "blink_perf.dom/addRange.html"
-    },
-    {
-        "duration": "64.0",
+        "duration": "74.0",
         "name": "blink_perf.dom/custom-element-default-style-with-shadow.html"
     },
     {
-        "duration": "50.0",
+        "duration": "51.0",
         "name": "blink_perf.dom/custom-element-default-style.html"
     },
     {
-        "duration": "8.0",
-        "name": "blink_perf.dom/delete-in-password-field.html"
-    },
-    {
-        "duration": "20.0",
-        "name": "blink_perf.dom/div-editable.html"
-    },
-    {
-        "duration": "8.0",
-        "name": "blink_perf.dom/inner_html_with_selection.html"
-    },
-    {
-        "duration": "17.0",
+        "duration": "30.0",
         "name": "blink_perf.dom/long-sibling-list.html"
     },
     {
-        "duration": "14.0",
+        "duration": "16.0",
         "name": "blink_perf.dom/modify-element-classname.html"
     },
     {
-        "duration": "12.0",
+        "duration": "14.0",
         "name": "blink_perf.dom/modify-element-id.html"
     },
     {
-        "duration": "11.0",
+        "duration": "14.0",
         "name": "blink_perf.dom/modify-element-title.html"
     },
     {
-        "duration": "8.0",
-        "name": "blink_perf.dom/move-down-with-hidden-elements.html"
-    },
-    {
-        "duration": "8.0",
-        "name": "blink_perf.dom/move-up-with-hidden-elements.html"
-    },
-    {
-        "duration": "8.0",
-        "name": "blink_perf.dom/remove_child_with_selection.html"
-    },
-    {
-        "duration": "15.0",
+        "duration": "18.0",
         "name": "blink_perf.dom/select-multiple-add.html"
     },
     {
-        "duration": "16.0",
+        "duration": "18.0",
         "name": "blink_perf.dom/select-single-add.html"
     },
     {
-        "duration": "14.0",
+        "duration": "18.0",
         "name": "blink_perf.dom/select-single-remove.html"
     },
     {
-        "duration": "15.0",
-        "name": "blink_perf.dom/textarea-dom.html"
-    },
-    {
-        "duration": "27.0",
-        "name": "blink_perf.dom/textarea-edit.html"
-    },
-    {
-        "duration": "30.0",
+        "duration": "29.0",
         "name": "blink_perf.events/EventsDispatching.html"
     },
     {
-        "duration": "16.0",
-        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedShadowTrees.html"
-    },
-    {
-        "duration": "49.0",
-        "name": "blink_perf.events/EventsDispatchingInShadowTrees.html"
-    },
-    {
-        "duration": "55.0",
-        "name": "blink_perf.events/hit-test-lots-of-layers.html"
-    },
-    {
-        "duration": "49.0",
-        "name": "blink_perf.image_decoder/decode-gif.html"
-    },
-    {
         "duration": "20.0",
-        "name": "blink_perf.image_decoder/decode-jpeg.html"
-    },
-    {
-        "duration": "46.0",
-        "name": "blink_perf.image_decoder/decode-lossless-webp.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.image_decoder/decode-lossy-webp.html"
-    },
-    {
-        "duration": "28.0",
-        "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV0ShadowTrees.html"
     },
     {
         "duration": "19.0",
-        "name": "blink_perf.image_decoder/decode-png-palette.html"
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html"
     },
     {
-        "duration": "41.0",
-        "name": "blink_perf.image_decoder/decode-png.html"
+        "duration": "39.0",
+        "name": "blink_perf.events/EventsDispatchingInV0ShadowTrees.html"
     },
     {
-        "duration": "30.0",
-        "name": "blink_perf.layout/ArabicLineLayout.html"
+        "duration": "38.0",
+        "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html"
     },
     {
-        "duration": "8.0",
-        "name": "blink_perf.layout/Shapes/MultipleShapes.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "blink_perf.layout/SimpleTextPathLineLayout.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.layout/add-remove-inline-floats.html"
-    },
-    {
-        "duration": "17.0",
-        "name": "blink_perf.layout/attach-inlines-2.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "blink_perf.layout/attach-inlines.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.layout/auto-grid-lots-of-data.html"
-    },
-    {
-        "duration": "27.0",
-        "name": "blink_perf.layout/change-text-css-contain.html"
-    },
-    {
-        "duration": "13.0",
-        "name": "blink_perf.layout/chapter-reflow-once-random.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.layout/chapter-reflow-once.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "blink_perf.layout/chapter-reflow-thrice.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.layout/chapter-reflow-twice.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.layout/chapter-reflow.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.layout/character_fallback.html"
-    },
-    {
-        "duration": "8.0",
-        "name": "blink_perf.layout/character_fallback_aat.html"
-    },
-    {
-        "duration": "17.0",
-        "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.layout/fixed-grid-lots-of-stretched-data.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "blink_perf.layout/flexbox-column-nowrap.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.layout/flexbox-column-wrap.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html"
-    },
-    {
-        "duration": "17.0",
-        "name": "blink_perf.layout/flexbox-lots-of-data.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "blink_perf.layout/flexbox-row-nowrap.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.layout/flexbox-row-wrap.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.layout/flexbox-with-stretch-layout.html"
-    },
-    {
-        "duration": "60.0",
-        "name": "blink_perf.layout/floats_100_100.html"
-    },
-    {
-        "duration": "59.0",
-        "name": "blink_perf.layout/floats_100_100_nested.html"
-    },
-    {
-        "duration": "30.0",
-        "name": "blink_perf.layout/floats_10_1000.html"
+        "duration": "61.0",
+        "name": "blink_perf.events/hit-test-lots-of-layers.html"
     },
     {
         "duration": "18.0",
-        "name": "blink_perf.layout/floats_20_100.html"
+        "name": "blink_perf.events/is-input-pending-all-events.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.events/is-input-pending-default-events.html"
+    },
+    {
+        "duration": "52.0",
+        "name": "blink_perf.image_decoder/decode-gif.html"
+    },
+    {
+        "duration": "23.0",
+        "name": "blink_perf.image_decoder/decode-jpeg.html"
+    },
+    {
+        "duration": "51.0",
+        "name": "blink_perf.image_decoder/decode-lossless-webp.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.image_decoder/decode-lossy-webp.html"
+    },
+    {
+        "duration": "32.0",
+        "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
     },
     {
         "duration": "22.0",
-        "name": "blink_perf.layout/floats_20_100_nested.html"
+        "name": "blink_perf.image_decoder/decode-png-palette.html"
     },
     {
-        "duration": "12.0",
-        "name": "blink_perf.layout/floats_2_100.html"
+        "duration": "47.0",
+        "name": "blink_perf.image_decoder/decode-png.html"
     },
     {
-        "duration": "13.0",
-        "name": "blink_perf.layout/floats_2_100_nested.html"
-    },
-    {
-        "duration": "44.0",
-        "name": "blink_perf.layout/floats_50_100.html"
-    },
-    {
-        "duration": "24.0",
-        "name": "blink_perf.layout/floats_50_100_nested.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "blink_perf.layout/hindi-line-layout.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.layout/large-spanning-grid-item.html"
-    },
-    {
-        "duration": "36.0",
-        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html"
-    },
-    {
-        "duration": "35.0",
-        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html"
-    },
-    {
-        "duration": "35.0",
-        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html"
-    },
-    {
-        "duration": "118.0",
-        "name": "blink_perf.layout/latin-ebook-resize.html"
-    },
-    {
-        "duration": "22.0",
-        "name": "blink_perf.layout/latin-ebook.html"
+        "duration": "33.0",
+        "name": "blink_perf.layout/ArabicLineLayout.html"
     },
     {
         "duration": "11.0",
-        "name": "blink_perf.layout/layers_overlap_2d.html"
+        "name": "blink_perf.layout/Shapes/MultipleShapes.html"
     },
     {
-        "duration": "12.0",
-        "name": "blink_perf.layout/layers_overlap_3d.html"
+        "duration": "16.0",
+        "name": "blink_perf.layout/SimpleTextPathLineLayout.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.layout/add-remove-inline-floats.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.layout/attach-inlines-2.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.layout/attach-inlines.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.layout/auto-grid-lots-of-data.html"
+    },
+    {
+        "duration": "26.0",
+        "name": "blink_perf.layout/change-text-css-contain.html"
+    },
+    {
+        "duration": "16.0",
+        "name": "blink_perf.layout/chapter-reflow-once-random.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.layout/chapter-reflow-once.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.layout/chapter-reflow-thrice.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.layout/chapter-reflow-twice.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.layout/chapter-reflow.html"
+    },
+    {
+        "duration": "28.0",
+        "name": "blink_perf.layout/character_fallback.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.layout/character_fallback_aat.html"
+    },
+    {
+        "duration": "38.0",
+        "name": "blink_perf.layout/contain-content-style-change.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-blocks.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-text.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.layout/fixed-grid-lots-of-stretched-data.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.layout/flexbox-column-nowrap.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.layout/flexbox-column-wrap.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.layout/flexbox-lots-of-data.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.layout/flexbox-row-nowrap.html"
+    },
+    {
+        "duration": "24.0",
+        "name": "blink_perf.layout/flexbox-row-stretch-height-definite.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.layout/flexbox-row-wrap.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.layout/flexbox-with-stretch-layout.html"
+    },
+    {
+        "duration": "39.0",
+        "name": "blink_perf.layout/floats_100_100.html"
+    },
+    {
+        "duration": "39.0",
+        "name": "blink_perf.layout/floats_100_100_nested.html"
+    },
+    {
+        "duration": "31.0",
+        "name": "blink_perf.layout/floats_10_1000.html"
+    },
+    {
+        "duration": "22.0",
+        "name": "blink_perf.layout/floats_20_100.html"
+    },
+    {
+        "duration": "26.0",
+        "name": "blink_perf.layout/floats_20_100_nested.html"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.layout/floats_2_100.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.layout/floats_2_100_nested.html"
+    },
+    {
+        "duration": "22.0",
+        "name": "blink_perf.layout/floats_50_100.html"
+    },
+    {
+        "duration": "23.0",
+        "name": "blink_perf.layout/floats_50_100_nested.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.layout/hindi-line-layout.html"
+    },
+    {
+        "duration": "23.0",
+        "name": "blink_perf.layout/japanese-kokoro-insert.html"
     },
     {
         "duration": "37.0",
+        "name": "blink_perf.layout/large-grid.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.layout/large-spanning-grid-item.html"
+    },
+    {
+        "duration": "39.0",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html"
+    },
+    {
+        "duration": "38.0",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html"
+    },
+    {
+        "duration": "38.0",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html"
+    },
+    {
+        "duration": "109.0",
+        "name": "blink_perf.layout/latin-ebook-resize.html"
+    },
+    {
+        "duration": "24.0",
+        "name": "blink_perf.layout/latin-ebook.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.layout/layers_overlap_2d.html"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.layout/layers_overlap_3d.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.layout/line-layout-fit-content-break-word.html"
+    },
+    {
+        "duration": "20.0",
+        "name": "blink_perf.layout/line-layout-fit-content.html"
+    },
+    {
+        "duration": "38.0",
         "name": "blink_perf.layout/line-layout-line-height.html"
     },
     {
-        "duration": "16.0",
+        "duration": "18.0",
         "name": "blink_perf.layout/line-layout-repeat-append-select.html"
     },
     {
-        "duration": "13.0",
+        "duration": "17.0",
         "name": "blink_perf.layout/line-layout-repeat-append.html"
     },
     {
-        "duration": "14.0",
+        "duration": "16.0",
         "name": "blink_perf.layout/line-layout.html"
     },
     {
-        "duration": "9.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/long-line-nowrap-collapse.html"
     },
     {
-        "duration": "9.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/long-line-nowrap-spans-collapse.html"
     },
     {
-        "duration": "15.0",
+        "duration": "18.0",
         "name": "blink_perf.layout/long-line-nowrap.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
+        "name": "blink_perf.layout/many-block-children-auto-inline-size.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.layout/many-block-children-fixed-inline-size.html"
+    },
+    {
+        "duration": "18.0",
         "name": "blink_perf.layout/multicol/deeply-nested-tables.html"
     },
     {
-        "duration": "14.0",
+        "duration": "17.0",
         "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html"
     },
     {
-        "duration": "16.0",
+        "duration": "17.0",
         "name": "blink_perf.layout/multicol/lots-of-text-autofill.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "blink_perf.layout/multicol/lots-of-text-balanced-orphans-widows.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "blink_perf.layout/multicol/lots-of-text-balanced.html"
     },
     {
@@ -684,75 +860,75 @@
         "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html"
     },
     {
-        "duration": "16.0",
+        "duration": "17.0",
         "name": "blink_perf.layout/multicol/tall-content-short-columns.html"
     },
     {
-        "duration": "14.0",
+        "duration": "17.0",
         "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html"
     },
     {
-        "duration": "16.0",
+        "duration": "18.0",
         "name": "blink_perf.layout/nested-grid.html"
     },
     {
-        "duration": "52.0",
+        "duration": "121.0",
         "name": "blink_perf.layout/nested-percent-height-tables.html"
     },
     {
-        "duration": "14.0",
+        "duration": "26.0",
         "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html"
     },
     {
-        "duration": "13.0",
+        "duration": "15.0",
         "name": "blink_perf.layout/word-break-break-all.html"
     },
     {
-        "duration": "12.0",
+        "duration": "15.0",
         "name": "blink_perf.layout/word-break-break-word.html"
     },
     {
-        "duration": "12.0",
+        "duration": "15.0",
         "name": "blink_perf.layout/word-wrap-break-word.html"
     },
     {
-        "duration": "28.0",
+        "duration": "31.0",
         "name": "blink_perf.owp_storage/blob-perf-files.html"
     },
     {
-        "duration": "20.0",
+        "duration": "21.0",
         "name": "blink_perf.owp_storage/blob-perf-ipc.html"
     },
     {
-        "duration": "15.0",
+        "duration": "31.0",
         "name": "blink_perf.owp_storage/blob-perf-shm.html"
     },
     {
-        "duration": "20.0",
+        "duration": "21.0",
         "name": "blink_perf.owp_storage/blob-perf-tiny.html"
     },
     {
-        "duration": "20.0",
+        "duration": "22.0",
         "name": "blink_perf.owp_storage/idb-load-docs.html"
     },
     {
-        "duration": "26.0",
+        "duration": "28.0",
         "name": "blink_perf.parser/css-parser-yui.html"
     },
     {
-        "duration": "45.0",
+        "duration": "29.0",
         "name": "blink_perf.parser/html-parser-threaded.html"
     },
     {
-        "duration": "57.0",
+        "duration": "47.0",
         "name": "blink_perf.parser/html-parser.html"
     },
     {
-        "duration": "178.0",
+        "duration": "208.0",
         "name": "blink_perf.parser/html5-full-render.html"
     },
     {
-        "duration": "14.0",
+        "duration": "17.0",
         "name": "blink_perf.parser/iframe-append-remove.html"
     },
     {
@@ -760,1215 +936,1087 @@
         "name": "blink_perf.parser/innerHTML-setter-siblings.html"
     },
     {
-        "duration": "14.0",
+        "duration": "17.0",
         "name": "blink_perf.parser/innerHTML-setter.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "blink_perf.parser/query-selector-all-attribute-complex.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "blink_perf.parser/query-selector-all-attribute.html"
     },
     {
-        "duration": "16.0",
+        "duration": "18.0",
         "name": "blink_perf.parser/query-selector-all-class-deep.html"
     },
     {
-        "duration": "16.0",
+        "duration": "18.0",
         "name": "blink_perf.parser/query-selector-all-class-first.html"
     },
     {
-        "duration": "15.0",
+        "duration": "18.0",
         "name": "blink_perf.parser/query-selector-all-class-last.html"
     },
     {
-        "duration": "14.0",
+        "duration": "17.0",
         "name": "blink_perf.parser/query-selector-all-class.html"
     },
     {
-        "duration": "16.0",
+        "duration": "18.0",
         "name": "blink_perf.parser/query-selector-all-deep.html"
     },
     {
-        "duration": "16.0",
+        "duration": "17.0",
         "name": "blink_perf.parser/query-selector-all-first.html"
     },
     {
-        "duration": "17.0",
+        "duration": "20.0",
         "name": "blink_perf.parser/query-selector-all-id-deep.html"
     },
     {
-        "duration": "15.0",
+        "duration": "18.0",
         "name": "blink_perf.parser/query-selector-all-id-first.html"
     },
     {
-        "duration": "17.0",
+        "duration": "19.0",
         "name": "blink_perf.parser/query-selector-all-id-last.html"
     },
     {
-        "duration": "14.0",
+        "duration": "17.0",
         "name": "blink_perf.parser/query-selector-all-last.html"
     },
     {
-        "duration": "17.0",
+        "duration": "18.0",
         "name": "blink_perf.parser/query-selector-deep.html"
     },
     {
-        "duration": "15.0",
+        "duration": "18.0",
         "name": "blink_perf.parser/query-selector-first.html"
     },
     {
-        "duration": "16.0",
+        "duration": "19.0",
         "name": "blink_perf.parser/query-selector-id-deep.html"
     },
     {
-        "duration": "18.0",
+        "duration": "19.0",
         "name": "blink_perf.parser/query-selector-id-last.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "blink_perf.parser/query-selector-last.html"
     },
     {
-        "duration": "16.0",
+        "duration": "17.0",
         "name": "blink_perf.parser/simple-url.html"
     },
     {
-        "duration": "16.0",
+        "duration": "18.0",
         "name": "blink_perf.parser/textarea-parsing.html"
     },
     {
-        "duration": "24.0",
+        "duration": "25.0",
         "name": "blink_perf.parser/tiny-innerHTML.html"
     },
     {
-        "duration": "17.0",
+        "duration": "20.0",
         "name": "blink_perf.parser/url-parser.html"
     },
     {
-        "duration": "15.0",
+        "duration": "18.0",
         "name": "blink_perf.parser/xml-parser.html"
     },
     {
-        "duration": "19.0",
+        "duration": "25.0",
         "name": "blink_perf.svg/AzLizardBenjiPark.html"
     },
     {
-        "duration": "16.0",
+        "duration": "18.0",
         "name": "blink_perf.svg/Bamboo.html"
     },
     {
-        "duration": "9.0",
+        "duration": "12.0",
         "name": "blink_perf.svg/Cactus.html"
     },
     {
-        "duration": "9.0",
+        "duration": "12.0",
         "name": "blink_perf.svg/Cowboy.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.svg/DropsOnABlade.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.svg/FoodLeifLodahl.html"
     },
     {
-        "duration": "9.0",
+        "duration": "11.0",
         "name": "blink_perf.svg/France.html"
     },
     {
-        "duration": "8.0",
+        "duration": "10.0",
         "name": "blink_perf.svg/FrancoBolloGnomeEzechi.html"
     },
     {
-        "duration": "9.0",
+        "duration": "12.0",
         "name": "blink_perf.svg/GearFlowers.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.svg/HereGear.html"
     },
     {
-        "duration": "17.0",
+        "duration": "19.0",
         "name": "blink_perf.svg/MtSaintHelens.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.svg/Samurai.html"
     },
     {
-        "duration": "179.0",
-        "name": "blink_perf.svg/SierpinskiCarpet.html"
-    },
-    {
-        "duration": "11.0",
+        "duration": "14.0",
         "name": "blink_perf.svg/SvgHitTesting.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.svg/UnderTheSee.html"
     },
     {
-        "duration": "10.0",
+        "duration": "12.0",
         "name": "blink_perf.svg/WorldIso.html"
     },
     {
-        "duration": "49.0",
+        "duration": "52.0",
         "name": "dromaeo/http://dromaeo.com?dom-attr"
     },
     {
-        "duration": "40.0",
+        "duration": "42.0",
         "name": "dromaeo/http://dromaeo.com?dom-modify"
     },
     {
-        "duration": "56.0",
+        "duration": "58.0",
         "name": "dromaeo/http://dromaeo.com?dom-query"
     },
     {
-        "duration": "34.0",
+        "duration": "37.0",
         "name": "dromaeo/http://dromaeo.com?dom-traverse"
     },
     {
-        "duration": "24.0",
-        "name": "dummy_benchmark.histogram_benchmark_1/dummy_page.html"
-    },
-    {
-        "duration": "16.0",
+        "duration": "23.0",
         "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html"
     },
     {
-        "duration": "16.0",
+        "duration": "20.0",
         "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html"
     },
     {
-        "duration": "444.0",
+        "duration": "441.0",
         "name": "jetstream/http://browserbench.org/JetStream/"
     },
     {
-        "duration": "121.0",
+        "duration": "117.0",
         "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html"
     },
     {
-        "duration": "19.0",
+        "duration": "18.0",
         "name": "loading.mobile/58Pic"
     },
     {
-        "duration": "148.0",
+        "duration": "42.0",
         "name": "loading.mobile/58Pic_3g"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "loading.mobile/Amazon"
     },
     {
-        "duration": "213.0",
+        "duration": "62.0",
         "name": "loading.mobile/Amazon_3g"
     },
     {
-        "duration": "29.0",
+        "duration": "20.0",
         "name": "loading.mobile/BOLNoticias"
     },
     {
-        "duration": "287.0",
+        "duration": "73.0",
         "name": "loading.mobile/BOLNoticias_3g"
     },
     {
-        "duration": "41.0",
+        "duration": "24.0",
         "name": "loading.mobile/Baidu"
     },
     {
-        "duration": "191.0",
+        "duration": "71.0",
         "name": "loading.mobile/Baidu_3g"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "loading.mobile/Bradesco"
     },
     {
-        "duration": "24.0",
+        "duration": "20.0",
         "name": "loading.mobile/Dailymotion"
     },
     {
-        "duration": "31.0",
+        "duration": "23.0",
         "name": "loading.mobile/Dawn"
     },
     {
-        "duration": "20.0",
+        "duration": "17.0",
         "name": "loading.mobile/DevOpera_cold"
     },
     {
-        "duration": "131.0",
+        "duration": "50.0",
         "name": "loading.mobile/DevOpera_cold_3g"
     },
     {
-        "duration": "29.0",
+        "duration": "22.0",
         "name": "loading.mobile/DevOpera_hot"
     },
     {
-        "duration": "34.0",
+        "duration": "25.0",
         "name": "loading.mobile/DevOpera_hot_3g"
     },
     {
-        "duration": "24.0",
+        "duration": "19.0",
         "name": "loading.mobile/DevOpera_warm"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "loading.mobile/DevOpera_warm_3g"
     },
     {
-        "duration": "155.0",
+        "duration": "192.0",
         "name": "loading.mobile/Dramaq_3g"
     },
     {
-        "duration": "21.0",
+        "duration": "16.0",
         "name": "loading.mobile/EnquiryIndianRail"
     },
     {
-        "duration": "157.0",
+        "duration": "37.0",
         "name": "loading.mobile/EnquiryIndianRail_3g"
     },
     {
-        "duration": "25.0",
+        "duration": "20.0",
         "name": "loading.mobile/Facebook"
     },
     {
-        "duration": "296.0",
-        "name": "loading.mobile/Facebook_3g"
-    },
-    {
-        "duration": "22.0",
+        "duration": "18.0",
         "name": "loading.mobile/FlipBoard_cold"
     },
     {
-        "duration": "33.0",
+        "duration": "25.0",
         "name": "loading.mobile/FlipBoard_hot"
     },
     {
-        "duration": "72.0",
+        "duration": "34.0",
         "name": "loading.mobile/FlipBoard_hot_3g"
     },
     {
-        "duration": "26.0",
+        "duration": "20.0",
         "name": "loading.mobile/FlipBoard_warm"
     },
     {
-        "duration": "83.0",
+        "duration": "34.0",
         "name": "loading.mobile/FlipBoard_warm_3g"
     },
     {
-        "duration": "29.0",
+        "duration": "19.0",
         "name": "loading.mobile/FlipKart_cold"
     },
     {
-        "duration": "51.0",
+        "duration": "26.0",
         "name": "loading.mobile/FlipKart_hot"
     },
     {
-        "duration": "49.0",
+        "duration": "32.0",
         "name": "loading.mobile/FlipKart_hot_3g"
     },
     {
-        "duration": "40.0",
+        "duration": "22.0",
         "name": "loading.mobile/FlipKart_warm"
     },
     {
-        "duration": "21.0",
+        "duration": "17.0",
         "name": "loading.mobile/FranceTVInfo"
     },
     {
-        "duration": "238.0",
+        "duration": "62.0",
         "name": "loading.mobile/FranceTVInfo_3g"
     },
     {
-        "duration": "31.0",
+        "duration": "24.0",
         "name": "loading.mobile/GSShop"
     },
     {
-        "duration": "18.0",
+        "duration": "15.0",
         "name": "loading.mobile/GoogleBrazil"
     },
     {
-        "duration": "19.0",
+        "duration": "16.0",
         "name": "loading.mobile/GoogleIndia"
     },
     {
-        "duration": "18.0",
+        "duration": "15.0",
         "name": "loading.mobile/GoogleIndonesia"
     },
     {
-        "duration": "26.0",
+        "duration": "22.0",
         "name": "loading.mobile/GoogleRedirectToGoogleJapan"
     },
     {
-        "duration": "29.0",
+        "duration": "21.0",
         "name": "loading.mobile/KapanLagi"
     },
     {
-        "duration": "41.0",
+        "duration": "27.0",
         "name": "loading.mobile/Kaskus"
     },
     {
-        "duration": "25.0",
+        "duration": "27.0",
         "name": "loading.mobile/LocalMoxie"
     },
     {
-        "duration": "19.0",
+        "duration": "23.0",
         "name": "loading.mobile/Locanto"
     },
     {
-        "duration": "91.0",
+        "duration": "29.0",
         "name": "loading.mobile/Locanto_3g"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "loading.mobile/OLX"
     },
     {
-        "duration": "271.0",
+        "duration": "73.0",
         "name": "loading.mobile/OLX_3g"
     },
     {
-        "duration": "20.0",
+        "duration": "22.0",
         "name": "loading.mobile/QQNews"
     },
     {
-        "duration": "21.0",
+        "duration": "17.0",
         "name": "loading.mobile/SlideShare"
     },
     {
-        "duration": "207.0",
+        "duration": "68.0",
         "name": "loading.mobile/SlideShare_3g"
     },
     {
-        "duration": "19.0",
+        "duration": "17.0",
         "name": "loading.mobile/Suumo_cold"
     },
     {
-        "duration": "35.0",
+        "duration": "19.0",
         "name": "loading.mobile/Suumo_cold_3g"
     },
     {
-        "duration": "25.0",
+        "duration": "21.0",
         "name": "loading.mobile/Suumo_hot"
     },
     {
-        "duration": "31.0",
+        "duration": "22.0",
         "name": "loading.mobile/Suumo_hot_3g"
     },
     {
-        "duration": "22.0",
+        "duration": "18.0",
         "name": "loading.mobile/Suumo_warm"
     },
     {
-        "duration": "28.0",
+        "duration": "20.0",
         "name": "loading.mobile/Suumo_warm_3g"
     },
     {
-        "duration": "31.0",
+        "duration": "19.0",
         "name": "loading.mobile/Thairath"
     },
     {
-        "duration": "34.0",
+        "duration": "23.0",
         "name": "loading.mobile/TheStar"
     },
     {
-        "duration": "33.0",
+        "duration": "22.0",
         "name": "loading.mobile/TribunNews"
     },
     {
-        "duration": "20.0",
+        "duration": "14.0",
         "name": "loading.mobile/Twitter"
     },
     {
-        "duration": "135.0",
+        "duration": "36.0",
         "name": "loading.mobile/Twitter_3g"
     },
     {
-        "duration": "22.0",
+        "duration": "17.0",
         "name": "loading.mobile/VoiceMemos_cold"
     },
     {
-        "duration": "146.0",
+        "duration": "43.0",
         "name": "loading.mobile/VoiceMemos_cold_3g"
     },
     {
-        "duration": "32.0",
-        "name": "loading.mobile/VoiceMemos_hot"
-    },
-    {
-        "duration": "37.0",
-        "name": "loading.mobile/VoiceMemos_hot_3g"
-    },
-    {
-        "duration": "27.0",
-        "name": "loading.mobile/VoiceMemos_warm"
-    },
-    {
-        "duration": "32.0",
-        "name": "loading.mobile/VoiceMemos_warm_3g"
-    },
-    {
-        "duration": "18.0",
+        "duration": "15.0",
         "name": "loading.mobile/Wikipedia"
     },
     {
-        "duration": "184.0",
+        "duration": "48.0",
         "name": "loading.mobile/Wikipedia_3g"
     },
     {
-        "duration": "29.0",
+        "duration": "31.0",
         "name": "loading.mobile/YahooNews"
     },
     {
-        "duration": "19.0",
+        "duration": "15.0",
         "name": "loading.mobile/Youtube"
     },
     {
-        "duration": "23.0",
+        "duration": "27.0",
         "name": "media.mobile/mse.html?media=aac_audio.mp4"
     },
     {
-        "duration": "29.0",
+        "duration": "47.0",
         "name": "media.mobile/mse.html?media=aac_audio.mp4,h264_video.mp4"
     },
     {
-        "duration": "28.0",
+        "duration": "32.0",
         "name": "media.mobile/mse.html?media=aac_audio.mp4,h264_video.mp4&waitForPageLoaded=true"
     },
     {
-        "duration": "27.0",
+        "duration": "23.0",
         "name": "media.mobile/mse.html?media=h264_video.mp4"
     },
     {
-        "duration": "40.0",
+        "duration": "44.0",
         "name": "media.mobile/video.html?src=crowd.ogg&type=audio"
     },
     {
-        "duration": "30.0",
+        "duration": "26.0",
         "name": "media.mobile/video.html?src=crowd1080_vp9.webm"
     },
     {
-        "duration": "22.0",
+        "duration": "18.0",
         "name": "media.mobile/video.html?src=crowd1080_vp9.webm&seek"
     },
     {
-        "duration": "29.0",
+        "duration": "26.0",
         "name": "media.mobile/video.html?src=crowd720_vp9.webm"
     },
     {
-        "duration": "35.0",
+        "duration": "31.0",
         "name": "media.mobile/video.html?src=tulip2.m4a&type=audio"
     },
     {
-        "duration": "35.0",
+        "duration": "32.0",
         "name": "media.mobile/video.html?src=tulip2.mp3&type=audio"
     },
     {
-        "duration": "17.0",
+        "duration": "14.0",
         "name": "media.mobile/video.html?src=tulip2.mp3&type=audio&seek"
     },
     {
-        "duration": "41.0",
+        "duration": "37.0",
         "name": "media.mobile/video.html?src=tulip2.mp4"
     },
     {
-        "duration": "41.0",
+        "duration": "37.0",
         "name": "media.mobile/video.html?src=tulip2.mp4&busyjs"
     },
     {
-        "duration": "21.0",
+        "duration": "17.0",
         "name": "media.mobile/video.html?src=tulip2.mp4&seek"
     },
     {
-        "duration": "35.0",
+        "duration": "33.0",
         "name": "media.mobile/video.html?src=tulip2.ogg&type=audio"
     },
     {
-        "duration": "17.0",
+        "duration": "15.0",
         "name": "media.mobile/video.html?src=tulip2.ogg&type=audio&seek"
     },
     {
-        "duration": "40.0",
+        "duration": "38.0",
         "name": "media.mobile/video.html?src=tulip2.vp9.webm"
     },
     {
-        "duration": "32.0",
+        "duration": "27.0",
         "name": "media.mobile/video.html?src=tulip2.vp9.webm&background"
     },
     {
-        "duration": "26.0",
+        "duration": "22.0",
         "name": "media.mobile/video.html?src=tulip2.vp9.webm&seek"
     },
     {
-        "duration": "36.0",
+        "duration": "39.0",
+        "name": "media.mobile/video.html?src=tulip2.vp9.webm_WiFi"
+    },
+    {
+        "duration": "34.0",
         "name": "media.mobile/video.html?src=tulip2.wav&type=audio"
     },
     {
-        "duration": "18.0",
+        "duration": "15.0",
         "name": "media.mobile/video.html?src=tulip2.wav&type=audio&seek"
     },
     {
-        "duration": "328.0",
-        "name": "memory.long_running_idle_gmail_background_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "285.0",
-        "name": "memory.long_running_idle_gmail_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "memory.top_10_mobile/after_http_en_m_wikipedia_org_wiki_Science"
     },
     {
-        "duration": "24.0",
+        "duration": "18.0",
         "name": "memory.top_10_mobile/after_http_m_intl_taobao_com_group_purchase_html"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "memory.top_10_mobile/after_http_m_youtube_com_results_q_science"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "memory.top_10_mobile/after_http_search_yahoo_com_search__ylt_p_google"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "memory.top_10_mobile/after_http_www_amazon_com_gp_aw_s_k_nexus"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "memory.top_10_mobile/after_http_www_baidu_com_s_word_google"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "memory.top_10_mobile/after_http_yandex_ru_touchsearch_text_science"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "memory.top_10_mobile/after_https_m_facebook_com_rihanna"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "memory.top_10_mobile/after_https_mobile_twitter_com_justinbieber_skip_interstitial_true"
     },
     {
-        "duration": "25.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/after_https_www_google_co_uk_hl_en_q_science"
     },
     {
-        "duration": "30.0",
+        "duration": "28.0",
         "name": "memory.top_10_mobile/http_en_m_wikipedia_org_wiki_Science"
     },
     {
-        "duration": "28.0",
+        "duration": "24.0",
         "name": "memory.top_10_mobile/http_m_intl_taobao_com_group_purchase_html"
     },
     {
-        "duration": "29.0",
+        "duration": "25.0",
         "name": "memory.top_10_mobile/http_m_youtube_com_results_q_science"
     },
     {
-        "duration": "28.0",
+        "duration": "25.0",
         "name": "memory.top_10_mobile/http_search_yahoo_com_search__ylt_p_google"
     },
     {
-        "duration": "29.0",
+        "duration": "25.0",
         "name": "memory.top_10_mobile/http_www_amazon_com_gp_aw_s_k_nexus"
     },
     {
-        "duration": "29.0",
+        "duration": "30.0",
         "name": "memory.top_10_mobile/http_www_baidu_com_s_word_google"
     },
     {
-        "duration": "29.0",
+        "duration": "25.0",
         "name": "memory.top_10_mobile/http_yandex_ru_touchsearch_text_science"
     },
     {
-        "duration": "29.0",
+        "duration": "25.0",
         "name": "memory.top_10_mobile/https_m_facebook_com_rihanna"
     },
     {
-        "duration": "29.0",
+        "duration": "25.0",
         "name": "memory.top_10_mobile/https_mobile_twitter_com_justinbieber_skip_interstitial_true"
     },
     {
-        "duration": "35.0",
+        "duration": "27.0",
         "name": "memory.top_10_mobile/https_www_google_co_uk_hl_en_q_science"
     },
     {
-        "duration": "93.0",
+        "duration": "90.0",
         "name": "octane/http://chromium.github.io/octane/index.html?auto=1"
     },
     {
-        "duration": "26.0",
-        "name": "oortonline_tbmv2/http://oortonline.gl/#run"
-    },
-    {
-        "duration": "65.0",
+        "duration": "68.0",
         "name": "power.typical_10_mobile/http://de.m.wikipedia.org/wiki/K%C3%B6lner_Dom"
     },
     {
-        "duration": "68.0",
+        "duration": "73.0",
         "name": "power.typical_10_mobile/http://m.chiebukuro.yahoo.co.jp/detail/q10136829180"
     },
     {
-        "duration": "60.0",
+        "duration": "63.0",
         "name": "power.typical_10_mobile/http://m.ebay.com/itm/351157205404"
     },
     {
-        "duration": "73.0",
+        "duration": "75.0",
         "name": "power.typical_10_mobile/http://m.facebook.com/barackobama"
     },
     {
-        "duration": "66.0",
+        "duration": "67.0",
         "name": "power.typical_10_mobile/http://m.huffpost.com/us/entry/6004486"
     },
     {
-        "duration": "65.0",
+        "duration": "68.0",
         "name": "power.typical_10_mobile/http://m.ynet.co.il"
     },
     {
-        "duration": "77.0",
+        "duration": "69.0",
         "name": "power.typical_10_mobile/http://siriuslymeg.tumblr.com/"
     },
     {
-        "duration": "60.0",
+        "duration": "65.0",
         "name": "power.typical_10_mobile/http://wapbaike.baidu.com/"
     },
     {
-        "duration": "61.0",
+        "duration": "64.0",
         "name": "power.typical_10_mobile/http://www.cnn.com/2014/03/31/showbiz/tv/himym-finale/index.html"
     },
     {
-        "duration": "68.0",
+        "duration": "70.0",
         "name": "power.typical_10_mobile/http://www.rg.ru/2014/10/21/cska-site.html"
     },
     {
-        "duration": "65.0",
+        "duration": "69.0",
         "name": "power.typical_10_mobile/https://en.wikipedia.org/wiki/File:Rotating_earth_(large).gif"
     },
     {
-        "duration": "26.0",
+        "duration": "33.0",
         "name": "rasterize_and_record_micro.partial_invalidation/800_relpos_divs.html"
     },
     {
-        "duration": "46.0",
+        "duration": "45.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html"
     },
     {
-        "duration": "17.0",
+        "duration": "20.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html"
     },
     {
-        "duration": "34.0",
+        "duration": "41.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html"
     },
     {
-        "duration": "22.0",
+        "duration": "28.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html"
     },
     {
-        "duration": "16.0",
+        "duration": "19.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/ebay.html"
     },
     {
-        "duration": "31.0",
+        "duration": "47.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html"
     },
     {
-        "duration": "27.0",
+        "duration": "36.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html"
     },
     {
-        "duration": "42.0",
+        "duration": "60.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html"
     },
     {
-        "duration": "46.0",
+        "duration": "56.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/google.html"
     },
     {
-        "duration": "32.0",
+        "duration": "45.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googlecalendar.html"
     },
     {
-        "duration": "25.0",
+        "duration": "28.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googledocs.html"
     },
     {
-        "duration": "38.0",
+        "duration": "45.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html"
     },
     {
-        "duration": "32.0",
+        "duration": "40.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html"
     },
     {
-        "duration": "26.0",
+        "duration": "32.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html"
     },
     {
-        "duration": "12.0",
+        "duration": "16.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html"
     },
     {
-        "duration": "38.0",
+        "duration": "31.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html"
     },
     {
-        "duration": "38.0",
+        "duration": "55.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html"
     },
     {
-        "duration": "22.0",
+        "duration": "24.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html"
     },
     {
-        "duration": "18.0",
+        "duration": "22.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html"
     },
     {
-        "duration": "25.0",
+        "duration": "34.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html"
     },
     {
-        "duration": "68.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html"
-    },
-    {
-        "duration": "94.0",
+        "duration": "103.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html"
     },
     {
-        "duration": "50.0",
+        "duration": "55.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html"
     },
     {
-        "duration": "63.0",
+        "duration": "55.0",
         "name": "rendering.mobile/accu_weather_2018"
     },
     {
-        "duration": "47.0",
-        "name": "rendering.mobile/accu_weather_desktop_gpu_raster_2018"
+        "duration": "50.0",
+        "name": "rendering.mobile/accu_weather_mobile_pinch_2018"
     },
     {
-        "duration": "38.0",
+        "duration": "33.0",
         "name": "rendering.mobile/amazon_2018"
     },
     {
-        "duration": "38.0",
-        "name": "rendering.mobile/amazon_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "37.0",
+        "duration": "29.0",
         "name": "rendering.mobile/amazon_mobile_2018"
     },
     {
-        "duration": "29.0",
-        "name": "rendering.mobile/amazon_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "32.0",
+        "duration": "27.0",
         "name": "rendering.mobile/analog_clock_svg"
     },
     {
-        "duration": "59.0",
+        "duration": "38.0",
         "name": "rendering.mobile/androidpolice_mobile_2018"
     },
     {
-        "duration": "60.0",
-        "name": "rendering.mobile/androidpolice_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "33.0",
+        "duration": "30.0",
         "name": "rendering.mobile/animometer_webgl"
     },
     {
-        "duration": "40.0",
+        "duration": "25.0",
+        "name": "rendering.mobile/animometer_webgl_attrib_arrays"
+    },
+    {
+        "duration": "27.0",
+        "name": "rendering.mobile/animometer_webgl_multi_draw"
+    },
+    {
+        "duration": "35.0",
         "name": "rendering.mobile/aquarium"
     },
     {
-        "duration": "49.0",
+        "duration": "32.0",
         "name": "rendering.mobile/background_color_animation"
     },
     {
-        "duration": "34.0",
+        "duration": "27.0",
         "name": "rendering.mobile/background_color_animation_with_gradient"
     },
     {
-        "duration": "34.0",
+        "duration": "23.0",
         "name": "rendering.mobile/baidu_mobile_2018"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.mobile/baidu_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "33.0",
+        "duration": "28.0",
         "name": "rendering.mobile/balls_css_key_frame_animations"
     },
     {
-        "duration": "34.0",
+        "duration": "26.0",
         "name": "rendering.mobile/balls_css_transition_2_properties"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "rendering.mobile/balls_css_transition_40_properties"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "rendering.mobile/balls_css_transition_all_properties"
     },
     {
-        "duration": "30.0",
+        "duration": "25.0",
         "name": "rendering.mobile/balls_javascript_canvas"
     },
     {
-        "duration": "30.0",
+        "duration": "26.0",
         "name": "rendering.mobile/balls_javascript_css"
     },
     {
-        "duration": "49.0",
+        "duration": "33.0",
         "name": "rendering.mobile/balls_svg_animations"
     },
     {
-        "duration": "34.0",
+        "duration": "30.0",
+        "name": "rendering.mobile/basic_stream"
+    },
+    {
+        "duration": "28.0",
         "name": "rendering.mobile/bing_mobile_2018"
     },
     {
-        "duration": "36.0",
-        "name": "rendering.mobile/bing_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "34.0",
+        "duration": "28.0",
         "name": "rendering.mobile/blob"
     },
     {
-        "duration": "33.0",
+        "duration": "30.0",
         "name": "rendering.mobile/blogspot_2018"
     },
     {
-        "duration": "28.0",
-        "name": "rendering.mobile/blogspot_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "34.0",
+        "duration": "21.0",
         "name": "rendering.mobile/blogspot_mobile_2018"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.mobile/blogspot_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/boingboing_mobile_2018"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.mobile/booking.com_2018"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/booking.com_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/booking.com_mobile_2018"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/booking.com_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/bouncing_balls_15"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/bouncing_balls_shadow"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/bouncing_clipped_rectangles"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/bouncing_gradient_circles"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/bouncing_png_images"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/bouncing_svg_images"
-    },
-    {
-        "duration": "37.0",
-        "name": "rendering.mobile/camera_to_webgl"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/canvas_05000_pixels_per_second"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/canvas_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/canvas_10000_pixels_per_second"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/canvas_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/canvas_15000_pixels_per_second"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/canvas_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/canvas_20000_pixels_per_second"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/canvas_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/canvas_30000_pixels_per_second"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/canvas_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/canvas_40000_pixels_per_second"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/canvas_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/canvas_50000_pixels_per_second"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/canvas_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/canvas_60000_pixels_per_second"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/canvas_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/canvas_75000_pixels_per_second"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/canvas_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/canvas_90000_pixels_per_second"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/canvas_90000_pixels_per_second_desktop_gpu_raster"
+        "duration": "25.0",
+        "name": "rendering.mobile/blur_rotating_background"
     },
     {
         "duration": "25.0",
-        "name": "rendering.mobile/canvas_animation_no_clear"
+        "name": "rendering.mobile/boingboing_mobile_2018"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.mobile/canvas_arcs"
+        "duration": "26.0",
+        "name": "rendering.mobile/booking.com_2018"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.mobile/canvas_font_cycler"
+        "duration": "26.0",
+        "name": "rendering.mobile/booking.com_mobile_2018"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.mobile/canvas_lines"
+        "duration": "21.0",
+        "name": "rendering.mobile/bouncing_balls_15"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.mobile/canvas_to_blob"
+        "duration": "26.0",
+        "name": "rendering.mobile/bouncing_balls_shadow"
     },
     {
-        "duration": "51.0",
-        "name": "rendering.mobile/capitolvolkswagen_mobile_2018"
+        "duration": "21.0",
+        "name": "rendering.mobile/bouncing_clipped_rectangles"
     },
     {
-        "duration": "44.0",
-        "name": "rendering.mobile/capitolvolkswagen_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/card_expansion"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/card_expansion_animated"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/card_expansion_images_text"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/card_flying"
+        "duration": "20.0",
+        "name": "rendering.mobile/bouncing_gradient_circles"
     },
     {
         "duration": "18.0",
+        "name": "rendering.mobile/bouncing_png_images"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/bouncing_svg_images"
+    },
+    {
+        "duration": "50.0",
+        "name": "rendering.mobile/camera_to_webgl"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "23.0",
+        "name": "rendering.mobile/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/canvas_animation_no_clear"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/canvas_arcs"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/canvas_font_cycler"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/canvas_lines"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/canvas_to_blob"
+    },
+    {
+        "duration": "33.0",
+        "name": "rendering.mobile/capitolvolkswagen_mobile_2018"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/card_expansion"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/card_expansion_animated"
+    },
+    {
+        "duration": "23.0",
+        "name": "rendering.mobile/card_expansion_images_text"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/card_flying"
+    },
+    {
+        "duration": "24.0",
         "name": "rendering.mobile/cats_unscaled"
     },
     {
-        "duration": "16.0",
+        "duration": "15.0",
         "name": "rendering.mobile/cats_viewport_width"
     },
     {
-        "duration": "38.0",
+        "duration": "31.0",
         "name": "rendering.mobile/cc_poster_circle"
     },
     {
-        "duration": "34.0",
-        "name": "rendering.mobile/cc_scroll_200_layer_grid"
-    },
-    {
-        "duration": "35.0",
+        "duration": "29.0",
         "name": "rendering.mobile/cc_scroll_text_only"
     },
     {
-        "duration": "30.0",
+        "duration": "24.0",
         "name": "rendering.mobile/chip_tune"
     },
     {
-        "duration": "36.0",
+        "duration": "26.0",
         "name": "rendering.mobile/cnn_2018"
     },
     {
-        "duration": "49.0",
+        "duration": "43.0",
         "name": "rendering.mobile/cnn_article_mobile_2018"
     },
     {
-        "duration": "40.0",
-        "name": "rendering.mobile/cnn_article_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/cnn_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "34.0",
+        "duration": "43.0",
         "name": "rendering.mobile/cnn_mobile_2018"
     },
     {
-        "duration": "33.0",
-        "name": "rendering.mobile/cnn_mobile_sync_scroll_2018"
+        "duration": "43.0",
+        "name": "rendering.mobile/cnn_mobile_pinch_2018"
     },
     {
-        "duration": "32.0",
+        "duration": "28.0",
         "name": "rendering.mobile/cnn_pathological_2018"
     },
     {
-        "duration": "31.0",
+        "duration": "26.0",
         "name": "rendering.mobile/compositor_heavy_animation"
     },
     {
-        "duration": "27.0",
+        "duration": "22.0",
         "name": "rendering.mobile/coordinated_animation"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "rendering.mobile/crafty_mind"
     },
     {
-        "duration": "34.0",
+        "duration": "28.0",
         "name": "rendering.mobile/css_animations_many_keyframes"
     },
     {
-        "duration": "62.0",
+        "duration": "27.0",
         "name": "rendering.mobile/css_animations_simultaneous_inline_style"
     },
     {
-        "duration": "36.0",
+        "duration": "27.0",
         "name": "rendering.mobile/css_animations_simultaneous_new_element"
     },
     {
-        "duration": "35.0",
+        "duration": "26.0",
         "name": "rendering.mobile/css_animations_simultaneous_style_element"
     },
     {
-        "duration": "34.0",
+        "duration": "27.0",
         "name": "rendering.mobile/css_animations_simultaneous_updating_class"
     },
     {
-        "duration": "32.0",
+        "duration": "26.0",
         "name": "rendering.mobile/css_animations_staggered_infinite_iterations"
     },
     {
-        "duration": "37.0",
+        "duration": "29.0",
         "name": "rendering.mobile/css_animations_staggered_inline_style"
     },
     {
-        "duration": "40.0",
+        "duration": "31.0",
         "name": "rendering.mobile/css_animations_staggered_new_element"
     },
     {
-        "duration": "38.0",
+        "duration": "36.0",
         "name": "rendering.mobile/css_animations_staggered_style_element"
     },
     {
-        "duration": "37.0",
+        "duration": "36.0",
         "name": "rendering.mobile/css_animations_staggered_updating_class"
     },
     {
-        "duration": "37.0",
+        "duration": "58.0",
         "name": "rendering.mobile/css_animations_triggered_inline_style"
     },
     {
-        "duration": "40.0",
+        "duration": "38.0",
         "name": "rendering.mobile/css_animations_triggered_new_element"
     },
     {
-        "duration": "35.0",
+        "duration": "71.0",
         "name": "rendering.mobile/css_animations_triggered_style_element"
     },
     {
-        "duration": "37.0",
+        "duration": "43.0",
         "name": "rendering.mobile/css_animations_triggered_updating_class"
     },
     {
-        "duration": "37.0",
+        "duration": "30.0",
         "name": "rendering.mobile/css_opacity_plus_n_layers_0"
     },
     {
-        "duration": "38.0",
+        "duration": "30.0",
         "name": "rendering.mobile/css_opacity_plus_n_layers_75"
     },
     {
-        "duration": "38.0",
+        "duration": "30.0",
         "name": "rendering.mobile/css_opacity_plus_n_layers_99"
     },
     {
-        "duration": "33.0",
+        "duration": "34.0",
         "name": "rendering.mobile/css_transitions_inline_style"
     },
     {
@@ -1976,11 +2024,11 @@
         "name": "rendering.mobile/css_transitions_new_element"
     },
     {
-        "duration": "35.0",
+        "duration": "28.0",
         "name": "rendering.mobile/css_transitions_staggered_inline_style"
     },
     {
-        "duration": "35.0",
+        "duration": "28.0",
         "name": "rendering.mobile/css_transitions_staggered_new_element"
     },
     {
@@ -1988,11 +2036,11 @@
         "name": "rendering.mobile/css_transitions_staggered_style_element"
     },
     {
-        "duration": "35.0",
+        "duration": "34.0",
         "name": "rendering.mobile/css_transitions_staggered_updating_class"
     },
     {
-        "duration": "34.0",
+        "duration": "27.0",
         "name": "rendering.mobile/css_transitions_style_element"
     },
     {
@@ -2000,479 +2048,415 @@
         "name": "rendering.mobile/css_transitions_triggered_inline_style"
     },
     {
-        "duration": "36.0",
+        "duration": "29.0",
         "name": "rendering.mobile/css_transitions_triggered_new_element"
     },
     {
-        "duration": "36.0",
+        "duration": "65.0",
         "name": "rendering.mobile/css_transitions_triggered_style_element"
     },
     {
-        "duration": "37.0",
+        "duration": "59.0",
         "name": "rendering.mobile/css_transitions_triggered_updating_class"
     },
     {
-        "duration": "34.0",
+        "duration": "42.0",
         "name": "rendering.mobile/css_transitions_updating_class"
     },
     {
-        "duration": "34.0",
+        "duration": "28.0",
         "name": "rendering.mobile/css_value_type_color"
     },
     {
-        "duration": "29.0",
+        "duration": "26.0",
         "name": "rendering.mobile/css_value_type_filter"
     },
     {
-        "duration": "31.0",
+        "duration": "34.0",
         "name": "rendering.mobile/css_value_type_length"
     },
     {
-        "duration": "34.0",
+        "duration": "30.0",
         "name": "rendering.mobile/css_value_type_length_complex"
     },
     {
-        "duration": "35.0",
+        "duration": "31.0",
         "name": "rendering.mobile/css_value_type_length_simple"
     },
     {
-        "duration": "31.0",
+        "duration": "27.0",
         "name": "rendering.mobile/css_value_type_path"
     },
     {
-        "duration": "29.0",
+        "duration": "25.0",
         "name": "rendering.mobile/css_value_type_shadow"
     },
     {
-        "duration": "31.0",
+        "duration": "26.0",
         "name": "rendering.mobile/css_value_type_transform_complex"
     },
     {
-        "duration": "31.0",
+        "duration": "27.0",
         "name": "rendering.mobile/css_value_type_transform_simple"
     },
     {
-        "duration": "50.0",
+        "duration": "41.0",
         "name": "rendering.mobile/deviantart_mobile_2018"
     },
     {
-        "duration": "41.0",
-        "name": "rendering.mobile/deviantart_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "32.0",
+        "duration": "24.0",
         "name": "rendering.mobile/digg_mobile_2018"
     },
     {
-        "duration": "31.0",
-        "name": "rendering.mobile/digg_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "32.0",
+        "duration": "28.0",
         "name": "rendering.mobile/dynamic_cube_map"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "rendering.mobile/earth"
     },
     {
-        "duration": "36.0",
+        "duration": "33.0",
         "name": "rendering.mobile/ebay_2018"
     },
     {
-        "duration": "32.0",
-        "name": "rendering.mobile/ebay_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "32.0",
+        "duration": "26.0",
         "name": "rendering.mobile/ebay_mobile_2018"
     },
     {
-        "duration": "24.0",
-        "name": "rendering.mobile/ebay_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "41.0",
-        "name": "rendering.mobile/ebay_scroll_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/effect_games"
-    },
-    {
-        "duration": "39.0",
-        "name": "rendering.mobile/espn_2018"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/espn_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.mobile/espn_mobile_2018"
-    },
-    {
         "duration": "30.0",
-        "name": "rendering.mobile/espn_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/espn_pathological_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/extra_large_texture_uploads"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/facebook_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/facebook_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "46.0",
-        "name": "rendering.mobile/facebook_mobile_2018"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.mobile/facebook_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/fill_shapes"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/filter_terrain_svg"
-    },
-    {
-        "duration": "39.0",
-        "name": "rendering.mobile/flickr_scroll_2018"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/font_wipe"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/forecast.io_mobile_2018"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/forecast.io_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/gmail_2018"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/gmail_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/google_calendar_2018"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/google_calendar_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "37.0",
-        "name": "rendering.mobile/google_docs_2018"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.mobile/google_docs_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/google_image_search_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/google_image_search_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/google_image_search_mobile_2018"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/google_image_search_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/google_news_ios"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/google_news_mobile_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/google_news_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/google_plus_2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/google_plus_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "43.0",
-        "name": "rendering.mobile/google_plus_mobile_2018"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.mobile/google_plus_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/google_web_search_2018"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/google_web_search_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/google_web_search_mobile_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/google_web_search_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.mobile/gsp.ro_mobile_2018"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.mobile/gsp.ro_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "40.0",
-        "name": "rendering.mobile/guardian_pathological_2018"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.mobile/guimark_vector_chart"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/gws_boogie_expansion"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/gws_google_expansion"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/hakim"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/horizontal_vertical_expansion"
-    },
-    {
-        "duration": "45.0",
-        "name": "rendering.mobile/idle_power_animated_gif"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.mobile/idle_power_blank"
-    },
-    {
-        "duration": "45.0",
-        "name": "rendering.mobile/idle_power_css_animation"
-    },
-    {
-        "duration": "82.0",
-        "name": "rendering.mobile/idle_power_request_animation_frame"
-    },
-    {
-        "duration": "116.0",
-        "name": "rendering.mobile/idle_power_set_timeout_long"
-    },
-    {
-        "duration": "45.0",
-        "name": "rendering.mobile/idle_power_set_timetout"
-    },
-    {
-        "duration": "45.0",
-        "name": "rendering.mobile/ie_chalkboard"
-    },
-    {
-        "duration": "44.0",
-        "name": "rendering.mobile/ie_pirate_mark"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/infinite_scroll_element_n_layers_0"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.mobile/infinite_scroll_element_n_layers_75"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.mobile/infinite_scroll_element_n_layers_99"
-    },
-    {
-        "duration": "63.0",
-        "name": "rendering.mobile/infinite_scroll_root_n_layers_0"
-    },
-    {
-        "duration": "37.0",
-        "name": "rendering.mobile/infinite_scroll_root_n_layers_75"
-    },
-    {
-        "duration": "37.0",
-        "name": "rendering.mobile/infinite_scroll_root_n_layers_99"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/infinite_scrolling"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/jarro_doverson"
-    },
-    {
-        "duration": "57.0",
-        "name": "rendering.mobile/js_full_screen_invalidation"
-    },
-    {
-        "duration": "44.0",
-        "name": "rendering.mobile/js_opacity_plus_n_layers_0"
-    },
-    {
-        "duration": "43.0",
-        "name": "rendering.mobile/js_opacity_plus_n_layers_75"
-    },
-    {
-        "duration": "42.0",
-        "name": "rendering.mobile/js_opacity_plus_n_layers_99"
-    },
-    {
-        "duration": "45.0",
-        "name": "rendering.mobile/js_paint_plus_n_layers_0"
-    },
-    {
-        "duration": "45.0",
-        "name": "rendering.mobile/js_paint_plus_n_layers_75"
-    },
-    {
-        "duration": "44.0",
-        "name": "rendering.mobile/js_paint_plus_n_layers_99"
-    },
-    {
-        "duration": "45.0",
-        "name": "rendering.mobile/js_poster_circle"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.mobile/js_scroll_200_layer_grid"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/js_scroll_text_only"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/kevs_3d"
+        "name": "rendering.mobile/ebay_mobile_pinch_2018"
     },
     {
         "duration": "33.0",
-        "name": "rendering.mobile/keyframed_animations"
+        "name": "rendering.mobile/ebay_scroll_2018"
     },
     {
-        "duration": "31.0",
-        "name": "rendering.mobile/large_texture_uploads"
+        "duration": "25.0",
+        "name": "rendering.mobile/effect_games"
     },
     {
-        "duration": "45.0",
-        "name": "rendering.mobile/latimes_pathological_2018"
+        "duration": "29.0",
+        "name": "rendering.mobile/espn_2018"
     },
     {
-        "duration": "41.0",
-        "name": "rendering.mobile/linkedin_2018"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.mobile/linkedin_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "63.0",
-        "name": "rendering.mobile/linkedin_mobile_2018"
-    },
-    {
-        "duration": "55.0",
-        "name": "rendering.mobile/linkedin_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.mobile/linkedin_pathological_2018"
+        "duration": "25.0",
+        "name": "rendering.mobile/espn_mobile_2018"
     },
     {
         "duration": "24.0",
-        "name": "rendering.mobile/list_animation_simple"
+        "name": "rendering.mobile/espn_pathological_2018"
     },
     {
-        "duration": "36.0",
-        "name": "rendering.mobile/list_recycle_transform"
+        "duration": "39.0",
+        "name": "rendering.mobile/extra_large_texture_uploads"
     },
     {
-        "duration": "29.0",
-        "name": "rendering.mobile/man_in_blue"
+        "duration": "26.0",
+        "name": "rendering.mobile/facebook_2018"
     },
     {
-        "duration": "37.0",
-        "name": "rendering.mobile/many_images"
+        "duration": "30.0",
+        "name": "rendering.mobile/facebook_mobile_2018"
     },
     {
-        "duration": "32.0",
-        "name": "rendering.mobile/many_planets_deep"
-    },
-    {
-        "duration": "47.0",
-        "name": "rendering.mobile/maps_perf_test"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/mask_transition_animation"
-    },
-    {
-        "duration": "37.0",
-        "name": "rendering.mobile/medium_texture_uploads"
+        "duration": "21.0",
+        "name": "rendering.mobile/fill_shapes"
     },
     {
         "duration": "28.0",
-        "name": "rendering.mobile/megi_dish"
+        "name": "rendering.mobile/filter_terrain_svg"
     },
     {
-        "duration": "32.0",
-        "name": "rendering.mobile/microsoft_asteroid_belt"
+        "duration": "33.0",
+        "name": "rendering.mobile/flickr_scroll_2018"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/font_wipe"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/forecast.io_mobile_2018"
+    },
+    {
+        "duration": "23.0",
+        "name": "rendering.mobile/gmail_2018"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/google_calendar_2018"
     },
     {
         "duration": "31.0",
-        "name": "rendering.mobile/microsoft_fireflies"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/microsoft_fish_ie_tank"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/microsoft_snow"
+        "name": "rendering.mobile/google_docs_2018"
     },
     {
         "duration": "25.0",
+        "name": "rendering.mobile/google_image_search_2018"
+    },
+    {
+        "duration": "28.0",
+        "name": "rendering.mobile/google_image_search_mobile_2018"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/google_news_ios"
+    },
+    {
+        "duration": "30.0",
+        "name": "rendering.mobile/google_news_mobile_2018"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/google_plus_2018"
+    },
+    {
+        "duration": "30.0",
+        "name": "rendering.mobile/google_plus_mobile_2018"
+    },
+    {
+        "duration": "37.0",
+        "name": "rendering.mobile/google_search_mobile_pinch_2018"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/google_web_search_2018"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/google_web_search_mobile_2018"
+    },
+    {
+        "duration": "28.0",
+        "name": "rendering.mobile/gsp.ro_mobile_2018"
+    },
+    {
+        "duration": "29.0",
+        "name": "rendering.mobile/guardian_pathological_2018"
+    },
+    {
+        "duration": "29.0",
+        "name": "rendering.mobile/guimark_vector_chart"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/gws_boogie_expansion"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/gws_google_expansion"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/hakim"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/horizontal_vertical_expansion"
+    },
+    {
+        "duration": "74.0",
+        "name": "rendering.mobile/idle_power_animated_gif"
+    },
+    {
+        "duration": "36.0",
+        "name": "rendering.mobile/idle_power_blank"
+    },
+    {
+        "duration": "41.0",
+        "name": "rendering.mobile/idle_power_css_animation"
+    },
+    {
+        "duration": "41.0",
+        "name": "rendering.mobile/idle_power_request_animation_frame"
+    },
+    {
+        "duration": "113.0",
+        "name": "rendering.mobile/idle_power_set_timeout_long"
+    },
+    {
+        "duration": "42.0",
+        "name": "rendering.mobile/idle_power_set_timetout"
+    },
+    {
+        "duration": "37.0",
+        "name": "rendering.mobile/ie_chalkboard"
+    },
+    {
+        "duration": "41.0",
+        "name": "rendering.mobile/ie_pirate_mark"
+    },
+    {
+        "duration": "30.0",
+        "name": "rendering.mobile/infinite_scroll_element_n_layers_0"
+    },
+    {
+        "duration": "31.0",
+        "name": "rendering.mobile/infinite_scroll_element_n_layers_75"
+    },
+    {
+        "duration": "30.0",
+        "name": "rendering.mobile/infinite_scroll_element_n_layers_99"
+    },
+    {
+        "duration": "28.0",
+        "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_0"
+    },
+    {
+        "duration": "30.0",
+        "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_75"
+    },
+    {
+        "duration": "30.0",
+        "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_99"
+    },
+    {
+        "duration": "29.0",
+        "name": "rendering.mobile/infinite_scroll_root_n_layers_0"
+    },
+    {
+        "duration": "30.0",
+        "name": "rendering.mobile/infinite_scroll_root_n_layers_75"
+    },
+    {
+        "duration": "30.0",
+        "name": "rendering.mobile/infinite_scroll_root_n_layers_99"
+    },
+    {
+        "duration": "27.0",
+        "name": "rendering.mobile/infinite_scrolling"
+    },
+    {
+        "duration": "23.0",
+        "name": "rendering.mobile/jarro_doverson"
+    },
+    {
+        "duration": "41.0",
+        "name": "rendering.mobile/js_full_screen_invalidation"
+    },
+    {
+        "duration": "31.0",
+        "name": "rendering.mobile/js_opacity_plus_n_layers_0"
+    },
+    {
+        "duration": "31.0",
+        "name": "rendering.mobile/js_opacity_plus_n_layers_75"
+    },
+    {
+        "duration": "32.0",
+        "name": "rendering.mobile/js_opacity_plus_n_layers_99"
+    },
+    {
+        "duration": "32.0",
+        "name": "rendering.mobile/js_paint_plus_n_layers_0"
+    },
+    {
+        "duration": "32.0",
+        "name": "rendering.mobile/js_paint_plus_n_layers_75"
+    },
+    {
+        "duration": "33.0",
+        "name": "rendering.mobile/js_paint_plus_n_layers_99"
+    },
+    {
+        "duration": "62.0",
+        "name": "rendering.mobile/js_poster_circle"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/js_scroll_text_only"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/kevs_3d"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/keyframed_animations"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/large_texture_uploads"
+    },
+    {
+        "duration": "31.0",
+        "name": "rendering.mobile/latimes_pathological_2018"
+    },
+    {
+        "duration": "27.0",
+        "name": "rendering.mobile/linkedin_2018"
+    },
+    {
+        "duration": "55.0",
+        "name": "rendering.mobile/linkedin_mobile_2018"
+    },
+    {
+        "duration": "65.0",
+        "name": "rendering.mobile/linkedin_mobile_pinch_2018"
+    },
+    {
+        "duration": "43.0",
+        "name": "rendering.mobile/linkedin_pathological_2018"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/list_animation_simple"
+    },
+    {
+        "duration": "28.0",
+        "name": "rendering.mobile/list_recycle_transform"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/man_in_blue"
+    },
+    {
+        "duration": "29.0",
+        "name": "rendering.mobile/many_images"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/many_planets_deep"
+    },
+    {
+        "duration": "34.0",
+        "name": "rendering.mobile/maps_perf_test"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/mask_transition_animation"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/masonry"
+    },
+    {
+        "duration": "28.0",
+        "name": "rendering.mobile/medium_texture_uploads"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/megi_dish"
+    },
+    {
+        "duration": "23.0",
+        "name": "rendering.mobile/microsoft_asteroid_belt"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/microsoft_fish_ie_tank"
+    },
+    {
+        "duration": "27.0",
+        "name": "rendering.mobile/microsoft_performance"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/microsoft_snow"
+    },
+    {
+        "duration": "36.0",
         "name": "rendering.mobile/microsoft_speed_reading"
     },
     {
@@ -2484,107 +2468,187 @@
         "name": "rendering.mobile/microsoft_video_city"
     },
     {
-        "duration": "26.0",
+        "duration": "36.0",
         "name": "rendering.mobile/microsoft_worker_fountains"
     },
     {
-        "duration": "26.0",
+        "duration": "36.0",
         "name": "rendering.mobile/mix_10k"
     },
     {
-        "duration": "28.0",
+        "duration": "24.0",
         "name": "rendering.mobile/mix_blend_mode_animation_difference"
     },
     {
-        "duration": "29.0",
+        "duration": "24.0",
         "name": "rendering.mobile/mix_blend_mode_animation_hue"
     },
     {
-        "duration": "39.0",
+        "duration": "29.0",
         "name": "rendering.mobile/mix_blend_mode_animation_propagating_isolation"
     },
     {
-        "duration": "29.0",
+        "duration": "24.0",
         "name": "rendering.mobile/mix_blend_mode_animation_screen"
     },
     {
-        "duration": "56.0",
+        "duration": "34.0",
         "name": "rendering.mobile/mlb_mobile_2018"
     },
     {
-        "duration": "45.0",
-        "name": "rendering.mobile/mlb_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "23.0",
+        "duration": "20.0",
         "name": "rendering.mobile/mobile_news_sandbox"
     },
     {
-        "duration": "31.0",
+        "duration": "26.0",
         "name": "rendering.mobile/motion_mark_canvas_fill_shapes"
     },
     {
-        "duration": "30.0",
+        "duration": "26.0",
         "name": "rendering.mobile/motion_mark_canvas_stroke_shapes"
     },
     {
-        "duration": "30.0",
-        "name": "rendering.mobile/motion_mark_focus"
-    },
-    {
-        "duration": "47.0",
-        "name": "rendering.mobile/new_tilings"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/no_op_raf"
+        "duration": "24.0",
+        "name": "rendering.mobile/motionmark_anim_design_15"
     },
     {
         "duration": "24.0",
-        "name": "rendering.mobile/no_op_scroll"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/no_op_settimeout"
+        "name": "rendering.mobile/motionmark_anim_focus_25"
     },
     {
         "duration": "27.0",
-        "name": "rendering.mobile/no_op_touch_handler"
+        "name": "rendering.mobile/motionmark_anim_images_50"
     },
     {
-        "duration": "32.0",
-        "name": "rendering.mobile/nvidia_vertex_buffer_object"
+        "duration": "26.0",
+        "name": "rendering.mobile/motionmark_anim_leaves_250"
     },
     {
-        "duration": "43.0",
-        "name": "rendering.mobile/nyc_gov_scroll_2018"
+        "duration": "25.0",
+        "name": "rendering.mobile/motionmark_anim_multiply_175"
     },
     {
-        "duration": "48.0",
-        "name": "rendering.mobile/nytimes_mobile_2018"
+        "duration": "24.0",
+        "name": "rendering.mobile/motionmark_anim_suits_125"
     },
     {
-        "duration": "48.0",
-        "name": "rendering.mobile/nytimes_scroll_2018"
+        "duration": "24.0",
+        "name": "rendering.mobile/motionmark_html_composited_transforms_125"
     },
     {
-        "duration": "40.0",
-        "name": "rendering.mobile/overlay_background_color_css_transitions_page"
+        "duration": "24.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_blend_circles_25"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_circles_250"
     },
     {
         "duration": "31.0",
-        "name": "rendering.mobile/parallax_effect"
+        "name": "rendering.mobile/motionmark_html_css_bouncing_clipped_rects_100"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_filter_circles_15"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_gradient_circles_250"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_svg_images_50"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_tagged_images_225"
+    },
+    {
+        "duration": "32.0",
+        "name": "rendering.mobile/motionmark_html_dom_particles_svg_masks_25"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/motionmark_html_focus_20_15"
+    },
+    {
+        "duration": "27.0",
+        "name": "rendering.mobile/motionmark_html_leaves_20_50"
+    },
+    {
+        "duration": "27.0",
+        "name": "rendering.mobile/motionmark_svg_bouncing_circles_250"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/motionmark_svg_bouncing_clipped_rects_100"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/motionmark_svg_bouncing_gradient_circles_200"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/motionmark_svg_bouncing_png_images_200"
     },
     {
         "duration": "28.0",
-        "name": "rendering.mobile/particles"
+        "name": "rendering.mobile/motionmark_svg_bouncing_svg_images_50"
     },
     {
         "duration": "33.0",
-        "name": "rendering.mobile/pbs_pathological_2018"
+        "name": "rendering.mobile/new_tilings"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/no_op_raf"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/no_op_scroll"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/no_op_settimeout"
     },
     {
         "duration": "23.0",
+        "name": "rendering.mobile/no_op_touch_handler"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/nvidia_vertex_buffer_object"
+    },
+    {
+        "duration": "34.0",
+        "name": "rendering.mobile/nyc_gov_scroll_2018"
+    },
+    {
+        "duration": "30.0",
+        "name": "rendering.mobile/nytimes_mobile_2018"
+    },
+    {
+        "duration": "36.0",
+        "name": "rendering.mobile/nytimes_scroll_2018"
+    },
+    {
+        "duration": "29.0",
+        "name": "rendering.mobile/overlay_background_color_css_transitions_page"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/parallax_effect"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/particles"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/pbs_pathological_2018"
+    },
+    {
+        "duration": "18.0",
         "name": "rendering.mobile/physical_simulation"
     },
     {
@@ -2592,783 +2656,487 @@
         "name": "rendering.mobile/pinterest_2018"
     },
     {
-        "duration": "35.0",
-        "name": "rendering.mobile/pinterest_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "25.0",
+        "duration": "23.0",
         "name": "rendering.mobile/pinterest_mobile_2018"
     },
     {
-        "duration": "18.0",
-        "name": "rendering.mobile/pinterest_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "24.0",
+        "duration": "38.0",
         "name": "rendering.mobile/put_get_image_data"
     },
     {
-        "duration": "32.0",
+        "duration": "25.0",
         "name": "rendering.mobile/raf"
     },
     {
-        "duration": "33.0",
+        "duration": "26.0",
         "name": "rendering.mobile/raf_animation"
     },
     {
-        "duration": "32.0",
+        "duration": "25.0",
         "name": "rendering.mobile/raf_canvas"
     },
     {
-        "duration": "33.0",
+        "duration": "24.0",
         "name": "rendering.mobile/raf_touch_animation"
     },
     {
-        "duration": "42.0",
+        "duration": "30.0",
         "name": "rendering.mobile/recode_pathological_2018"
     },
     {
-        "duration": "48.0",
+        "duration": "32.0",
         "name": "rendering.mobile/reddit_mobile_2018"
     },
     {
-        "duration": "30.0",
+        "duration": "58.0",
         "name": "rendering.mobile/runway"
     },
     {
-        "duration": "29.0",
+        "duration": "23.0",
         "name": "rendering.mobile/san_angeles"
     },
     {
-        "duration": "19.0",
+        "duration": "17.0",
         "name": "rendering.mobile/second_batch_js_heavy"
     },
     {
-        "duration": "19.0",
+        "duration": "16.0",
         "name": "rendering.mobile/second_batch_js_light"
     },
     {
-        "duration": "18.0",
+        "duration": "16.0",
         "name": "rendering.mobile/second_batch_js_medium"
     },
     {
-        "duration": "50.0",
+        "duration": "30.0",
         "name": "rendering.mobile/sfgate_mobile_2018"
     },
     {
-        "duration": "40.0",
-        "name": "rendering.mobile/sfgate_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "42.0",
+        "duration": "32.0",
         "name": "rendering.mobile/silk_finance"
     },
     {
-        "duration": "29.0",
+        "duration": "24.0",
         "name": "rendering.mobile/simple_text_page"
     },
     {
-        "duration": "24.0",
+        "duration": "18.0",
         "name": "rendering.mobile/simple_touch_drag"
     },
     {
-        "duration": "44.0",
+        "duration": "27.0",
         "name": "rendering.mobile/slashdot_mobile_2018"
     },
     {
-        "duration": "37.0",
+        "duration": "19.0",
+        "name": "rendering.mobile/slide_drawer"
+    },
+    {
+        "duration": "28.0",
         "name": "rendering.mobile/small_texture_uploads"
     },
     {
-        "duration": "32.0",
+        "duration": "23.0",
         "name": "rendering.mobile/smash_cat"
     },
     {
-        "duration": "24.0",
+        "duration": "20.0",
         "name": "rendering.mobile/spielzeugz"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "rendering.mobile/sticky_using_webkit"
     },
     {
-        "duration": "39.0",
+        "duration": "31.0",
         "name": "rendering.mobile/stress_hidey_bars"
     },
     {
-        "duration": "23.0",
+        "duration": "20.0",
         "name": "rendering.mobile/stroke_shapes"
     },
     {
-        "duration": "37.0",
+        "duration": "32.0",
         "name": "rendering.mobile/svg_icon_raster"
     },
     {
-        "duration": "28.0",
+        "duration": "17.0",
+        "name": "rendering.mobile/swipe_action"
+    },
+    {
+        "duration": "21.0",
         "name": "rendering.mobile/swipe_to_dismiss"
     },
     {
-        "duration": "29.0",
+        "duration": "23.0",
         "name": "rendering.mobile/sync_scroll_offset"
     },
     {
-        "duration": "45.0",
+        "duration": "53.0",
         "name": "rendering.mobile/techcrunch_2018"
     },
     {
-        "duration": "41.0",
-        "name": "rendering.mobile/techcrunch_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "48.0",
+        "duration": "31.0",
         "name": "rendering.mobile/techcrunch_mobile_2018"
     },
     {
-        "duration": "41.0",
-        "name": "rendering.mobile/techcrunch_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "29.0",
+        "duration": "25.0",
         "name": "rendering.mobile/text_05000_pixels_per_second"
     },
     {
-        "duration": "29.0",
-        "name": "rendering.mobile/text_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "30.0",
+        "duration": "24.0",
         "name": "rendering.mobile/text_10000_pixels_per_second"
     },
     {
-        "duration": "30.0",
-        "name": "rendering.mobile/text_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/text_15000_pixels_per_second"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/text_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "31.0",
+        "duration": "25.0",
         "name": "rendering.mobile/text_20000_pixels_per_second"
     },
     {
-        "duration": "30.0",
-        "name": "rendering.mobile/text_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/text_30000_pixels_per_second"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/text_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "30.0",
+        "duration": "23.0",
         "name": "rendering.mobile/text_40000_pixels_per_second"
     },
     {
-        "duration": "29.0",
-        "name": "rendering.mobile/text_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/text_50000_pixels_per_second"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/text_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "25.0",
+        "duration": "20.0",
         "name": "rendering.mobile/text_60000_pixels_per_second"
     },
     {
-        "duration": "25.0",
-        "name": "rendering.mobile/text_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "24.0",
+        "duration": "19.0",
         "name": "rendering.mobile/text_75000_pixels_per_second"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "22.0",
+        "duration": "17.0",
         "name": "rendering.mobile/text_90000_pixels_per_second"
     },
     {
-        "duration": "22.0",
-        "name": "rendering.mobile/text_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "32.0",
+        "duration": "25.0",
         "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second"
     },
     {
-        "duration": "31.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "31.0",
+        "duration": "25.0",
         "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second"
     },
     {
-        "duration": "31.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "32.0",
+        "duration": "25.0",
         "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second"
     },
     {
-        "duration": "31.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "31.0",
+        "duration": "24.0",
         "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second"
     },
     {
-        "duration": "30.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "26.0",
+        "duration": "21.0",
         "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "24.0",
+        "duration": "20.0",
         "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second"
     },
     {
-        "duration": "24.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
+        "duration": "19.0",
         "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second"
     },
     {
-        "duration": "22.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
+        "duration": "20.0",
         "name": "rendering.mobile/text_hover_05000_pixels_per_second"
     },
     {
-        "duration": "22.0",
-        "name": "rendering.mobile/text_hover_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
+        "duration": "20.0",
         "name": "rendering.mobile/text_hover_10000_pixels_per_second"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_hover_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_hover_15000_pixels_per_second"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_hover_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
+        "duration": "21.0",
         "name": "rendering.mobile/text_hover_20000_pixels_per_second"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_hover_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_hover_30000_pixels_per_second"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_hover_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "21.0",
+        "duration": "19.0",
         "name": "rendering.mobile/text_hover_40000_pixels_per_second"
     },
     {
-        "duration": "21.0",
-        "name": "rendering.mobile/text_hover_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.mobile/text_hover_50000_pixels_per_second"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.mobile/text_hover_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "20.0",
+        "duration": "18.0",
         "name": "rendering.mobile/text_hover_60000_pixels_per_second"
     },
     {
-        "duration": "19.0",
-        "name": "rendering.mobile/text_hover_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "19.0",
+        "duration": "17.0",
         "name": "rendering.mobile/text_hover_75000_pixels_per_second"
     },
     {
-        "duration": "19.0",
-        "name": "rendering.mobile/text_hover_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "18.0",
+        "duration": "17.0",
         "name": "rendering.mobile/text_hover_90000_pixels_per_second"
     },
     {
-        "duration": "18.0",
-        "name": "rendering.mobile/text_hover_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "42.0",
+        "duration": "32.0",
         "name": "rendering.mobile/theverge_article_mobile_2018"
     },
     {
-        "duration": "42.0",
-        "name": "rendering.mobile/theverge_article_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "60.0",
+        "duration": "30.0",
         "name": "rendering.mobile/theverge_mobile_2018"
     },
     {
-        "duration": "42.0",
-        "name": "rendering.mobile/theverge_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "30.0",
+        "duration": "25.0",
         "name": "rendering.mobile/toggle_drawer"
     },
     {
-        "duration": "31.0",
+        "duration": "24.0",
         "name": "rendering.mobile/touch_handler_scrolling"
     },
     {
-        "duration": "36.0",
+        "duration": "27.0",
         "name": "rendering.mobile/transform_transitions"
     },
     {
-        "duration": "33.0",
+        "duration": "26.0",
         "name": "rendering.mobile/transform_transitions_js_block"
     },
     {
-        "duration": "38.0",
+        "duration": "26.0",
         "name": "rendering.mobile/twitch_2018"
     },
     {
-        "duration": "33.0",
-        "name": "rendering.mobile/twitch_desktop_gpu_raster_2018"
+        "duration": "36.0",
+        "name": "rendering.mobile/twitch_mobile_pinch_2018"
     },
     {
-        "duration": "41.0",
+        "duration": "39.0",
         "name": "rendering.mobile/twitter_2018"
     },
     {
-        "duration": "40.0",
-        "name": "rendering.mobile/twitter_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "43.0",
+        "duration": "18.0",
         "name": "rendering.mobile/twitter_mobile_2018"
     },
     {
-        "duration": "36.0",
-        "name": "rendering.mobile/twitter_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "30.0",
+        "duration": "23.0",
         "name": "rendering.mobile/update_history_state"
     },
     {
-        "duration": "27.0",
+        "duration": "20.0",
         "name": "rendering.mobile/usatoday_mobile_2018"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.mobile/usatoday_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "31.0",
+        "duration": "23.0",
         "name": "rendering.mobile/vertical_expansion"
     },
     {
-        "duration": "35.0",
+        "duration": "28.0",
         "name": "rendering.mobile/web_animation_value_type_color"
     },
     {
-        "duration": "32.0",
+        "duration": "26.0",
         "name": "rendering.mobile/web_animation_value_type_length_3d"
     },
     {
-        "duration": "34.0",
+        "duration": "28.0",
         "name": "rendering.mobile/web_animation_value_type_length_complex"
     },
     {
-        "duration": "35.0",
+        "duration": "28.0",
         "name": "rendering.mobile/web_animation_value_type_length_simple"
     },
     {
-        "duration": "32.0",
+        "duration": "33.0",
         "name": "rendering.mobile/web_animation_value_type_path"
     },
     {
-        "duration": "29.0",
+        "duration": "24.0",
         "name": "rendering.mobile/web_animation_value_type_shadow"
     },
     {
-        "duration": "31.0",
+        "duration": "26.0",
         "name": "rendering.mobile/web_animation_value_type_transform_complex"
     },
     {
-        "duration": "32.0",
+        "duration": "26.0",
         "name": "rendering.mobile/web_animation_value_type_transform_simple"
     },
     {
-        "duration": "32.0",
+        "duration": "26.0",
         "name": "rendering.mobile/web_animations_set_current_time"
     },
     {
-        "duration": "34.0",
+        "duration": "27.0",
         "name": "rendering.mobile/web_animations_simultaneous"
     },
     {
-        "duration": "37.0",
+        "duration": "29.0",
         "name": "rendering.mobile/web_animations_staggered_chaining"
     },
     {
-        "duration": "33.0",
+        "duration": "26.0",
         "name": "rendering.mobile/web_animations_staggered_infinite_iterations"
     },
     {
-        "duration": "37.0",
+        "duration": "36.0",
         "name": "rendering.mobile/web_animations_staggered_triggering_page"
     },
     {
-        "duration": "42.0",
+        "duration": "47.0",
         "name": "rendering.mobile/wikipedia_2018"
     },
     {
-        "duration": "44.0",
+        "duration": "30.0",
         "name": "rendering.mobile/wikipedia_delayed_scroll_start_2018"
     },
     {
-        "duration": "37.0",
-        "name": "rendering.mobile/wikipedia_delayed_scroll_start_sync_scroll_2018"
-    },
-    {
-        "duration": "37.0",
-        "name": "rendering.mobile/wikipedia_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "35.0",
+        "duration": "29.0",
         "name": "rendering.mobile/wikipedia_mobile_2018"
     },
     {
-        "duration": "36.0",
-        "name": "rendering.mobile/wikipedia_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "44.0",
+        "duration": "31.0",
         "name": "rendering.mobile/wordpress_2018"
     },
     {
-        "duration": "39.0",
-        "name": "rendering.mobile/wordpress_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "45.0",
+        "duration": "28.0",
         "name": "rendering.mobile/wordpress_mobile_2018"
     },
     {
-        "duration": "37.0",
-        "name": "rendering.mobile/wordpress_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "38.0",
+        "duration": "29.0",
         "name": "rendering.mobile/worldjournal_mobile_2018"
     },
     {
-        "duration": "39.0",
-        "name": "rendering.mobile/worldjournal_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "45.0",
+        "duration": "33.0",
         "name": "rendering.mobile/wow_wiki_pathological_2018"
     },
     {
-        "duration": "76.0",
+        "duration": "51.0",
         "name": "rendering.mobile/wowwiki_mobile_2018"
     },
     {
-        "duration": "66.0",
-        "name": "rendering.mobile/wowwiki_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "50.0",
+        "duration": "40.0",
         "name": "rendering.mobile/wsj_mobile_2018"
     },
     {
-        "duration": "43.0",
-        "name": "rendering.mobile/wsj_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "33.0",
+        "duration": "21.0",
         "name": "rendering.mobile/yahoo_answers_2018"
     },
     {
-        "duration": "28.0",
-        "name": "rendering.mobile/yahoo_answers_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/yahoo_news_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/yahoo_news_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "42.0",
+        "duration": "33.0",
         "name": "rendering.mobile/yahoo_news_mobile_2018"
     },
     {
-        "duration": "36.0",
-        "name": "rendering.mobile/yahoo_news_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "39.0",
+        "duration": "29.0",
         "name": "rendering.mobile/yahoo_sports_2018"
     },
     {
-        "duration": "34.0",
-        "name": "rendering.mobile/yahoo_sports_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "24.0",
+        "duration": "19.0",
         "name": "rendering.mobile/yahoo_sports_pathological_2018"
     },
     {
-        "duration": "32.0",
+        "duration": "30.0",
         "name": "rendering.mobile/youtube_2018"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.mobile/youtube_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "30.0",
+        "duration": "18.0",
         "name": "rendering.mobile/youtube_mobile_2018"
     },
     {
-        "duration": "22.0",
-        "name": "rendering.mobile/youtube_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "38.0",
+        "duration": "43.0",
         "name": "rendering.mobile/yuv_decoding"
     },
     {
-        "duration": "40.0",
+        "duration": "50.0",
         "name": "rendering.mobile/yuv_decoding_gpu_rasterization_and_decoding"
     },
     {
-        "duration": "36.0",
+        "duration": "27.0",
         "name": "rendering.mobile/zdnet_pathological_2018"
     },
     {
-        "duration": "29.0",
+        "duration": "30.0",
         "name": "rendering.mobile/zoom_in_animation"
     },
     {
-        "duration": "38.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/accu_weather_pinch_2018"
-    },
-    {
-        "duration": "26.0",
+        "duration": "41.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/amazon_pinch_2018"
     },
     {
-        "duration": "24.0",
+        "duration": "22.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/blogspot_pinch_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "39.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/booking_pinch_2018"
     },
     {
-        "duration": "27.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/cnn_pinch_2018"
-    },
-    {
-        "duration": "23.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/ebay_pinch_2018"
-    },
-    {
-        "duration": "29.0",
+        "duration": "28.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/espn_pinch_2018"
     },
     {
-        "duration": "28.0",
+        "duration": "30.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/facebook_pinch_2018"
     },
     {
-        "duration": "43.0",
+        "duration": "60.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/gmail_pinch_2018"
     },
     {
-        "duration": "32.0",
+        "duration": "27.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_calendar_pinch_2018"
     },
     {
-        "duration": "23.0",
+        "duration": "24.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_image_pinch_2018"
     },
     {
-        "duration": "45.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_search_pinch_2018"
-    },
-    {
-        "duration": "37.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/linkedin_pinch_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/twitch_pinch_2018"
-    },
-    {
-        "duration": "26.0",
+        "duration": "32.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/twitter_pinch_2018"
     },
     {
-        "duration": "30.0",
+        "duration": "41.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_news_pinch_2018"
     },
     {
-        "duration": "38.0",
+        "duration": "44.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_sports_pinch_2018"
     },
     {
-        "duration": "28.0",
+        "duration": "31.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/youtube_pinch_2018"
     },
     {
-        "duration": "37.0",
-        "name": "smoothness.tough_pinch_zoom_cases/accu_weather_pinch_2018"
-    },
-    {
-        "duration": "27.0",
+        "duration": "44.0",
         "name": "smoothness.tough_pinch_zoom_cases/amazon_pinch_2018"
     },
     {
-        "duration": "24.0",
+        "duration": "23.0",
         "name": "smoothness.tough_pinch_zoom_cases/blogspot_pinch_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "39.0",
         "name": "smoothness.tough_pinch_zoom_cases/booking_pinch_2018"
     },
     {
-        "duration": "28.0",
-        "name": "smoothness.tough_pinch_zoom_cases/cnn_pinch_2018"
-    },
-    {
-        "duration": "36.0",
-        "name": "smoothness.tough_pinch_zoom_cases/ebay_pinch_2018"
-    },
-    {
-        "duration": "28.0",
+        "duration": "31.0",
         "name": "smoothness.tough_pinch_zoom_cases/espn_pinch_2018"
     },
     {
-        "duration": "28.0",
+        "duration": "30.0",
         "name": "smoothness.tough_pinch_zoom_cases/facebook_pinch_2018"
     },
     {
-        "duration": "42.0",
+        "duration": "56.0",
         "name": "smoothness.tough_pinch_zoom_cases/gmail_pinch_2018"
     },
     {
-        "duration": "31.0",
+        "duration": "27.0",
         "name": "smoothness.tough_pinch_zoom_cases/google_calendar_pinch_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "25.0",
         "name": "smoothness.tough_pinch_zoom_cases/google_image_pinch_2018"
     },
     {
-        "duration": "37.0",
-        "name": "smoothness.tough_pinch_zoom_cases/google_search_pinch_2018"
-    },
-    {
-        "duration": "36.0",
-        "name": "smoothness.tough_pinch_zoom_cases/linkedin_pinch_2018"
-    },
-    {
         "duration": "32.0",
-        "name": "smoothness.tough_pinch_zoom_cases/twitch_pinch_2018"
-    },
-    {
-        "duration": "26.0",
         "name": "smoothness.tough_pinch_zoom_cases/twitter_pinch_2018"
     },
     {
-        "duration": "31.0",
+        "duration": "48.0",
         "name": "smoothness.tough_pinch_zoom_cases/yahoo_news_pinch_2018"
     },
     {
-        "duration": "36.0",
+        "duration": "40.0",
         "name": "smoothness.tough_pinch_zoom_cases/yahoo_sports_pinch_2018"
     },
     {
-        "duration": "29.0",
+        "duration": "31.0",
         "name": "smoothness.tough_pinch_zoom_cases/youtube_pinch_2018"
     },
     {
@@ -3376,79 +3144,83 @@
         "name": "speedometer-future/http://browserbench.org/Speedometer/"
     },
     {
-        "duration": "80.0",
+        "duration": "79.0",
         "name": "speedometer/http://browserbench.org/Speedometer/"
     },
     {
-        "duration": "136.0",
+        "duration": "128.0",
         "name": "speedometer2-future/Speedometer2"
     },
     {
-        "duration": "134.0",
+        "duration": "124.0",
         "name": "speedometer2/Speedometer2"
     },
     {
-        "duration": "215.0",
+        "duration": "130.0",
+        "name": "startup.mobile/cct:coldish:bbc"
+    },
+    {
+        "duration": "208.0",
         "name": "startup.mobile/intent:coldish:bbc"
     },
     {
-        "duration": "185.0",
+        "duration": "167.0",
         "name": "startup.mobile/intent:warm:bbc"
     },
     {
-        "duration": "29.0",
+        "duration": "27.0",
         "name": "system_health.common_mobile/background:media:imgur"
     },
     {
-        "duration": "55.0",
+        "duration": "53.0",
         "name": "system_health.common_mobile/background:news:nytimes"
     },
     {
-        "duration": "31.0",
+        "duration": "29.0",
         "name": "system_health.common_mobile/background:search:google"
     },
     {
-        "duration": "52.0",
+        "duration": "26.0",
         "name": "system_health.common_mobile/background:social:facebook"
     },
     {
-        "duration": "44.0",
-        "name": "system_health.common_mobile/background:tools:gmail"
-    },
-    {
-        "duration": "127.0",
+        "duration": "119.0",
         "name": "system_health.common_mobile/browse:chrome:newtab"
     },
     {
-        "duration": "40.0",
+        "duration": "38.0",
         "name": "system_health.common_mobile/browse:chrome:omnibox"
     },
     {
-        "duration": "98.0",
+        "duration": "90.0",
         "name": "system_health.common_mobile/browse:media:facebook_photos"
     },
     {
-        "duration": "62.0",
+        "duration": "55.0",
         "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "90.0",
+        "duration": "52.0",
+        "name": "system_health.common_mobile/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "81.0",
         "name": "system_health.common_mobile/browse:media:imgur"
     },
     {
-        "duration": "127.0",
+        "duration": "110.0",
         "name": "system_health.common_mobile/browse:media:youtube"
     },
     {
-        "duration": "149.0",
+        "duration": "126.0",
         "name": "system_health.common_mobile/browse:news:cnn"
     },
     {
-        "duration": "121.0",
+        "duration": "93.0",
         "name": "system_health.common_mobile/browse:news:cnn:2018"
     },
     {
-        "duration": "80.0",
+        "duration": "58.0",
         "name": "system_health.common_mobile/browse:news:cricbuzz"
     },
     {
@@ -3456,119 +3228,151 @@
         "name": "system_health.common_mobile/browse:news:qq"
     },
     {
-        "duration": "65.0",
+        "duration": "59.0",
         "name": "system_health.common_mobile/browse:news:reddit"
     },
     {
-        "duration": "177.0",
+        "duration": "153.0",
         "name": "system_health.common_mobile/browse:news:toi"
     },
     {
-        "duration": "64.0",
+        "duration": "59.0",
         "name": "system_health.common_mobile/browse:news:washingtonpost"
     },
     {
-        "duration": "94.0",
+        "duration": "32.0",
+        "name": "system_health.common_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "78.0",
         "name": "system_health.common_mobile/browse:shopping:amazon"
     },
     {
-        "duration": "85.0",
-        "name": "system_health.common_mobile/browse:shopping:avito"
-    },
-    {
-        "duration": "46.0",
+        "duration": "37.0",
         "name": "system_health.common_mobile/browse:shopping:lazada"
     },
     {
-        "duration": "80.0",
+        "duration": "75.0",
         "name": "system_health.common_mobile/browse:social:facebook"
     },
     {
-        "duration": "172.0",
+        "duration": "116.0",
         "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "112.0",
+        "duration": "98.0",
         "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "102.0",
+        "duration": "93.0",
         "name": "system_health.common_mobile/browse:social:instagram"
     },
     {
-        "duration": "101.0",
+        "duration": "93.0",
         "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll"
     },
     {
-        "duration": "124.0",
+        "duration": "112.0",
         "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "67.0",
+        "duration": "108.0",
+        "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "59.0",
         "name": "system_health.common_mobile/browse:social:twitter"
     },
     {
-        "duration": "81.0",
+        "duration": "72.0",
         "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "100.0",
+        "duration": "94.0",
         "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "58.0",
+        "duration": "51.0",
         "name": "system_health.common_mobile/browse:tools:maps"
     },
     {
-        "duration": "24.0",
+        "duration": "36.0",
         "name": "system_health.common_mobile/load:chrome:blank"
     },
     {
-        "duration": "32.0",
+        "duration": "25.0",
         "name": "system_health.common_mobile/load:games:bubbles"
     },
     {
-        "duration": "25.0",
+        "duration": "22.0",
         "name": "system_health.common_mobile/load:games:lazors"
     },
     {
-        "duration": "41.0",
+        "duration": "33.0",
         "name": "system_health.common_mobile/load:games:spychase"
     },
     {
-        "duration": "30.0",
+        "duration": "34.0",
+        "name": "system_health.common_mobile/load:games:spychase:2018"
+    },
+    {
+        "duration": "26.0",
         "name": "system_health.common_mobile/load:media:dailymotion"
     },
     {
-        "duration": "28.0",
+        "duration": "23.0",
         "name": "system_health.common_mobile/load:media:facebook_photos"
     },
     {
         "duration": "28.0",
+        "name": "system_health.common_mobile/load:media:flickr:2018"
+    },
+    {
+        "duration": "22.0",
         "name": "system_health.common_mobile/load:media:google_images"
     },
     {
-        "duration": "28.0",
+        "duration": "24.0",
+        "name": "system_health.common_mobile/load:media:google_images:2018"
+    },
+    {
+        "duration": "23.0",
         "name": "system_health.common_mobile/load:media:imgur"
     },
     {
-        "duration": "28.0",
+        "duration": "30.0",
+        "name": "system_health.common_mobile/load:media:imgur:2018"
+    },
+    {
+        "duration": "24.0",
         "name": "system_health.common_mobile/load:media:soundcloud"
     },
     {
-        "duration": "28.0",
+        "duration": "23.0",
+        "name": "system_health.common_mobile/load:media:soundcloud:2018"
+    },
+    {
+        "duration": "23.0",
         "name": "system_health.common_mobile/load:media:youtube"
     },
     {
-        "duration": "48.0",
+        "duration": "41.0",
+        "name": "system_health.common_mobile/load:media:youtube:2018"
+    },
+    {
+        "duration": "42.0",
         "name": "system_health.common_mobile/load:news:cnn"
     },
     {
         "duration": "35.0",
+        "name": "system_health.common_mobile/load:news:cnn:2018"
+    },
+    {
+        "duration": "28.0",
         "name": "system_health.common_mobile/load:news:irctc"
     },
     {
-        "duration": "32.0",
+        "duration": "28.0",
         "name": "system_health.common_mobile/load:news:nytimes"
     },
     {
@@ -3576,563 +3380,659 @@
         "name": "system_health.common_mobile/load:news:qq"
     },
     {
-        "duration": "28.0",
+        "duration": "24.0",
         "name": "system_health.common_mobile/load:news:reddit"
     },
     {
-        "duration": "30.0",
+        "duration": "26.0",
         "name": "system_health.common_mobile/load:news:washingtonpost"
     },
     {
-        "duration": "28.0",
+        "duration": "25.0",
         "name": "system_health.common_mobile/load:news:wikipedia"
     },
     {
-        "duration": "27.0",
+        "duration": "24.0",
+        "name": "system_health.common_mobile/load:news:wikipedia:2018"
+    },
+    {
+        "duration": "31.0",
         "name": "system_health.common_mobile/load:search:baidu"
     },
     {
-        "duration": "28.0",
+        "duration": "31.0",
+        "name": "system_health.common_mobile/load:search:baidu:2018"
+    },
+    {
+        "duration": "23.0",
         "name": "system_health.common_mobile/load:search:ebay"
     },
     {
         "duration": "26.0",
+        "name": "system_health.common_mobile/load:search:ebay:2018"
+    },
+    {
+        "duration": "23.0",
         "name": "system_health.common_mobile/load:search:google"
     },
     {
-        "duration": "28.0",
+        "duration": "24.0",
+        "name": "system_health.common_mobile/load:search:google:2018"
+    },
+    {
+        "duration": "40.0",
         "name": "system_health.common_mobile/load:search:taobao"
     },
     {
-        "duration": "27.0",
+        "duration": "24.0",
         "name": "system_health.common_mobile/load:search:yahoo"
     },
     {
-        "duration": "27.0",
+        "duration": "23.0",
+        "name": "system_health.common_mobile/load:search:yahoo:2018"
+    },
+    {
+        "duration": "23.0",
         "name": "system_health.common_mobile/load:search:yandex"
     },
     {
-        "duration": "27.0",
+        "duration": "24.0",
+        "name": "system_health.common_mobile/load:search:yandex:2018"
+    },
+    {
+        "duration": "23.0",
         "name": "system_health.common_mobile/load:social:twitter"
     },
     {
-        "duration": "27.0",
+        "duration": "23.0",
         "name": "system_health.common_mobile/load:tools:docs"
     },
     {
-        "duration": "29.0",
+        "duration": "26.0",
         "name": "system_health.common_mobile/load:tools:drive"
     },
     {
-        "duration": "26.0",
+        "duration": "22.0",
         "name": "system_health.common_mobile/load:tools:dropbox"
     },
     {
-        "duration": "39.0",
-        "name": "system_health.common_mobile/load:tools:gmail"
-    },
-    {
-        "duration": "28.0",
+        "duration": "24.0",
         "name": "system_health.common_mobile/load:tools:stackoverflow"
     },
     {
-        "duration": "35.0",
+        "duration": "83.0",
+        "name": "system_health.common_mobile/load:tools:stackoverflow:2018"
+    },
+    {
+        "duration": "28.0",
         "name": "system_health.common_mobile/load:tools:weather"
     },
     {
-        "duration": "34.0",
+        "duration": "31.0",
         "name": "system_health.memory_mobile/background:media:imgur"
     },
     {
-        "duration": "34.0",
+        "duration": "33.0",
         "name": "system_health.memory_mobile/background:search:google"
     },
     {
-        "duration": "37.0",
+        "duration": "31.0",
         "name": "system_health.memory_mobile/background:social:facebook"
     },
     {
-        "duration": "87.0",
+        "duration": "84.0",
         "name": "system_health.memory_mobile/browse:media:facebook_photos"
     },
     {
-        "duration": "57.0",
+        "duration": "51.0",
         "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "79.0",
+        "duration": "50.0",
+        "name": "system_health.memory_mobile/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "75.0",
         "name": "system_health.memory_mobile/browse:media:imgur"
     },
     {
-        "duration": "92.0",
+        "duration": "89.0",
         "name": "system_health.memory_mobile/browse:media:youtube"
     },
     {
-        "duration": "108.0",
+        "duration": "107.0",
         "name": "system_health.memory_mobile/browse:news:cnn"
     },
     {
-        "duration": "82.0",
+        "duration": "83.0",
         "name": "system_health.memory_mobile/browse:news:cnn:2018"
     },
     {
-        "duration": "65.0",
+        "duration": "53.0",
         "name": "system_health.memory_mobile/browse:news:cricbuzz"
     },
     {
-        "duration": "59.0",
+        "duration": "66.0",
         "name": "system_health.memory_mobile/browse:news:qq"
     },
     {
-        "duration": "60.0",
+        "duration": "57.0",
         "name": "system_health.memory_mobile/browse:news:reddit"
     },
     {
-        "duration": "102.0",
+        "duration": "111.0",
         "name": "system_health.memory_mobile/browse:news:toi"
     },
     {
-        "duration": "56.0",
+        "duration": "54.0",
         "name": "system_health.memory_mobile/browse:news:washingtonpost"
     },
     {
-        "duration": "66.0",
+        "duration": "31.0",
+        "name": "system_health.memory_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "65.0",
         "name": "system_health.memory_mobile/browse:shopping:amazon"
     },
     {
-        "duration": "43.0",
+        "duration": "39.0",
         "name": "system_health.memory_mobile/browse:shopping:lazada"
     },
     {
-        "duration": "90.0",
+        "duration": "79.0",
         "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "96.0",
+        "duration": "79.0",
         "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "83.0",
+        "duration": "81.0",
         "name": "system_health.memory_mobile/browse:social:instagram"
     },
     {
-        "duration": "59.0",
+        "duration": "80.0",
+        "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "56.0",
         "name": "system_health.memory_mobile/browse:social:twitter"
     },
     {
-        "duration": "66.0",
+        "duration": "61.0",
         "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "77.0",
+        "duration": "74.0",
         "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "54.0",
+        "duration": "51.0",
         "name": "system_health.memory_mobile/browse:tools:maps"
     },
     {
-        "duration": "29.0",
+        "duration": "30.0",
         "name": "system_health.memory_mobile/load:chrome:blank"
     },
     {
-        "duration": "30.0",
+        "duration": "27.0",
         "name": "system_health.memory_mobile/load:games:bubbles"
     },
     {
-        "duration": "30.0",
+        "duration": "26.0",
         "name": "system_health.memory_mobile/load:games:lazors"
     },
     {
-        "duration": "36.0",
+        "duration": "33.0",
         "name": "system_health.memory_mobile/load:games:spychase"
     },
     {
         "duration": "34.0",
+        "name": "system_health.memory_mobile/load:games:spychase:2018"
+    },
+    {
+        "duration": "31.0",
         "name": "system_health.memory_mobile/load:media:dailymotion"
     },
     {
-        "duration": "32.0",
+        "duration": "28.0",
         "name": "system_health.memory_mobile/load:media:facebook_photos"
     },
     {
-        "duration": "31.0",
+        "duration": "33.0",
+        "name": "system_health.memory_mobile/load:media:flickr:2018"
+    },
+    {
+        "duration": "27.0",
         "name": "system_health.memory_mobile/load:media:google_images"
     },
     {
-        "duration": "31.0",
+        "duration": "29.0",
+        "name": "system_health.memory_mobile/load:media:google_images:2018"
+    },
+    {
+        "duration": "27.0",
         "name": "system_health.memory_mobile/load:media:imgur"
     },
     {
         "duration": "31.0",
+        "name": "system_health.memory_mobile/load:media:imgur:2018"
+    },
+    {
+        "duration": "28.0",
         "name": "system_health.memory_mobile/load:media:soundcloud"
     },
     {
-        "duration": "32.0",
-        "name": "system_health.memory_mobile/load:media:youtube"
-    },
-    {
-        "duration": "45.0",
-        "name": "system_health.memory_mobile/load:news:cnn"
-    },
-    {
-        "duration": "33.0",
-        "name": "system_health.memory_mobile/load:news:irctc"
-    },
-    {
-        "duration": "34.0",
-        "name": "system_health.memory_mobile/load:news:nytimes"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_mobile/load:news:qq"
-    },
-    {
-        "duration": "32.0",
-        "name": "system_health.memory_mobile/load:news:reddit"
-    },
-    {
-        "duration": "33.0",
-        "name": "system_health.memory_mobile/load:news:washingtonpost"
-    },
-    {
-        "duration": "32.0",
-        "name": "system_health.memory_mobile/load:news:wikipedia"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_mobile/load:search:baidu"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_mobile/load:search:ebay"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_mobile/load:search:google"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_mobile/load:search:taobao"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_mobile/load:search:yahoo"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_mobile/load:search:yandex"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_mobile/load:social:twitter"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_mobile/load:tools:docs"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_mobile/load:tools:dropbox"
-    },
-    {
-        "duration": "32.0",
-        "name": "system_health.memory_mobile/load:tools:stackoverflow"
-    },
-    {
-        "duration": "35.0",
-        "name": "system_health.memory_mobile/load:tools:weather"
-    },
-    {
-        "duration": "16.0",
-        "name": "tracing.tracing_with_background_memory_infra/Facebook"
-    },
-    {
-        "duration": "18.0",
-        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
-    },
-    {
-        "duration": "13.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
-    },
-    {
-        "duration": "14.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
-    },
-    {
-        "duration": "14.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
-    },
-    {
-        "duration": "15.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
-    },
-    {
-        "duration": "16.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
-    },
-    {
-        "duration": "26.0",
-        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
-    },
-    {
-        "duration": "17.0",
-        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
-    },
-    {
-        "duration": "46.0",
-        "name": "v8.browsing_mobile-future/browse:chrome:omnibox"
-    },
-    {
-        "duration": "134.0",
-        "name": "v8.browsing_mobile-future/browse:media:facebook_photos"
-    },
-    {
-        "duration": "88.0",
-        "name": "v8.browsing_mobile-future/browse:media:flickr_infinite_scroll"
-    },
-    {
-        "duration": "123.0",
-        "name": "v8.browsing_mobile-future/browse:media:imgur"
-    },
-    {
-        "duration": "174.0",
-        "name": "v8.browsing_mobile-future/browse:media:youtube"
-    },
-    {
-        "duration": "266.0",
-        "name": "v8.browsing_mobile-future/browse:news:cnn"
-    },
-    {
-        "duration": "202.0",
-        "name": "v8.browsing_mobile-future/browse:news:cnn:2018"
-    },
-    {
-        "duration": "102.0",
-        "name": "v8.browsing_mobile-future/browse:news:cricbuzz"
-    },
-    {
-        "duration": "90.0",
-        "name": "v8.browsing_mobile-future/browse:news:qq"
-    },
-    {
-        "duration": "86.0",
-        "name": "v8.browsing_mobile-future/browse:news:reddit"
-    },
-    {
-        "duration": "329.0",
-        "name": "v8.browsing_mobile-future/browse:news:toi"
-    },
-    {
-        "duration": "90.0",
-        "name": "v8.browsing_mobile-future/browse:news:washingtonpost"
-    },
-    {
-        "duration": "154.0",
-        "name": "v8.browsing_mobile-future/browse:shopping:amazon"
-    },
-    {
-        "duration": "133.0",
-        "name": "v8.browsing_mobile-future/browse:shopping:avito"
-    },
-    {
-        "duration": "62.0",
-        "name": "v8.browsing_mobile-future/browse:shopping:lazada"
-    },
-    {
-        "duration": "121.0",
-        "name": "v8.browsing_mobile-future/browse:social:facebook"
-    },
-    {
-        "duration": "250.0",
-        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "185.0",
-        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll:2018"
-    },
-    {
-        "duration": "165.0",
-        "name": "v8.browsing_mobile-future/browse:social:instagram"
-    },
-    {
-        "duration": "159.0",
-        "name": "v8.browsing_mobile-future/browse:social:pinterest_infinite_scroll"
-    },
-    {
-        "duration": "201.0",
-        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "82.0",
-        "name": "v8.browsing_mobile-future/browse:social:twitter"
-    },
-    {
-        "duration": "120.0",
-        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "164.0",
-        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "84.0",
-        "name": "v8.browsing_mobile-future/browse:tools:maps"
-    },
-    {
-        "duration": "46.0",
-        "name": "v8.browsing_mobile/browse:chrome:omnibox"
-    },
-    {
-        "duration": "132.0",
-        "name": "v8.browsing_mobile/browse:media:facebook_photos"
-    },
-    {
-        "duration": "89.0",
-        "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll"
-    },
-    {
-        "duration": "123.0",
-        "name": "v8.browsing_mobile/browse:media:imgur"
-    },
-    {
-        "duration": "172.0",
-        "name": "v8.browsing_mobile/browse:media:youtube"
-    },
-    {
-        "duration": "262.0",
-        "name": "v8.browsing_mobile/browse:news:cnn"
-    },
-    {
-        "duration": "198.0",
-        "name": "v8.browsing_mobile/browse:news:cnn:2018"
-    },
-    {
-        "duration": "101.0",
-        "name": "v8.browsing_mobile/browse:news:cricbuzz"
-    },
-    {
-        "duration": "87.0",
-        "name": "v8.browsing_mobile/browse:news:qq"
-    },
-    {
-        "duration": "86.0",
-        "name": "v8.browsing_mobile/browse:news:reddit"
-    },
-    {
-        "duration": "323.0",
-        "name": "v8.browsing_mobile/browse:news:toi"
-    },
-    {
-        "duration": "89.0",
-        "name": "v8.browsing_mobile/browse:news:washingtonpost"
-    },
-    {
-        "duration": "151.0",
-        "name": "v8.browsing_mobile/browse:shopping:amazon"
-    },
-    {
-        "duration": "131.0",
-        "name": "v8.browsing_mobile/browse:shopping:avito"
-    },
-    {
-        "duration": "62.0",
-        "name": "v8.browsing_mobile/browse:shopping:lazada"
-    },
-    {
-        "duration": "119.0",
-        "name": "v8.browsing_mobile/browse:social:facebook"
-    },
-    {
-        "duration": "250.0",
-        "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "181.0",
-        "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll:2018"
-    },
-    {
-        "duration": "163.0",
-        "name": "v8.browsing_mobile/browse:social:instagram"
-    },
-    {
-        "duration": "156.0",
-        "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll"
-    },
-    {
-        "duration": "197.0",
-        "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "82.0",
-        "name": "v8.browsing_mobile/browse:social:twitter"
-    },
-    {
-        "duration": "118.0",
-        "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "159.0",
-        "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "85.0",
-        "name": "v8.browsing_mobile/browse:tools:maps"
-    },
-    {
-        "duration": "11.0",
-        "name": "wasm/AsmJsZenGarden"
-    },
-    {
-        "duration": "33.0",
-        "name": "wasm/WasmSpaceBuggy"
-    },
-    {
-        "duration": "11.0",
-        "name": "wasm/WasmStylizedRenderer"
-    },
-    {
-        "duration": "11.0",
-        "name": "wasm/WasmSunTemple"
-    },
-    {
-        "duration": "20.0",
-        "name": "wasm/WasmTanks"
-    },
-    {
-        "duration": "11.0",
-        "name": "wasm/WasmZenGarden"
-    },
-    {
-        "duration": "24.0",
-        "name": "webrtc/10s_datachannel_transfer"
-    },
-    {
-        "duration": "30.0",
-        "name": "webrtc/canvas_capture_peer_connection"
-    },
-    {
-        "duration": "40.0",
-        "name": "webrtc/codec_constraints_h264"
-    },
-    {
-        "duration": "40.0",
-        "name": "webrtc/codec_constraints_vp8"
-    },
-    {
-        "duration": "40.0",
-        "name": "webrtc/codec_constraints_vp9"
+        "duration": "28.0",
+        "name": "system_health.memory_mobile/load:media:soundcloud:2018"
     },
     {
         "duration": "27.0",
-        "name": "webrtc/hd_local_stream_10s"
+        "name": "system_health.memory_mobile/load:media:youtube"
     },
     {
-        "duration": "46.0",
-        "name": "webrtc/multiple_peerconnections"
+        "duration": "29.0",
+        "name": "system_health.memory_mobile/load:media:youtube:2018"
+    },
+    {
+        "duration": "43.0",
+        "name": "system_health.memory_mobile/load:news:cnn"
+    },
+    {
+        "duration": "37.0",
+        "name": "system_health.memory_mobile/load:news:cnn:2018"
+    },
+    {
+        "duration": "29.0",
+        "name": "system_health.memory_mobile/load:news:irctc"
+    },
+    {
+        "duration": "31.0",
+        "name": "system_health.memory_mobile/load:news:nytimes"
+    },
+    {
+        "duration": "32.0",
+        "name": "system_health.memory_mobile/load:news:qq"
+    },
+    {
+        "duration": "29.0",
+        "name": "system_health.memory_mobile/load:news:reddit"
+    },
+    {
+        "duration": "30.0",
+        "name": "system_health.memory_mobile/load:news:wikipedia"
+    },
+    {
+        "duration": "28.0",
+        "name": "system_health.memory_mobile/load:news:wikipedia:2018"
+    },
+    {
+        "duration": "38.0",
+        "name": "system_health.memory_mobile/load:search:baidu"
+    },
+    {
+        "duration": "34.0",
+        "name": "system_health.memory_mobile/load:search:baidu:2018"
+    },
+    {
+        "duration": "27.0",
+        "name": "system_health.memory_mobile/load:search:ebay"
+    },
+    {
+        "duration": "29.0",
+        "name": "system_health.memory_mobile/load:search:ebay:2018"
+    },
+    {
+        "duration": "27.0",
+        "name": "system_health.memory_mobile/load:search:google"
+    },
+    {
+        "duration": "28.0",
+        "name": "system_health.memory_mobile/load:search:google:2018"
+    },
+    {
+        "duration": "33.0",
+        "name": "system_health.memory_mobile/load:search:taobao"
+    },
+    {
+        "duration": "27.0",
+        "name": "system_health.memory_mobile/load:search:yahoo"
+    },
+    {
+        "duration": "27.0",
+        "name": "system_health.memory_mobile/load:search:yahoo:2018"
+    },
+    {
+        "duration": "27.0",
+        "name": "system_health.memory_mobile/load:search:yandex"
+    },
+    {
+        "duration": "29.0",
+        "name": "system_health.memory_mobile/load:search:yandex:2018"
+    },
+    {
+        "duration": "28.0",
+        "name": "system_health.memory_mobile/load:social:twitter"
+    },
+    {
+        "duration": "27.0",
+        "name": "system_health.memory_mobile/load:tools:docs"
+    },
+    {
+        "duration": "27.0",
+        "name": "system_health.memory_mobile/load:tools:dropbox"
+    },
+    {
+        "duration": "29.0",
+        "name": "system_health.memory_mobile/load:tools:stackoverflow"
+    },
+    {
+        "duration": "30.0",
+        "name": "system_health.memory_mobile/load:tools:stackoverflow:2018"
+    },
+    {
+        "duration": "31.0",
+        "name": "system_health.memory_mobile/load:tools:weather"
+    },
+    {
+        "duration": "15.0",
+        "name": "tracing.tracing_with_background_memory_infra/Facebook"
+    },
+    {
+        "duration": "16.0",
+        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
+    },
+    {
+        "duration": "12.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
+    },
+    {
+        "duration": "13.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
+    },
+    {
+        "duration": "13.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
+    },
+    {
+        "duration": "13.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
+    },
+    {
+        "duration": "15.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
+    },
+    {
+        "duration": "20.0",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "15.0",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "65.0",
+        "name": "v8.browsing_mobile-future/browse:chrome:omnibox"
+    },
+    {
+        "duration": "102.0",
+        "name": "v8.browsing_mobile-future/browse:media:facebook_photos"
+    },
+    {
+        "duration": "69.0",
+        "name": "v8.browsing_mobile-future/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "61.0",
+        "name": "v8.browsing_mobile-future/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "91.0",
+        "name": "v8.browsing_mobile-future/browse:media:imgur"
+    },
+    {
+        "duration": "129.0",
+        "name": "v8.browsing_mobile-future/browse:media:youtube"
+    },
+    {
+        "duration": "208.0",
+        "name": "v8.browsing_mobile-future/browse:news:cnn"
+    },
+    {
+        "duration": "133.0",
+        "name": "v8.browsing_mobile-future/browse:news:cnn:2018"
     },
     {
         "duration": "70.0",
+        "name": "v8.browsing_mobile-future/browse:news:cricbuzz"
+    },
+    {
+        "duration": "93.0",
+        "name": "v8.browsing_mobile-future/browse:news:qq"
+    },
+    {
+        "duration": "69.0",
+        "name": "v8.browsing_mobile-future/browse:news:reddit"
+    },
+    {
+        "duration": "176.0",
+        "name": "v8.browsing_mobile-future/browse:news:toi"
+    },
+    {
+        "duration": "69.0",
+        "name": "v8.browsing_mobile-future/browse:news:washingtonpost"
+    },
+    {
+        "duration": "36.0",
+        "name": "v8.browsing_mobile-future/browse:search:amp:2018"
+    },
+    {
+        "duration": "95.0",
+        "name": "v8.browsing_mobile-future/browse:shopping:amazon"
+    },
+    {
+        "duration": "45.0",
+        "name": "v8.browsing_mobile-future/browse:shopping:lazada"
+    },
+    {
+        "duration": "89.0",
+        "name": "v8.browsing_mobile-future/browse:social:facebook"
+    },
+    {
+        "duration": "121.0",
+        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "116.0",
+        "name": "v8.browsing_mobile-future/browse:social:instagram"
+    },
+    {
+        "duration": "119.0",
+        "name": "v8.browsing_mobile-future/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "129.0",
+        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "137.0",
+        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "67.0",
+        "name": "v8.browsing_mobile-future/browse:social:twitter"
+    },
+    {
+        "duration": "116.0",
+        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "59.0",
+        "name": "v8.browsing_mobile-future/browse:tools:maps"
+    },
+    {
+        "duration": "43.0",
+        "name": "v8.browsing_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "104.0",
+        "name": "v8.browsing_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "75.0",
+        "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "61.0",
+        "name": "v8.browsing_mobile/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "91.0",
+        "name": "v8.browsing_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "141.0",
+        "name": "v8.browsing_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "210.0",
+        "name": "v8.browsing_mobile/browse:news:cnn"
+    },
+    {
+        "duration": "155.0",
+        "name": "v8.browsing_mobile/browse:news:cnn:2018"
+    },
+    {
+        "duration": "67.0",
+        "name": "v8.browsing_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "90.0",
+        "name": "v8.browsing_mobile/browse:news:qq"
+    },
+    {
+        "duration": "69.0",
+        "name": "v8.browsing_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "174.0",
+        "name": "v8.browsing_mobile/browse:news:toi"
+    },
+    {
+        "duration": "69.0",
+        "name": "v8.browsing_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "38.0",
+        "name": "v8.browsing_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "94.0",
+        "name": "v8.browsing_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "45.0",
+        "name": "v8.browsing_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "90.0",
+        "name": "v8.browsing_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "145.0",
+        "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "130.0",
+        "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "122.0",
+        "name": "v8.browsing_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "127.0",
+        "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "137.0",
+        "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "149.0",
+        "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "68.0",
+        "name": "v8.browsing_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "93.0",
+        "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "122.0",
+        "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "60.0",
+        "name": "v8.browsing_mobile/browse:tools:maps"
+    },
+    {
+        "duration": "17.0",
+        "name": "wasm/AsmJsZenGarden"
+    },
+    {
+        "duration": "27.0",
+        "name": "wasm/WasmSpaceBuggy"
+    },
+    {
+        "duration": "16.0",
+        "name": "wasm/WasmStylizedRenderer"
+    },
+    {
+        "duration": "16.0",
+        "name": "wasm/WasmSunTemple"
+    },
+    {
+        "duration": "24.0",
+        "name": "wasm/WasmTanks"
+    },
+    {
+        "duration": "17.0",
+        "name": "wasm/WasmZenGarden"
+    },
+    {
+        "duration": "22.0",
+        "name": "webrtc/10s_datachannel_transfer"
+    },
+    {
+        "duration": "24.0",
+        "name": "webrtc/canvas_capture_peer_connection"
+    },
+    {
+        "duration": "34.0",
+        "name": "webrtc/codec_constraints_h264"
+    },
+    {
+        "duration": "34.0",
+        "name": "webrtc/codec_constraints_vp8"
+    },
+    {
+        "duration": "34.0",
+        "name": "webrtc/codec_constraints_vp9"
+    },
+    {
+        "duration": "23.0",
+        "name": "webrtc/hd_local_stream_10s"
+    },
+    {
+        "duration": "38.0",
+        "name": "webrtc/multiple_peerconnections"
+    },
+    {
+        "duration": "53.0",
         "name": "webrtc/pause_play_peerconnections"
     }
 ]
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/android-pixel2-perf_timing.json b/tools/perf/core/shard_maps/timing_data/android-pixel2-perf_timing.json
index b107227..c9a069c 100644
--- a/tools/perf/core/shard_maps/timing_data/android-pixel2-perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/android-pixel2-perf_timing.json
@@ -1,30 +1,34 @@
 [
     {
-        "duration": "30.0",
+        "duration": "29.0",
+        "name": "blink_perf.accessibility/line-breaks.html"
+    },
+    {
+        "duration": "22.0",
         "name": "blink_perf.accessibility/textarea-append.html"
     },
     {
-        "duration": "21.0",
+        "duration": "19.0",
         "name": "blink_perf.bindings/append-child.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/create-element.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.bindings/document-implementation.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/dom-attribute-on-prototoype.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/first-child.html"
     },
     {
-        "duration": "10.0",
+        "duration": "11.0",
         "name": "blink_perf.bindings/gc-forest.html"
     },
     {
@@ -32,19 +36,19 @@
         "name": "blink_perf.bindings/gc-mini-tree.html"
     },
     {
-        "duration": "25.0",
+        "duration": "28.0",
         "name": "blink_perf.bindings/gc-tree.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.bindings/get-attribute-rare.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/get-attribute.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/get-element-by-id.html"
     },
     {
@@ -56,31 +60,31 @@
         "name": "blink_perf.bindings/id-getter.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.bindings/id-setter.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/indexed-getter.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.bindings/insert-before.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/named-property-enumerator.html"
     },
     {
-        "duration": "24.0",
+        "duration": "20.0",
         "name": "blink_perf.bindings/node-list-access.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.bindings/node-type.html"
     },
     {
-        "duration": "6.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/post-message.html"
     },
     {
@@ -92,7 +96,7 @@
         "name": "blink_perf.bindings/sequence-conversion-custom-iterator.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.bindings/serialize-array.html"
     },
     {
@@ -100,7 +104,7 @@
         "name": "blink_perf.bindings/serialize-long-string.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "blink_perf.bindings/serialize-map.html"
     },
     {
@@ -108,31 +112,31 @@
         "name": "blink_perf.bindings/serialize-nested-array.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.bindings/set-attribute-rare.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.bindings/set-attribute.html"
     },
     {
-        "duration": "17.0",
+        "duration": "18.0",
         "name": "blink_perf.bindings/structured-clone-json-deserialize.html"
     },
     {
-        "duration": "17.0",
+        "duration": "19.0",
         "name": "blink_perf.bindings/structured-clone-json-serialize.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/typed-array-construct-from-array.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.bindings/typed-array-construct-from-same-type.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.bindings/typed-array-construct-from-typed.html"
     },
     {
@@ -140,15 +144,15 @@
         "name": "blink_perf.bindings/typed-array-set-from-typed.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/undefined-first-child.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.bindings/undefined-get-element-by-id.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/undefined-id-getter.html"
     },
     {
@@ -156,43 +160,43 @@
         "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html"
     },
     {
-        "duration": "29.0",
+        "duration": "31.0",
         "name": "blink_perf.bindings/worker-structured-clone-json-from-worker.html"
     },
     {
-        "duration": "28.0",
+        "duration": "31.0",
         "name": "blink_perf.bindings/worker-structured-clone-json-roundtrip.html"
     },
     {
-        "duration": "28.0",
+        "duration": "31.0",
         "name": "blink_perf.bindings/worker-structured-clone-json-to-worker.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "blink_perf.bindings/worker-structured-clone-workerDOM-DBMon-from-worker.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.bindings/worker-structured-clone-workerDOM-Map-from-worker.html"
     },
     {
-        "duration": "71.0",
+        "duration": "66.0",
         "name": "blink_perf.bindings/worker-text-encoded-transferable-from-worker.html"
     },
     {
-        "duration": "70.0",
+        "duration": "66.0",
         "name": "blink_perf.bindings/worker-text-encoded-transferable-roundtrip.html"
     },
     {
-        "duration": "70.0",
+        "duration": "65.0",
         "name": "blink_perf.bindings/worker-text-encoded-transferable-to-worker.html"
     },
     {
-        "duration": "13.0",
+        "duration": "15.0",
         "name": "blink_perf.bindings/worker-transferable-from-worker.html"
     },
     {
-        "duration": "13.0",
+        "duration": "15.0",
         "name": "blink_perf.bindings/worker-transferable-roundtrip.html"
     },
     {
@@ -200,11 +204,11 @@
         "name": "blink_perf.bindings/worker-transferable-to-worker.html"
     },
     {
-        "duration": "20.0",
+        "duration": "18.0",
         "name": "blink_perf.canvas/createImageBitmapFromImageData.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.canvas/createImageBitmapFromImageData_RAF.html?RAF"
     },
     {
@@ -212,15 +216,15 @@
         "name": "blink_perf.canvas/docs-paper.html"
     },
     {
-        "duration": "8.0",
+        "duration": "9.0",
         "name": "blink_perf.canvas/docs-paper_RAF.html?RAF"
     },
     {
-        "duration": "12.0",
+        "duration": "14.0",
         "name": "blink_perf.canvas/docs-resume.html"
     },
     {
-        "duration": "7.0",
+        "duration": "9.0",
         "name": "blink_perf.canvas/docs-resume_RAF.html?RAF"
     },
     {
@@ -228,15 +232,15 @@
         "name": "blink_perf.canvas/docs-table.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.canvas/docs-table_RAF.html?RAF"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
     },
     {
@@ -244,7 +248,7 @@
         "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d.html"
     },
     {
-        "duration": "7.0",
+        "duration": "9.0",
         "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
     },
     {
@@ -252,15 +256,15 @@
         "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d_RAF.html?RAF"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d.html"
     },
     {
-        "duration": "7.0",
+        "duration": "9.0",
         "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
     },
     {
@@ -268,7 +272,7 @@
         "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d.html"
     },
     {
-        "duration": "7.0",
+        "duration": "9.0",
         "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
     },
     {
@@ -276,15 +280,15 @@
         "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d_RAF.html?RAF"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.canvas/drawimage-not-pixelaligned.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.canvas/drawimage-not-pixelaligned_RAF.html?RAF"
     },
     {
@@ -292,15 +296,15 @@
         "name": "blink_perf.canvas/drawimage.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.canvas/drawimage_RAF.html?RAF"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.canvas/getImageData.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.canvas/getImageDataColorManaged.html"
     },
     {
@@ -312,7 +316,7 @@
         "name": "blink_perf.canvas/getImageData_RAF.html?RAF"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.canvas/gpu-bound-shader.html"
     },
     {
@@ -320,23 +324,23 @@
         "name": "blink_perf.canvas/gpu-bound-shader_RAF.html?RAF"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.canvas/putImageData.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.canvas/putImageData_RAF.html?RAF"
     },
     {
-        "duration": "16.0",
+        "duration": "15.0",
         "name": "blink_perf.canvas/sheets-render.html"
     },
     {
-        "duration": "7.0",
+        "duration": "9.0",
         "name": "blink_perf.canvas/sheets-render_RAF.html?RAF"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.canvas/toBlob_duration.html"
     },
     {
@@ -348,7 +352,7 @@
         "name": "blink_perf.canvas/toBlob_duration_jpeg.html"
     },
     {
-        "duration": "8.0",
+        "duration": "10.0",
         "name": "blink_perf.canvas/toBlob_duration_jpeg_RAF.html?RAF"
     },
     {
@@ -356,7 +360,7 @@
         "name": "blink_perf.canvas/transferFromImageBitmap.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.canvas/transferFromImageBitmap_RAF.html?RAF"
     },
     {
@@ -364,23 +368,23 @@
         "name": "blink_perf.canvas/upload-canvas-2d-to-texture.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.canvas/upload-canvas-2d-to-texture_RAF.html?RAF"
     },
     {
-        "duration": "12.0",
+        "duration": "14.0",
         "name": "blink_perf.canvas/upload-video-to-sub-texture.html"
     },
     {
-        "duration": "8.0",
+        "duration": "9.0",
         "name": "blink_perf.canvas/upload-video-to-sub-texture_RAF.html?RAF"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "blink_perf.canvas/upload-video-to-texture.html"
     },
     {
-        "duration": "9.0",
+        "duration": "11.0",
         "name": "blink_perf.canvas/upload-video-to-texture_RAF.html?RAF"
     },
     {
@@ -388,15 +392,15 @@
         "name": "blink_perf.canvas/upload-webgl-to-texture.html"
     },
     {
-        "duration": "10.0",
+        "duration": "11.0",
         "name": "blink_perf.canvas/upload-webgl-to-texture_RAF.html?RAF"
     },
     {
-        "duration": "25.0",
+        "duration": "22.0",
         "name": "blink_perf.css/AttributeDescendantSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.css/CSSPropertySetterGetter.html"
     },
     {
@@ -404,51 +408,51 @@
         "name": "blink_perf.css/CSSPropertySetterGetterMethods.html"
     },
     {
-        "duration": "12.0",
+        "duration": "14.0",
         "name": "blink_perf.css/CSSPropertyUpdateValue.html"
     },
     {
-        "duration": "13.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleChildClassSelector.html"
     },
     {
-        "duration": "15.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleChildElementSelectors.html"
     },
     {
-        "duration": "14.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleElementSelector.html"
     },
     {
-        "duration": "14.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html"
     },
     {
-        "duration": "14.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html"
     },
     {
-        "duration": "14.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html"
     },
     {
-        "duration": "14.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html"
     },
     {
-        "duration": "13.0",
+        "duration": "15.0",
         "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html"
     },
     {
-        "duration": "13.0",
+        "duration": "17.0",
         "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html"
     },
     {
-        "duration": "14.0",
+        "duration": "17.0",
         "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html"
     },
     {
-        "duration": "14.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html"
     },
     {
@@ -456,51 +460,51 @@
         "name": "blink_perf.css/ChangeStyleShallowTree.html"
     },
     {
-        "duration": "13.0",
+        "duration": "15.0",
         "name": "blink_perf.css/ChangeStyleSingleClassSelector.html"
     },
     {
-        "duration": "14.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html"
     },
     {
-        "duration": "13.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html"
     },
     {
-        "duration": "13.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleUniversalSelector.html"
     },
     {
-        "duration": "13.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html"
     },
     {
-        "duration": "13.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html"
     },
     {
-        "duration": "16.0",
+        "duration": "15.0",
         "name": "blink_perf.css/ClassDescendantSelector.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.css/ClassInvalidation.html"
     },
     {
-        "duration": "8.0",
+        "duration": "10.0",
         "name": "blink_perf.css/CustomPropertiesCascade.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.css/CustomPropertiesNonRootInheritance.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.css/CustomPropertiesRootInheritance.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.css/CustomPropertiesVarAlias.html"
     },
     {
@@ -508,47 +512,47 @@
         "name": "blink_perf.css/FocusUpdate.html"
     },
     {
-        "duration": "13.0",
+        "duration": "15.0",
         "name": "blink_perf.css/LoadBootstrapBlog.html"
     },
     {
-        "duration": "14.0",
+        "duration": "15.0",
         "name": "blink_perf.css/LoadMaterializeStarterPage.html"
     },
     {
-        "duration": "14.0",
+        "duration": "15.0",
         "name": "blink_perf.css/LoadSemanticPageExample.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.css/PseudoClassSelectors.html"
     },
     {
-        "duration": "13.0",
+        "duration": "16.0",
         "name": "blink_perf.css/SelectorCountScaling.html"
     },
     {
-        "duration": "38.0",
+        "duration": "35.0",
         "name": "blink_perf.dom/custom-element-default-style-with-shadow.html"
     },
     {
-        "duration": "25.0",
+        "duration": "26.0",
         "name": "blink_perf.dom/custom-element-default-style.html"
     },
     {
-        "duration": "27.0",
+        "duration": "33.0",
         "name": "blink_perf.dom/long-sibling-list.html"
     },
     {
-        "duration": "8.0",
+        "duration": "9.0",
         "name": "blink_perf.dom/modify-element-classname.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.dom/modify-element-id.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.dom/modify-element-title.html"
     },
     {
@@ -556,7 +560,7 @@
         "name": "blink_perf.dom/select-multiple-add.html"
     },
     {
-        "duration": "12.0",
+        "duration": "14.0",
         "name": "blink_perf.dom/select-single-add.html"
     },
     {
@@ -564,47 +568,55 @@
         "name": "blink_perf.dom/select-single-remove.html"
     },
     {
-        "duration": "24.0",
+        "duration": "22.0",
         "name": "blink_perf.events/EventsDispatching.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV0ShadowTrees.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html"
     },
     {
-        "duration": "26.0",
+        "duration": "23.0",
         "name": "blink_perf.events/EventsDispatchingInV0ShadowTrees.html"
     },
     {
-        "duration": "26.0",
+        "duration": "23.0",
         "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html"
     },
     {
-        "duration": "25.0",
+        "duration": "24.0",
         "name": "blink_perf.events/hit-test-lots-of-layers.html"
     },
     {
-        "duration": "59.0",
+        "duration": "14.0",
+        "name": "blink_perf.events/is-input-pending-all-events.html"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.events/is-input-pending-default-events.html"
+    },
+    {
+        "duration": "50.0",
         "name": "blink_perf.image_decoder/decode-gif.html"
     },
     {
-        "duration": "22.0",
+        "duration": "20.0",
         "name": "blink_perf.image_decoder/decode-jpeg.html"
     },
     {
-        "duration": "55.0",
+        "duration": "51.0",
         "name": "blink_perf.image_decoder/decode-lossless-webp.html"
     },
     {
-        "duration": "14.0",
+        "duration": "15.0",
         "name": "blink_perf.image_decoder/decode-lossy-webp.html"
     },
     {
-        "duration": "36.0",
+        "duration": "34.0",
         "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
     },
     {
@@ -612,15 +624,15 @@
         "name": "blink_perf.image_decoder/decode-png-palette.html"
     },
     {
-        "duration": "61.0",
+        "duration": "56.0",
         "name": "blink_perf.image_decoder/decode-png.html"
     },
     {
-        "duration": "20.0",
+        "duration": "18.0",
         "name": "blink_perf.layout/ArabicLineLayout.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/Shapes/MultipleShapes.html"
     },
     {
@@ -628,7 +640,7 @@
         "name": "blink_perf.layout/SimpleTextPathLineLayout.html"
     },
     {
-        "duration": "14.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/add-remove-inline-floats.html"
     },
     {
@@ -636,11 +648,11 @@
         "name": "blink_perf.layout/attach-inlines-2.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/attach-inlines.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.layout/auto-grid-lots-of-data.html"
     },
     {
@@ -648,19 +660,19 @@
         "name": "blink_perf.layout/change-text-css-contain.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/chapter-reflow-once-random.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/chapter-reflow-once.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/chapter-reflow-thrice.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.layout/chapter-reflow-twice.html"
     },
     {
@@ -668,7 +680,7 @@
         "name": "blink_perf.layout/chapter-reflow.html"
     },
     {
-        "duration": "16.0",
+        "duration": "17.0",
         "name": "blink_perf.layout/character_fallback.html"
     },
     {
@@ -676,11 +688,19 @@
         "name": "blink_perf.layout/character_fallback_aat.html"
     },
     {
-        "duration": "19.0",
+        "duration": "17.0",
         "name": "blink_perf.layout/contain-content-style-change.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-blocks.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-text.html"
+    },
+    {
+        "duration": "14.0",
         "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
     },
     {
@@ -688,47 +708,47 @@
         "name": "blink_perf.layout/fixed-grid-lots-of-stretched-data.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/flexbox-column-nowrap.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/flexbox-column-wrap.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/flexbox-lots-of-data.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/flexbox-row-nowrap.html"
     },
     {
-        "duration": "14.0",
+        "duration": "15.0",
         "name": "blink_perf.layout/flexbox-row-stretch-height-definite.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/flexbox-row-wrap.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/flexbox-with-stretch-layout.html"
     },
     {
-        "duration": "22.0",
+        "duration": "17.0",
         "name": "blink_perf.layout/floats_100_100.html"
     },
     {
-        "duration": "22.0",
+        "duration": "17.0",
         "name": "blink_perf.layout/floats_100_100_nested.html"
     },
     {
-        "duration": "16.0",
+        "duration": "14.0",
         "name": "blink_perf.layout/floats_10_1000.html"
     },
     {
@@ -736,7 +756,7 @@
         "name": "blink_perf.layout/floats_20_100.html"
     },
     {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "blink_perf.layout/floats_20_100_nested.html"
     },
     {
@@ -744,11 +764,11 @@
         "name": "blink_perf.layout/floats_2_100.html"
     },
     {
-        "duration": "8.0",
+        "duration": "9.0",
         "name": "blink_perf.layout/floats_2_100_nested.html"
     },
     {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "blink_perf.layout/floats_50_100.html"
     },
     {
@@ -756,31 +776,35 @@
         "name": "blink_perf.layout/floats_50_100_nested.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/hindi-line-layout.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/japanese-kokoro-insert.html"
     },
     {
+        "duration": "16.0",
+        "name": "blink_perf.layout/large-grid.html"
+    },
+    {
         "duration": "12.0",
         "name": "blink_perf.layout/large-spanning-grid-item.html"
     },
     {
-        "duration": "18.0",
+        "duration": "17.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html"
     },
     {
-        "duration": "18.0",
+        "duration": "16.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html"
     },
     {
-        "duration": "18.0",
+        "duration": "16.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html"
     },
     {
-        "duration": "48.0",
+        "duration": "46.0",
         "name": "blink_perf.layout/latin-ebook-resize.html"
     },
     {
@@ -788,7 +812,7 @@
         "name": "blink_perf.layout/latin-ebook.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/layers_overlap_2d.html"
     },
     {
@@ -796,11 +820,19 @@
         "name": "blink_perf.layout/layers_overlap_3d.html"
     },
     {
-        "duration": "19.0",
+        "duration": "8.0",
+        "name": "blink_perf.layout/line-layout-fit-content-break-word.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.layout/line-layout-fit-content.html"
+    },
+    {
+        "duration": "17.0",
         "name": "blink_perf.layout/line-layout-line-height.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/line-layout-repeat-append-select.html"
     },
     {
@@ -808,31 +840,31 @@
         "name": "blink_perf.layout/line-layout-repeat-append.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/line-layout.html"
     },
     {
-        "duration": "5.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/long-line-nowrap-collapse.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/long-line-nowrap-spans-collapse.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "blink_perf.layout/long-line-nowrap.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/many-block-children-auto-inline-size.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/many-block-children-fixed-inline-size.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/multicol/deeply-nested-tables.html"
     },
     {
@@ -840,15 +872,15 @@
         "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/multicol/lots-of-text-autofill.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/multicol/lots-of-text-balanced-orphans-widows.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/multicol/lots-of-text-balanced.html"
     },
     {
@@ -860,31 +892,31 @@
         "name": "blink_perf.layout/multicol/tall-content-short-columns.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/nested-grid.html"
     },
     {
-        "duration": "44.0",
+        "duration": "45.0",
         "name": "blink_perf.layout/nested-percent-height-tables.html"
     },
     {
-        "duration": "121.0",
+        "duration": "84.0",
         "name": "blink_perf.layout/subtree-detaching.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html"
     },
     {
-        "duration": "7.0",
+        "duration": "9.0",
         "name": "blink_perf.layout/word-break-break-all.html"
     },
     {
-        "duration": "8.0",
+        "duration": "9.0",
         "name": "blink_perf.layout/word-break-break-word.html"
     },
     {
@@ -892,51 +924,55 @@
         "name": "blink_perf.layout/word-wrap-break-word.html"
     },
     {
-        "duration": "22.0",
+        "duration": "19.0",
         "name": "blink_perf.owp_storage/blob-perf-files.html"
     },
     {
-        "duration": "17.0",
+        "duration": "15.0",
         "name": "blink_perf.owp_storage/blob-perf-ipc.html"
     },
     {
-        "duration": "14.0",
+        "duration": "15.0",
         "name": "blink_perf.owp_storage/blob-perf-shm.html"
     },
     {
-        "duration": "17.0",
+        "duration": "15.0",
         "name": "blink_perf.owp_storage/blob-perf-tiny.html"
     },
     {
-        "duration": "18.0",
+        "duration": "16.0",
         "name": "blink_perf.owp_storage/idb-load-docs.html"
     },
     {
-        "duration": "24.0",
+        "duration": "20.0",
         "name": "blink_perf.paint/appending-text.html"
     },
     {
-        "duration": "19.0",
+        "duration": "26.0",
         "name": "blink_perf.paint/color-changes.html"
     },
     {
-        "duration": "19.0",
+        "duration": "18.0",
         "name": "blink_perf.paint/complex-content-slow-scroll.html"
     },
     {
-        "duration": "18.0",
+        "duration": "17.0",
         "name": "blink_perf.paint/complex-iframe-filtered.html"
     },
     {
-        "duration": "20.0",
+        "duration": "49.0",
+        "name": "blink_perf.paint/contain-update-layer-tree.html"
+    },
+    {
+        "duration": "19.0",
         "name": "blink_perf.paint/containment-resize.html"
     },
     {
-        "duration": "18.0",
+        "duration": "17.0",
         "name": "blink_perf.paint/fixed-and-many-layers-scroll.html"
     },
     {
-        "duration": "22.0",
+        "duration": "20.0",
         "name": "blink_perf.paint/large-table-background-change-with-invisible-collapsed-borders.html"
     },
     {
@@ -944,7 +980,7 @@
         "name": "blink_perf.paint/large-table-background-change-with-visible-collapsed-borders.html"
     },
     {
-        "duration": "23.0",
+        "duration": "21.0",
         "name": "blink_perf.paint/large-table-background-change-with-zero-width-collapsed-borders.html"
     },
     {
@@ -952,7 +988,7 @@
         "name": "blink_perf.paint/large-table-collapsed-border-change-with-backgrounds.html"
     },
     {
-        "duration": "22.0",
+        "duration": "21.0",
         "name": "blink_perf.paint/large-table-collapsed-border-change-with-text.html"
     },
     {
@@ -960,7 +996,7 @@
         "name": "blink_perf.paint/large-table-collapsed-border-change.html"
     },
     {
-        "duration": "22.0",
+        "duration": "20.0",
         "name": "blink_perf.paint/large-table-repaint.html"
     },
     {
@@ -968,43 +1004,47 @@
         "name": "blink_perf.paint/move-text-with-mask.html"
     },
     {
-        "duration": "19.0",
+        "duration": "18.0",
         "name": "blink_perf.paint/paint-offset-changes.html"
     },
     {
-        "duration": "27.0",
+        "duration": "22.0",
+        "name": "blink_perf.paint/select-all-words.html"
+    },
+    {
+        "duration": "31.0",
         "name": "blink_perf.paint/transform-changes.html"
     },
     {
-        "duration": "21.0",
+        "duration": "18.0",
         "name": "blink_perf.parser/css-parser-yui.html"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "blink_perf.parser/html-parser-threaded.html"
     },
     {
-        "duration": "36.0",
+        "duration": "22.0",
         "name": "blink_perf.parser/html-parser.html"
     },
     {
-        "duration": "90.0",
+        "duration": "83.0",
         "name": "blink_perf.parser/html5-full-render.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.parser/iframe-append-remove.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.parser/innerHTML-setter-siblings.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.parser/innerHTML-setter.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.parser/query-selector-all-attribute-complex.html"
     },
     {
@@ -1012,15 +1052,15 @@
         "name": "blink_perf.parser/query-selector-all-attribute.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.parser/query-selector-all-class-deep.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.parser/query-selector-all-class-first.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.parser/query-selector-all-class-last.html"
     },
     {
@@ -1036,7 +1076,7 @@
         "name": "blink_perf.parser/query-selector-all-first.html"
     },
     {
-        "duration": "14.0",
+        "duration": "13.0",
         "name": "blink_perf.parser/query-selector-all-id-deep.html"
     },
     {
@@ -1044,7 +1084,7 @@
         "name": "blink_perf.parser/query-selector-all-id-first.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.parser/query-selector-all-id-last.html"
     },
     {
@@ -1052,11 +1092,11 @@
         "name": "blink_perf.parser/query-selector-all-last.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.parser/query-selector-deep.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.parser/query-selector-first.html"
     },
     {
@@ -1064,23 +1104,23 @@
         "name": "blink_perf.parser/query-selector-id-deep.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.parser/query-selector-id-last.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.parser/query-selector-last.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.parser/simple-url.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.parser/textarea-parsing.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.parser/tiny-innerHTML.html"
     },
     {
@@ -1092,7 +1132,7 @@
         "name": "blink_perf.parser/xml-parser.html"
     },
     {
-        "duration": "14.0",
+        "duration": "13.0",
         "name": "blink_perf.shadow_dom/declarative-api.html"
     },
     {
@@ -1100,7 +1140,7 @@
         "name": "blink_perf.shadow_dom/imperative-api-appendchild.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/imperative-api-assign.html"
     },
     {
@@ -1112,15 +1152,15 @@
         "name": "blink_perf.shadow_dom/imperative-api-assigned-slot.html"
     },
     {
-        "duration": "5.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary-large.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/imperative-api-detail-summary-large.html"
     },
     {
@@ -1128,7 +1168,7 @@
         "name": "blink_perf.shadow_dom/imperative-api-detail-summary.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/imperative-api-insertbefore.html"
     },
     {
@@ -1136,7 +1176,7 @@
         "name": "blink_perf.shadow_dom/imperative-api.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.shadow_dom/shadow-style-share-attr-selectors.html"
     },
     {
@@ -1152,11 +1192,11 @@
         "name": "blink_perf.shadow_dom/shadow-style-share.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/style-sheet-insert.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v0-changing-classname-with-shadow-dom.html"
     },
     {
@@ -1164,7 +1204,7 @@
         "name": "blink_perf.shadow_dom/v0-changing-classname-without-shadow-dom.html"
     },
     {
-        "duration": "11.0",
+        "duration": "10.0",
         "name": "blink_perf.shadow_dom/v0-changing-select-with-shadow-dom.html"
     },
     {
@@ -1172,31 +1212,31 @@
         "name": "blink_perf.shadow_dom/v0-changing-select-without-shadow-dom.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v0-content-reprojection.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v0-large-distribution-without-layout.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v0-multiple-insertion-points.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v0-shadow-reprojection.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v0-small-distribution-with-layout.html"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v1-distribution.html"
     },
     {
@@ -1204,15 +1244,15 @@
         "name": "blink_perf.shadow_dom/v1-host-child-append.html"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html"
     },
     {
-        "duration": "61.0",
+        "duration": "43.0",
         "name": "blink_perf.shadow_dom/v1-large-deep-layout.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v1-large-shallow-distribution.html"
     },
     {
@@ -1224,15 +1264,15 @@
         "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-re-layout.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-assigned-nodes.html"
     },
     {
-        "duration": "5.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-flatten.html"
     },
     {
-        "duration": "5.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-re-layout.html"
     },
     {
@@ -1240,7 +1280,7 @@
         "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-assigned-nodes.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-flatten.html"
     },
     {
@@ -1248,11 +1288,11 @@
         "name": "blink_perf.shadow_dom/v1-slot-append.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v1-small-deep-distribution.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.shadow_dom/v1-small-deep-layout.html"
     },
     {
@@ -1260,11 +1300,11 @@
         "name": "blink_perf.shadow_dom/v1-small-shallow-distribution.html"
     },
     {
-        "duration": "5.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v1-small-shallow-layout.html"
     },
     {
-        "duration": "15.0",
+        "duration": "13.0",
         "name": "blink_perf.svg/AzLizardBenjiPark.html"
     },
     {
@@ -1284,35 +1324,35 @@
         "name": "blink_perf.svg/CrawFishGanson.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.svg/Debian.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.svg/DropsOnABlade.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.svg/FlowerFromMyGarden.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.svg/FoodLeifLodahl.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.svg/France.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.svg/FrancoBolloGnomeEzechi.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.svg/GearFlowers.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.svg/HarveyRayner.html"
     },
     {
@@ -1324,11 +1364,11 @@
         "name": "blink_perf.svg/MtSaintHelens.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.svg/Samurai.html"
     },
     {
-        "duration": "69.0",
+        "duration": "89.0",
         "name": "blink_perf.svg/SierpinskiCarpet.html"
     },
     {
@@ -1336,27 +1376,27 @@
         "name": "blink_perf.svg/SvgCubics.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.svg/SvgHitTesting.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.svg/SvgNestedUse.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.svg/UnderTheSee.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.svg/WorldIso.html"
     },
     {
-        "duration": "8.0",
+        "duration": "9.0",
         "name": "blink_perf.svg/Worldcup.html"
     },
     {
-        "duration": "43.0",
+        "duration": "41.0",
         "name": "dromaeo/http://dromaeo.com?dom-attr"
     },
     {
@@ -1368,567 +1408,535 @@
         "name": "dromaeo/http://dromaeo.com?dom-query"
     },
     {
-        "duration": "32.0",
+        "duration": "33.0",
         "name": "dromaeo/http://dromaeo.com?dom-traverse"
     },
     {
-        "duration": "12.0",
+        "duration": "10.0",
         "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html"
     },
     {
-        "duration": "12.0",
+        "duration": "10.0",
         "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html"
     },
     {
-        "duration": "281.0",
+        "duration": "283.0",
         "name": "jetstream/http://browserbench.org/JetStream/"
     },
     {
-        "duration": "62.0",
+        "duration": "59.0",
         "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "loading.mobile/58Pic"
     },
     {
-        "duration": "122.0",
+        "duration": "45.0",
         "name": "loading.mobile/58Pic_3g"
     },
     {
-        "duration": "21.0",
+        "duration": "15.0",
         "name": "loading.mobile/Amazon"
     },
     {
-        "duration": "197.0",
+        "duration": "70.0",
         "name": "loading.mobile/Amazon_3g"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "loading.mobile/BOLNoticias"
     },
     {
-        "duration": "265.0",
+        "duration": "97.0",
         "name": "loading.mobile/BOLNoticias_3g"
     },
     {
-        "duration": "25.0",
+        "duration": "16.0",
         "name": "loading.mobile/Baidu"
     },
     {
-        "duration": "154.0",
+        "duration": "81.0",
         "name": "loading.mobile/Baidu_3g"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "loading.mobile/Bradesco"
     },
     {
-        "duration": "20.0",
+        "duration": "15.0",
         "name": "loading.mobile/Dailymotion"
     },
     {
-        "duration": "24.0",
+        "duration": "15.0",
         "name": "loading.mobile/Dawn"
     },
     {
-        "duration": "19.0",
+        "duration": "15.0",
         "name": "loading.mobile/DevOpera_cold"
     },
     {
-        "duration": "124.0",
+        "duration": "47.0",
         "name": "loading.mobile/DevOpera_cold_3g"
     },
     {
-        "duration": "25.0",
+        "duration": "20.0",
         "name": "loading.mobile/DevOpera_hot"
     },
     {
-        "duration": "30.0",
+        "duration": "22.0",
         "name": "loading.mobile/DevOpera_hot_3g"
     },
     {
-        "duration": "21.0",
+        "duration": "16.0",
         "name": "loading.mobile/DevOpera_warm"
     },
     {
-        "duration": "26.0",
+        "duration": "19.0",
         "name": "loading.mobile/DevOpera_warm_3g"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "loading.mobile/Dramaq"
     },
     {
-        "duration": "133.0",
+        "duration": "131.0",
         "name": "loading.mobile/Dramaq_3g"
     },
     {
-        "duration": "18.0",
+        "duration": "13.0",
         "name": "loading.mobile/EnquiryIndianRail"
     },
     {
-        "duration": "117.0",
+        "duration": "35.0",
         "name": "loading.mobile/EnquiryIndianRail_3g"
     },
     {
-        "duration": "22.0",
+        "duration": "14.0",
         "name": "loading.mobile/Facebook"
     },
     {
-        "duration": "205.0",
-        "name": "loading.mobile/Facebook_3g"
-    },
-    {
-        "duration": "20.0",
+        "duration": "15.0",
         "name": "loading.mobile/FlipBoard_cold"
     },
     {
-        "duration": "342.0",
+        "duration": "154.0",
         "name": "loading.mobile/FlipBoard_cold_3g"
     },
     {
-        "duration": "27.0",
+        "duration": "22.0",
         "name": "loading.mobile/FlipBoard_hot"
     },
     {
-        "duration": "63.0",
+        "duration": "32.0",
         "name": "loading.mobile/FlipBoard_hot_3g"
     },
     {
-        "duration": "23.0",
+        "duration": "17.0",
         "name": "loading.mobile/FlipBoard_warm"
     },
     {
-        "duration": "74.0",
+        "duration": "32.0",
         "name": "loading.mobile/FlipBoard_warm_3g"
     },
     {
-        "duration": "23.0",
+        "duration": "16.0",
         "name": "loading.mobile/FlipKart_cold"
     },
     {
-        "duration": "28.0",
+        "duration": "21.0",
         "name": "loading.mobile/FlipKart_hot"
     },
     {
-        "duration": "30.0",
+        "duration": "23.0",
         "name": "loading.mobile/FlipKart_hot_3g"
     },
     {
-        "duration": "26.0",
+        "duration": "17.0",
         "name": "loading.mobile/FlipKart_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "loading.mobile/FranceTVInfo"
     },
     {
-        "duration": "165.0",
+        "duration": "59.0",
         "name": "loading.mobile/FranceTVInfo_3g"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "loading.mobile/GSShop"
     },
     {
-        "duration": "18.0",
+        "duration": "11.0",
         "name": "loading.mobile/GoogleBrazil"
     },
     {
-        "duration": "181.0",
+        "duration": "72.0",
         "name": "loading.mobile/GoogleBrazil_3g"
     },
     {
-        "duration": "17.0",
+        "duration": "12.0",
         "name": "loading.mobile/GoogleIndia"
     },
     {
-        "duration": "18.0",
+        "duration": "12.0",
         "name": "loading.mobile/GoogleIndonesia"
     },
     {
-        "duration": "181.0",
+        "duration": "75.0",
         "name": "loading.mobile/GoogleIndonesia_3g"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "loading.mobile/GoogleRedirectToGoogleJapan"
     },
     {
-        "duration": "223.0",
+        "duration": "89.0",
         "name": "loading.mobile/GoogleRedirectToGoogleJapan_3g"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "loading.mobile/Hongkiat"
     },
     {
-        "duration": "230.0",
+        "duration": "97.0",
         "name": "loading.mobile/Hongkiat_3g"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "loading.mobile/KapanLagi"
     },
     {
-        "duration": "27.0",
+        "duration": "18.0",
         "name": "loading.mobile/Kaskus"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "loading.mobile/LocalMoxie"
     },
     {
-        "duration": "18.0",
+        "duration": "13.0",
         "name": "loading.mobile/Locanto"
     },
     {
-        "duration": "78.0",
+        "duration": "26.0",
         "name": "loading.mobile/Locanto_3g"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "loading.mobile/OLX"
     },
     {
-        "duration": "220.0",
+        "duration": "72.0",
         "name": "loading.mobile/OLX_3g"
     },
     {
-        "duration": "21.0",
+        "duration": "15.0",
         "name": "loading.mobile/QQNews"
     },
     {
-        "duration": "213.0",
+        "duration": "72.0",
         "name": "loading.mobile/QQNews_3g"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "loading.mobile/SlideShare"
     },
     {
-        "duration": "188.0",
+        "duration": "81.0",
         "name": "loading.mobile/SlideShare_3g"
     },
     {
-        "duration": "18.0",
+        "duration": "14.0",
         "name": "loading.mobile/Suumo_cold"
     },
     {
-        "duration": "32.0",
+        "duration": "16.0",
         "name": "loading.mobile/Suumo_cold_3g"
     },
     {
-        "duration": "22.0",
+        "duration": "19.0",
         "name": "loading.mobile/Suumo_hot"
     },
     {
-        "duration": "28.0",
+        "duration": "20.0",
         "name": "loading.mobile/Suumo_hot_3g"
     },
     {
-        "duration": "20.0",
+        "duration": "16.0",
         "name": "loading.mobile/Suumo_warm"
     },
     {
-        "duration": "25.0",
+        "duration": "16.0",
         "name": "loading.mobile/Suumo_warm_3g"
     },
     {
-        "duration": "19.0",
+        "duration": "14.0",
         "name": "loading.mobile/Thairath"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "loading.mobile/TheStar"
     },
     {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "loading.mobile/TribunNews"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "loading.mobile/Twitter"
     },
     {
-        "duration": "111.0",
+        "duration": "37.0",
         "name": "loading.mobile/Twitter_3g"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "loading.mobile/VoiceMemos_cold"
     },
     {
-        "duration": "133.0",
+        "duration": "37.0",
         "name": "loading.mobile/VoiceMemos_cold_3g"
     },
     {
-        "duration": "24.0",
-        "name": "loading.mobile/VoiceMemos_hot"
-    },
-    {
-        "duration": "28.0",
-        "name": "loading.mobile/VoiceMemos_hot_3g"
-    },
-    {
-        "duration": "21.0",
-        "name": "loading.mobile/VoiceMemos_warm"
-    },
-    {
-        "duration": "26.0",
-        "name": "loading.mobile/VoiceMemos_warm_3g"
-    },
-    {
-        "duration": "17.0",
+        "duration": "11.0",
         "name": "loading.mobile/Wikipedia"
     },
     {
-        "duration": "159.0",
+        "duration": "68.0",
         "name": "loading.mobile/Wikipedia_3g"
     },
     {
-        "duration": "22.0",
+        "duration": "14.0",
         "name": "loading.mobile/YahooNews"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "loading.mobile/Youtube"
     },
     {
-        "duration": "22.0",
+        "duration": "19.0",
         "name": "media.mobile/mse.html?media=aac_audio.mp4"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "media.mobile/mse.html?media=aac_audio.mp4,h264_video.mp4"
     },
     {
-        "duration": "25.0",
+        "duration": "16.0",
         "name": "media.mobile/mse.html?media=aac_audio.mp4,h264_video.mp4&waitForPageLoaded=true"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "media.mobile/mse.html?media=h264_video.mp4"
     },
     {
-        "duration": "33.0",
+        "duration": "28.0",
         "name": "media.mobile/video.html?src=crowd.ogg&type=audio"
     },
     {
-        "duration": "30.0",
+        "duration": "20.0",
         "name": "media.mobile/video.html?src=crowd1080_vp9.webm"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "media.mobile/video.html?src=crowd1080_vp9.webm&seek"
     },
     {
-        "duration": "29.0",
+        "duration": "20.0",
         "name": "media.mobile/video.html?src=crowd720_vp9.webm"
     },
     {
-        "duration": "36.0",
+        "duration": "26.0",
         "name": "media.mobile/video.html?src=tulip2.m4a&type=audio"
     },
     {
-        "duration": "34.0",
+        "duration": "25.0",
         "name": "media.mobile/video.html?src=tulip2.mp3&type=audio"
     },
     {
-        "duration": "17.0",
+        "duration": "11.0",
         "name": "media.mobile/video.html?src=tulip2.mp3&type=audio&seek"
     },
     {
-        "duration": "43.0",
+        "duration": "29.0",
         "name": "media.mobile/video.html?src=tulip2.mp4"
     },
     {
-        "duration": "43.0",
+        "duration": "29.0",
         "name": "media.mobile/video.html?src=tulip2.mp4&busyjs"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "media.mobile/video.html?src=tulip2.mp4&seek"
     },
     {
-        "duration": "34.0",
+        "duration": "26.0",
         "name": "media.mobile/video.html?src=tulip2.ogg&type=audio"
     },
     {
-        "duration": "17.0",
+        "duration": "11.0",
         "name": "media.mobile/video.html?src=tulip2.ogg&type=audio&seek"
     },
     {
-        "duration": "45.0",
+        "duration": "31.0",
         "name": "media.mobile/video.html?src=tulip2.vp9.webm"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "media.mobile/video.html?src=tulip2.vp9.webm&background"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "media.mobile/video.html?src=tulip2.vp9.webm&seek"
     },
     {
-        "duration": "79.0",
+        "duration": "32.0",
         "name": "media.mobile/video.html?src=tulip2.vp9.webm_WiFi"
     },
     {
-        "duration": "36.0",
+        "duration": "26.0",
         "name": "media.mobile/video.html?src=tulip2.wav&type=audio"
     },
     {
-        "duration": "17.0",
+        "duration": "11.0",
         "name": "media.mobile/video.html?src=tulip2.wav&type=audio&seek"
     },
     {
-        "duration": "318.0",
-        "name": "memory.long_running_idle_gmail_background_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "282.0",
-        "name": "memory.long_running_idle_gmail_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "memory.top_10_mobile/after_http_en_m_wikipedia_org_wiki_Science"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "memory.top_10_mobile/after_http_m_intl_taobao_com_group_purchase_html"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "memory.top_10_mobile/after_http_m_youtube_com_results_q_science"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "memory.top_10_mobile/after_http_search_yahoo_com_search__ylt_p_google"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "memory.top_10_mobile/after_http_www_amazon_com_gp_aw_s_k_nexus"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "memory.top_10_mobile/after_http_www_baidu_com_s_word_google"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "memory.top_10_mobile/after_http_yandex_ru_touchsearch_text_science"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "memory.top_10_mobile/after_https_m_facebook_com_rihanna"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "memory.top_10_mobile/after_https_mobile_twitter_com_justinbieber_skip_interstitial_true"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "memory.top_10_mobile/after_https_www_google_co_uk_hl_en_q_science"
     },
     {
-        "duration": "27.0",
+        "duration": "21.0",
         "name": "memory.top_10_mobile/http_en_m_wikipedia_org_wiki_Science"
     },
     {
-        "duration": "26.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/http_m_intl_taobao_com_group_purchase_html"
     },
     {
-        "duration": "26.0",
+        "duration": "21.0",
         "name": "memory.top_10_mobile/http_m_youtube_com_results_q_science"
     },
     {
-        "duration": "26.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/http_search_yahoo_com_search__ylt_p_google"
     },
     {
-        "duration": "27.0",
+        "duration": "21.0",
         "name": "memory.top_10_mobile/http_www_amazon_com_gp_aw_s_k_nexus"
     },
     {
-        "duration": "29.0",
+        "duration": "24.0",
         "name": "memory.top_10_mobile/http_www_baidu_com_s_word_google"
     },
     {
-        "duration": "26.0",
+        "duration": "21.0",
         "name": "memory.top_10_mobile/http_yandex_ru_touchsearch_text_science"
     },
     {
-        "duration": "26.0",
+        "duration": "21.0",
         "name": "memory.top_10_mobile/https_m_facebook_com_rihanna"
     },
     {
-        "duration": "26.0",
+        "duration": "21.0",
         "name": "memory.top_10_mobile/https_mobile_twitter_com_justinbieber_skip_interstitial_true"
     },
     {
-        "duration": "29.0",
+        "duration": "22.0",
         "name": "memory.top_10_mobile/https_www_google_co_uk_hl_en_q_science"
     },
     {
-        "duration": "61.0",
+        "duration": "60.0",
         "name": "octane/http://chromium.github.io/octane/index.html?auto=1"
     },
     {
-        "duration": "23.0",
-        "name": "oortonline_tbmv2/http://oortonline.gl/#run"
-    },
-    {
-        "duration": "64.0",
+        "duration": "66.0",
         "name": "power.typical_10_mobile/http://de.m.wikipedia.org/wiki/K%C3%B6lner_Dom"
     },
     {
-        "duration": "68.0",
+        "duration": "69.0",
         "name": "power.typical_10_mobile/http://m.chiebukuro.yahoo.co.jp/detail/q10136829180"
     },
     {
-        "duration": "59.0",
+        "duration": "60.0",
         "name": "power.typical_10_mobile/http://m.ebay.com/itm/351157205404"
     },
     {
-        "duration": "68.0",
+        "duration": "69.0",
         "name": "power.typical_10_mobile/http://m.facebook.com/barackobama"
     },
     {
-        "duration": "63.0",
+        "duration": "66.0",
         "name": "power.typical_10_mobile/http://m.huffpost.com/us/entry/6004486"
     },
     {
-        "duration": "63.0",
+        "duration": "64.0",
         "name": "power.typical_10_mobile/http://m.ynet.co.il"
     },
     {
-        "duration": "64.0",
+        "duration": "65.0",
         "name": "power.typical_10_mobile/http://siriuslymeg.tumblr.com/"
     },
     {
-        "duration": "60.0",
+        "duration": "62.0",
         "name": "power.typical_10_mobile/http://wapbaike.baidu.com/"
     },
     {
-        "duration": "60.0",
+        "duration": "61.0",
         "name": "power.typical_10_mobile/http://www.cnn.com/2014/03/31/showbiz/tv/himym-finale/index.html"
     },
     {
-        "duration": "65.0",
+        "duration": "66.0",
         "name": "power.typical_10_mobile/http://www.rg.ru/2014/10/21/cska-site.html"
     },
     {
-        "duration": "64.0",
+        "duration": "66.0",
         "name": "power.typical_10_mobile/https://en.wikipedia.org/wiki/File:Rotating_earth_(large).gif"
     },
     {
-        "duration": "20.0",
+        "duration": "18.0",
         "name": "rasterize_and_record_micro.partial_invalidation/800_relpos_divs.html"
     },
     {
-        "duration": "29.0",
+        "duration": "27.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html"
     },
     {
@@ -1936,51 +1944,51 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html"
     },
     {
-        "duration": "23.0",
+        "duration": "24.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html"
     },
     {
-        "duration": "16.0",
+        "duration": "17.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/ebay.html"
     },
     {
-        "duration": "23.0",
+        "duration": "27.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html"
     },
     {
-        "duration": "20.0",
+        "duration": "22.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html"
     },
     {
-        "duration": "35.0",
+        "duration": "38.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html"
     },
     {
-        "duration": "30.0",
+        "duration": "32.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/google.html"
     },
     {
-        "duration": "28.0",
+        "duration": "29.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googlecalendar.html"
     },
     {
-        "duration": "22.0",
+        "duration": "23.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googledocs.html"
     },
     {
-        "duration": "25.0",
+        "duration": "26.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html"
     },
     {
-        "duration": "20.0",
+        "duration": "23.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html"
     },
     {
-        "duration": "21.0",
+        "duration": "22.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html"
     },
     {
@@ -1988,1951 +1996,1659 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html"
     },
     {
-        "duration": "16.0",
+        "duration": "18.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html"
     },
     {
-        "duration": "28.0",
+        "duration": "32.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html"
     },
     {
-        "duration": "13.0",
+        "duration": "15.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html"
     },
     {
-        "duration": "20.0",
+        "duration": "21.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html"
     },
     {
-        "duration": "65.0",
+        "duration": "66.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html"
     },
     {
-        "duration": "84.0",
+        "duration": "89.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html"
     },
     {
-        "duration": "33.0",
+        "duration": "35.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html"
     },
     {
-        "duration": "49.0",
+        "duration": "26.0",
         "name": "rendering.mobile/accu_weather_2018"
     },
     {
-        "duration": "38.0",
-        "name": "rendering.mobile/accu_weather_desktop_gpu_raster_2018"
+        "duration": "28.0",
+        "name": "rendering.mobile/accu_weather_mobile_pinch_2018"
     },
     {
-        "duration": "33.0",
+        "duration": "21.0",
         "name": "rendering.mobile/amazon_2018"
     },
     {
-        "duration": "33.0",
-        "name": "rendering.mobile/amazon_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "32.0",
+        "duration": "23.0",
         "name": "rendering.mobile/amazon_mobile_2018"
     },
     {
-        "duration": "31.0",
+        "duration": "22.0",
         "name": "rendering.mobile/analog_clock_svg"
     },
     {
-        "duration": "53.0",
+        "duration": "24.0",
         "name": "rendering.mobile/androidpolice_mobile_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "20.0",
         "name": "rendering.mobile/animometer_webgl"
     },
     {
-        "duration": "32.0",
+        "duration": "17.0",
+        "name": "rendering.mobile/animometer_webgl_attrib_arrays"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/animometer_webgl_multi_draw"
+    },
+    {
+        "duration": "26.0",
         "name": "rendering.mobile/aquarium"
     },
     {
-        "duration": "35.0",
+        "duration": "23.0",
         "name": "rendering.mobile/background_color_animation"
     },
     {
-        "duration": "36.0",
+        "duration": "22.0",
         "name": "rendering.mobile/background_color_animation_with_gradient"
     },
     {
-        "duration": "34.0",
+        "duration": "16.0",
         "name": "rendering.mobile/baidu_mobile_2018"
     },
     {
-        "duration": "28.0",
+        "duration": "21.0",
         "name": "rendering.mobile/balls_css_key_frame_animations"
     },
     {
-        "duration": "31.0",
+        "duration": "21.0",
         "name": "rendering.mobile/balls_css_transition_2_properties"
     },
     {
-        "duration": "31.0",
+        "duration": "21.0",
         "name": "rendering.mobile/balls_css_transition_40_properties"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "rendering.mobile/balls_css_transition_all_properties"
     },
     {
-        "duration": "27.0",
+        "duration": "20.0",
         "name": "rendering.mobile/balls_javascript_canvas"
     },
     {
-        "duration": "26.0",
+        "duration": "20.0",
         "name": "rendering.mobile/balls_javascript_css"
     },
     {
-        "duration": "34.0",
+        "duration": "23.0",
         "name": "rendering.mobile/balls_svg_animations"
     },
     {
-        "duration": "34.0",
+        "duration": "23.0",
+        "name": "rendering.mobile/basic_stream"
+    },
+    {
+        "duration": "18.0",
         "name": "rendering.mobile/bing_mobile_2018"
     },
     {
-        "duration": "29.0",
+        "duration": "19.0",
         "name": "rendering.mobile/blob"
     },
     {
-        "duration": "29.0",
+        "duration": "16.0",
         "name": "rendering.mobile/blogspot_2018"
     },
     {
-        "duration": "25.0",
-        "name": "rendering.mobile/blogspot_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "30.0",
+        "duration": "15.0",
         "name": "rendering.mobile/blogspot_mobile_2018"
     },
     {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "rendering.mobile/blur_rotating_background"
     },
     {
-        "duration": "32.0",
+        "duration": "18.0",
         "name": "rendering.mobile/boingboing_mobile_2018"
     },
     {
-        "duration": "35.0",
+        "duration": "18.0",
         "name": "rendering.mobile/booking.com_2018"
     },
     {
-        "duration": "32.0",
-        "name": "rendering.mobile/booking.com_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.mobile/booking.com_mobile_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "rendering.mobile/bouncing_balls_15"
     },
     {
-        "duration": "21.0",
+        "duration": "16.0",
         "name": "rendering.mobile/bouncing_balls_shadow"
     },
     {
-        "duration": "21.0",
+        "duration": "15.0",
         "name": "rendering.mobile/bouncing_clipped_rectangles"
     },
     {
-        "duration": "21.0",
+        "duration": "15.0",
         "name": "rendering.mobile/bouncing_gradient_circles"
     },
     {
-        "duration": "20.0",
+        "duration": "14.0",
         "name": "rendering.mobile/bouncing_png_images"
     },
     {
-        "duration": "28.0",
+        "duration": "17.0",
         "name": "rendering.mobile/bouncing_svg_images"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "rendering.mobile/camera_to_webgl"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/canvas_05000_pixels_per_second"
     },
     {
-        "duration": "28.0",
-        "name": "rendering.mobile/canvas_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "28.0",
+        "duration": "19.0",
         "name": "rendering.mobile/canvas_10000_pixels_per_second"
     },
     {
-        "duration": "29.0",
-        "name": "rendering.mobile/canvas_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/canvas_15000_pixels_per_second"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/canvas_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "29.0",
+        "duration": "18.0",
         "name": "rendering.mobile/canvas_20000_pixels_per_second"
     },
     {
-        "duration": "28.0",
-        "name": "rendering.mobile/canvas_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/canvas_30000_pixels_per_second"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/canvas_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "27.0",
+        "duration": "17.0",
         "name": "rendering.mobile/canvas_40000_pixels_per_second"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.mobile/canvas_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/canvas_50000_pixels_per_second"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/canvas_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "24.0",
+        "duration": "15.0",
         "name": "rendering.mobile/canvas_60000_pixels_per_second"
     },
     {
-        "duration": "24.0",
-        "name": "rendering.mobile/canvas_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "22.0",
+        "duration": "14.0",
         "name": "rendering.mobile/canvas_75000_pixels_per_second"
     },
     {
-        "duration": "22.0",
-        "name": "rendering.mobile/canvas_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "rendering.mobile/canvas_90000_pixels_per_second"
     },
     {
-        "duration": "21.0",
-        "name": "rendering.mobile/canvas_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "rendering.mobile/canvas_animation_no_clear"
     },
     {
-        "duration": "20.0",
+        "duration": "15.0",
         "name": "rendering.mobile/canvas_arcs"
     },
     {
-        "duration": "21.0",
+        "duration": "15.0",
         "name": "rendering.mobile/canvas_font_cycler"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "rendering.mobile/canvas_lines"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "rendering.mobile/canvas_to_blob"
     },
     {
-        "duration": "45.0",
+        "duration": "22.0",
         "name": "rendering.mobile/capitolvolkswagen_mobile_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "16.0",
         "name": "rendering.mobile/card_expansion"
     },
     {
-        "duration": "25.0",
+        "duration": "17.0",
         "name": "rendering.mobile/card_expansion_animated"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "rendering.mobile/card_expansion_images_text"
     },
     {
-        "duration": "23.0",
+        "duration": "16.0",
         "name": "rendering.mobile/card_flying"
     },
     {
-        "duration": "19.0",
+        "duration": "14.0",
         "name": "rendering.mobile/cats_unscaled"
     },
     {
-        "duration": "18.0",
+        "duration": "12.0",
         "name": "rendering.mobile/cats_viewport_width"
     },
     {
-        "duration": "34.0",
+        "duration": "24.0",
         "name": "rendering.mobile/cc_poster_circle"
     },
     {
-        "duration": "37.0",
+        "duration": "23.0",
         "name": "rendering.mobile/cc_scroll_text_only"
     },
     {
-        "duration": "26.0",
+        "duration": "18.0",
         "name": "rendering.mobile/chip_tune"
     },
     {
-        "duration": "32.0",
+        "duration": "17.0",
         "name": "rendering.mobile/cnn_2018"
     },
     {
-        "duration": "39.0",
+        "duration": "19.0",
         "name": "rendering.mobile/cnn_article_mobile_2018"
     },
     {
-        "duration": "28.0",
-        "name": "rendering.mobile/cnn_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "27.0",
+        "duration": "17.0",
         "name": "rendering.mobile/cnn_mobile_2018"
     },
     {
-        "duration": "29.0",
+        "duration": "21.0",
+        "name": "rendering.mobile/cnn_mobile_pinch_2018"
+    },
+    {
+        "duration": "19.0",
         "name": "rendering.mobile/cnn_pathological_2018"
     },
     {
-        "duration": "29.0",
+        "duration": "20.0",
         "name": "rendering.mobile/compositor_heavy_animation"
     },
     {
-        "duration": "23.0",
+        "duration": "17.0",
         "name": "rendering.mobile/coordinated_animation"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "rendering.mobile/crafty_mind"
     },
     {
-        "duration": "29.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_animations_many_keyframes"
     },
     {
-        "duration": "29.0",
+        "duration": "20.0",
         "name": "rendering.mobile/css_animations_simultaneous_inline_style"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_animations_simultaneous_new_element"
     },
     {
-        "duration": "29.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_animations_simultaneous_style_element"
     },
     {
-        "duration": "29.0",
+        "duration": "20.0",
         "name": "rendering.mobile/css_animations_simultaneous_updating_class"
     },
     {
-        "duration": "28.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_animations_staggered_infinite_iterations"
     },
     {
-        "duration": "32.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_animations_staggered_inline_style"
     },
     {
-        "duration": "36.0",
+        "duration": "24.0",
         "name": "rendering.mobile/css_animations_staggered_new_element"
     },
     {
-        "duration": "31.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_animations_staggered_style_element"
     },
     {
-        "duration": "31.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_animations_staggered_updating_class"
     },
     {
-        "duration": "32.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_animations_triggered_inline_style"
     },
     {
-        "duration": "37.0",
+        "duration": "24.0",
         "name": "rendering.mobile/css_animations_triggered_new_element"
     },
     {
-        "duration": "41.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_animations_triggered_style_element"
     },
     {
-        "duration": "31.0",
+        "duration": "23.0",
         "name": "rendering.mobile/css_animations_triggered_updating_class"
     },
     {
-        "duration": "33.0",
+        "duration": "23.0",
         "name": "rendering.mobile/css_opacity_plus_n_layers_0"
     },
     {
-        "duration": "33.0",
+        "duration": "24.0",
         "name": "rendering.mobile/css_opacity_plus_n_layers_75"
     },
     {
-        "duration": "33.0",
+        "duration": "24.0",
         "name": "rendering.mobile/css_opacity_plus_n_layers_99"
     },
     {
-        "duration": "35.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_transitions_inline_style"
     },
     {
-        "duration": "41.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_transitions_new_element"
     },
     {
-        "duration": "31.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_transitions_staggered_inline_style"
     },
     {
-        "duration": "31.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_transitions_staggered_new_element"
     },
     {
-        "duration": "31.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_transitions_staggered_style_element"
     },
     {
-        "duration": "31.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_transitions_staggered_updating_class"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_transitions_style_element"
     },
     {
-        "duration": "31.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_transitions_triggered_inline_style"
     },
     {
-        "duration": "31.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_transitions_triggered_new_element"
     },
     {
-        "duration": "31.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_transitions_triggered_style_element"
     },
     {
-        "duration": "37.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_transitions_triggered_updating_class"
     },
     {
-        "duration": "35.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_transitions_updating_class"
     },
     {
-        "duration": "47.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_value_type_color"
     },
     {
-        "duration": "30.0",
+        "duration": "23.0",
         "name": "rendering.mobile/css_value_type_filter"
     },
     {
-        "duration": "71.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_value_type_length"
     },
     {
-        "duration": "37.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_value_type_length_complex"
     },
     {
-        "duration": "77.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_value_type_length_simple"
     },
     {
-        "duration": "47.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_value_type_path"
     },
     {
-        "duration": "37.0",
+        "duration": "20.0",
         "name": "rendering.mobile/css_value_type_shadow"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_value_type_transform_complex"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_value_type_transform_simple"
     },
     {
-        "duration": "54.0",
+        "duration": "21.0",
         "name": "rendering.mobile/deviantart_mobile_2018"
     },
     {
-        "duration": "38.0",
+        "duration": "17.0",
         "name": "rendering.mobile/digg_mobile_2018"
     },
     {
-        "duration": "28.0",
+        "duration": "19.0",
         "name": "rendering.mobile/dynamic_cube_map"
     },
     {
-        "duration": "27.0",
+        "duration": "19.0",
         "name": "rendering.mobile/earth"
     },
     {
-        "duration": "33.0",
+        "duration": "18.0",
         "name": "rendering.mobile/ebay_2018"
     },
     {
-        "duration": "30.0",
-        "name": "rendering.mobile/ebay_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "32.0",
+        "duration": "15.0",
         "name": "rendering.mobile/ebay_mobile_2018"
     },
     {
-        "duration": "42.0",
+        "duration": "18.0",
+        "name": "rendering.mobile/ebay_mobile_pinch_2018"
+    },
+    {
+        "duration": "26.0",
         "name": "rendering.mobile/ebay_scroll_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "rendering.mobile/effect_games"
     },
     {
-        "duration": "34.0",
+        "duration": "18.0",
         "name": "rendering.mobile/espn_2018"
     },
     {
-        "duration": "33.0",
-        "name": "rendering.mobile/espn_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "33.0",
+        "duration": "16.0",
         "name": "rendering.mobile/espn_mobile_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "rendering.mobile/espn_pathological_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "28.0",
         "name": "rendering.mobile/extra_large_texture_uploads"
     },
     {
-        "duration": "29.0",
+        "duration": "30.0",
         "name": "rendering.mobile/facebook_2018"
     },
     {
-        "duration": "24.0",
-        "name": "rendering.mobile/facebook_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "44.0",
+        "duration": "28.0",
         "name": "rendering.mobile/facebook_mobile_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "rendering.mobile/fill_shapes"
     },
     {
-        "duration": "32.0",
+        "duration": "23.0",
         "name": "rendering.mobile/filter_terrain_svg"
     },
     {
-        "duration": "40.0",
+        "duration": "25.0",
         "name": "rendering.mobile/flickr_scroll_2018"
     },
     {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "rendering.mobile/font_wipe"
     },
     {
-        "duration": "29.0",
+        "duration": "14.0",
         "name": "rendering.mobile/forecast.io_mobile_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "35.0",
         "name": "rendering.mobile/geo_apis"
     },
     {
-        "duration": "25.0",
+        "duration": "29.0",
         "name": "rendering.mobile/gmail_2018"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.mobile/gmail_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "rendering.mobile/google_calendar_2018"
     },
     {
-        "duration": "21.0",
-        "name": "rendering.mobile/google_calendar_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "36.0",
+        "duration": "23.0",
         "name": "rendering.mobile/google_docs_2018"
     },
     {
-        "duration": "36.0",
-        "name": "rendering.mobile/google_docs_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "31.0",
+        "duration": "25.0",
         "name": "rendering.mobile/google_image_search_2018"
     },
     {
-        "duration": "32.0",
-        "name": "rendering.mobile/google_image_search_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "36.0",
+        "duration": "21.0",
         "name": "rendering.mobile/google_image_search_mobile_2018"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/google_news_ios"
     },
     {
-        "duration": "24.0",
+        "duration": "15.0",
         "name": "rendering.mobile/google_news_mobile_2018"
     },
     {
-        "duration": "33.0",
+        "duration": "20.0",
         "name": "rendering.mobile/google_plus_2018"
     },
     {
-        "duration": "28.0",
-        "name": "rendering.mobile/google_plus_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "41.0",
+        "duration": "21.0",
         "name": "rendering.mobile/google_plus_mobile_2018"
     },
     {
-        "duration": "30.0",
+        "duration": "20.0",
+        "name": "rendering.mobile/google_search_mobile_pinch_2018"
+    },
+    {
+        "duration": "16.0",
         "name": "rendering.mobile/google_web_search_2018"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.mobile/google_web_search_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "33.0",
+        "duration": "19.0",
         "name": "rendering.mobile/google_web_search_mobile_2018"
     },
     {
-        "duration": "36.0",
+        "duration": "21.0",
         "name": "rendering.mobile/gsp.ro_mobile_2018"
     },
     {
-        "duration": "37.0",
+        "duration": "23.0",
         "name": "rendering.mobile/guardian_pathological_2018"
     },
     {
-        "duration": "32.0",
+        "duration": "41.0",
         "name": "rendering.mobile/guimark_vector_chart"
     },
     {
-        "duration": "24.0",
+        "duration": "18.0",
         "name": "rendering.mobile/gws_boogie_expansion"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "rendering.mobile/gws_google_expansion"
     },
     {
-        "duration": "25.0",
+        "duration": "22.0",
         "name": "rendering.mobile/hakim"
     },
     {
-        "duration": "25.0",
+        "duration": "17.0",
         "name": "rendering.mobile/horizontal_vertical_expansion"
     },
     {
-        "duration": "41.0",
+        "duration": "42.0",
         "name": "rendering.mobile/idle_power_animated_gif"
     },
     {
-        "duration": "37.0",
+        "duration": "32.0",
         "name": "rendering.mobile/idle_power_blank"
     },
     {
-        "duration": "42.0",
+        "duration": "36.0",
         "name": "rendering.mobile/idle_power_css_animation"
     },
     {
-        "duration": "43.0",
+        "duration": "36.0",
         "name": "rendering.mobile/idle_power_request_animation_frame"
     },
     {
-        "duration": "114.0",
+        "duration": "105.0",
         "name": "rendering.mobile/idle_power_set_timeout_long"
     },
     {
-        "duration": "44.0",
+        "duration": "36.0",
         "name": "rendering.mobile/idle_power_set_timetout"
     },
     {
-        "duration": "47.0",
+        "duration": "32.0",
         "name": "rendering.mobile/ie_chalkboard"
     },
     {
-        "duration": "37.0",
+        "duration": "43.0",
         "name": "rendering.mobile/ie_pirate_mark"
     },
     {
-        "duration": "38.0",
+        "duration": "23.0",
         "name": "rendering.mobile/infinite_scroll_element_n_layers_0"
     },
     {
-        "duration": "49.0",
+        "duration": "23.0",
         "name": "rendering.mobile/infinite_scroll_element_n_layers_75"
     },
     {
-        "duration": "37.0",
+        "duration": "24.0",
         "name": "rendering.mobile/infinite_scroll_element_n_layers_99"
     },
     {
-        "duration": "37.0",
+        "duration": "23.0",
         "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_0"
     },
     {
-        "duration": "39.0",
+        "duration": "23.0",
         "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_75"
     },
     {
-        "duration": "38.0",
+        "duration": "24.0",
         "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_99"
     },
     {
-        "duration": "37.0",
+        "duration": "23.0",
         "name": "rendering.mobile/infinite_scroll_root_n_layers_0"
     },
     {
-        "duration": "38.0",
+        "duration": "23.0",
         "name": "rendering.mobile/infinite_scroll_root_n_layers_75"
     },
     {
-        "duration": "39.0",
+        "duration": "23.0",
         "name": "rendering.mobile/infinite_scroll_root_n_layers_99"
     },
     {
-        "duration": "36.0",
+        "duration": "21.0",
         "name": "rendering.mobile/infinite_scrolling"
     },
     {
-        "duration": "27.0",
+        "duration": "17.0",
         "name": "rendering.mobile/jarro_doverson"
     },
     {
-        "duration": "46.0",
+        "duration": "28.0",
         "name": "rendering.mobile/js_full_screen_invalidation"
     },
     {
-        "duration": "36.0",
+        "duration": "24.0",
         "name": "rendering.mobile/js_opacity_plus_n_layers_0"
     },
     {
-        "duration": "34.0",
+        "duration": "24.0",
         "name": "rendering.mobile/js_opacity_plus_n_layers_75"
     },
     {
-        "duration": "34.0",
+        "duration": "25.0",
         "name": "rendering.mobile/js_opacity_plus_n_layers_99"
     },
     {
-        "duration": "36.0",
+        "duration": "25.0",
         "name": "rendering.mobile/js_paint_plus_n_layers_0"
     },
     {
-        "duration": "37.0",
+        "duration": "25.0",
         "name": "rendering.mobile/js_paint_plus_n_layers_75"
     },
     {
-        "duration": "37.0",
+        "duration": "25.0",
         "name": "rendering.mobile/js_paint_plus_n_layers_99"
     },
     {
-        "duration": "37.0",
+        "duration": "25.0",
         "name": "rendering.mobile/js_poster_circle"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "rendering.mobile/js_scroll_text_only"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "rendering.mobile/kevs_3d"
     },
     {
-        "duration": "29.0",
+        "duration": "20.0",
         "name": "rendering.mobile/keyframed_animations"
     },
     {
-        "duration": "28.0",
+        "duration": "20.0",
         "name": "rendering.mobile/large_texture_uploads"
     },
     {
-        "duration": "40.0",
+        "duration": "25.0",
         "name": "rendering.mobile/latimes_pathological_2018"
     },
     {
-        "duration": "34.0",
+        "duration": "19.0",
         "name": "rendering.mobile/linkedin_2018"
     },
     {
-        "duration": "29.0",
-        "name": "rendering.mobile/linkedin_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "63.0",
+        "duration": "40.0",
         "name": "rendering.mobile/linkedin_mobile_2018"
     },
     {
-        "duration": "41.0",
+        "duration": "37.0",
+        "name": "rendering.mobile/linkedin_mobile_pinch_2018"
+    },
+    {
+        "duration": "31.0",
         "name": "rendering.mobile/linkedin_pathological_2018"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "rendering.mobile/list_animation_simple"
     },
     {
-        "duration": "36.0",
+        "duration": "22.0",
         "name": "rendering.mobile/list_recycle_transform"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "rendering.mobile/man_in_blue"
     },
     {
-        "duration": "30.0",
+        "duration": "26.0",
         "name": "rendering.mobile/many_images"
     },
     {
-        "duration": "27.0",
+        "duration": "19.0",
         "name": "rendering.mobile/many_planets_deep"
     },
     {
-        "duration": "42.0",
+        "duration": "25.0",
         "name": "rendering.mobile/maps_perf_test"
     },
     {
-        "duration": "23.0",
+        "duration": "16.0",
         "name": "rendering.mobile/mask_transition_animation"
     },
     {
-        "duration": "31.0",
+        "duration": "14.0",
+        "name": "rendering.mobile/masonry"
+    },
+    {
+        "duration": "21.0",
         "name": "rendering.mobile/medium_texture_uploads"
     },
     {
-        "duration": "24.0",
+        "duration": "15.0",
         "name": "rendering.mobile/megi_dish"
     },
     {
-        "duration": "26.0",
+        "duration": "18.0",
         "name": "rendering.mobile/microsoft_asteroid_belt"
     },
     {
-        "duration": "25.0",
+        "duration": "16.0",
         "name": "rendering.mobile/microsoft_fish_ie_tank"
     },
     {
-        "duration": "24.0",
+        "duration": "21.0",
+        "name": "rendering.mobile/microsoft_performance"
+    },
+    {
+        "duration": "16.0",
         "name": "rendering.mobile/microsoft_snow"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.mobile/microsoft_speed_reading"
     },
     {
-        "duration": "24.0",
+        "duration": "17.0",
         "name": "rendering.mobile/microsoft_tweet_map"
     },
     {
-        "duration": "28.0",
+        "duration": "19.0",
         "name": "rendering.mobile/microsoft_video_city"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "rendering.mobile/microsoft_worker_fountains"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "rendering.mobile/mix_10k"
     },
     {
-        "duration": "25.0",
+        "duration": "20.0",
         "name": "rendering.mobile/mix_blend_mode_animation_difference"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "rendering.mobile/mix_blend_mode_animation_hue"
     },
     {
-        "duration": "32.0",
+        "duration": "21.0",
         "name": "rendering.mobile/mix_blend_mode_animation_propagating_isolation"
     },
     {
-        "duration": "26.0",
+        "duration": "19.0",
         "name": "rendering.mobile/mix_blend_mode_animation_screen"
     },
     {
-        "duration": "48.0",
+        "duration": "23.0",
         "name": "rendering.mobile/mlb_mobile_2018"
     },
     {
-        "duration": "21.0",
+        "duration": "15.0",
         "name": "rendering.mobile/mobile_news_sandbox"
     },
     {
-        "duration": "29.0",
+        "duration": "51.0",
         "name": "rendering.mobile/motion_mark_canvas_fill_shapes"
     },
     {
-        "duration": "27.0",
+        "duration": "26.0",
         "name": "rendering.mobile/motion_mark_canvas_stroke_shapes"
     },
     {
-        "duration": "28.0",
+        "duration": "19.0",
         "name": "rendering.mobile/motionmark_anim_design_15"
     },
     {
-        "duration": "33.0",
+        "duration": "20.0",
         "name": "rendering.mobile/motionmark_anim_focus_25"
     },
     {
-        "duration": "54.0",
+        "duration": "23.0",
         "name": "rendering.mobile/motionmark_anim_images_50"
     },
     {
-        "duration": "34.0",
+        "duration": "20.0",
         "name": "rendering.mobile/motionmark_anim_leaves_250"
     },
     {
-        "duration": "33.0",
+        "duration": "20.0",
         "name": "rendering.mobile/motionmark_anim_multiply_175"
     },
     {
-        "duration": "33.0",
+        "duration": "20.0",
         "name": "rendering.mobile/motionmark_anim_suits_125"
     },
     {
-        "duration": "34.0",
+        "duration": "20.0",
         "name": "rendering.mobile/motionmark_html_composited_transforms_125"
     },
     {
-        "duration": "35.0",
+        "duration": "20.0",
         "name": "rendering.mobile/motionmark_html_css_bouncing_blend_circles_25"
     },
     {
-        "duration": "34.0",
+        "duration": "20.0",
         "name": "rendering.mobile/motionmark_html_css_bouncing_circles_250"
     },
     {
-        "duration": "31.0",
+        "duration": "20.0",
         "name": "rendering.mobile/motionmark_html_css_bouncing_clipped_rects_100"
     },
     {
-        "duration": "33.0",
+        "duration": "20.0",
         "name": "rendering.mobile/motionmark_html_css_bouncing_filter_circles_15"
     },
     {
-        "duration": "32.0",
+        "duration": "20.0",
         "name": "rendering.mobile/motionmark_html_css_bouncing_gradient_circles_250"
     },
     {
-        "duration": "35.0",
+        "duration": "20.0",
         "name": "rendering.mobile/motionmark_html_css_bouncing_svg_images_50"
     },
     {
-        "duration": "33.0",
+        "duration": "21.0",
         "name": "rendering.mobile/motionmark_html_css_bouncing_tagged_images_225"
     },
     {
-        "duration": "33.0",
+        "duration": "20.0",
         "name": "rendering.mobile/motionmark_html_dom_particles_svg_masks_25"
     },
     {
-        "duration": "32.0",
+        "duration": "20.0",
         "name": "rendering.mobile/motionmark_html_focus_20_15"
     },
     {
-        "duration": "36.0",
+        "duration": "21.0",
         "name": "rendering.mobile/motionmark_html_leaves_20_50"
     },
     {
-        "duration": "36.0",
+        "duration": "21.0",
         "name": "rendering.mobile/motionmark_svg_bouncing_circles_250"
     },
     {
-        "duration": "31.0",
+        "duration": "21.0",
         "name": "rendering.mobile/motionmark_svg_bouncing_clipped_rects_100"
     },
     {
-        "duration": "32.0",
+        "duration": "21.0",
         "name": "rendering.mobile/motionmark_svg_bouncing_gradient_circles_200"
     },
     {
-        "duration": "35.0",
+        "duration": "20.0",
         "name": "rendering.mobile/motionmark_svg_bouncing_png_images_200"
     },
     {
-        "duration": "56.0",
+        "duration": "24.0",
         "name": "rendering.mobile/motionmark_svg_bouncing_svg_images_50"
     },
     {
-        "duration": "38.0",
+        "duration": "26.0",
         "name": "rendering.mobile/new_tilings"
     },
     {
-        "duration": "27.0",
+        "duration": "19.0",
         "name": "rendering.mobile/no_op_raf"
     },
     {
-        "duration": "24.0",
+        "duration": "18.0",
         "name": "rendering.mobile/no_op_scroll"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "rendering.mobile/no_op_settimeout"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/no_op_touch_handler"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/nvidia_vertex_buffer_object"
     },
     {
-        "duration": "41.0",
+        "duration": "26.0",
         "name": "rendering.mobile/nyc_gov_scroll_2018"
     },
     {
-        "duration": "39.0",
+        "duration": "22.0",
         "name": "rendering.mobile/nytimes_mobile_2018"
     },
     {
-        "duration": "44.0",
+        "duration": "27.0",
         "name": "rendering.mobile/nytimes_scroll_2018"
     },
     {
-        "duration": "37.0",
+        "duration": "26.0",
         "name": "rendering.mobile/overlay_background_color_css_transitions_page"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "rendering.mobile/parallax_effect"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/particles"
     },
     {
-        "duration": "31.0",
+        "duration": "18.0",
         "name": "rendering.mobile/pbs_pathological_2018"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "rendering.mobile/physical_simulation"
     },
     {
-        "duration": "38.0",
+        "duration": "19.0",
         "name": "rendering.mobile/pinterest_2018"
     },
     {
-        "duration": "34.0",
-        "name": "rendering.mobile/pinterest_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "25.0",
+        "duration": "12.0",
         "name": "rendering.mobile/pinterest_mobile_2018"
     },
     {
-        "duration": "21.0",
+        "duration": "15.0",
         "name": "rendering.mobile/put_get_image_data"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/raf"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/raf_animation"
     },
     {
-        "duration": "28.0",
+        "duration": "19.0",
         "name": "rendering.mobile/raf_canvas"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/raf_touch_animation"
     },
     {
-        "duration": "38.0",
+        "duration": "23.0",
         "name": "rendering.mobile/recode_pathological_2018"
     },
     {
-        "duration": "44.0",
+        "duration": "21.0",
         "name": "rendering.mobile/reddit_mobile_2018"
     },
     {
-        "duration": "24.0",
+        "duration": "39.0",
         "name": "rendering.mobile/runway"
     },
     {
-        "duration": "28.0",
+        "duration": "19.0",
         "name": "rendering.mobile/san_angeles"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "rendering.mobile/second_batch_js_heavy"
     },
     {
-        "duration": "18.0",
+        "duration": "13.0",
         "name": "rendering.mobile/second_batch_js_light"
     },
     {
-        "duration": "18.0",
+        "duration": "12.0",
         "name": "rendering.mobile/second_batch_js_medium"
     },
     {
-        "duration": "43.0",
+        "duration": "21.0",
         "name": "rendering.mobile/sfgate_mobile_2018"
     },
     {
-        "duration": "35.0",
+        "duration": "24.0",
         "name": "rendering.mobile/silk_finance"
     },
     {
-        "duration": "31.0",
+        "duration": "18.0",
         "name": "rendering.mobile/simple_text_page"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "rendering.mobile/simple_touch_drag"
     },
     {
-        "duration": "41.0",
+        "duration": "19.0",
         "name": "rendering.mobile/slashdot_mobile_2018"
     },
     {
-        "duration": "33.0",
+        "duration": "15.0",
+        "name": "rendering.mobile/slide_drawer"
+    },
+    {
+        "duration": "21.0",
         "name": "rendering.mobile/small_texture_uploads"
     },
     {
-        "duration": "29.0",
+        "duration": "22.0",
         "name": "rendering.mobile/smash_cat"
     },
     {
-        "duration": "23.0",
+        "duration": "21.0",
         "name": "rendering.mobile/spielzeugz"
     },
     {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "rendering.mobile/sticky_using_webkit"
     },
     {
-        "duration": "40.0",
+        "duration": "24.0",
         "name": "rendering.mobile/stress_hidey_bars"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "rendering.mobile/stroke_shapes"
     },
     {
-        "duration": "35.0",
+        "duration": "27.0",
         "name": "rendering.mobile/svg_icon_raster"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
+        "name": "rendering.mobile/swipe_action"
+    },
+    {
+        "duration": "16.0",
         "name": "rendering.mobile/swipe_to_dismiss"
     },
     {
-        "duration": "32.0",
+        "duration": "18.0",
         "name": "rendering.mobile/sync_scroll_offset"
     },
     {
-        "duration": "45.0",
+        "duration": "23.0",
         "name": "rendering.mobile/techcrunch_2018"
     },
     {
-        "duration": "41.0",
-        "name": "rendering.mobile/techcrunch_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "48.0",
+        "duration": "22.0",
         "name": "rendering.mobile/techcrunch_mobile_2018"
     },
     {
-        "duration": "31.0",
+        "duration": "18.0",
         "name": "rendering.mobile/text_05000_pixels_per_second"
     },
     {
-        "duration": "31.0",
-        "name": "rendering.mobile/text_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "32.0",
+        "duration": "18.0",
         "name": "rendering.mobile/text_10000_pixels_per_second"
     },
     {
-        "duration": "32.0",
-        "name": "rendering.mobile/text_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/text_15000_pixels_per_second"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/text_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "33.0",
+        "duration": "19.0",
         "name": "rendering.mobile/text_20000_pixels_per_second"
     },
     {
-        "duration": "33.0",
-        "name": "rendering.mobile/text_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/text_30000_pixels_per_second"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/text_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "30.0",
+        "duration": "17.0",
         "name": "rendering.mobile/text_40000_pixels_per_second"
     },
     {
-        "duration": "31.0",
-        "name": "rendering.mobile/text_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/text_50000_pixels_per_second"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/text_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "24.0",
+        "duration": "15.0",
         "name": "rendering.mobile/text_60000_pixels_per_second"
     },
     {
-        "duration": "25.0",
-        "name": "rendering.mobile/text_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "24.0",
+        "duration": "15.0",
         "name": "rendering.mobile/text_75000_pixels_per_second"
     },
     {
-        "duration": "24.0",
-        "name": "rendering.mobile/text_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "rendering.mobile/text_90000_pixels_per_second"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "27.0",
+        "duration": "19.0",
         "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second"
     },
     {
-        "duration": "28.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "27.0",
+        "duration": "18.0",
         "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "27.0",
+        "duration": "19.0",
         "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "26.0",
+        "duration": "18.0",
         "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
+        "duration": "16.0",
         "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second"
     },
     {
-        "duration": "22.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second"
     },
     {
-        "duration": "21.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second"
     },
     {
-        "duration": "21.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "rendering.mobile/text_hover_05000_pixels_per_second"
     },
     {
-        "duration": "22.0",
-        "name": "rendering.mobile/text_hover_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "rendering.mobile/text_hover_10000_pixels_per_second"
     },
     {
-        "duration": "22.0",
-        "name": "rendering.mobile/text_hover_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_hover_15000_pixels_per_second"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/text_hover_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "rendering.mobile/text_hover_20000_pixels_per_second"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_hover_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/text_hover_30000_pixels_per_second"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/text_hover_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "21.0",
+        "duration": "15.0",
         "name": "rendering.mobile/text_hover_40000_pixels_per_second"
     },
     {
-        "duration": "21.0",
-        "name": "rendering.mobile/text_hover_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.mobile/text_hover_50000_pixels_per_second"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.mobile/text_hover_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "20.0",
+        "duration": "14.0",
         "name": "rendering.mobile/text_hover_60000_pixels_per_second"
     },
     {
-        "duration": "20.0",
-        "name": "rendering.mobile/text_hover_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "rendering.mobile/text_hover_75000_pixels_per_second"
     },
     {
-        "duration": "20.0",
-        "name": "rendering.mobile/text_hover_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "rendering.mobile/text_hover_90000_pixels_per_second"
     },
     {
-        "duration": "18.0",
-        "name": "rendering.mobile/text_hover_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "42.0",
+        "duration": "23.0",
         "name": "rendering.mobile/theverge_article_mobile_2018"
     },
     {
-        "duration": "46.0",
+        "duration": "22.0",
         "name": "rendering.mobile/theverge_mobile_2018"
     },
     {
-        "duration": "28.0",
+        "duration": "20.0",
         "name": "rendering.mobile/toggle_drawer"
     },
     {
-        "duration": "31.0",
+        "duration": "18.0",
         "name": "rendering.mobile/touch_handler_scrolling"
     },
     {
-        "duration": "32.0",
+        "duration": "21.0",
         "name": "rendering.mobile/transform_transitions"
     },
     {
-        "duration": "33.0",
+        "duration": "21.0",
         "name": "rendering.mobile/transform_transitions_js_block"
     },
     {
-        "duration": "34.0",
+        "duration": "17.0",
         "name": "rendering.mobile/twitch_2018"
     },
     {
-        "duration": "30.0",
-        "name": "rendering.mobile/twitch_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/twitter_2018"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/twitter_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/twitter_mobile_2018"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/update_history_state"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/usatoday_mobile_2018"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/vertical_expansion"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/web_animation_value_type_color"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/web_animation_value_type_length_3d"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/web_animation_value_type_length_complex"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/web_animation_value_type_length_simple"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/web_animation_value_type_path"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/web_animation_value_type_shadow"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/web_animation_value_type_transform_complex"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/web_animation_value_type_transform_simple"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/web_animations_many_keyframes"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/web_animations_set_current_time"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/web_animations_simultaneous"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/web_animations_staggered_chaining"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/web_animations_staggered_infinite_iterations"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/web_animations_staggered_triggering_page"
-    },
-    {
-        "duration": "40.0",
-        "name": "rendering.mobile/wikipedia_2018"
-    },
-    {
-        "duration": "42.0",
-        "name": "rendering.mobile/wikipedia_delayed_scroll_start_2018"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/wikipedia_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/wikipedia_mobile_2018"
-    },
-    {
-        "duration": "42.0",
-        "name": "rendering.mobile/wordpress_2018"
-    },
-    {
-        "duration": "47.0",
-        "name": "rendering.mobile/wordpress_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "42.0",
-        "name": "rendering.mobile/wordpress_mobile_2018"
-    },
-    {
-        "duration": "37.0",
-        "name": "rendering.mobile/worldjournal_mobile_2018"
-    },
-    {
-        "duration": "43.0",
-        "name": "rendering.mobile/wow_wiki_pathological_2018"
-    },
-    {
-        "duration": "73.0",
-        "name": "rendering.mobile/wowwiki_mobile_2018"
-    },
-    {
-        "duration": "49.0",
-        "name": "rendering.mobile/wsj_mobile_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/yahoo_answers_2018"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/yahoo_answers_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/yahoo_news_2018"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/yahoo_news_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "44.0",
-        "name": "rendering.mobile/yahoo_news_mobile_2018"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/yahoo_sports_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/yahoo_sports_desktop_gpu_raster_2018"
+        "duration": "21.0",
+        "name": "rendering.mobile/twitch_mobile_pinch_2018"
     },
     {
         "duration": "21.0",
-        "name": "rendering.mobile/yahoo_sports_pathological_2018"
+        "name": "rendering.mobile/twitter_2018"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.mobile/youtube_2018"
+        "duration": "14.0",
+        "name": "rendering.mobile/twitter_mobile_2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/update_history_state"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.mobile/usatoday_mobile_2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.mobile/vertical_expansion"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/web_animation_value_type_color"
     },
     {
         "duration": "22.0",
-        "name": "rendering.mobile/youtube_desktop_gpu_raster_2018"
+        "name": "rendering.mobile/web_animation_value_type_length_3d"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.mobile/youtube_mobile_2018"
+        "duration": "23.0",
+        "name": "rendering.mobile/web_animation_value_type_length_complex"
     },
     {
-        "duration": "33.0",
-        "name": "rendering.mobile/yuv_decoding"
+        "duration": "22.0",
+        "name": "rendering.mobile/web_animation_value_type_length_simple"
     },
     {
-        "duration": "33.0",
-        "name": "rendering.mobile/yuv_decoding_gpu_rasterization_and_decoding"
+        "duration": "22.0",
+        "name": "rendering.mobile/web_animation_value_type_path"
     },
     {
-        "duration": "36.0",
-        "name": "rendering.mobile/zdnet_pathological_2018"
+        "duration": "20.0",
+        "name": "rendering.mobile/web_animation_value_type_shadow"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/web_animation_value_type_transform_complex"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/web_animation_value_type_transform_simple"
     },
     {
         "duration": "24.0",
-        "name": "rendering.mobile/zoom_in_animation"
+        "name": "rendering.mobile/web_animations_many_keyframes"
     },
     {
-        "duration": "42.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/accu_weather_pinch_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/amazon_pinch_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/blogspot_pinch_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/booking_pinch_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/cnn_pinch_2018"
-    },
-    {
-        "duration": "27.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/ebay_pinch_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/espn_pinch_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/facebook_pinch_2018"
-    },
-    {
-        "duration": "50.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/gmail_pinch_2018"
-    },
-    {
-        "duration": "40.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_calendar_pinch_2018"
-    },
-    {
-        "duration": "27.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_image_pinch_2018"
-    },
-    {
-        "duration": "37.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_search_pinch_2018"
-    },
-    {
-        "duration": "43.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/linkedin_pinch_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/twitch_pinch_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/twitter_pinch_2018"
-    },
-    {
-        "duration": "35.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_news_pinch_2018"
-    },
-    {
-        "duration": "39.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_sports_pinch_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/youtube_pinch_2018"
-    },
-    {
-        "duration": "42.0",
-        "name": "smoothness.tough_pinch_zoom_cases/accu_weather_pinch_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "smoothness.tough_pinch_zoom_cases/amazon_pinch_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "smoothness.tough_pinch_zoom_cases/blogspot_pinch_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "smoothness.tough_pinch_zoom_cases/booking_pinch_2018"
-    },
-    {
-        "duration": "33.0",
-        "name": "smoothness.tough_pinch_zoom_cases/cnn_pinch_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "smoothness.tough_pinch_zoom_cases/ebay_pinch_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "smoothness.tough_pinch_zoom_cases/espn_pinch_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "smoothness.tough_pinch_zoom_cases/facebook_pinch_2018"
-    },
-    {
-        "duration": "51.0",
-        "name": "smoothness.tough_pinch_zoom_cases/gmail_pinch_2018"
-    },
-    {
-        "duration": "41.0",
-        "name": "smoothness.tough_pinch_zoom_cases/google_calendar_pinch_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "smoothness.tough_pinch_zoom_cases/google_image_pinch_2018"
-    },
-    {
-        "duration": "37.0",
-        "name": "smoothness.tough_pinch_zoom_cases/google_search_pinch_2018"
-    },
-    {
-        "duration": "43.0",
-        "name": "smoothness.tough_pinch_zoom_cases/linkedin_pinch_2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "smoothness.tough_pinch_zoom_cases/twitch_pinch_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "smoothness.tough_pinch_zoom_cases/twitter_pinch_2018"
-    },
-    {
-        "duration": "36.0",
-        "name": "smoothness.tough_pinch_zoom_cases/yahoo_news_pinch_2018"
-    },
-    {
-        "duration": "41.0",
-        "name": "smoothness.tough_pinch_zoom_cases/yahoo_sports_pinch_2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "smoothness.tough_pinch_zoom_cases/youtube_pinch_2018"
-    },
-    {
-        "duration": "38.0",
-        "name": "speedometer-future/http://browserbench.org/Speedometer/"
-    },
-    {
-        "duration": "36.0",
-        "name": "speedometer/http://browserbench.org/Speedometer/"
-    },
-    {
-        "duration": "62.0",
-        "name": "speedometer2-future/Speedometer2"
-    },
-    {
-        "duration": "61.0",
-        "name": "speedometer2/Speedometer2"
-    },
-    {
-        "duration": "151.0",
-        "name": "startup.mobile/cct:coldish:bbc"
-    },
-    {
-        "duration": "155.0",
-        "name": "startup.mobile/intent:coldish:bbc"
-    },
-    {
-        "duration": "128.0",
-        "name": "startup.mobile/intent:warm:bbc"
+        "duration": "21.0",
+        "name": "rendering.mobile/web_animations_set_current_time"
     },
     {
         "duration": "26.0",
-        "name": "system_health.common_mobile/background:media:imgur"
+        "name": "rendering.mobile/web_animations_simultaneous"
     },
     {
-        "duration": "27.0",
-        "name": "system_health.common_mobile/background:search:google"
+        "duration": "34.0",
+        "name": "rendering.mobile/web_animations_staggered_chaining"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/web_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/web_animations_staggered_triggering_page"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/wikipedia_2018"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/wikipedia_delayed_scroll_start_2018"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/wikipedia_mobile_2018"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/wordpress_2018"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/wordpress_mobile_2018"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/worldjournal_mobile_2018"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/wow_wiki_pathological_2018"
     },
     {
         "duration": "36.0",
-        "name": "system_health.common_mobile/background:social:facebook"
+        "name": "rendering.mobile/wowwiki_mobile_2018"
     },
     {
-        "duration": "100.0",
-        "name": "system_health.common_mobile/browse:chrome:newtab"
+        "duration": "24.0",
+        "name": "rendering.mobile/wsj_mobile_2018"
     },
     {
-        "duration": "35.0",
-        "name": "system_health.common_mobile/browse:chrome:omnibox"
+        "duration": "15.0",
+        "name": "rendering.mobile/yahoo_answers_2018"
     },
     {
-        "duration": "93.0",
-        "name": "system_health.common_mobile/browse:media:facebook_photos"
+        "duration": "16.0",
+        "name": "rendering.mobile/yahoo_news_2018"
     },
     {
-        "duration": "63.0",
-        "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll"
+        "duration": "20.0",
+        "name": "rendering.mobile/yahoo_news_mobile_2018"
     },
     {
-        "duration": "89.0",
-        "name": "system_health.common_mobile/browse:media:imgur"
+        "duration": "19.0",
+        "name": "rendering.mobile/yahoo_sports_2018"
     },
     {
-        "duration": "111.0",
-        "name": "system_health.common_mobile/browse:media:youtube"
+        "duration": "15.0",
+        "name": "rendering.mobile/yahoo_sports_pathological_2018"
     },
     {
-        "duration": "105.0",
-        "name": "system_health.common_mobile/browse:news:cnn"
+        "duration": "15.0",
+        "name": "rendering.mobile/youtube_2018"
     },
     {
-        "duration": "83.0",
-        "name": "system_health.common_mobile/browse:news:cnn:2018"
+        "duration": "14.0",
+        "name": "rendering.mobile/youtube_mobile_2018"
     },
     {
-        "duration": "74.0",
-        "name": "system_health.common_mobile/browse:news:cricbuzz"
+        "duration": "37.0",
+        "name": "rendering.mobile/yuv_decoding"
     },
     {
         "duration": "73.0",
-        "name": "system_health.common_mobile/browse:news:qq"
+        "name": "rendering.mobile/yuv_decoding_gpu_rasterization_and_decoding"
     },
     {
-        "duration": "62.0",
-        "name": "system_health.common_mobile/browse:news:reddit"
+        "duration": "20.0",
+        "name": "rendering.mobile/zdnet_pathological_2018"
     },
     {
-        "duration": "148.0",
-        "name": "system_health.common_mobile/browse:news:toi"
+        "duration": "17.0",
+        "name": "rendering.mobile/zoom_in_animation"
     },
     {
-        "duration": "65.0",
-        "name": "system_health.common_mobile/browse:news:washingtonpost"
+        "duration": "21.0",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/amazon_pinch_2018"
     },
     {
-        "duration": "81.0",
-        "name": "system_health.common_mobile/browse:shopping:amazon"
+        "duration": "17.0",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/blogspot_pinch_2018"
     },
     {
-        "duration": "77.0",
-        "name": "system_health.common_mobile/browse:shopping:avito"
+        "duration": "20.0",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/booking_pinch_2018"
     },
     {
-        "duration": "41.0",
-        "name": "system_health.common_mobile/browse:shopping:lazada"
+        "duration": "21.0",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/espn_pinch_2018"
     },
     {
-        "duration": "84.0",
-        "name": "system_health.common_mobile/browse:social:facebook"
+        "duration": "21.0",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/facebook_pinch_2018"
     },
     {
-        "duration": "217.0",
-        "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll"
+        "duration": "36.0",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/gmail_pinch_2018"
     },
     {
-        "duration": "122.0",
-        "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll:2018"
+        "duration": "18.0",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_calendar_pinch_2018"
     },
     {
-        "duration": "92.0",
-        "name": "system_health.common_mobile/browse:social:instagram"
+        "duration": "18.0",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_image_pinch_2018"
     },
     {
-        "duration": "105.0",
-        "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll"
+        "duration": "19.0",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/twitter_pinch_2018"
     },
     {
-        "duration": "128.0",
-        "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll"
+        "duration": "31.0",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_news_pinch_2018"
     },
     {
-        "duration": "65.0",
-        "name": "system_health.common_mobile/browse:social:twitter"
+        "duration": "29.0",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_sports_pinch_2018"
     },
     {
-        "duration": "82.0",
-        "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll"
+        "duration": "20.0",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/youtube_pinch_2018"
     },
     {
-        "duration": "114.0",
-        "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll:2018"
+        "duration": "20.0",
+        "name": "smoothness.tough_pinch_zoom_cases/amazon_pinch_2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "smoothness.tough_pinch_zoom_cases/blogspot_pinch_2018"
+    },
+    {
+        "duration": "20.0",
+        "name": "smoothness.tough_pinch_zoom_cases/booking_pinch_2018"
+    },
+    {
+        "duration": "20.0",
+        "name": "smoothness.tough_pinch_zoom_cases/espn_pinch_2018"
+    },
+    {
+        "duration": "19.0",
+        "name": "smoothness.tough_pinch_zoom_cases/facebook_pinch_2018"
+    },
+    {
+        "duration": "33.0",
+        "name": "smoothness.tough_pinch_zoom_cases/gmail_pinch_2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "smoothness.tough_pinch_zoom_cases/google_calendar_pinch_2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "smoothness.tough_pinch_zoom_cases/google_image_pinch_2018"
+    },
+    {
+        "duration": "19.0",
+        "name": "smoothness.tough_pinch_zoom_cases/twitter_pinch_2018"
+    },
+    {
+        "duration": "29.0",
+        "name": "smoothness.tough_pinch_zoom_cases/yahoo_news_pinch_2018"
+    },
+    {
+        "duration": "30.0",
+        "name": "smoothness.tough_pinch_zoom_cases/yahoo_sports_pinch_2018"
+    },
+    {
+        "duration": "19.0",
+        "name": "smoothness.tough_pinch_zoom_cases/youtube_pinch_2018"
+    },
+    {
+        "duration": "34.0",
+        "name": "speedometer-future/http://browserbench.org/Speedometer/"
+    },
+    {
+        "duration": "33.0",
+        "name": "speedometer/http://browserbench.org/Speedometer/"
+    },
+    {
+        "duration": "56.0",
+        "name": "speedometer2-future/Speedometer2"
     },
     {
         "duration": "54.0",
+        "name": "speedometer2/Speedometer2"
+    },
+    {
+        "duration": "136.0",
+        "name": "startup.mobile/cct:coldish:bbc"
+    },
+    {
+        "duration": "144.0",
+        "name": "startup.mobile/intent:coldish:bbc"
+    },
+    {
+        "duration": "117.0",
+        "name": "startup.mobile/intent:warm:bbc"
+    },
+    {
+        "duration": "91.0",
+        "name": "startup.mobile/maps_pwa:with_http_cache"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.common_mobile/background:media:imgur"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.common_mobile/background:search:google"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.common_mobile/background:social:facebook"
+    },
+    {
+        "duration": "80.0",
+        "name": "system_health.common_mobile/browse:chrome:newtab"
+    },
+    {
+        "duration": "26.0",
+        "name": "system_health.common_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "76.0",
+        "name": "system_health.common_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "45.0",
+        "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "43.0",
+        "name": "system_health.common_mobile/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "70.0",
+        "name": "system_health.common_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "91.0",
+        "name": "system_health.common_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "65.0",
+        "name": "system_health.common_mobile/browse:news:cnn"
+    },
+    {
+        "duration": "64.0",
+        "name": "system_health.common_mobile/browse:news:cnn:2018"
+    },
+    {
+        "duration": "61.0",
+        "name": "system_health.common_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "55.0",
+        "name": "system_health.common_mobile/browse:news:qq"
+    },
+    {
+        "duration": "49.0",
+        "name": "system_health.common_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "100.0",
+        "name": "system_health.common_mobile/browse:news:toi"
+    },
+    {
+        "duration": "49.0",
+        "name": "system_health.common_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "25.0",
+        "name": "system_health.common_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "57.0",
+        "name": "system_health.common_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "29.0",
+        "name": "system_health.common_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "64.0",
+        "name": "system_health.common_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "95.0",
+        "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "81.0",
+        "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "77.0",
+        "name": "system_health.common_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "78.0",
+        "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "82.0",
+        "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "76.0",
+        "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "49.0",
+        "name": "system_health.common_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "59.0",
+        "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "79.0",
+        "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "42.0",
         "name": "system_health.common_mobile/browse:tools:maps"
     },
     {
@@ -3940,699 +3656,719 @@
         "name": "system_health.common_mobile/load:chrome:blank"
     },
     {
-        "duration": "28.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:games:bubbles"
     },
     {
-        "duration": "24.0",
+        "duration": "17.0",
         "name": "system_health.common_mobile/load:games:lazors"
     },
     {
-        "duration": "36.0",
+        "duration": "24.0",
         "name": "system_health.common_mobile/load:games:spychase"
     },
     {
-        "duration": "37.0",
+        "duration": "26.0",
         "name": "system_health.common_mobile/load:games:spychase:2018"
     },
     {
-        "duration": "27.0",
+        "duration": "21.0",
         "name": "system_health.common_mobile/load:media:dailymotion"
     },
     {
-        "duration": "26.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:media:facebook_photos"
     },
     {
-        "duration": "29.0",
+        "duration": "22.0",
         "name": "system_health.common_mobile/load:media:flickr:2018"
     },
     {
-        "duration": "26.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:media:google_images"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:media:google_images:2018"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:media:imgur"
     },
     {
-        "duration": "34.0",
+        "duration": "23.0",
         "name": "system_health.common_mobile/load:media:imgur:2018"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:media:soundcloud"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:media:soundcloud:2018"
     },
     {
-        "duration": "26.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:media:youtube"
     },
     {
-        "duration": "28.0",
+        "duration": "21.0",
         "name": "system_health.common_mobile/load:media:youtube:2018"
     },
     {
-        "duration": "36.0",
+        "duration": "24.0",
         "name": "system_health.common_mobile/load:news:cnn"
     },
     {
-        "duration": "33.0",
+        "duration": "24.0",
         "name": "system_health.common_mobile/load:news:cnn:2018"
     },
     {
-        "duration": "29.0",
+        "duration": "21.0",
         "name": "system_health.common_mobile/load:news:irctc"
     },
     {
-        "duration": "29.0",
+        "duration": "21.0",
         "name": "system_health.common_mobile/load:news:nytimes"
     },
     {
-        "duration": "27.0",
+        "duration": "21.0",
         "name": "system_health.common_mobile/load:news:qq"
     },
     {
-        "duration": "26.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:news:reddit"
     },
     {
-        "duration": "27.0",
+        "duration": "20.0",
         "name": "system_health.common_mobile/load:news:washingtonpost"
     },
     {
-        "duration": "26.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:news:wikipedia"
     },
     {
-        "duration": "26.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:news:wikipedia:2018"
     },
     {
-        "duration": "28.0",
+        "duration": "22.0",
         "name": "system_health.common_mobile/load:search:baidu"
     },
     {
-        "duration": "30.0",
+        "duration": "22.0",
         "name": "system_health.common_mobile/load:search:baidu:2018"
     },
     {
-        "duration": "26.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:search:ebay"
     },
     {
-        "duration": "28.0",
+        "duration": "20.0",
         "name": "system_health.common_mobile/load:search:ebay:2018"
     },
     {
-        "duration": "24.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:search:google"
     },
     {
-        "duration": "26.0",
+        "duration": "20.0",
         "name": "system_health.common_mobile/load:search:google:2018"
     },
     {
-        "duration": "27.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:search:taobao"
     },
     {
-        "duration": "25.0",
+        "duration": "17.0",
         "name": "system_health.common_mobile/load:search:yahoo"
     },
     {
-        "duration": "24.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:search:yahoo:2018"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:search:yandex"
     },
     {
-        "duration": "27.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:search:yandex:2018"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:social:twitter"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:tools:docs"
     },
     {
-        "duration": "28.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:tools:drive"
     },
     {
-        "duration": "24.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:tools:dropbox"
     },
     {
-        "duration": "26.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:tools:stackoverflow"
     },
     {
-        "duration": "26.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:tools:stackoverflow:2018"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "system_health.common_mobile/load:tools:weather"
     },
     {
-        "duration": "30.0",
+        "duration": "24.0",
         "name": "system_health.memory_mobile/background:media:imgur"
     },
     {
-        "duration": "30.0",
+        "duration": "24.0",
         "name": "system_health.memory_mobile/background:search:google"
     },
     {
-        "duration": "32.0",
+        "duration": "23.0",
         "name": "system_health.memory_mobile/background:social:facebook"
     },
     {
-        "duration": "82.0",
+        "duration": "76.0",
         "name": "system_health.memory_mobile/browse:chrome:newtab"
     },
     {
-        "duration": "36.0",
+        "duration": "30.0",
         "name": "system_health.memory_mobile/browse:chrome:omnibox"
     },
     {
-        "duration": "80.0",
+        "duration": "74.0",
         "name": "system_health.memory_mobile/browse:media:facebook_photos"
     },
     {
-        "duration": "52.0",
+        "duration": "45.0",
         "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "75.0",
+        "duration": "43.0",
+        "name": "system_health.memory_mobile/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "69.0",
         "name": "system_health.memory_mobile/browse:media:imgur"
     },
     {
-        "duration": "87.0",
+        "duration": "81.0",
         "name": "system_health.memory_mobile/browse:media:youtube"
     },
     {
-        "duration": "63.0",
+        "duration": "59.0",
         "name": "system_health.memory_mobile/browse:news:cnn"
     },
     {
-        "duration": "55.0",
+        "duration": "51.0",
         "name": "system_health.memory_mobile/browse:news:cnn:2018"
     },
     {
-        "duration": "64.0",
+        "duration": "60.0",
         "name": "system_health.memory_mobile/browse:news:cricbuzz"
     },
     {
-        "duration": "60.0",
+        "duration": "55.0",
         "name": "system_health.memory_mobile/browse:news:qq"
     },
     {
-        "duration": "54.0",
+        "duration": "49.0",
         "name": "system_health.memory_mobile/browse:news:reddit"
     },
     {
-        "duration": "76.0",
+        "duration": "74.0",
         "name": "system_health.memory_mobile/browse:news:toi"
     },
     {
-        "duration": "53.0",
+        "duration": "48.0",
         "name": "system_health.memory_mobile/browse:news:washingtonpost"
     },
     {
-        "duration": "57.0",
-        "name": "system_health.memory_mobile/browse:shopping:amazon"
-    },
-    {
-        "duration": "59.0",
-        "name": "system_health.memory_mobile/browse:shopping:avito"
-    },
-    {
-        "duration": "37.0",
-        "name": "system_health.memory_mobile/browse:shopping:lazada"
-    },
-    {
-        "duration": "65.0",
-        "name": "system_health.memory_mobile/browse:social:facebook"
-    },
-    {
-        "duration": "80.0",
-        "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "80.0",
-        "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll:2018"
-    },
-    {
-        "duration": "76.0",
-        "name": "system_health.memory_mobile/browse:social:instagram"
-    },
-    {
-        "duration": "74.0",
-        "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll"
-    },
-    {
-        "duration": "75.0",
-        "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "53.0",
-        "name": "system_health.memory_mobile/browse:social:twitter"
-    },
-    {
-        "duration": "58.0",
-        "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "74.0",
-        "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "50.0",
-        "name": "system_health.memory_mobile/browse:tools:maps"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_mobile/load:chrome:blank"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:games:bubbles"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:games:lazors"
-    },
-    {
-        "duration": "33.0",
-        "name": "system_health.memory_mobile/load:games:spychase"
-    },
-    {
-        "duration": "33.0",
-        "name": "system_health.memory_mobile/load:games:spychase:2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_mobile/load:media:dailymotion"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:media:facebook_photos"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_mobile/load:media:flickr:2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:media:google_images"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:media:google_images:2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:media:imgur"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_mobile/load:media:imgur:2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:media:soundcloud"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:media:soundcloud:2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:media:youtube"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:media:youtube:2018"
-    },
-    {
-        "duration": "34.0",
-        "name": "system_health.memory_mobile/load:news:cnn"
-    },
-    {
-        "duration": "32.0",
-        "name": "system_health.memory_mobile/load:news:cnn:2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:news:irctc"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_mobile/load:news:nytimes"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_mobile/load:news:qq"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:news:reddit"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:news:washingtonpost"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:news:wikipedia"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:news:wikipedia:2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_mobile/load:search:baidu"
-    },
-    {
-        "duration": "32.0",
-        "name": "system_health.memory_mobile/load:search:baidu:2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:search:ebay"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:search:ebay:2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:search:google"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:search:google:2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_mobile/load:search:taobao"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:search:yahoo"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:search:yahoo:2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:search:yandex"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:search:yandex:2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:social:twitter"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:tools:docs"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:tools:drive"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:tools:dropbox"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:tools:stackoverflow"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:tools:stackoverflow:2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_mobile/load:tools:weather"
-    },
-    {
-        "duration": "16.0",
-        "name": "tracing.tracing_with_background_memory_infra/Facebook"
-    },
-    {
-        "duration": "16.0",
-        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
-    },
-    {
-        "duration": "15.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
-    },
-    {
-        "duration": "15.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
-    },
-    {
-        "duration": "15.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
-    },
-    {
-        "duration": "15.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
-    },
-    {
-        "duration": "16.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
-    },
-    {
-        "duration": "22.0",
-        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
-    },
-    {
-        "duration": "16.0",
-        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
-    },
-    {
-        "duration": "135.0",
-        "name": "v8.browsing_mobile-future/browse:chrome:newtab"
-    },
-    {
-        "duration": "40.0",
-        "name": "v8.browsing_mobile-future/browse:chrome:omnibox"
-    },
-    {
-        "duration": "117.0",
-        "name": "v8.browsing_mobile-future/browse:media:facebook_photos"
-    },
-    {
-        "duration": "88.0",
-        "name": "v8.browsing_mobile-future/browse:media:flickr_infinite_scroll"
-    },
-    {
-        "duration": "111.0",
-        "name": "v8.browsing_mobile-future/browse:media:imgur"
-    },
-    {
-        "duration": "135.0",
-        "name": "v8.browsing_mobile-future/browse:media:youtube"
-    },
-    {
-        "duration": "208.0",
-        "name": "v8.browsing_mobile-future/browse:news:cnn"
-    },
-    {
-        "duration": "138.0",
-        "name": "v8.browsing_mobile-future/browse:news:cnn:2018"
-    },
-    {
-        "duration": "90.0",
-        "name": "v8.browsing_mobile-future/browse:news:cricbuzz"
-    },
-    {
-        "duration": "92.0",
-        "name": "v8.browsing_mobile-future/browse:news:qq"
-    },
-    {
-        "duration": "78.0",
-        "name": "v8.browsing_mobile-future/browse:news:reddit"
-    },
-    {
-        "duration": "292.0",
-        "name": "v8.browsing_mobile-future/browse:news:toi"
-    },
-    {
-        "duration": "88.0",
-        "name": "v8.browsing_mobile-future/browse:news:washingtonpost"
-    },
-    {
-        "duration": "129.0",
-        "name": "v8.browsing_mobile-future/browse:shopping:amazon"
+        "duration": "25.0",
+        "name": "system_health.memory_mobile/browse:search:amp:2018"
     },
     {
         "duration": "52.0",
-        "name": "v8.browsing_mobile-future/browse:shopping:lazada"
+        "name": "system_health.memory_mobile/browse:shopping:amazon"
     },
     {
-        "duration": "120.0",
-        "name": "v8.browsing_mobile-future/browse:social:facebook"
+        "duration": "31.0",
+        "name": "system_health.memory_mobile/browse:shopping:lazada"
     },
     {
-        "duration": "467.0",
-        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll"
+        "duration": "62.0",
+        "name": "system_health.memory_mobile/browse:social:facebook"
     },
     {
-        "duration": "246.0",
-        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll:2018"
+        "duration": "70.0",
+        "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "132.0",
-        "name": "v8.browsing_mobile-future/browse:social:instagram"
+        "duration": "70.0",
+        "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "164.0",
-        "name": "v8.browsing_mobile-future/browse:social:pinterest_infinite_scroll"
+        "duration": "72.0",
+        "name": "system_health.memory_mobile/browse:social:instagram"
     },
     {
-        "duration": "245.0",
-        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll"
+        "duration": "70.0",
+        "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll"
     },
     {
-        "duration": "79.0",
-        "name": "v8.browsing_mobile-future/browse:social:twitter"
-    },
-    {
-        "duration": "136.0",
-        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "208.0",
-        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll:2018"
+        "duration": "69.0",
+        "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll"
     },
     {
         "duration": "67.0",
-        "name": "v8.browsing_mobile-future/browse:tools:maps"
+        "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018"
     },
     {
-        "duration": "135.0",
-        "name": "v8.browsing_mobile/browse:chrome:newtab"
+        "duration": "49.0",
+        "name": "system_health.memory_mobile/browse:social:twitter"
     },
     {
-        "duration": "40.0",
-        "name": "v8.browsing_mobile/browse:chrome:omnibox"
+        "duration": "54.0",
+        "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "114.0",
-        "name": "v8.browsing_mobile/browse:media:facebook_photos"
+        "duration": "67.0",
+        "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "90.0",
-        "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll"
+        "duration": "44.0",
+        "name": "system_health.memory_mobile/browse:tools:maps"
     },
     {
-        "duration": "113.0",
-        "name": "v8.browsing_mobile/browse:media:imgur"
+        "duration": "24.0",
+        "name": "system_health.memory_mobile/load:chrome:blank"
     },
     {
-        "duration": "141.0",
-        "name": "v8.browsing_mobile/browse:media:youtube"
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:games:bubbles"
     },
     {
-        "duration": "197.0",
-        "name": "v8.browsing_mobile/browse:news:cnn"
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:games:lazors"
     },
     {
-        "duration": "136.0",
-        "name": "v8.browsing_mobile/browse:news:cnn:2018"
+        "duration": "27.0",
+        "name": "system_health.memory_mobile/load:games:spychase"
     },
     {
-        "duration": "90.0",
-        "name": "v8.browsing_mobile/browse:news:cricbuzz"
+        "duration": "27.0",
+        "name": "system_health.memory_mobile/load:games:spychase:2018"
     },
     {
-        "duration": "92.0",
-        "name": "v8.browsing_mobile/browse:news:qq"
+        "duration": "24.0",
+        "name": "system_health.memory_mobile/load:media:dailymotion"
     },
     {
-        "duration": "78.0",
-        "name": "v8.browsing_mobile/browse:news:reddit"
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:media:facebook_photos"
     },
     {
-        "duration": "304.0",
-        "name": "v8.browsing_mobile/browse:news:toi"
+        "duration": "25.0",
+        "name": "system_health.memory_mobile/load:media:flickr:2018"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:media:google_images"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:media:google_images:2018"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:media:imgur"
+    },
+    {
+        "duration": "25.0",
+        "name": "system_health.memory_mobile/load:media:imgur:2018"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:media:soundcloud"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:media:soundcloud:2018"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:media:youtube"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:media:youtube:2018"
+    },
+    {
+        "duration": "30.0",
+        "name": "system_health.memory_mobile/load:news:cnn"
+    },
+    {
+        "duration": "28.0",
+        "name": "system_health.memory_mobile/load:news:cnn:2018"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:news:irctc"
+    },
+    {
+        "duration": "25.0",
+        "name": "system_health.memory_mobile/load:news:nytimes"
+    },
+    {
+        "duration": "25.0",
+        "name": "system_health.memory_mobile/load:news:qq"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:news:reddit"
+    },
+    {
+        "duration": "25.0",
+        "name": "system_health.memory_mobile/load:news:washingtonpost"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:news:wikipedia"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:news:wikipedia:2018"
+    },
+    {
+        "duration": "29.0",
+        "name": "system_health.memory_mobile/load:search:baidu"
+    },
+    {
+        "duration": "26.0",
+        "name": "system_health.memory_mobile/load:search:baidu:2018"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:search:ebay"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:search:ebay:2018"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:search:google"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:search:google:2018"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:search:taobao"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:search:yahoo"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:search:yahoo:2018"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:search:yandex"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:search:yandex:2018"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:social:twitter"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:tools:docs"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:tools:drive"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:tools:dropbox"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:tools:stackoverflow"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:tools:stackoverflow:2018"
+    },
+    {
+        "duration": "24.0",
+        "name": "system_health.memory_mobile/load:tools:weather"
+    },
+    {
+        "duration": "10.0",
+        "name": "tracing.tracing_with_background_memory_infra/Facebook"
+    },
+    {
+        "duration": "11.0",
+        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
+    },
+    {
+        "duration": "10.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
+    },
+    {
+        "duration": "10.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
+    },
+    {
+        "duration": "9.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
+    },
+    {
+        "duration": "11.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
+    },
+    {
+        "duration": "11.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
+    },
+    {
+        "duration": "14.0",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "11.0",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
     },
     {
         "duration": "88.0",
-        "name": "v8.browsing_mobile/browse:news:washingtonpost"
+        "name": "v8.browsing_mobile-future/browse:chrome:newtab"
     },
     {
-        "duration": "126.0",
-        "name": "v8.browsing_mobile/browse:shopping:amazon"
+        "duration": "28.0",
+        "name": "v8.browsing_mobile-future/browse:chrome:omnibox"
     },
     {
-        "duration": "110.0",
-        "name": "v8.browsing_mobile/browse:shopping:avito"
+        "duration": "82.0",
+        "name": "v8.browsing_mobile-future/browse:media:facebook_photos"
+    },
+    {
+        "duration": "54.0",
+        "name": "v8.browsing_mobile-future/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "47.0",
+        "name": "v8.browsing_mobile-future/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "76.0",
+        "name": "v8.browsing_mobile-future/browse:media:imgur"
+    },
+    {
+        "duration": "101.0",
+        "name": "v8.browsing_mobile-future/browse:media:youtube"
+    },
+    {
+        "duration": "115.0",
+        "name": "v8.browsing_mobile-future/browse:news:cnn"
+    },
+    {
+        "duration": "73.0",
+        "name": "v8.browsing_mobile-future/browse:news:cnn:2018"
+    },
+    {
+        "duration": "61.0",
+        "name": "v8.browsing_mobile-future/browse:news:cricbuzz"
+    },
+    {
+        "duration": "60.0",
+        "name": "v8.browsing_mobile-future/browse:news:qq"
     },
     {
         "duration": "53.0",
+        "name": "v8.browsing_mobile-future/browse:news:reddit"
+    },
+    {
+        "duration": "105.0",
+        "name": "v8.browsing_mobile-future/browse:news:toi"
+    },
+    {
+        "duration": "54.0",
+        "name": "v8.browsing_mobile-future/browse:news:washingtonpost"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.browsing_mobile-future/browse:search:amp:2018"
+    },
+    {
+        "duration": "65.0",
+        "name": "v8.browsing_mobile-future/browse:shopping:amazon"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.browsing_mobile-future/browse:shopping:lazada"
+    },
+    {
+        "duration": "72.0",
+        "name": "v8.browsing_mobile-future/browse:social:facebook"
+    },
+    {
+        "duration": "93.0",
+        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "89.0",
+        "name": "v8.browsing_mobile-future/browse:social:instagram"
+    },
+    {
+        "duration": "90.0",
+        "name": "v8.browsing_mobile-future/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "94.0",
+        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "88.0",
+        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "53.0",
+        "name": "v8.browsing_mobile-future/browse:social:twitter"
+    },
+    {
+        "duration": "91.0",
+        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "46.0",
+        "name": "v8.browsing_mobile-future/browse:tools:maps"
+    },
+    {
+        "duration": "87.0",
+        "name": "v8.browsing_mobile/browse:chrome:newtab"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.browsing_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "86.0",
+        "name": "v8.browsing_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "52.0",
+        "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "49.0",
+        "name": "v8.browsing_mobile/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "77.0",
+        "name": "v8.browsing_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "101.0",
+        "name": "v8.browsing_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "112.0",
+        "name": "v8.browsing_mobile/browse:news:cnn"
+    },
+    {
+        "duration": "74.0",
+        "name": "v8.browsing_mobile/browse:news:cnn:2018"
+    },
+    {
+        "duration": "63.0",
+        "name": "v8.browsing_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "60.0",
+        "name": "v8.browsing_mobile/browse:news:qq"
+    },
+    {
+        "duration": "52.0",
+        "name": "v8.browsing_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "106.0",
+        "name": "v8.browsing_mobile/browse:news:toi"
+    },
+    {
+        "duration": "55.0",
+        "name": "v8.browsing_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.browsing_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "65.0",
+        "name": "v8.browsing_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "32.0",
         "name": "v8.browsing_mobile/browse:shopping:lazada"
     },
     {
-        "duration": "124.0",
+        "duration": "73.0",
         "name": "v8.browsing_mobile/browse:social:facebook"
     },
     {
-        "duration": "488.0",
+        "duration": "92.0",
         "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "248.0",
+        "duration": "94.0",
         "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "137.0",
+        "duration": "88.0",
         "name": "v8.browsing_mobile/browse:social:instagram"
     },
     {
-        "duration": "163.0",
+        "duration": "90.0",
         "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll"
     },
     {
-        "duration": "240.0",
+        "duration": "94.0",
         "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "79.0",
+        "duration": "88.0",
+        "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "52.0",
         "name": "v8.browsing_mobile/browse:social:twitter"
     },
     {
-        "duration": "136.0",
+        "duration": "68.0",
         "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "210.0",
+        "duration": "92.0",
         "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "64.0",
+        "duration": "47.0",
         "name": "v8.browsing_mobile/browse:tools:maps"
     },
     {
@@ -4640,7 +4376,7 @@
         "name": "wasm/AsmJsZenGarden"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "wasm/WasmSpaceBuggy"
     },
     {
@@ -4656,39 +4392,39 @@
         "name": "wasm/WasmTanks"
     },
     {
-        "duration": "15.0",
+        "duration": "14.0",
         "name": "wasm/WasmZenGarden"
     },
     {
-        "duration": "24.0",
+        "duration": "17.0",
         "name": "webrtc/10s_datachannel_transfer"
     },
     {
-        "duration": "28.0",
+        "duration": "20.0",
         "name": "webrtc/canvas_capture_peer_connection"
     },
     {
-        "duration": "37.0",
+        "duration": "29.0",
         "name": "webrtc/codec_constraints_h264"
     },
     {
-        "duration": "38.0",
+        "duration": "29.0",
         "name": "webrtc/codec_constraints_vp8"
     },
     {
-        "duration": "37.0",
+        "duration": "29.0",
         "name": "webrtc/codec_constraints_vp9"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "webrtc/hd_local_stream_10s"
     },
     {
-        "duration": "45.0",
+        "duration": "31.0",
         "name": "webrtc/multiple_peerconnections"
     },
     {
-        "duration": "67.0",
+        "duration": "39.0",
         "name": "webrtc/pause_play_peerconnections"
     }
 ]
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/android-pixel2_webview-perf_timing.json b/tools/perf/core/shard_maps/timing_data/android-pixel2_webview-perf_timing.json
index cd64f47..bd9f39f 100644
--- a/tools/perf/core/shard_maps/timing_data/android-pixel2_webview-perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/android-pixel2_webview-perf_timing.json
@@ -1,62 +1,622 @@
 [
     {
-        "duration": "30.0",
+        "duration": "32.0",
+        "name": "blink_perf.accessibility/line-breaks.html"
+    },
+    {
+        "duration": "24.0",
         "name": "blink_perf.accessibility/textarea-append.html"
     },
     {
+        "duration": "16.0",
+        "name": "blink_perf.bindings/append-child.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/create-element.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/document-implementation.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/dom-attribute-on-prototoype.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/first-child.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.bindings/gc-forest.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/gc-mini-tree.html"
+    },
+    {
+        "duration": "30.0",
+        "name": "blink_perf.bindings/gc-tree.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/get-attribute-rare.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/get-attribute.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/get-element-by-id.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.bindings/get-elements-by-tag-name.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/id-getter.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/id-setter.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/indexed-getter.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.bindings/insert-before.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/named-property-enumerator.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.bindings/node-list-access.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/node-type.html"
+    },
+    {
+        "duration": "6.0",
+        "name": "blink_perf.bindings/post-message.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/sequence-conversion-array.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/sequence-conversion-custom-iterator.html"
+    },
+    {
+        "duration": "6.0",
+        "name": "blink_perf.bindings/serialize-array.html"
+    },
+    {
+        "duration": "5.0",
+        "name": "blink_perf.bindings/serialize-long-string.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.bindings/serialize-map.html"
+    },
+    {
+        "duration": "5.0",
+        "name": "blink_perf.bindings/serialize-nested-array.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/set-attribute-rare.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/set-attribute.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.bindings/structured-clone-json-deserialize.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.bindings/structured-clone-json-serialize.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.bindings/typed-array-construct-from-array.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/typed-array-construct-from-same-type.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/typed-array-construct-from-typed.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/typed-array-set-from-typed.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/undefined-first-child.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/undefined-get-element-by-id.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/undefined-id-getter.html"
+    },
+    {
+        "duration": "6.0",
+        "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html"
+    },
+    {
+        "duration": "30.0",
+        "name": "blink_perf.bindings/worker-structured-clone-json-from-worker.html"
+    },
+    {
+        "duration": "30.0",
+        "name": "blink_perf.bindings/worker-structured-clone-json-roundtrip.html"
+    },
+    {
+        "duration": "30.0",
+        "name": "blink_perf.bindings/worker-structured-clone-json-to-worker.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.bindings/worker-structured-clone-workerDOM-DBMon-from-worker.html"
+    },
+    {
+        "duration": "5.0",
+        "name": "blink_perf.bindings/worker-structured-clone-workerDOM-Map-from-worker.html"
+    },
+    {
+        "duration": "64.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-from-worker.html"
+    },
+    {
+        "duration": "63.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-roundtrip.html"
+    },
+    {
+        "duration": "63.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-to-worker.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.bindings/worker-transferable-from-worker.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.bindings/worker-transferable-roundtrip.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.bindings/worker-transferable-to-worker.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.canvas/createImageBitmapFromImageData.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.canvas/createImageBitmapFromImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.canvas/docs-paper.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/docs-paper_RAF.html?RAF"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.canvas/docs-resume.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/docs-resume_RAF.html?RAF"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.canvas/docs-table.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/docs-table_RAF.html?RAF"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "6.0",
+        "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "6.0",
+        "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "6.0",
+        "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "5.0",
+        "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "6.0",
+        "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.canvas/drawimage-not-pixelaligned.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.canvas/drawimage-not-pixelaligned_RAF.html?RAF"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.canvas/drawimage.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.canvas/drawimage_RAF.html?RAF"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.canvas/getImageData.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.canvas/getImageDataColorManaged.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.canvas/getImageDataColorManaged_RAF.html?RAF"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.canvas/getImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "5.0",
+        "name": "blink_perf.canvas/gpu-bound-shader.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/gpu-bound-shader_RAF.html?RAF"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.canvas/putImageData.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.canvas/putImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.canvas/sheets-render.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/sheets-render_RAF.html?RAF"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.canvas/toBlob_duration.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.canvas/toBlob_duration_RAF.html?RAF"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/toBlob_duration_jpeg.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/toBlob_duration_jpeg_RAF.html?RAF"
+    },
+    {
+        "duration": "6.0",
+        "name": "blink_perf.canvas/transferFromImageBitmap.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/transferFromImageBitmap_RAF.html?RAF"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/upload-canvas-2d-to-texture.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.canvas/upload-canvas-2d-to-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/upload-video-to-sub-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.canvas/upload-video-to-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/upload-webgl-to-texture.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.canvas/upload-webgl-to-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "20.0",
+        "name": "blink_perf.css/AttributeDescendantSelector.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.css/CSSPropertySetterGetter.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.css/CSSPropertySetterGetterMethods.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.css/CSSPropertyUpdateValue.html"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.css/ChangeStyleChildClassSelector.html"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.css/ChangeStyleChildElementSelectors.html"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.css/ChangeStyleElementSelector.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.css/ChangeStyleShallowTree.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.css/ChangeStyleSingleClassSelector.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.css/ChangeStyleUniversalSelector.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.css/ClassDescendantSelector.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.css/ClassInvalidation.html"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.css/CustomPropertiesCascade.html"
+    },
+    {
+        "duration": "6.0",
+        "name": "blink_perf.css/CustomPropertiesNonRootInheritance.html"
+    },
+    {
+        "duration": "6.0",
+        "name": "blink_perf.css/CustomPropertiesRootInheritance.html"
+    },
+    {
+        "duration": "6.0",
+        "name": "blink_perf.css/CustomPropertiesVarAlias.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.css/FocusUpdate.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.css/LoadBootstrapBlog.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.css/LoadMaterializeStarterPage.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.css/LoadSemanticPageExample.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.css/PseudoClassSelectors.html"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.css/SelectorCountScaling.html"
+    },
+    {
+        "duration": "33.0",
+        "name": "blink_perf.dom/custom-element-default-style-with-shadow.html"
+    },
+    {
+        "duration": "24.0",
+        "name": "blink_perf.dom/custom-element-default-style.html"
+    },
+    {
+        "duration": "71.0",
+        "name": "blink_perf.dom/long-sibling-list.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.dom/modify-element-classname.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.dom/modify-element-id.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.dom/modify-element-title.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.dom/select-multiple-add.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.dom/select-single-add.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.dom/select-single-remove.html"
+    },
+    {
         "duration": "22.0",
         "name": "blink_perf.events/EventsDispatching.html"
     },
     {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV0ShadowTrees.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html"
     },
     {
-        "duration": "24.0",
+        "duration": "21.0",
         "name": "blink_perf.events/EventsDispatchingInV0ShadowTrees.html"
     },
     {
-        "duration": "23.0",
+        "duration": "21.0",
         "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html"
     },
     {
-        "duration": "24.0",
+        "duration": "23.0",
         "name": "blink_perf.events/hit-test-lots-of-layers.html"
     },
     {
-        "duration": "65.0",
-        "name": "blink_perf.image_decoder/decode-gif.html"
-    },
-    {
-        "duration": "20.0",
-        "name": "blink_perf.image_decoder/decode-jpeg.html"
-    },
-    {
-        "duration": "54.0",
-        "name": "blink_perf.image_decoder/decode-lossless-webp.html"
+        "duration": "13.0",
+        "name": "blink_perf.events/is-input-pending-all-events.html"
     },
     {
         "duration": "13.0",
+        "name": "blink_perf.events/is-input-pending-default-events.html"
+    },
+    {
+        "duration": "52.0",
+        "name": "blink_perf.image_decoder/decode-gif.html"
+    },
+    {
+        "duration": "23.0",
+        "name": "blink_perf.image_decoder/decode-jpeg.html"
+    },
+    {
+        "duration": "58.0",
+        "name": "blink_perf.image_decoder/decode-lossless-webp.html"
+    },
+    {
+        "duration": "16.0",
         "name": "blink_perf.image_decoder/decode-lossy-webp.html"
     },
     {
-        "duration": "35.0",
+        "duration": "42.0",
         "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
     },
     {
-        "duration": "21.0",
+        "duration": "29.0",
         "name": "blink_perf.image_decoder/decode-png-palette.html"
     },
     {
-        "duration": "60.0",
+        "duration": "68.0",
         "name": "blink_perf.image_decoder/decode-png.html"
     },
     {
-        "duration": "21.0",
+        "duration": "17.0",
         "name": "blink_perf.layout/ArabicLineLayout.html"
     },
     {
@@ -68,7 +628,7 @@
         "name": "blink_perf.layout/SimpleTextPathLineLayout.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.layout/add-remove-inline-floats.html"
     },
     {
@@ -80,11 +640,11 @@
         "name": "blink_perf.layout/attach-inlines.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/auto-grid-lots-of-data.html"
     },
     {
-        "duration": "14.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/change-text-css-contain.html"
     },
     {
@@ -92,7 +652,7 @@
         "name": "blink_perf.layout/chapter-reflow-once-random.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.layout/chapter-reflow-once.html"
     },
     {
@@ -100,7 +660,7 @@
         "name": "blink_perf.layout/chapter-reflow-thrice.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/chapter-reflow-twice.html"
     },
     {
@@ -116,11 +676,19 @@
         "name": "blink_perf.layout/character_fallback_aat.html"
     },
     {
-        "duration": "17.0",
+        "duration": "15.0",
         "name": "blink_perf.layout/contain-content-style-change.html"
     },
     {
+        "duration": "12.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-blocks.html"
+    },
+    {
         "duration": "11.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-text.html"
+    },
+    {
+        "duration": "12.0",
         "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
     },
     {
@@ -140,7 +708,7 @@
         "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html"
     },
     {
-        "duration": "11.0",
+        "duration": "10.0",
         "name": "blink_perf.layout/flexbox-lots-of-data.html"
     },
     {
@@ -148,27 +716,27 @@
         "name": "blink_perf.layout/flexbox-row-nowrap.html"
     },
     {
-        "duration": "14.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/flexbox-row-stretch-height-definite.html"
     },
     {
-        "duration": "10.0",
+        "duration": "11.0",
         "name": "blink_perf.layout/flexbox-row-wrap.html"
     },
     {
-        "duration": "10.0",
+        "duration": "11.0",
         "name": "blink_perf.layout/flexbox-with-stretch-layout.html"
     },
     {
-        "duration": "21.0",
+        "duration": "15.0",
         "name": "blink_perf.layout/floats_100_100.html"
     },
     {
-        "duration": "21.0",
+        "duration": "15.0",
         "name": "blink_perf.layout/floats_100_100_nested.html"
     },
     {
-        "duration": "14.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/floats_10_1000.html"
     },
     {
@@ -188,103 +756,435 @@
         "name": "blink_perf.layout/floats_2_100_nested.html"
     },
     {
-        "duration": "11.0",
+        "duration": "10.0",
         "name": "blink_perf.layout/floats_50_100.html"
     },
     {
-        "duration": "11.0",
+        "duration": "10.0",
         "name": "blink_perf.layout/floats_50_100_nested.html"
     },
     {
-        "duration": "23.0",
-        "name": "blink_perf.owp_storage/blob-perf-files.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.owp_storage/blob-perf-ipc.html"
-    },
-    {
         "duration": "11.0",
-        "name": "blink_perf.owp_storage/blob-perf-shm.html"
+        "name": "blink_perf.layout/hindi-line-layout.html"
+    },
+    {
+        "duration": "6.0",
+        "name": "blink_perf.layout/japanese-kokoro-insert.html"
     },
     {
         "duration": "14.0",
+        "name": "blink_perf.layout/large-grid.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.layout/large-spanning-grid-item.html"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html"
+    },
+    {
+        "duration": "127.0",
+        "name": "blink_perf.layout/latin-ebook-resize.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.layout/latin-ebook.html"
+    },
+    {
+        "duration": "6.0",
+        "name": "blink_perf.layout/layers_overlap_2d.html"
+    },
+    {
+        "duration": "6.0",
+        "name": "blink_perf.layout/layers_overlap_3d.html"
+    },
+    {
+        "duration": "6.0",
+        "name": "blink_perf.layout/line-layout-fit-content-break-word.html"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.layout/line-layout-fit-content.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.layout/line-layout-line-height.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.layout/line-layout-repeat-append-select.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.layout/line-layout-repeat-append.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.layout/line-layout.html"
+    },
+    {
+        "duration": "5.0",
+        "name": "blink_perf.layout/long-line-nowrap-collapse.html"
+    },
+    {
+        "duration": "5.0",
+        "name": "blink_perf.layout/long-line-nowrap-spans-collapse.html"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.layout/long-line-nowrap.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.layout/many-block-children-auto-inline-size.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.layout/many-block-children-fixed-inline-size.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.layout/multicol/deeply-nested-tables.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.layout/multicol/lots-of-text-autofill.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.layout/multicol/lots-of-text-balanced-orphans-widows.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.layout/multicol/lots-of-text-balanced.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.layout/multicol/tall-content-short-columns.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.layout/nested-grid.html"
+    },
+    {
+        "duration": "38.0",
+        "name": "blink_perf.layout/nested-percent-height-tables.html"
+    },
+    {
+        "duration": "82.0",
+        "name": "blink_perf.layout/subtree-detaching.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.layout/word-break-break-all.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.layout/word-break-break-word.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.layout/word-wrap-break-word.html"
+    },
+    {
+        "duration": "21.0",
+        "name": "blink_perf.owp_storage/blob-perf-files.html"
+    },
+    {
+        "duration": "16.0",
+        "name": "blink_perf.owp_storage/blob-perf-ipc.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.owp_storage/blob-perf-shm.html"
+    },
+    {
+        "duration": "16.0",
         "name": "blink_perf.owp_storage/blob-perf-tiny.html"
     },
     {
-        "duration": "15.0",
+        "duration": "16.0",
         "name": "blink_perf.owp_storage/idb-load-docs.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
+        "name": "blink_perf.paint/appending-text.html"
+    },
+    {
+        "duration": "24.0",
+        "name": "blink_perf.paint/color-changes.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.paint/complex-content-slow-scroll.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.paint/complex-iframe-filtered.html"
+    },
+    {
+        "duration": "46.0",
+        "name": "blink_perf.paint/contain-update-layer-tree.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.paint/containment-resize.html"
+    },
+    {
+        "duration": "16.0",
+        "name": "blink_perf.paint/fixed-and-many-layers-scroll.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.paint/large-table-background-change-with-invisible-collapsed-borders.html"
+    },
+    {
+        "duration": "16.0",
+        "name": "blink_perf.paint/large-table-background-change-with-visible-collapsed-borders.html"
+    },
+    {
+        "duration": "20.0",
+        "name": "blink_perf.paint/large-table-background-change-with-zero-width-collapsed-borders.html"
+    },
+    {
+        "duration": "16.0",
+        "name": "blink_perf.paint/large-table-collapsed-border-change-with-backgrounds.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.paint/large-table-collapsed-border-change-with-text.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.paint/large-table-collapsed-border-change.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.paint/large-table-repaint.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.paint/move-text-with-mask.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.paint/select-all-words.html"
+    },
+    {
+        "duration": "28.0",
+        "name": "blink_perf.paint/transform-changes.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.parser/css-parser-yui.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.parser/html-parser-threaded.html"
+    },
+    {
+        "duration": "21.0",
+        "name": "blink_perf.parser/html-parser.html"
+    },
+    {
+        "duration": "72.0",
+        "name": "blink_perf.parser/html5-full-render.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.parser/iframe-append-remove.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.parser/innerHTML-setter-siblings.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.parser/innerHTML-setter.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.parser/query-selector-all-attribute-complex.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.parser/query-selector-all-attribute.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.parser/query-selector-all-class-deep.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.parser/query-selector-all-class-first.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.parser/query-selector-all-class-last.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.parser/query-selector-all-class.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.parser/query-selector-all-deep.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.parser/query-selector-all-first.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.parser/query-selector-all-id-deep.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.parser/query-selector-all-id-first.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.parser/query-selector-all-id-last.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.parser/query-selector-all-last.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.parser/query-selector-deep.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.parser/query-selector-first.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.parser/query-selector-id-deep.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.parser/query-selector-id-last.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.parser/query-selector-last.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.parser/simple-url.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.parser/textarea-parsing.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.parser/tiny-innerHTML.html"
+    },
+    {
+        "duration": "16.0",
+        "name": "blink_perf.parser/url-parser.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.parser/xml-parser.html"
+    },
+    {
+        "duration": "12.0",
         "name": "blink_perf.shadow_dom/declarative-api.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/imperative-api-appendchild.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/imperative-api-assign.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/imperative-api-assigned-elements.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/imperative-api-assigned-slot.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary-large.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/imperative-api-detail-summary-large.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/imperative-api-detail-summary.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/imperative-api-insertbefore.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/imperative-api.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/shadow-style-share-attr-selectors.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/shadow-style-share-media-query.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/shadow-style-share-with-distribution.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/shadow-style-share.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/style-sheet-insert.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v0-changing-classname-with-shadow-dom.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v0-changing-classname-without-shadow-dom.html"
     },
     {
@@ -296,43 +1196,43 @@
         "name": "blink_perf.shadow_dom/v0-changing-select-without-shadow-dom.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v0-content-reprojection.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v0-large-distribution-without-layout.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v0-multiple-insertion-points.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v0-shadow-reprojection.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v0-small-distribution-with-layout.html"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v1-distribution.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v1-host-child-append.html"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html"
     },
     {
-        "duration": "57.0",
+        "duration": "39.0",
         "name": "blink_perf.shadow_dom/v1-large-deep-layout.html"
     },
     {
@@ -340,11 +1240,11 @@
         "name": "blink_perf.shadow_dom/v1-large-shallow-distribution.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v1-large-shallow-layout.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-re-layout.html"
     },
     {
@@ -356,7 +1256,7 @@
         "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-flatten.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-re-layout.html"
     },
     {
@@ -372,7 +1272,7 @@
         "name": "blink_perf.shadow_dom/v1-slot-append.html"
     },
     {
-        "duration": "7.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v1-small-deep-distribution.html"
     },
     {
@@ -388,7 +1288,7 @@
         "name": "blink_perf.shadow_dom/v1-small-shallow-layout.html"
     },
     {
-        "duration": "16.0",
+        "duration": "11.0",
         "name": "blink_perf.svg/AzLizardBenjiPark.html"
     },
     {
@@ -396,11 +1296,11 @@
         "name": "blink_perf.svg/Bamboo.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.svg/Cactus.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.svg/Cowboy.html"
     },
     {
@@ -420,7 +1320,7 @@
         "name": "blink_perf.svg/FlowerFromMyGarden.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.svg/FoodLeifLodahl.html"
     },
     {
@@ -432,7 +1332,7 @@
         "name": "blink_perf.svg/FrancoBolloGnomeEzechi.html"
     },
     {
-        "duration": "5.0",
+        "duration": "6.0",
         "name": "blink_perf.svg/GearFlowers.html"
     },
     {
@@ -452,7 +1352,7 @@
         "name": "blink_perf.svg/Samurai.html"
     },
     {
-        "duration": "60.0",
+        "duration": "82.0",
         "name": "blink_perf.svg/SierpinskiCarpet.html"
     },
     {
@@ -480,83 +1380,103 @@
         "name": "blink_perf.svg/Worldcup.html"
     },
     {
-        "duration": "13.0",
+        "duration": "40.0",
+        "name": "dromaeo/http://dromaeo.com?dom-attr"
+    },
+    {
+        "duration": "37.0",
+        "name": "dromaeo/http://dromaeo.com?dom-modify"
+    },
+    {
+        "duration": "52.0",
+        "name": "dromaeo/http://dromaeo.com?dom-query"
+    },
+    {
+        "duration": "32.0",
+        "name": "dromaeo/http://dromaeo.com?dom-traverse"
+    },
+    {
+        "duration": "9.0",
         "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html"
     },
     {
-        "duration": "281.0",
+        "duration": "9.0",
+        "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html"
+    },
+    {
+        "duration": "280.0",
         "name": "jetstream/http://browserbench.org/JetStream/"
     },
     {
-        "duration": "16.0",
+        "duration": "58.0",
+        "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html"
+    },
+    {
+        "duration": "10.0",
         "name": "loading.mobile/58Pic"
     },
     {
-        "duration": "166.0",
+        "duration": "42.0",
         "name": "loading.mobile/58Pic_3g"
     },
     {
-        "duration": "19.0",
+        "duration": "10.0",
         "name": "loading.mobile/Amazon"
     },
     {
-        "duration": "233.0",
+        "duration": "73.0",
         "name": "loading.mobile/Amazon_3g"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "loading.mobile/BOLNoticias"
     },
     {
-        "duration": "275.0",
-        "name": "loading.mobile/BOLNoticias_3g"
-    },
-    {
-        "duration": "22.0",
+        "duration": "11.0",
         "name": "loading.mobile/Baidu"
     },
     {
-        "duration": "173.0",
+        "duration": "69.0",
         "name": "loading.mobile/Baidu_3g"
     },
     {
-        "duration": "18.0",
+        "duration": "10.0",
         "name": "loading.mobile/Bradesco"
     },
     {
-        "duration": "18.0",
+        "duration": "12.0",
         "name": "loading.mobile/Dailymotion"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "loading.mobile/Dawn"
     },
     {
-        "duration": "16.0",
+        "duration": "8.0",
         "name": "loading.mobile/DevOpera_cold"
     },
     {
-        "duration": "168.0",
+        "duration": "51.0",
         "name": "loading.mobile/DevOpera_cold_3g"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "loading.mobile/DevOpera_hot"
     },
     {
-        "duration": "156.0",
+        "duration": "54.0",
         "name": "loading.mobile/DevOpera_hot_3g"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "loading.mobile/DevOpera_warm"
     },
     {
-        "duration": "148.0",
+        "duration": "50.0",
         "name": "loading.mobile/DevOpera_warm_3g"
     },
     {
-        "duration": "20.0",
+        "duration": "10.0",
         "name": "loading.mobile/Dramaq"
     },
     {
@@ -564,311 +1484,271 @@
         "name": "loading.mobile/Dramaq_3g"
     },
     {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "loading.mobile/EnquiryIndianRail"
     },
     {
-        "duration": "143.0",
+        "duration": "36.0",
         "name": "loading.mobile/EnquiryIndianRail_3g"
     },
     {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "loading.mobile/Facebook"
     },
     {
-        "duration": "36.0",
-        "name": "loading.mobile/Facebook_3g"
-    },
-    {
-        "duration": "17.0",
+        "duration": "10.0",
         "name": "loading.mobile/FlipBoard_cold"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "loading.mobile/FlipBoard_hot"
     },
     {
-        "duration": "38.0",
+        "duration": "26.0",
         "name": "loading.mobile/FlipBoard_hot_3g"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "loading.mobile/FlipBoard_warm"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "loading.mobile/FlipKart_cold"
     },
     {
-        "duration": "32.0",
+        "duration": "16.0",
         "name": "loading.mobile/FlipKart_hot"
     },
     {
-        "duration": "29.0",
+        "duration": "21.0",
         "name": "loading.mobile/FlipKart_hot_3g"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "loading.mobile/FlipKart_warm"
     },
     {
-        "duration": "252.0",
-        "name": "loading.mobile/FlipKart_warm_3g"
-    },
-    {
-        "duration": "16.0",
+        "duration": "10.0",
         "name": "loading.mobile/FranceTVInfo"
     },
     {
-        "duration": "65.0",
+        "duration": "71.0",
         "name": "loading.mobile/FranceTVInfo_3g"
     },
     {
-        "duration": "22.0",
+        "duration": "11.0",
         "name": "loading.mobile/GSShop"
     },
     {
-        "duration": "14.0",
+        "duration": "8.0",
         "name": "loading.mobile/GoogleBrazil"
     },
     {
-        "duration": "245.0",
-        "name": "loading.mobile/GoogleBrazil_3g"
-    },
-    {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "loading.mobile/GoogleIndia"
     },
     {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "loading.mobile/GoogleIndonesia"
     },
     {
-        "duration": "237.0",
-        "name": "loading.mobile/GoogleIndonesia_3g"
-    },
-    {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "loading.mobile/GoogleRedirectToGoogleJapan"
     },
     {
-        "duration": "18.0",
+        "duration": "11.0",
         "name": "loading.mobile/Hongkiat"
     },
     {
-        "duration": "271.0",
-        "name": "loading.mobile/Hongkiat_3g"
-    },
-    {
-        "duration": "20.0",
+        "duration": "11.0",
         "name": "loading.mobile/KapanLagi"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "loading.mobile/Kaskus"
     },
     {
-        "duration": "18.0",
+        "duration": "15.0",
         "name": "loading.mobile/LocalMoxie"
     },
     {
-        "duration": "14.0",
+        "duration": "9.0",
         "name": "loading.mobile/Locanto"
     },
     {
-        "duration": "102.0",
+        "duration": "29.0",
         "name": "loading.mobile/Locanto_3g"
     },
     {
-        "duration": "17.0",
+        "duration": "9.0",
         "name": "loading.mobile/OLX"
     },
     {
-        "duration": "249.0",
-        "name": "loading.mobile/OLX_3g"
-    },
-    {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "loading.mobile/QQNews"
     },
     {
-        "duration": "217.0",
+        "duration": "80.0",
         "name": "loading.mobile/QQNews_3g"
     },
     {
-        "duration": "16.0",
+        "duration": "8.0",
         "name": "loading.mobile/SlideShare"
     },
     {
-        "duration": "227.0",
+        "duration": "65.0",
         "name": "loading.mobile/SlideShare_3g"
     },
     {
-        "duration": "15.0",
+        "duration": "9.0",
         "name": "loading.mobile/Suumo_cold"
     },
     {
-        "duration": "37.0",
+        "duration": "14.0",
         "name": "loading.mobile/Suumo_cold_3g"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "loading.mobile/Suumo_hot"
     },
     {
-        "duration": "27.0",
+        "duration": "15.0",
         "name": "loading.mobile/Suumo_hot_3g"
     },
     {
-        "duration": "17.0",
+        "duration": "11.0",
         "name": "loading.mobile/Suumo_warm"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "loading.mobile/Suumo_warm_3g"
     },
     {
-        "duration": "17.0",
+        "duration": "9.0",
         "name": "loading.mobile/Thairath"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "loading.mobile/TheStar"
     },
     {
-        "duration": "21.0",
+        "duration": "11.0",
         "name": "loading.mobile/TribunNews"
     },
     {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "loading.mobile/Twitter"
     },
     {
-        "duration": "135.0",
+        "duration": "37.0",
         "name": "loading.mobile/Twitter_3g"
     },
     {
-        "duration": "16.0",
+        "duration": "10.0",
         "name": "loading.mobile/VoiceMemos_cold"
     },
     {
-        "duration": "260.0",
-        "name": "loading.mobile/VoiceMemos_cold_3g"
-    },
-    {
-        "duration": "22.0",
-        "name": "loading.mobile/VoiceMemos_hot"
-    },
-    {
-        "duration": "49.0",
-        "name": "loading.mobile/VoiceMemos_hot_3g"
-    },
-    {
-        "duration": "19.0",
-        "name": "loading.mobile/VoiceMemos_warm"
-    },
-    {
-        "duration": "46.0",
-        "name": "loading.mobile/VoiceMemos_warm_3g"
-    },
-    {
-        "duration": "14.0",
+        "duration": "8.0",
         "name": "loading.mobile/Wikipedia"
     },
     {
-        "duration": "191.0",
+        "duration": "59.0",
         "name": "loading.mobile/Wikipedia_3g"
     },
     {
-        "duration": "21.0",
+        "duration": "11.0",
         "name": "loading.mobile/YahooNews"
     },
     {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "loading.mobile/Youtube"
     },
     {
-        "duration": "252.0",
-        "name": "memory.long_running_idle_gmail_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "memory.top_10_mobile/after_http_en_m_wikipedia_org_wiki_Science"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "memory.top_10_mobile/after_http_m_intl_taobao_com_group_purchase_html"
     },
     {
-        "duration": "21.0",
+        "duration": "15.0",
         "name": "memory.top_10_mobile/after_http_m_youtube_com_results_q_science"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "memory.top_10_mobile/after_http_search_yahoo_com_search__ylt_p_google"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "memory.top_10_mobile/after_http_www_amazon_com_gp_aw_s_k_nexus"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "memory.top_10_mobile/after_http_www_baidu_com_s_word_google"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "memory.top_10_mobile/after_http_yandex_ru_touchsearch_text_science"
     },
     {
-        "duration": "29.0",
+        "duration": "15.0",
         "name": "memory.top_10_mobile/after_https_m_facebook_com_rihanna"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "memory.top_10_mobile/after_https_mobile_twitter_com_justinbieber_skip_interstitial_true"
     },
     {
-        "duration": "25.0",
+        "duration": "16.0",
+        "name": "memory.top_10_mobile/after_https_www_google_co_uk_hl_en_q_science"
+    },
+    {
+        "duration": "19.0",
         "name": "memory.top_10_mobile/http_en_m_wikipedia_org_wiki_Science"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "memory.top_10_mobile/http_m_intl_taobao_com_group_purchase_html"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "memory.top_10_mobile/http_m_youtube_com_results_q_science"
     },
     {
-        "duration": "24.0",
+        "duration": "18.0",
         "name": "memory.top_10_mobile/http_search_yahoo_com_search__ylt_p_google"
     },
     {
-        "duration": "25.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/http_www_amazon_com_gp_aw_s_k_nexus"
     },
     {
-        "duration": "27.0",
+        "duration": "21.0",
         "name": "memory.top_10_mobile/http_www_baidu_com_s_word_google"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "memory.top_10_mobile/http_yandex_ru_touchsearch_text_science"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
+        "name": "memory.top_10_mobile/https_m_facebook_com_rihanna"
+    },
+    {
+        "duration": "19.0",
         "name": "memory.top_10_mobile/https_mobile_twitter_com_justinbieber_skip_interstitial_true"
     },
     {
-        "duration": "63.0",
+        "duration": "20.0",
+        "name": "memory.top_10_mobile/https_www_google_co_uk_hl_en_q_science"
+    },
+    {
+        "duration": "59.0",
         "name": "octane/http://chromium.github.io/octane/index.html?auto=1"
     },
     {
-        "duration": "22.0",
-        "name": "oortonline_tbmv2/http://oortonline.gl/#run"
-    },
-    {
-        "duration": "63.0",
+        "duration": "64.0",
         "name": "power.typical_10_mobile/http://de.m.wikipedia.org/wiki/K%C3%B6lner_Dom"
     },
     {
@@ -880,15 +1760,15 @@
         "name": "power.typical_10_mobile/http://m.ebay.com/itm/351157205404"
     },
     {
-        "duration": "70.0",
+        "duration": "67.0",
         "name": "power.typical_10_mobile/http://m.facebook.com/barackobama"
     },
     {
-        "duration": "63.0",
+        "duration": "64.0",
         "name": "power.typical_10_mobile/http://m.huffpost.com/us/entry/6004486"
     },
     {
-        "duration": "62.0",
+        "duration": "63.0",
         "name": "power.typical_10_mobile/http://m.ynet.co.il"
     },
     {
@@ -896,27 +1776,27 @@
         "name": "power.typical_10_mobile/http://siriuslymeg.tumblr.com/"
     },
     {
-        "duration": "59.0",
+        "duration": "60.0",
         "name": "power.typical_10_mobile/http://wapbaike.baidu.com/"
     },
     {
-        "duration": "59.0",
+        "duration": "60.0",
         "name": "power.typical_10_mobile/http://www.cnn.com/2014/03/31/showbiz/tv/himym-finale/index.html"
     },
     {
-        "duration": "61.0",
+        "duration": "62.0",
         "name": "power.typical_10_mobile/http://www.rg.ru/2014/10/21/cska-site.html"
     },
     {
-        "duration": "63.0",
+        "duration": "64.0",
         "name": "power.typical_10_mobile/https://en.wikipedia.org/wiki/File:Rotating_earth_(large).gif"
     },
     {
-        "duration": "21.0",
+        "duration": "16.0",
         "name": "rasterize_and_record_micro.partial_invalidation/800_relpos_divs.html"
     },
     {
-        "duration": "31.0",
+        "duration": "26.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html"
     },
     {
@@ -936,19 +1816,19 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/ebay.html"
     },
     {
-        "duration": "19.0",
+        "duration": "24.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html"
     },
     {
-        "duration": "20.0",
+        "duration": "21.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html"
     },
     {
-        "duration": "35.0",
+        "duration": "36.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html"
     },
     {
-        "duration": "29.0",
+        "duration": "30.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/google.html"
     },
     {
@@ -964,7 +1844,7 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html"
     },
     {
-        "duration": "19.0",
+        "duration": "22.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html"
     },
     {
@@ -972,23 +1852,23 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html"
     },
     {
-        "duration": "26.0",
+        "duration": "30.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html"
     },
     {
@@ -996,623 +1876,559 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html"
     },
     {
-        "duration": "62.0",
+        "duration": "64.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html"
     },
     {
-        "duration": "86.0",
+        "duration": "87.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html"
     },
     {
-        "duration": "33.0",
+        "duration": "35.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html"
     },
     {
-        "duration": "43.0",
+        "duration": "28.0",
         "name": "rendering.mobile/accu_weather_2018"
     },
     {
-        "duration": "30.0",
-        "name": "rendering.mobile/accu_weather_desktop_gpu_raster_2018"
+        "duration": "21.0",
+        "name": "rendering.mobile/accu_weather_mobile_pinch_2018"
     },
     {
-        "duration": "33.0",
+        "duration": "19.0",
         "name": "rendering.mobile/amazon_2018"
     },
     {
-        "duration": "34.0",
-        "name": "rendering.mobile/amazon_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "32.0",
+        "duration": "20.0",
         "name": "rendering.mobile/amazon_mobile_2018"
     },
     {
-        "duration": "32.0",
+        "duration": "24.0",
         "name": "rendering.mobile/analog_clock_svg"
     },
     {
-        "duration": "53.0",
+        "duration": "21.0",
         "name": "rendering.mobile/androidpolice_mobile_2018"
     },
     {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "rendering.mobile/animometer_webgl"
     },
     {
-        "duration": "39.0",
+        "duration": "24.0",
+        "name": "rendering.mobile/animometer_webgl_attrib_arrays"
+    },
+    {
+        "duration": "27.0",
+        "name": "rendering.mobile/animometer_webgl_multi_draw"
+    },
+    {
+        "duration": "24.0",
         "name": "rendering.mobile/aquarium"
     },
     {
-        "duration": "30.0",
+        "duration": "19.0",
         "name": "rendering.mobile/background_color_animation"
     },
     {
-        "duration": "65.0",
+        "duration": "39.0",
         "name": "rendering.mobile/background_color_animation_with_gradient"
     },
     {
-        "duration": "31.0",
+        "duration": "13.0",
         "name": "rendering.mobile/baidu_mobile_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "19.0",
         "name": "rendering.mobile/balls_css_key_frame_animations"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/balls_css_transition_2_properties"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/balls_css_transition_40_properties"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/balls_css_transition_all_properties"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "rendering.mobile/balls_javascript_canvas"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "rendering.mobile/balls_javascript_css"
     },
     {
-        "duration": "31.0",
+        "duration": "21.0",
         "name": "rendering.mobile/balls_svg_animations"
     },
     {
-        "duration": "33.0",
+        "duration": "21.0",
+        "name": "rendering.mobile/basic_stream"
+    },
+    {
+        "duration": "16.0",
         "name": "rendering.mobile/bing_mobile_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "rendering.mobile/blob"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.mobile/blogspot_2018"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.mobile/blogspot_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "28.0",
+        "duration": "11.0",
         "name": "rendering.mobile/blogspot_mobile_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "rendering.mobile/blur_rotating_background"
     },
     {
-        "duration": "30.0",
+        "duration": "15.0",
         "name": "rendering.mobile/boingboing_mobile_2018"
     },
     {
-        "duration": "30.0",
+        "duration": "15.0",
         "name": "rendering.mobile/booking.com_2018"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.mobile/booking.com_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "24.0",
+        "duration": "10.0",
         "name": "rendering.mobile/booking.com_mobile_2018"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "rendering.mobile/bouncing_balls_15"
     },
     {
-        "duration": "18.0",
+        "duration": "13.0",
         "name": "rendering.mobile/bouncing_clipped_rectangles"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "rendering.mobile/bouncing_gradient_circles"
     },
     {
-        "duration": "17.0",
+        "duration": "12.0",
         "name": "rendering.mobile/bouncing_png_images"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.mobile/bouncing_svg_images"
     },
     {
-        "duration": "30.0",
+        "duration": "18.0",
         "name": "rendering.mobile/camera_to_webgl"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.mobile/canvas_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/canvas_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/canvas_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.mobile/canvas_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "18.0",
-        "name": "rendering.mobile/canvas_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.mobile/canvas_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
         "duration": "16.0",
-        "name": "rendering.mobile/canvas_50000_pixels_per_second_desktop_gpu_raster"
+        "name": "rendering.mobile/canvas_05000_pixels_per_second"
     },
     {
-        "duration": "16.0",
-        "name": "rendering.mobile/canvas_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/canvas_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/canvas_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "rendering.mobile/canvas_animation_no_clear"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "rendering.mobile/canvas_arcs"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "rendering.mobile/canvas_font_cycler"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "rendering.mobile/canvas_lines"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "rendering.mobile/canvas_to_blob"
     },
     {
-        "duration": "42.0",
+        "duration": "19.0",
         "name": "rendering.mobile/capitolvolkswagen_mobile_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "rendering.mobile/card_expansion"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "rendering.mobile/card_expansion_animated"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "rendering.mobile/card_expansion_images_text"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "rendering.mobile/card_flying"
     },
     {
-        "duration": "14.0",
+        "duration": "9.0",
         "name": "rendering.mobile/cats_unscaled"
     },
     {
-        "duration": "12.0",
+        "duration": "7.0",
         "name": "rendering.mobile/cats_viewport_width"
     },
     {
-        "duration": "31.0",
+        "duration": "22.0",
         "name": "rendering.mobile/cc_poster_circle"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "rendering.mobile/cc_scroll_text_only"
     },
     {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "rendering.mobile/chip_tune"
     },
     {
-        "duration": "31.0",
+        "duration": "16.0",
         "name": "rendering.mobile/cnn_2018"
     },
     {
-        "duration": "38.0",
+        "duration": "16.0",
         "name": "rendering.mobile/cnn_article_mobile_2018"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.mobile/cnn_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.mobile/cnn_mobile_2018"
     },
     {
-        "duration": "28.0",
+        "duration": "17.0",
+        "name": "rendering.mobile/cnn_mobile_pinch_2018"
+    },
+    {
+        "duration": "16.0",
         "name": "rendering.mobile/cnn_pathological_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "18.0",
         "name": "rendering.mobile/compositor_heavy_animation"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "rendering.mobile/coordinated_animation"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.mobile/crafty_mind"
     },
     {
-        "duration": "28.0",
+        "duration": "20.0",
         "name": "rendering.mobile/css_animations_many_keyframes"
     },
     {
-        "duration": "27.0",
+        "duration": "18.0",
         "name": "rendering.mobile/css_animations_simultaneous_inline_style"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/css_animations_simultaneous_new_element"
     },
     {
-        "duration": "27.0",
+        "duration": "18.0",
         "name": "rendering.mobile/css_animations_simultaneous_style_element"
     },
     {
-        "duration": "27.0",
+        "duration": "18.0",
         "name": "rendering.mobile/css_animations_simultaneous_updating_class"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "rendering.mobile/css_animations_staggered_infinite_iterations"
     },
     {
-        "duration": "29.0",
+        "duration": "20.0",
         "name": "rendering.mobile/css_animations_staggered_inline_style"
     },
     {
-        "duration": "34.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_animations_staggered_new_element"
     },
     {
-        "duration": "30.0",
+        "duration": "20.0",
         "name": "rendering.mobile/css_animations_staggered_style_element"
     },
     {
-        "duration": "30.0",
+        "duration": "20.0",
         "name": "rendering.mobile/css_animations_staggered_updating_class"
     },
     {
-        "duration": "43.0",
+        "duration": "20.0",
         "name": "rendering.mobile/css_animations_triggered_inline_style"
     },
     {
-        "duration": "36.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_animations_triggered_new_element"
     },
     {
-        "duration": "29.0",
+        "duration": "19.0",
         "name": "rendering.mobile/css_animations_triggered_style_element"
     },
     {
-        "duration": "30.0",
+        "duration": "20.0",
         "name": "rendering.mobile/css_animations_triggered_updating_class"
     },
     {
-        "duration": "31.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_opacity_plus_n_layers_0"
     },
     {
-        "duration": "31.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_opacity_plus_n_layers_75"
     },
     {
-        "duration": "31.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_opacity_plus_n_layers_99"
     },
     {
-        "duration": "27.0",
+        "duration": "18.0",
         "name": "rendering.mobile/css_transitions_inline_style"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/css_transitions_new_element"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/css_transitions_staggered_inline_style"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/css_transitions_staggered_new_element"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/css_transitions_staggered_style_element"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/css_transitions_staggered_updating_class"
     },
     {
-        "duration": "27.0",
+        "duration": "18.0",
         "name": "rendering.mobile/css_transitions_style_element"
     },
     {
-        "duration": "29.0",
+        "duration": "19.0",
         "name": "rendering.mobile/css_transitions_triggered_inline_style"
     },
     {
-        "duration": "29.0",
+        "duration": "19.0",
         "name": "rendering.mobile/css_transitions_triggered_new_element"
     },
     {
-        "duration": "28.0",
+        "duration": "19.0",
         "name": "rendering.mobile/css_transitions_triggered_style_element"
     },
     {
-        "duration": "28.0",
+        "duration": "19.0",
         "name": "rendering.mobile/css_transitions_triggered_updating_class"
     },
     {
-        "duration": "27.0",
+        "duration": "18.0",
         "name": "rendering.mobile/css_transitions_updating_class"
     },
     {
-        "duration": "28.0",
+        "duration": "19.0",
         "name": "rendering.mobile/css_value_type_color"
     },
     {
-        "duration": "29.0",
+        "duration": "24.0",
         "name": "rendering.mobile/css_value_type_filter"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/css_value_type_length"
     },
     {
-        "duration": "31.0",
+        "duration": "19.0",
         "name": "rendering.mobile/css_value_type_length_complex"
     },
     {
-        "duration": "31.0",
+        "duration": "19.0",
         "name": "rendering.mobile/css_value_type_length_simple"
     },
     {
-        "duration": "30.0",
+        "duration": "19.0",
         "name": "rendering.mobile/css_value_type_path"
     },
     {
-        "duration": "38.0",
+        "duration": "28.0",
         "name": "rendering.mobile/css_value_type_shadow"
     },
     {
-        "duration": "29.0",
+        "duration": "18.0",
         "name": "rendering.mobile/css_value_type_transform_complex"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/css_value_type_transform_simple"
     },
     {
-        "duration": "38.0",
+        "duration": "17.0",
         "name": "rendering.mobile/deviantart_mobile_2018"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "rendering.mobile/digg_mobile_2018"
     },
     {
-        "duration": "28.0",
+        "duration": "16.0",
         "name": "rendering.mobile/dynamic_cube_map"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "rendering.mobile/earth"
     },
     {
-        "duration": "31.0",
+        "duration": "16.0",
         "name": "rendering.mobile/ebay_2018"
     },
     {
-        "duration": "28.0",
-        "name": "rendering.mobile/ebay_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "29.0",
+        "duration": "11.0",
         "name": "rendering.mobile/ebay_mobile_2018"
     },
     {
-        "duration": "41.0",
+        "duration": "14.0",
+        "name": "rendering.mobile/ebay_mobile_pinch_2018"
+    },
+    {
+        "duration": "24.0",
         "name": "rendering.mobile/ebay_scroll_2018"
     },
     {
-        "duration": "35.0",
+        "duration": "18.0",
         "name": "rendering.mobile/espn_2018"
     },
     {
-        "duration": "33.0",
-        "name": "rendering.mobile/espn_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "31.0",
+        "duration": "13.0",
         "name": "rendering.mobile/espn_mobile_2018"
     },
     {
-        "duration": "24.0",
+        "duration": "12.0",
         "name": "rendering.mobile/espn_pathological_2018"
     },
     {
-        "duration": "24.0",
+        "duration": "19.0",
         "name": "rendering.mobile/extra_large_texture_uploads"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.mobile/facebook_2018"
     },
     {
-        "duration": "21.0",
-        "name": "rendering.mobile/facebook_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "42.0",
+        "duration": "19.0",
         "name": "rendering.mobile/facebook_mobile_2018"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "rendering.mobile/fill_shapes"
     },
     {
-        "duration": "30.0",
+        "duration": "20.0",
         "name": "rendering.mobile/filter_terrain_svg"
     },
     {
-        "duration": "38.0",
+        "duration": "23.0",
         "name": "rendering.mobile/flickr_scroll_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "14.0",
         "name": "rendering.mobile/font_wipe"
     },
     {
-        "duration": "27.0",
+        "duration": "12.0",
         "name": "rendering.mobile/forecast.io_mobile_2018"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "rendering.mobile/geo_apis"
     },
     {
-        "duration": "24.0",
+        "duration": "15.0",
         "name": "rendering.mobile/gmail_2018"
     },
     {
-        "duration": "20.0",
-        "name": "rendering.mobile/gmail_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "19.0",
+        "duration": "11.0",
         "name": "rendering.mobile/google_calendar_2018"
     },
     {
-        "duration": "18.0",
-        "name": "rendering.mobile/google_calendar_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "34.0",
+        "duration": "21.0",
         "name": "rendering.mobile/google_docs_2018"
     },
     {
-        "duration": "34.0",
-        "name": "rendering.mobile/google_docs_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "29.0",
+        "duration": "17.0",
         "name": "rendering.mobile/google_image_search_2018"
     },
     {
-        "duration": "29.0",
-        "name": "rendering.mobile/google_image_search_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "35.0",
+        "duration": "17.0",
         "name": "rendering.mobile/google_image_search_mobile_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "15.0",
         "name": "rendering.mobile/google_news_ios"
     },
     {
-        "duration": "19.0",
+        "duration": "11.0",
         "name": "rendering.mobile/google_news_mobile_2018"
     },
     {
-        "duration": "30.0",
+        "duration": "20.0",
         "name": "rendering.mobile/google_plus_2018"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.mobile/google_plus_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "39.0",
+        "duration": "18.0",
         "name": "rendering.mobile/google_plus_mobile_2018"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
+        "name": "rendering.mobile/google_search_mobile_pinch_2018"
+    },
+    {
+        "duration": "12.0",
         "name": "rendering.mobile/google_web_search_2018"
     },
     {
-        "duration": "20.0",
-        "name": "rendering.mobile/google_web_search_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "32.0",
+        "duration": "17.0",
         "name": "rendering.mobile/google_web_search_mobile_2018"
     },
     {
-        "duration": "37.0",
+        "duration": "19.0",
         "name": "rendering.mobile/gsp.ro_mobile_2018"
     },
     {
-        "duration": "35.0",
+        "duration": "17.0",
         "name": "rendering.mobile/guardian_pathological_2018"
     },
     {
-        "duration": "32.0",
+        "duration": "19.0",
         "name": "rendering.mobile/guimark_vector_chart"
     },
     {
-        "duration": "23.0",
+        "duration": "16.0",
         "name": "rendering.mobile/gws_boogie_expansion"
     },
     {
-        "duration": "23.0",
+        "duration": "16.0",
         "name": "rendering.mobile/gws_google_expansion"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.mobile/hakim"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "rendering.mobile/horizontal_vertical_expansion"
     },
     {
@@ -1620,1131 +2436,907 @@
         "name": "rendering.mobile/idle_power_animated_gif"
     },
     {
-        "duration": "35.0",
+        "duration": "29.0",
         "name": "rendering.mobile/idle_power_blank"
     },
     {
-        "duration": "45.0",
+        "duration": "34.0",
         "name": "rendering.mobile/idle_power_css_animation"
     },
     {
-        "duration": "60.0",
+        "duration": "35.0",
         "name": "rendering.mobile/idle_power_request_animation_frame"
     },
     {
-        "duration": "133.0",
+        "duration": "108.0",
         "name": "rendering.mobile/idle_power_set_timeout_long"
     },
     {
-        "duration": "50.0",
+        "duration": "35.0",
         "name": "rendering.mobile/idle_power_set_timetout"
     },
     {
-        "duration": "45.0",
+        "duration": "29.0",
         "name": "rendering.mobile/ie_chalkboard"
     },
     {
-        "duration": "35.0",
+        "duration": "25.0",
         "name": "rendering.mobile/ie_pirate_mark"
     },
     {
-        "duration": "36.0",
+        "duration": "20.0",
         "name": "rendering.mobile/infinite_scroll_element_n_layers_0"
     },
     {
-        "duration": "37.0",
+        "duration": "21.0",
         "name": "rendering.mobile/infinite_scroll_element_n_layers_75"
     },
     {
-        "duration": "38.0",
+        "duration": "21.0",
         "name": "rendering.mobile/infinite_scroll_element_n_layers_99"
     },
     {
-        "duration": "37.0",
+        "duration": "21.0",
         "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_0"
     },
     {
-        "duration": "38.0",
+        "duration": "21.0",
         "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_75"
     },
     {
-        "duration": "38.0",
+        "duration": "21.0",
         "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_99"
     },
     {
-        "duration": "36.0",
+        "duration": "21.0",
         "name": "rendering.mobile/infinite_scroll_root_n_layers_0"
     },
     {
-        "duration": "36.0",
+        "duration": "21.0",
         "name": "rendering.mobile/infinite_scroll_root_n_layers_75"
     },
     {
-        "duration": "35.0",
+        "duration": "21.0",
         "name": "rendering.mobile/infinite_scroll_root_n_layers_99"
     },
     {
-        "duration": "35.0",
+        "duration": "18.0",
         "name": "rendering.mobile/infinite_scrolling"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.mobile/jarro_doverson"
     },
     {
-        "duration": "43.0",
+        "duration": "26.0",
         "name": "rendering.mobile/js_full_screen_invalidation"
     },
     {
-        "duration": "33.0",
+        "duration": "22.0",
         "name": "rendering.mobile/js_opacity_plus_n_layers_0"
     },
     {
-        "duration": "34.0",
+        "duration": "22.0",
         "name": "rendering.mobile/js_opacity_plus_n_layers_75"
     },
     {
-        "duration": "34.0",
+        "duration": "22.0",
         "name": "rendering.mobile/js_opacity_plus_n_layers_99"
     },
     {
-        "duration": "36.0",
+        "duration": "22.0",
         "name": "rendering.mobile/js_paint_plus_n_layers_0"
     },
     {
-        "duration": "36.0",
+        "duration": "23.0",
         "name": "rendering.mobile/js_paint_plus_n_layers_75"
     },
     {
-        "duration": "35.0",
+        "duration": "23.0",
         "name": "rendering.mobile/js_paint_plus_n_layers_99"
     },
     {
-        "duration": "34.0",
+        "duration": "22.0",
         "name": "rendering.mobile/js_poster_circle"
     },
     {
-        "duration": "18.0",
+        "duration": "12.0",
         "name": "rendering.mobile/js_scroll_text_only"
     },
     {
-        "duration": "27.0",
+        "duration": "18.0",
         "name": "rendering.mobile/keyframed_animations"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "rendering.mobile/large_texture_uploads"
     },
     {
-        "duration": "38.0",
+        "duration": "19.0",
         "name": "rendering.mobile/latimes_pathological_2018"
     },
     {
-        "duration": "33.0",
+        "duration": "16.0",
         "name": "rendering.mobile/linkedin_2018"
     },
     {
-        "duration": "29.0",
-        "name": "rendering.mobile/linkedin_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "60.0",
+        "duration": "37.0",
         "name": "rendering.mobile/linkedin_mobile_2018"
     },
     {
-        "duration": "39.0",
+        "duration": "31.0",
+        "name": "rendering.mobile/linkedin_mobile_pinch_2018"
+    },
+    {
+        "duration": "29.0",
         "name": "rendering.mobile/linkedin_pathological_2018"
     },
     {
-        "duration": "19.0",
+        "duration": "11.0",
         "name": "rendering.mobile/list_animation_simple"
     },
     {
-        "duration": "34.0",
+        "duration": "19.0",
         "name": "rendering.mobile/list_recycle_transform"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.mobile/man_in_blue"
     },
     {
-        "duration": "30.0",
+        "duration": "23.0",
         "name": "rendering.mobile/many_images"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.mobile/many_planets_deep"
     },
     {
-        "duration": "22.0",
+        "duration": "14.0",
         "name": "rendering.mobile/mask_transition_animation"
     },
     {
-        "duration": "29.0",
+        "duration": "12.0",
+        "name": "rendering.mobile/masonry"
+    },
+    {
+        "duration": "19.0",
         "name": "rendering.mobile/medium_texture_uploads"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "rendering.mobile/megi_dish"
     },
     {
-        "duration": "25.0",
+        "duration": "16.0",
         "name": "rendering.mobile/microsoft_asteroid_belt"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "rendering.mobile/microsoft_fish_ie_tank"
     },
     {
-        "duration": "23.0",
+        "duration": "19.0",
+        "name": "rendering.mobile/microsoft_performance"
+    },
+    {
+        "duration": "14.0",
         "name": "rendering.mobile/microsoft_snow"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "rendering.mobile/microsoft_speed_reading"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "rendering.mobile/microsoft_tweet_map"
     },
     {
-        "duration": "28.0",
+        "duration": "16.0",
         "name": "rendering.mobile/microsoft_video_city"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "rendering.mobile/microsoft_worker_fountains"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "rendering.mobile/mix_10k"
     },
     {
-        "duration": "30.0",
+        "duration": "23.0",
         "name": "rendering.mobile/mix_blend_mode_animation_difference"
     },
     {
-        "duration": "31.0",
+        "duration": "23.0",
         "name": "rendering.mobile/mix_blend_mode_animation_hue"
     },
     {
-        "duration": "30.0",
+        "duration": "24.0",
         "name": "rendering.mobile/mix_blend_mode_animation_propagating_isolation"
     },
     {
-        "duration": "29.0",
+        "duration": "22.0",
         "name": "rendering.mobile/mix_blend_mode_animation_screen"
     },
     {
-        "duration": "45.0",
+        "duration": "20.0",
         "name": "rendering.mobile/mlb_mobile_2018"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "rendering.mobile/mobile_news_sandbox"
     },
     {
-        "duration": "26.0",
+        "duration": "19.0",
         "name": "rendering.mobile/motion_mark_canvas_fill_shapes"
     },
     {
-        "duration": "24.0",
+        "duration": "18.0",
         "name": "rendering.mobile/motion_mark_canvas_stroke_shapes"
     },
     {
-        "duration": "26.0",
+        "duration": "17.0",
         "name": "rendering.mobile/motionmark_anim_design_15"
     },
     {
-        "duration": "30.0",
+        "duration": "18.0",
         "name": "rendering.mobile/motionmark_anim_focus_25"
     },
     {
-        "duration": "42.0",
+        "duration": "19.0",
         "name": "rendering.mobile/motionmark_anim_images_50"
     },
     {
-        "duration": "34.0",
+        "duration": "18.0",
         "name": "rendering.mobile/motionmark_anim_leaves_250"
     },
     {
-        "duration": "34.0",
+        "duration": "18.0",
         "name": "rendering.mobile/motionmark_anim_multiply_175"
     },
     {
-        "duration": "34.0",
+        "duration": "18.0",
         "name": "rendering.mobile/motionmark_anim_suits_125"
     },
     {
-        "duration": "34.0",
+        "duration": "18.0",
         "name": "rendering.mobile/motionmark_html_composited_transforms_125"
     },
     {
-        "duration": "34.0",
+        "duration": "19.0",
         "name": "rendering.mobile/motionmark_html_css_bouncing_blend_circles_25"
     },
     {
-        "duration": "35.0",
+        "duration": "19.0",
         "name": "rendering.mobile/motionmark_html_css_bouncing_circles_250"
     },
     {
-        "duration": "33.0",
+        "duration": "18.0",
         "name": "rendering.mobile/motionmark_html_css_bouncing_clipped_rects_100"
     },
     {
-        "duration": "32.0",
+        "duration": "18.0",
         "name": "rendering.mobile/motionmark_html_css_bouncing_filter_circles_15"
     },
     {
-        "duration": "34.0",
+        "duration": "18.0",
         "name": "rendering.mobile/motionmark_html_css_bouncing_gradient_circles_250"
     },
     {
-        "duration": "34.0",
+        "duration": "19.0",
         "name": "rendering.mobile/motionmark_html_css_bouncing_svg_images_50"
     },
     {
-        "duration": "35.0",
+        "duration": "19.0",
         "name": "rendering.mobile/motionmark_html_css_bouncing_tagged_images_225"
     },
     {
-        "duration": "34.0",
+        "duration": "19.0",
         "name": "rendering.mobile/motionmark_html_dom_particles_svg_masks_25"
     },
     {
-        "duration": "32.0",
+        "duration": "18.0",
         "name": "rendering.mobile/motionmark_html_focus_20_15"
     },
     {
-        "duration": "34.0",
+        "duration": "19.0",
         "name": "rendering.mobile/motionmark_html_leaves_20_50"
     },
     {
-        "duration": "35.0",
+        "duration": "19.0",
         "name": "rendering.mobile/motionmark_svg_bouncing_circles_250"
     },
     {
-        "duration": "34.0",
+        "duration": "19.0",
         "name": "rendering.mobile/motionmark_svg_bouncing_clipped_rects_100"
     },
     {
-        "duration": "35.0",
+        "duration": "19.0",
         "name": "rendering.mobile/motionmark_svg_bouncing_gradient_circles_200"
     },
     {
-        "duration": "35.0",
+        "duration": "19.0",
         "name": "rendering.mobile/motionmark_svg_bouncing_png_images_200"
     },
     {
-        "duration": "67.0",
+        "duration": "23.0",
         "name": "rendering.mobile/motionmark_svg_bouncing_svg_images_50"
     },
     {
-        "duration": "35.0",
+        "duration": "23.0",
         "name": "rendering.mobile/new_tilings"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "rendering.mobile/no_op_raf"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "rendering.mobile/no_op_scroll"
     },
     {
-        "duration": "20.0",
+        "duration": "14.0",
         "name": "rendering.mobile/no_op_settimeout"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "rendering.mobile/no_op_touch_handler"
     },
     {
-        "duration": "27.0",
+        "duration": "17.0",
         "name": "rendering.mobile/nvidia_vertex_buffer_object"
     },
     {
-        "duration": "39.0",
+        "duration": "23.0",
         "name": "rendering.mobile/nyc_gov_scroll_2018"
     },
     {
-        "duration": "37.0",
+        "duration": "25.0",
         "name": "rendering.mobile/nytimes_mobile_2018"
     },
     {
-        "duration": "42.0",
+        "duration": "23.0",
         "name": "rendering.mobile/nytimes_scroll_2018"
     },
     {
-        "duration": "163.0",
+        "duration": "23.0",
         "name": "rendering.mobile/overlay_background_color_css_transitions_page"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "rendering.mobile/parallax_effect"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.mobile/particles"
     },
     {
-        "duration": "30.0",
+        "duration": "16.0",
         "name": "rendering.mobile/pbs_pathological_2018"
     },
     {
-        "duration": "19.0",
+        "duration": "11.0",
         "name": "rendering.mobile/physical_simulation"
     },
     {
-        "duration": "36.0",
+        "duration": "22.0",
         "name": "rendering.mobile/pinterest_2018"
     },
     {
-        "duration": "33.0",
-        "name": "rendering.mobile/pinterest_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "rendering.mobile/pinterest_mobile_2018"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "rendering.mobile/put_get_image_data"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.mobile/raf"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.mobile/raf_animation"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "rendering.mobile/raf_canvas"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "rendering.mobile/raf_touch_animation"
     },
     {
-        "duration": "36.0",
+        "duration": "18.0",
         "name": "rendering.mobile/recode_pathological_2018"
     },
     {
-        "duration": "39.0",
+        "duration": "18.0",
         "name": "rendering.mobile/reddit_mobile_2018"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "rendering.mobile/runway"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.mobile/san_angeles"
     },
     {
-        "duration": "15.0",
+        "duration": "9.0",
         "name": "rendering.mobile/second_batch_js_heavy"
     },
     {
-        "duration": "15.0",
+        "duration": "9.0",
         "name": "rendering.mobile/second_batch_js_light"
     },
     {
-        "duration": "15.0",
+        "duration": "9.0",
         "name": "rendering.mobile/second_batch_js_medium"
     },
     {
-        "duration": "43.0",
+        "duration": "18.0",
         "name": "rendering.mobile/sfgate_mobile_2018"
     },
     {
-        "duration": "32.0",
+        "duration": "21.0",
         "name": "rendering.mobile/silk_finance"
     },
     {
-        "duration": "28.0",
+        "duration": "15.0",
         "name": "rendering.mobile/simple_text_page"
     },
     {
-        "duration": "20.0",
+        "duration": "11.0",
         "name": "rendering.mobile/simple_touch_drag"
     },
     {
-        "duration": "37.0",
+        "duration": "15.0",
         "name": "rendering.mobile/slashdot_mobile_2018"
     },
     {
-        "duration": "29.0",
+        "duration": "12.0",
+        "name": "rendering.mobile/slide_drawer"
+    },
+    {
+        "duration": "19.0",
         "name": "rendering.mobile/small_texture_uploads"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "rendering.mobile/spielzeugz"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "rendering.mobile/sticky_using_webkit"
     },
     {
-        "duration": "38.0",
+        "duration": "20.0",
         "name": "rendering.mobile/stress_hidey_bars"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "rendering.mobile/stroke_shapes"
     },
     {
-        "duration": "34.0",
+        "duration": "24.0",
         "name": "rendering.mobile/svg_icon_raster"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
+        "name": "rendering.mobile/swipe_action"
+    },
+    {
+        "duration": "13.0",
         "name": "rendering.mobile/swipe_to_dismiss"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.mobile/sync_scroll_offset"
     },
     {
-        "duration": "43.0",
+        "duration": "21.0",
         "name": "rendering.mobile/techcrunch_2018"
     },
     {
-        "duration": "39.0",
-        "name": "rendering.mobile/techcrunch_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "45.0",
+        "duration": "19.0",
         "name": "rendering.mobile/techcrunch_mobile_2018"
     },
     {
-        "duration": "29.0",
+        "duration": "15.0",
         "name": "rendering.mobile/text_05000_pixels_per_second"
     },
     {
-        "duration": "28.0",
-        "name": "rendering.mobile/text_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "29.0",
+        "duration": "15.0",
         "name": "rendering.mobile/text_10000_pixels_per_second"
     },
     {
-        "duration": "29.0",
-        "name": "rendering.mobile/text_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/text_15000_pixels_per_second"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/text_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "rendering.mobile/text_20000_pixels_per_second"
     },
     {
-        "duration": "22.0",
-        "name": "rendering.mobile/text_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/text_30000_pixels_per_second"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.mobile/text_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "17.0",
+        "duration": "9.0",
         "name": "rendering.mobile/text_40000_pixels_per_second"
     },
     {
-        "duration": "17.0",
-        "name": "rendering.mobile/text_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.mobile/text_50000_pixels_per_second"
-    },
-    {
-        "duration": "16.0",
-        "name": "rendering.mobile/text_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "16.0",
+        "duration": "9.0",
         "name": "rendering.mobile/text_60000_pixels_per_second"
     },
     {
-        "duration": "16.0",
-        "name": "rendering.mobile/text_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "15.0",
+        "duration": "9.0",
         "name": "rendering.mobile/text_75000_pixels_per_second"
     },
     {
-        "duration": "15.0",
-        "name": "rendering.mobile/text_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "rendering.mobile/text_90000_pixels_per_second"
     },
     {
-        "duration": "15.0",
-        "name": "rendering.mobile/text_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "25.0",
+        "duration": "16.0",
         "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second"
     },
     {
-        "duration": "25.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second"
     },
     {
-        "duration": "25.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second"
     },
     {
-        "duration": "19.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "16.0",
+        "duration": "10.0",
         "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second"
     },
     {
-        "duration": "16.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "15.0",
+        "duration": "9.0",
         "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second"
     },
     {
-        "duration": "15.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "14.0",
+        "duration": "8.0",
         "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second"
     },
     {
-        "duration": "15.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "14.0",
+        "duration": "8.0",
         "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second"
     },
     {
         "duration": "14.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "19.0",
         "name": "rendering.mobile/text_hover_05000_pixels_per_second"
     },
     {
-        "duration": "19.0",
-        "name": "rendering.mobile/text_hover_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "19.0",
+        "duration": "14.0",
         "name": "rendering.mobile/text_hover_10000_pixels_per_second"
     },
     {
-        "duration": "19.0",
-        "name": "rendering.mobile/text_hover_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.mobile/text_hover_15000_pixels_per_second"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.mobile/text_hover_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "16.0",
+        "duration": "11.0",
         "name": "rendering.mobile/text_hover_20000_pixels_per_second"
     },
     {
-        "duration": "16.0",
-        "name": "rendering.mobile/text_hover_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/text_hover_30000_pixels_per_second"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/text_hover_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "14.0",
+        "duration": "9.0",
         "name": "rendering.mobile/text_hover_40000_pixels_per_second"
     },
     {
-        "duration": "14.0",
-        "name": "rendering.mobile/text_hover_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.mobile/text_hover_50000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.mobile/text_hover_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "14.0",
+        "duration": "8.0",
         "name": "rendering.mobile/text_hover_60000_pixels_per_second"
     },
     {
-        "duration": "14.0",
-        "name": "rendering.mobile/text_hover_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "13.0",
+        "duration": "8.0",
         "name": "rendering.mobile/text_hover_75000_pixels_per_second"
     },
     {
-        "duration": "13.0",
-        "name": "rendering.mobile/text_hover_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "13.0",
+        "duration": "8.0",
         "name": "rendering.mobile/text_hover_90000_pixels_per_second"
     },
     {
-        "duration": "13.0",
-        "name": "rendering.mobile/text_hover_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "40.0",
+        "duration": "20.0",
         "name": "rendering.mobile/theverge_article_mobile_2018"
     },
     {
-        "duration": "43.0",
+        "duration": "18.0",
         "name": "rendering.mobile/theverge_mobile_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "17.0",
         "name": "rendering.mobile/toggle_drawer"
     },
     {
-        "duration": "28.0",
+        "duration": "15.0",
         "name": "rendering.mobile/touch_handler_scrolling"
     },
     {
-        "duration": "28.0",
+        "duration": "19.0",
         "name": "rendering.mobile/transform_transitions"
     },
     {
-        "duration": "29.0",
+        "duration": "18.0",
         "name": "rendering.mobile/transform_transitions_js_block"
     },
     {
-        "duration": "29.0",
+        "duration": "16.0",
         "name": "rendering.mobile/twitch_2018"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.mobile/twitch_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/twitter_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/twitter_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/twitter_mobile_2018"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/update_history_state"
+        "duration": "17.0",
+        "name": "rendering.mobile/twitch_mobile_pinch_2018"
     },
     {
         "duration": "20.0",
+        "name": "rendering.mobile/twitter_2018"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.mobile/twitter_mobile_2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.mobile/update_history_state"
+    },
+    {
+        "duration": "11.0",
         "name": "rendering.mobile/usatoday_mobile_2018"
     },
     {
-        "duration": "24.0",
+        "duration": "15.0",
         "name": "rendering.mobile/vertical_expansion"
     },
     {
-        "duration": "28.0",
+        "duration": "19.0",
         "name": "rendering.mobile/web_animation_value_type_color"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/web_animation_value_type_length_3d"
     },
     {
-        "duration": "29.0",
+        "duration": "19.0",
         "name": "rendering.mobile/web_animation_value_type_length_complex"
     },
     {
-        "duration": "30.0",
+        "duration": "19.0",
         "name": "rendering.mobile/web_animation_value_type_length_simple"
     },
     {
-        "duration": "29.0",
+        "duration": "19.0",
         "name": "rendering.mobile/web_animation_value_type_path"
     },
     {
-        "duration": "37.0",
+        "duration": "28.0",
         "name": "rendering.mobile/web_animation_value_type_shadow"
     },
     {
-        "duration": "28.0",
+        "duration": "19.0",
         "name": "rendering.mobile/web_animation_value_type_transform_complex"
     },
     {
-        "duration": "28.0",
+        "duration": "19.0",
         "name": "rendering.mobile/web_animation_value_type_transform_simple"
     },
     {
-        "duration": "29.0",
+        "duration": "22.0",
         "name": "rendering.mobile/web_animations_many_keyframes"
     },
     {
-        "duration": "28.0",
+        "duration": "19.0",
         "name": "rendering.mobile/web_animations_set_current_time"
     },
     {
-        "duration": "29.0",
+        "duration": "19.0",
         "name": "rendering.mobile/web_animations_simultaneous"
     },
     {
-        "duration": "30.0",
+        "duration": "20.0",
         "name": "rendering.mobile/web_animations_staggered_chaining"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "rendering.mobile/web_animations_staggered_infinite_iterations"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "rendering.mobile/web_animations_staggered_triggering_page"
     },
     {
-        "duration": "36.0",
+        "duration": "19.0",
         "name": "rendering.mobile/wikipedia_2018"
     },
     {
-        "duration": "39.0",
+        "duration": "18.0",
         "name": "rendering.mobile/wikipedia_delayed_scroll_start_2018"
     },
     {
-        "duration": "32.0",
-        "name": "rendering.mobile/wikipedia_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "32.0",
+        "duration": "18.0",
         "name": "rendering.mobile/wikipedia_mobile_2018"
     },
     {
-        "duration": "40.0",
+        "duration": "20.0",
         "name": "rendering.mobile/wordpress_2018"
     },
     {
-        "duration": "36.0",
-        "name": "rendering.mobile/wordpress_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "41.0",
+        "duration": "18.0",
         "name": "rendering.mobile/wordpress_mobile_2018"
     },
     {
-        "duration": "35.0",
+        "duration": "18.0",
         "name": "rendering.mobile/worldjournal_mobile_2018"
     },
     {
-        "duration": "42.0",
+        "duration": "20.0",
         "name": "rendering.mobile/wow_wiki_pathological_2018"
     },
     {
-        "duration": "71.0",
+        "duration": "32.0",
         "name": "rendering.mobile/wowwiki_mobile_2018"
     },
     {
-        "duration": "47.0",
+        "duration": "20.0",
         "name": "rendering.mobile/wsj_mobile_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "12.0",
         "name": "rendering.mobile/yahoo_answers_2018"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.mobile/yahoo_answers_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "rendering.mobile/yahoo_news_2018"
     },
     {
-        "duration": "24.0",
-        "name": "rendering.mobile/yahoo_news_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "36.0",
+        "duration": "15.0",
         "name": "rendering.mobile/yahoo_news_mobile_2018"
     },
     {
-        "duration": "32.0",
+        "duration": "20.0",
         "name": "rendering.mobile/yahoo_sports_2018"
     },
     {
-        "duration": "28.0",
-        "name": "rendering.mobile/yahoo_sports_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "19.0",
+        "duration": "10.0",
         "name": "rendering.mobile/yahoo_sports_pathological_2018"
     },
     {
-        "duration": "29.0",
+        "duration": "16.0",
         "name": "rendering.mobile/youtube_2018"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.mobile/youtube_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "24.0",
+        "duration": "10.0",
         "name": "rendering.mobile/youtube_mobile_2018"
     },
     {
-        "duration": "31.0",
+        "duration": "22.0",
         "name": "rendering.mobile/yuv_decoding"
     },
     {
-        "duration": "31.0",
+        "duration": "22.0",
         "name": "rendering.mobile/yuv_decoding_gpu_rasterization_and_decoding"
     },
     {
-        "duration": "34.0",
+        "duration": "17.0",
         "name": "rendering.mobile/zdnet_pathological_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "rendering.mobile/zoom_in_animation"
     },
     {
-        "duration": "43.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/accu_weather_pinch_2018"
-    },
-    {
-        "duration": "28.0",
+        "duration": "14.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/amazon_pinch_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/blogspot_pinch_2018"
     },
     {
-        "duration": "28.0",
+        "duration": "14.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/booking_pinch_2018"
     },
     {
-        "duration": "30.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/cnn_pinch_2018"
-    },
-    {
-        "duration": "24.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/ebay_pinch_2018"
-    },
-    {
-        "duration": "30.0",
+        "duration": "16.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/espn_pinch_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/facebook_pinch_2018"
     },
     {
-        "duration": "47.0",
+        "duration": "29.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/gmail_pinch_2018"
     },
     {
-        "duration": "38.0",
+        "duration": "13.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_calendar_pinch_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_image_pinch_2018"
     },
     {
-        "duration": "36.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_search_pinch_2018"
-    },
-    {
-        "duration": "41.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/linkedin_pinch_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/twitch_pinch_2018"
-    },
-    {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/twitter_pinch_2018"
     },
     {
-        "duration": "35.0",
+        "duration": "19.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_news_pinch_2018"
     },
     {
-        "duration": "37.0",
+        "duration": "20.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_sports_pinch_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/youtube_pinch_2018"
     },
     {
-        "duration": "42.0",
-        "name": "smoothness.tough_pinch_zoom_cases/accu_weather_pinch_2018"
-    },
-    {
-        "duration": "28.0",
+        "duration": "15.0",
         "name": "smoothness.tough_pinch_zoom_cases/amazon_pinch_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "20.0",
         "name": "smoothness.tough_pinch_zoom_cases/blogspot_pinch_2018"
     },
     {
-        "duration": "28.0",
+        "duration": "15.0",
         "name": "smoothness.tough_pinch_zoom_cases/booking_pinch_2018"
     },
     {
-        "duration": "30.0",
-        "name": "smoothness.tough_pinch_zoom_cases/cnn_pinch_2018"
-    },
-    {
-        "duration": "24.0",
-        "name": "smoothness.tough_pinch_zoom_cases/ebay_pinch_2018"
-    },
-    {
-        "duration": "30.0",
+        "duration": "16.0",
         "name": "smoothness.tough_pinch_zoom_cases/espn_pinch_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "smoothness.tough_pinch_zoom_cases/facebook_pinch_2018"
     },
     {
-        "duration": "47.0",
+        "duration": "26.0",
         "name": "smoothness.tough_pinch_zoom_cases/gmail_pinch_2018"
     },
     {
-        "duration": "38.0",
+        "duration": "13.0",
         "name": "smoothness.tough_pinch_zoom_cases/google_calendar_pinch_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "smoothness.tough_pinch_zoom_cases/google_image_pinch_2018"
     },
     {
-        "duration": "35.0",
-        "name": "smoothness.tough_pinch_zoom_cases/google_search_pinch_2018"
-    },
-    {
-        "duration": "41.0",
-        "name": "smoothness.tough_pinch_zoom_cases/linkedin_pinch_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "smoothness.tough_pinch_zoom_cases/twitch_pinch_2018"
-    },
-    {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "smoothness.tough_pinch_zoom_cases/twitter_pinch_2018"
     },
     {
-        "duration": "35.0",
+        "duration": "21.0",
         "name": "smoothness.tough_pinch_zoom_cases/yahoo_news_pinch_2018"
     },
     {
-        "duration": "37.0",
+        "duration": "23.0",
         "name": "smoothness.tough_pinch_zoom_cases/yahoo_sports_pinch_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "smoothness.tough_pinch_zoom_cases/youtube_pinch_2018"
     },
     {
-        "duration": "38.0",
+        "duration": "32.0",
         "name": "speedometer-future/http://browserbench.org/Speedometer/"
     },
     {
-        "duration": "38.0",
+        "duration": "32.0",
         "name": "speedometer/http://browserbench.org/Speedometer/"
     },
     {
-        "duration": "62.0",
+        "duration": "53.0",
         "name": "speedometer2-future/Speedometer2"
     },
     {
-        "duration": "62.0",
+        "duration": "53.0",
         "name": "speedometer2/Speedometer2"
     },
     {
-        "duration": "24.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/background:media:imgur"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/background:search:google"
     },
     {
-        "duration": "35.0",
+        "duration": "17.0",
         "name": "system_health.common_mobile/background:social:facebook"
     },
     {
@@ -2752,759 +3344,799 @@
         "name": "system_health.common_mobile/browse:chrome:newtab"
     },
     {
-        "duration": "10.0",
+        "duration": "9.0",
         "name": "system_health.common_mobile/browse:chrome:omnibox"
     },
     {
-        "duration": "95.0",
+        "duration": "72.0",
         "name": "system_health.common_mobile/browse:media:facebook_photos"
     },
     {
-        "duration": "63.0",
+        "duration": "42.0",
         "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "88.0",
+        "duration": "40.0",
+        "name": "system_health.common_mobile/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "67.0",
         "name": "system_health.common_mobile/browse:media:imgur"
     },
     {
-        "duration": "112.0",
+        "duration": "86.0",
         "name": "system_health.common_mobile/browse:media:youtube"
     },
     {
-        "duration": "109.0",
+        "duration": "57.0",
         "name": "system_health.common_mobile/browse:news:cnn"
     },
     {
-        "duration": "89.0",
+        "duration": "60.0",
         "name": "system_health.common_mobile/browse:news:cnn:2018"
     },
     {
-        "duration": "76.0",
+        "duration": "57.0",
         "name": "system_health.common_mobile/browse:news:cricbuzz"
     },
     {
-        "duration": "72.0",
+        "duration": "52.0",
         "name": "system_health.common_mobile/browse:news:qq"
     },
     {
-        "duration": "60.0",
+        "duration": "45.0",
         "name": "system_health.common_mobile/browse:news:reddit"
     },
     {
-        "duration": "162.0",
+        "duration": "102.0",
         "name": "system_health.common_mobile/browse:news:toi"
     },
     {
-        "duration": "65.0",
+        "duration": "45.0",
         "name": "system_health.common_mobile/browse:news:washingtonpost"
     },
     {
-        "duration": "82.0",
+        "duration": "22.0",
+        "name": "system_health.common_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "52.0",
         "name": "system_health.common_mobile/browse:shopping:amazon"
     },
     {
-        "duration": "81.0",
-        "name": "system_health.common_mobile/browse:shopping:avito"
-    },
-    {
-        "duration": "41.0",
+        "duration": "26.0",
         "name": "system_health.common_mobile/browse:shopping:lazada"
     },
     {
-        "duration": "76.0",
+        "duration": "55.0",
         "name": "system_health.common_mobile/browse:social:facebook"
     },
     {
-        "duration": "270.0",
+        "duration": "88.0",
         "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "126.0",
+        "duration": "78.0",
         "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "86.0",
+        "duration": "71.0",
         "name": "system_health.common_mobile/browse:social:instagram"
     },
     {
-        "duration": "106.0",
+        "duration": "75.0",
         "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll"
     },
     {
-        "duration": "136.0",
+        "duration": "77.0",
         "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "64.0",
+        "duration": "72.0",
+        "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "45.0",
         "name": "system_health.common_mobile/browse:social:twitter"
     },
     {
-        "duration": "82.0",
+        "duration": "55.0",
         "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "113.0",
+        "duration": "73.0",
         "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "51.0",
+        "duration": "39.0",
         "name": "system_health.common_mobile/browse:tools:maps"
     },
     {
-        "duration": "21.0",
+        "duration": "22.0",
         "name": "system_health.common_mobile/load:chrome:blank"
     },
     {
-        "duration": "27.0",
+        "duration": "17.0",
         "name": "system_health.common_mobile/load:games:bubbles"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "system_health.common_mobile/load:games:lazors"
     },
     {
-        "duration": "35.0",
+        "duration": "22.0",
         "name": "system_health.common_mobile/load:games:spychase"
     },
     {
-        "duration": "36.0",
+        "duration": "24.0",
         "name": "system_health.common_mobile/load:games:spychase:2018"
     },
     {
-        "duration": "27.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:media:dailymotion"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "system_health.common_mobile/load:media:facebook_photos"
     },
     {
-        "duration": "30.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:media:flickr:2018"
     },
     {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "system_health.common_mobile/load:media:google_images"
     },
     {
-        "duration": "24.0",
+        "duration": "17.0",
         "name": "system_health.common_mobile/load:media:google_images:2018"
     },
     {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "system_health.common_mobile/load:media:imgur"
     },
     {
-        "duration": "35.0",
+        "duration": "21.0",
         "name": "system_health.common_mobile/load:media:imgur:2018"
     },
     {
-        "duration": "24.0",
-        "name": "system_health.common_mobile/load:media:soundcloud:2018"
-    },
-    {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "system_health.common_mobile/load:media:youtube"
     },
     {
-        "duration": "26.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:media:youtube:2018"
     },
     {
-        "duration": "38.0",
+        "duration": "22.0",
         "name": "system_health.common_mobile/load:news:cnn"
     },
     {
-        "duration": "37.0",
+        "duration": "22.0",
         "name": "system_health.common_mobile/load:news:cnn:2018"
     },
     {
-        "duration": "29.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:news:irctc"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:news:nytimes"
     },
     {
-        "duration": "27.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:news:qq"
     },
     {
-        "duration": "25.0",
+        "duration": "17.0",
         "name": "system_health.common_mobile/load:news:reddit"
     },
     {
-        "duration": "27.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:news:washingtonpost"
     },
     {
-        "duration": "24.0",
+        "duration": "17.0",
         "name": "system_health.common_mobile/load:news:wikipedia"
     },
     {
-        "duration": "23.0",
+        "duration": "17.0",
         "name": "system_health.common_mobile/load:news:wikipedia:2018"
     },
     {
-        "duration": "26.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:search:baidu"
     },
     {
-        "duration": "28.0",
+        "duration": "20.0",
         "name": "system_health.common_mobile/load:search:baidu:2018"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "system_health.common_mobile/load:search:ebay"
     },
     {
-        "duration": "30.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:search:ebay:2018"
     },
     {
-        "duration": "23.0",
+        "duration": "16.0",
         "name": "system_health.common_mobile/load:search:google"
     },
     {
-        "duration": "25.0",
+        "duration": "17.0",
         "name": "system_health.common_mobile/load:search:google:2018"
     },
     {
-        "duration": "25.0",
+        "duration": "17.0",
         "name": "system_health.common_mobile/load:search:taobao"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "system_health.common_mobile/load:search:yahoo"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "system_health.common_mobile/load:search:yahoo:2018"
     },
     {
-        "duration": "23.0",
+        "duration": "16.0",
         "name": "system_health.common_mobile/load:search:yandex"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:search:yandex:2018"
     },
     {
-        "duration": "23.0",
+        "duration": "16.0",
         "name": "system_health.common_mobile/load:social:twitter"
     },
     {
-        "duration": "25.0",
+        "duration": "17.0",
         "name": "system_health.common_mobile/load:tools:docs"
     },
     {
-        "duration": "28.0",
+        "duration": "17.0",
         "name": "system_health.common_mobile/load:tools:drive"
     },
     {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "system_health.common_mobile/load:tools:dropbox"
     },
     {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "system_health.common_mobile/load:tools:stackoverflow"
     },
     {
-        "duration": "24.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:tools:stackoverflow:2018"
     },
     {
-        "duration": "29.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:tools:weather"
     },
     {
-        "duration": "28.0",
+        "duration": "22.0",
         "name": "system_health.memory_mobile/background:media:imgur"
     },
     {
-        "duration": "29.0",
+        "duration": "23.0",
         "name": "system_health.memory_mobile/background:search:google"
     },
     {
-        "duration": "32.0",
+        "duration": "21.0",
         "name": "system_health.memory_mobile/background:social:facebook"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "system_health.memory_mobile/browse:chrome:newtab"
     },
     {
+        "duration": "12.0",
+        "name": "system_health.memory_mobile/browse:chrome:omnibox"
+    },
+    {
         "duration": "79.0",
         "name": "system_health.memory_mobile/browse:media:facebook_photos"
     },
     {
-        "duration": "51.0",
+        "duration": "43.0",
         "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "74.0",
+        "duration": "43.0",
+        "name": "system_health.memory_mobile/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "67.0",
         "name": "system_health.memory_mobile/browse:media:imgur"
     },
     {
-        "duration": "84.0",
+        "duration": "79.0",
         "name": "system_health.memory_mobile/browse:media:youtube"
     },
     {
-        "duration": "62.0",
+        "duration": "59.0",
         "name": "system_health.memory_mobile/browse:news:cnn"
     },
     {
-        "duration": "55.0",
+        "duration": "60.0",
         "name": "system_health.memory_mobile/browse:news:cnn:2018"
     },
     {
-        "duration": "60.0",
+        "duration": "58.0",
         "name": "system_health.memory_mobile/browse:news:cricbuzz"
     },
     {
-        "duration": "58.0",
+        "duration": "53.0",
         "name": "system_health.memory_mobile/browse:news:qq"
     },
     {
-        "duration": "52.0",
+        "duration": "47.0",
         "name": "system_health.memory_mobile/browse:news:reddit"
     },
     {
-        "duration": "76.0",
+        "duration": "80.0",
         "name": "system_health.memory_mobile/browse:news:toi"
     },
     {
-        "duration": "50.0",
+        "duration": "45.0",
         "name": "system_health.memory_mobile/browse:news:washingtonpost"
     },
     {
-        "duration": "56.0",
-        "name": "system_health.memory_mobile/browse:shopping:amazon"
-    },
-    {
-        "duration": "58.0",
-        "name": "system_health.memory_mobile/browse:shopping:avito"
-    },
-    {
-        "duration": "35.0",
-        "name": "system_health.memory_mobile/browse:shopping:lazada"
-    },
-    {
-        "duration": "60.0",
-        "name": "system_health.memory_mobile/browse:social:facebook"
-    },
-    {
-        "duration": "81.0",
-        "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll:2018"
-    },
-    {
-        "duration": "75.0",
-        "name": "system_health.memory_mobile/browse:social:instagram"
-    },
-    {
-        "duration": "74.0",
-        "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll"
-    },
-    {
-        "duration": "74.0",
-        "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "52.0",
-        "name": "system_health.memory_mobile/browse:social:twitter"
-    },
-    {
-        "duration": "58.0",
-        "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "48.0",
-        "name": "system_health.memory_mobile/browse:tools:maps"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.memory_mobile/load:chrome:blank"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.memory_mobile/load:games:bubbles"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.memory_mobile/load:games:lazors"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_mobile/load:games:spychase"
-    },
-    {
-        "duration": "32.0",
-        "name": "system_health.memory_mobile/load:games:spychase:2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:media:dailymotion"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:media:facebook_photos"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_mobile/load:media:flickr:2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:media:google_images"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_mobile/load:media:google_images:2018"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_mobile/load:media:imgur"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:media:imgur:2018"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_mobile/load:media:soundcloud:2018"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_mobile/load:media:youtube"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.memory_mobile/load:media:youtube:2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_mobile/load:news:cnn"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_mobile/load:news:cnn:2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:news:irctc"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:news:nytimes"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:news:qq"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:news:reddit"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:news:washingtonpost"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:news:wikipedia"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_mobile/load:news:wikipedia:2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:search:baidu"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_mobile/load:search:baidu:2018"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_mobile/load:search:ebay"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:search:ebay:2018"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_mobile/load:search:google"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_mobile/load:search:google:2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:search:taobao"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.memory_mobile/load:search:yahoo"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.memory_mobile/load:search:yahoo:2018"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_mobile/load:search:yandex"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_mobile/load:search:yandex:2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:social:twitter"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_mobile/load:tools:docs"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.memory_mobile/load:tools:dropbox"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:tools:stackoverflow"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:tools:stackoverflow:2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_mobile/load:tools:weather"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.webview_startup/load:chrome:blank"
-    },
-    {
-        "duration": "12.0",
-        "name": "tracing.tracing_with_background_memory_infra/Facebook"
-    },
-    {
-        "duration": "13.0",
-        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
-    },
-    {
-        "duration": "10.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
-    },
-    {
-        "duration": "10.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
-    },
-    {
-        "duration": "10.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
-    },
-    {
-        "duration": "11.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
-    },
-    {
-        "duration": "13.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
-    },
-    {
-        "duration": "21.0",
-        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
-    },
-    {
-        "duration": "13.0",
-        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
-    },
-    {
-        "duration": "122.0",
-        "name": "v8.browsing_mobile-future/browse:media:facebook_photos"
-    },
-    {
-        "duration": "93.0",
-        "name": "v8.browsing_mobile-future/browse:media:flickr_infinite_scroll"
-    },
-    {
-        "duration": "116.0",
-        "name": "v8.browsing_mobile-future/browse:media:imgur"
-    },
-    {
-        "duration": "148.0",
-        "name": "v8.browsing_mobile-future/browse:media:youtube"
-    },
-    {
-        "duration": "211.0",
-        "name": "v8.browsing_mobile-future/browse:news:cnn"
-    },
-    {
-        "duration": "147.0",
-        "name": "v8.browsing_mobile-future/browse:news:cnn:2018"
-    },
-    {
-        "duration": "102.0",
-        "name": "v8.browsing_mobile-future/browse:news:cricbuzz"
-    },
-    {
-        "duration": "95.0",
-        "name": "v8.browsing_mobile-future/browse:news:qq"
-    },
-    {
-        "duration": "78.0",
-        "name": "v8.browsing_mobile-future/browse:news:reddit"
-    },
-    {
-        "duration": "336.0",
-        "name": "v8.browsing_mobile-future/browse:news:toi"
-    },
-    {
-        "duration": "94.0",
-        "name": "v8.browsing_mobile-future/browse:news:washingtonpost"
-    },
-    {
-        "duration": "138.0",
-        "name": "v8.browsing_mobile-future/browse:shopping:amazon"
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/browse:search:amp:2018"
     },
     {
         "duration": "53.0",
-        "name": "v8.browsing_mobile-future/browse:shopping:lazada"
+        "name": "system_health.memory_mobile/browse:shopping:amazon"
     },
     {
-        "duration": "114.0",
-        "name": "v8.browsing_mobile-future/browse:social:facebook"
+        "duration": "30.0",
+        "name": "system_health.memory_mobile/browse:shopping:lazada"
     },
     {
-        "duration": "621.0",
-        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll"
+        "duration": "57.0",
+        "name": "system_health.memory_mobile/browse:social:facebook"
     },
     {
-        "duration": "282.0",
-        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll:2018"
+        "duration": "70.0",
+        "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "138.0",
-        "name": "v8.browsing_mobile-future/browse:social:instagram"
+        "duration": "70.0",
+        "name": "system_health.memory_mobile/browse:social:instagram"
     },
     {
-        "duration": "190.0",
-        "name": "v8.browsing_mobile-future/browse:social:pinterest_infinite_scroll"
+        "duration": "71.0",
+        "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll"
     },
     {
-        "duration": "279.0",
-        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll"
+        "duration": "73.0",
+        "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "81.0",
-        "name": "v8.browsing_mobile-future/browse:social:twitter"
+        "duration": "67.0",
+        "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018"
     },
     {
-        "duration": "143.0",
-        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll"
+        "duration": "47.0",
+        "name": "system_health.memory_mobile/browse:social:twitter"
     },
     {
-        "duration": "243.0",
-        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll:2018"
+        "duration": "53.0",
+        "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "68.0",
-        "name": "v8.browsing_mobile-future/browse:tools:maps"
+        "duration": "42.0",
+        "name": "system_health.memory_mobile/browse:tools:maps"
     },
     {
-        "duration": "121.0",
-        "name": "v8.browsing_mobile/browse:media:facebook_photos"
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:chrome:blank"
     },
     {
-        "duration": "93.0",
-        "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll"
+        "duration": "20.0",
+        "name": "system_health.memory_mobile/load:games:bubbles"
     },
     {
-        "duration": "115.0",
-        "name": "v8.browsing_mobile/browse:media:imgur"
+        "duration": "20.0",
+        "name": "system_health.memory_mobile/load:games:lazors"
     },
     {
-        "duration": "146.0",
-        "name": "v8.browsing_mobile/browse:news:cnn:2018"
+        "duration": "25.0",
+        "name": "system_health.memory_mobile/load:games:spychase"
     },
     {
-        "duration": "98.0",
-        "name": "v8.browsing_mobile/browse:news:cricbuzz"
+        "duration": "26.0",
+        "name": "system_health.memory_mobile/load:games:spychase:2018"
     },
     {
-        "duration": "104.0",
-        "name": "v8.browsing_mobile/browse:news:qq"
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:media:dailymotion"
     },
     {
-        "duration": "78.0",
-        "name": "v8.browsing_mobile/browse:news:reddit"
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:media:facebook_photos"
     },
     {
-        "duration": "350.0",
-        "name": "v8.browsing_mobile/browse:news:toi"
+        "duration": "26.0",
+        "name": "system_health.memory_mobile/load:media:flickr:2018"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.memory_mobile/load:media:google_images"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.memory_mobile/load:media:google_images:2018"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.memory_mobile/load:media:imgur"
+    },
+    {
+        "duration": "24.0",
+        "name": "system_health.memory_mobile/load:media:imgur:2018"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.memory_mobile/load:media:youtube"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:media:youtube:2018"
+    },
+    {
+        "duration": "25.0",
+        "name": "system_health.memory_mobile/load:news:cnn"
+    },
+    {
+        "duration": "27.0",
+        "name": "system_health.memory_mobile/load:news:cnn:2018"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:news:irctc"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:news:nytimes"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:news:qq"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.memory_mobile/load:news:reddit"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.memory_mobile/load:news:washingtonpost"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:news:wikipedia"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:news:wikipedia:2018"
+    },
+    {
+        "duration": "25.0",
+        "name": "system_health.memory_mobile/load:search:baidu"
+    },
+    {
+        "duration": "24.0",
+        "name": "system_health.memory_mobile/load:search:baidu:2018"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.memory_mobile/load:search:ebay"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:search:ebay:2018"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.memory_mobile/load:search:google"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.memory_mobile/load:search:google:2018"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.memory_mobile/load:search:taobao"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.memory_mobile/load:search:yahoo"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.memory_mobile/load:search:yahoo:2018"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.memory_mobile/load:search:yandex"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:search:yandex:2018"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.memory_mobile/load:social:twitter"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.memory_mobile/load:tools:docs"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.memory_mobile/load:tools:dropbox"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.memory_mobile/load:tools:stackoverflow"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:tools:stackoverflow:2018"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:tools:weather"
+    },
+    {
+        "duration": "19.0",
+        "name": "system_health.webview_startup/load:chrome:blank"
+    },
+    {
+        "duration": "6.0",
+        "name": "tracing.tracing_with_background_memory_infra/Facebook"
+    },
+    {
+        "duration": "6.0",
+        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
+    },
+    {
+        "duration": "5.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
+    },
+    {
+        "duration": "5.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
+    },
+    {
+        "duration": "5.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
+    },
+    {
+        "duration": "5.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
+    },
+    {
+        "duration": "7.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
+    },
+    {
+        "duration": "10.0",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "7.0",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "10.0",
+        "name": "v8.browsing_mobile-future/browse:chrome:newtab"
+    },
+    {
+        "duration": "9.0",
+        "name": "v8.browsing_mobile-future/browse:chrome:omnibox"
+    },
+    {
+        "duration": "77.0",
+        "name": "v8.browsing_mobile-future/browse:media:facebook_photos"
+    },
+    {
+        "duration": "50.0",
+        "name": "v8.browsing_mobile-future/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "44.0",
+        "name": "v8.browsing_mobile-future/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "71.0",
+        "name": "v8.browsing_mobile-future/browse:media:imgur"
     },
     {
         "duration": "94.0",
+        "name": "v8.browsing_mobile-future/browse:media:youtube"
+    },
+    {
+        "duration": "101.0",
+        "name": "v8.browsing_mobile-future/browse:news:cnn"
+    },
+    {
+        "duration": "66.0",
+        "name": "v8.browsing_mobile-future/browse:news:cnn:2018"
+    },
+    {
+        "duration": "59.0",
+        "name": "v8.browsing_mobile-future/browse:news:cricbuzz"
+    },
+    {
+        "duration": "56.0",
+        "name": "v8.browsing_mobile-future/browse:news:qq"
+    },
+    {
+        "duration": "48.0",
+        "name": "v8.browsing_mobile-future/browse:news:reddit"
+    },
+    {
+        "duration": "99.0",
+        "name": "v8.browsing_mobile-future/browse:news:toi"
+    },
+    {
+        "duration": "49.0",
+        "name": "v8.browsing_mobile-future/browse:news:washingtonpost"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.browsing_mobile-future/browse:search:amp:2018"
+    },
+    {
+        "duration": "60.0",
+        "name": "v8.browsing_mobile-future/browse:shopping:amazon"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.browsing_mobile-future/browse:shopping:lazada"
+    },
+    {
+        "duration": "61.0",
+        "name": "v8.browsing_mobile-future/browse:social:facebook"
+    },
+    {
+        "duration": "87.0",
+        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "79.0",
+        "name": "v8.browsing_mobile-future/browse:social:instagram"
+    },
+    {
+        "duration": "86.0",
+        "name": "v8.browsing_mobile-future/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "89.0",
+        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "85.0",
+        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "48.0",
+        "name": "v8.browsing_mobile-future/browse:social:twitter"
+    },
+    {
+        "duration": "85.0",
+        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "41.0",
+        "name": "v8.browsing_mobile-future/browse:tools:maps"
+    },
+    {
+        "duration": "11.0",
+        "name": "v8.browsing_mobile/browse:chrome:newtab"
+    },
+    {
+        "duration": "11.0",
+        "name": "v8.browsing_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "82.0",
+        "name": "v8.browsing_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "47.0",
+        "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "46.0",
+        "name": "v8.browsing_mobile/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "72.0",
+        "name": "v8.browsing_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "65.0",
+        "name": "v8.browsing_mobile/browse:news:cnn:2018"
+    },
+    {
+        "duration": "59.0",
+        "name": "v8.browsing_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "59.0",
+        "name": "v8.browsing_mobile/browse:news:qq"
+    },
+    {
+        "duration": "48.0",
+        "name": "v8.browsing_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "100.0",
+        "name": "v8.browsing_mobile/browse:news:toi"
+    },
+    {
+        "duration": "50.0",
         "name": "v8.browsing_mobile/browse:news:washingtonpost"
     },
     {
-        "duration": "137.0",
+        "duration": "23.0",
+        "name": "v8.browsing_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "62.0",
         "name": "v8.browsing_mobile/browse:shopping:amazon"
     },
     {
-        "duration": "119.0",
-        "name": "v8.browsing_mobile/browse:shopping:avito"
-    },
-    {
-        "duration": "52.0",
+        "duration": "29.0",
         "name": "v8.browsing_mobile/browse:shopping:lazada"
     },
     {
-        "duration": "114.0",
+        "duration": "62.0",
         "name": "v8.browsing_mobile/browse:social:facebook"
     },
     {
-        "duration": "631.0",
+        "duration": "91.0",
         "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "285.0",
+        "duration": "88.0",
         "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "137.0",
+        "duration": "79.0",
         "name": "v8.browsing_mobile/browse:social:instagram"
     },
     {
-        "duration": "188.0",
+        "duration": "88.0",
         "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll"
     },
     {
-        "duration": "281.0",
+        "duration": "89.0",
         "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "81.0",
+        "duration": "87.0",
+        "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "48.0",
         "name": "v8.browsing_mobile/browse:social:twitter"
     },
     {
-        "duration": "143.0",
+        "duration": "62.0",
         "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "237.0",
+        "duration": "86.0",
         "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "68.0",
+        "duration": "41.0",
         "name": "v8.browsing_mobile/browse:tools:maps"
     },
     {
@@ -3512,7 +4144,7 @@
         "name": "wasm/AsmJsZenGarden"
     },
     {
-        "duration": "20.0",
+        "duration": "16.0",
         "name": "wasm/WasmSpaceBuggy"
     },
     {
@@ -3520,47 +4152,47 @@
         "name": "wasm/WasmStylizedRenderer"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "wasm/WasmSunTemple"
     },
     {
-        "duration": "16.0",
+        "duration": "18.0",
         "name": "wasm/WasmTanks"
     },
     {
-        "duration": "8.0",
+        "duration": "10.0",
         "name": "wasm/WasmZenGarden"
     },
     {
-        "duration": "20.0",
+        "duration": "15.0",
         "name": "webrtc/10s_datachannel_transfer"
     },
     {
-        "duration": "25.0",
+        "duration": "17.0",
         "name": "webrtc/canvas_capture_peer_connection"
     },
     {
-        "duration": "35.0",
+        "duration": "26.0",
         "name": "webrtc/codec_constraints_h264"
     },
     {
-        "duration": "35.0",
+        "duration": "26.0",
         "name": "webrtc/codec_constraints_vp8"
     },
     {
-        "duration": "35.0",
+        "duration": "26.0",
         "name": "webrtc/codec_constraints_vp9"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "webrtc/hd_local_stream_10s"
     },
     {
-        "duration": "43.0",
+        "duration": "28.0",
         "name": "webrtc/multiple_peerconnections"
     },
     {
-        "duration": "65.0",
+        "duration": "35.0",
         "name": "webrtc/pause_play_peerconnections"
     }
 ]
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/android_nexus5_perf_timing.json b/tools/perf/core/shard_maps/timing_data/android_nexus5_perf_timing.json
index 86ce2b4..fa9f207 100644
--- a/tools/perf/core/shard_maps/timing_data/android_nexus5_perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/android_nexus5_perf_timing.json
@@ -1,110 +1,114 @@
 [
     {
-        "duration": "31.0",
+        "duration": "45.0",
+        "name": "blink_perf.accessibility/line-breaks.html"
+    },
+    {
+        "duration": "27.0",
         "name": "blink_perf.accessibility/textarea-append.html"
     },
     {
-        "duration": "22.0",
+        "duration": "36.0",
         "name": "blink_perf.bindings/append-child.html"
     },
     {
-        "duration": "15.0",
+        "duration": "20.0",
         "name": "blink_perf.bindings/create-element.html"
     },
     {
-        "duration": "15.0",
+        "duration": "20.0",
         "name": "blink_perf.bindings/document-implementation.html"
     },
     {
-        "duration": "17.0",
+        "duration": "21.0",
         "name": "blink_perf.bindings/dom-attribute-on-prototoype.html"
     },
     {
-        "duration": "15.0",
+        "duration": "21.0",
         "name": "blink_perf.bindings/first-child.html"
     },
     {
-        "duration": "38.0",
+        "duration": "39.0",
         "name": "blink_perf.bindings/gc-forest.html"
     },
     {
-        "duration": "74.0",
+        "duration": "52.0",
         "name": "blink_perf.bindings/gc-mini-tree.html"
     },
     {
-        "duration": "148.0",
+        "duration": "104.0",
         "name": "blink_perf.bindings/gc-tree.html"
     },
     {
-        "duration": "14.0",
+        "duration": "18.0",
         "name": "blink_perf.bindings/get-attribute-rare.html"
     },
     {
-        "duration": "14.0",
+        "duration": "19.0",
         "name": "blink_perf.bindings/get-attribute.html"
     },
     {
-        "duration": "14.0",
+        "duration": "18.0",
         "name": "blink_perf.bindings/get-element-by-id.html"
     },
     {
-        "duration": "14.0",
+        "duration": "19.0",
         "name": "blink_perf.bindings/get-elements-by-tag-name.html"
     },
     {
-        "duration": "15.0",
+        "duration": "19.0",
         "name": "blink_perf.bindings/id-getter.html"
     },
     {
-        "duration": "16.0",
+        "duration": "20.0",
         "name": "blink_perf.bindings/id-setter.html"
     },
     {
-        "duration": "22.0",
+        "duration": "23.0",
         "name": "blink_perf.bindings/indexed-getter.html"
     },
     {
-        "duration": "14.0",
+        "duration": "18.0",
         "name": "blink_perf.bindings/insert-before.html"
     },
     {
-        "duration": "15.0",
+        "duration": "19.0",
         "name": "blink_perf.bindings/named-property-enumerator.html"
     },
     {
-        "duration": "131.0",
+        "duration": "82.0",
         "name": "blink_perf.bindings/node-list-access.html"
     },
     {
-        "duration": "16.0",
+        "duration": "20.0",
         "name": "blink_perf.bindings/node-type.html"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "blink_perf.bindings/post-message.html"
     },
     {
-        "duration": "14.0",
+        "duration": "19.0",
         "name": "blink_perf.bindings/sequence-conversion-array.html"
     },
     {
-        "duration": "17.0",
+        "duration": "19.0",
         "name": "blink_perf.bindings/sequence-conversion-custom-iterator.html"
     },
     {
-        "duration": "9.0",
+        "duration": "14.0",
         "name": "blink_perf.bindings/serialize-array.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.bindings/serialize-long-string.html"
     },
     {
-        "duration": "19.0",
+        "duration": "23.0",
         "name": "blink_perf.bindings/serialize-map.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.bindings/serialize-nested-array.html"
     },
     {
@@ -112,247 +116,395 @@
         "name": "blink_perf.bindings/set-attribute-rare.html"
     },
     {
-        "duration": "15.0",
+        "duration": "20.0",
         "name": "blink_perf.bindings/set-attribute.html"
     },
     {
-        "duration": "15.0",
+        "duration": "19.0",
         "name": "blink_perf.bindings/typed-array-construct-from-array.html"
     },
     {
-        "duration": "16.0",
+        "duration": "20.0",
         "name": "blink_perf.bindings/typed-array-construct-from-same-type.html"
     },
     {
-        "duration": "15.0",
+        "duration": "19.0",
         "name": "blink_perf.bindings/typed-array-construct-from-typed.html"
     },
     {
-        "duration": "14.0",
+        "duration": "19.0",
         "name": "blink_perf.bindings/typed-array-set-from-typed.html"
     },
     {
-        "duration": "15.0",
+        "duration": "21.0",
         "name": "blink_perf.bindings/undefined-first-child.html"
     },
     {
-        "duration": "14.0",
+        "duration": "18.0",
         "name": "blink_perf.bindings/undefined-get-element-by-id.html"
     },
     {
-        "duration": "15.0",
+        "duration": "20.0",
         "name": "blink_perf.bindings/undefined-id-getter.html"
     },
     {
+        "duration": "12.0",
+        "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html"
+    },
+    {
         "duration": "23.0",
+        "name": "blink_perf.bindings/worker-structured-clone-workerDOM-DBMon-from-worker.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.bindings/worker-structured-clone-workerDOM-Map-from-worker.html"
+    },
+    {
+        "duration": "142.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-from-worker.html"
+    },
+    {
+        "duration": "142.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-roundtrip.html"
+    },
+    {
+        "duration": "142.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-to-worker.html"
+    },
+    {
+        "duration": "63.0",
+        "name": "blink_perf.bindings/worker-transferable-from-worker.html"
+    },
+    {
+        "duration": "62.0",
+        "name": "blink_perf.bindings/worker-transferable-roundtrip.html"
+    },
+    {
+        "duration": "64.0",
+        "name": "blink_perf.bindings/worker-transferable-to-worker.html"
+    },
+    {
+        "duration": "36.0",
         "name": "blink_perf.canvas/createImageBitmapFromImageData.html"
     },
     {
-        "duration": "51.0",
+        "duration": "20.0",
+        "name": "blink_perf.canvas/createImageBitmapFromImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "41.0",
+        "name": "blink_perf.canvas/docs-paper.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.canvas/docs-paper_RAF.html?RAF"
+    },
+    {
+        "duration": "23.0",
+        "name": "blink_perf.canvas/docs-resume.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.canvas/docs-resume_RAF.html?RAF"
+    },
+    {
+        "duration": "20.0",
+        "name": "blink_perf.canvas/docs-table.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.canvas/docs-table_RAF.html?RAF"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "55.0",
         "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d.html"
     },
     {
         "duration": "14.0",
-        "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d.html"
+        "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
     },
     {
         "duration": "18.0",
+        "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "22.0",
         "name": "blink_perf.canvas/drawimage-not-pixelaligned.html"
     },
     {
-        "duration": "19.0",
+        "duration": "22.0",
+        "name": "blink_perf.canvas/drawimage-not-pixelaligned_RAF.html?RAF"
+    },
+    {
+        "duration": "22.0",
         "name": "blink_perf.canvas/drawimage.html"
     },
     {
         "duration": "23.0",
+        "name": "blink_perf.canvas/drawimage_RAF.html?RAF"
+    },
+    {
+        "duration": "23.0",
         "name": "blink_perf.canvas/getImageData.html"
     },
     {
-        "duration": "19.0",
+        "duration": "20.0",
         "name": "blink_perf.canvas/getImageDataColorManaged.html"
     },
     {
-        "duration": "55.0",
-        "name": "blink_perf.canvas/putImageData.html"
+        "duration": "21.0",
+        "name": "blink_perf.canvas/getImageDataColorManaged_RAF.html?RAF"
     },
     {
-        "duration": "15.0",
-        "name": "blink_perf.canvas/toBlob_duration.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.canvas/toBlob_duration_jpeg.html"
-    },
-    {
-        "duration": "9.0",
-        "name": "blink_perf.canvas/transferFromImageBitmap.html"
-    },
-    {
-        "duration": "25.0",
-        "name": "blink_perf.canvas/upload-canvas-2d-to-texture.html"
-    },
-    {
-        "duration": "17.0",
-        "name": "blink_perf.canvas/upload-video-to-sub-texture.html"
-    },
-    {
-        "duration": "9.0",
-        "name": "blink_perf.canvas/upload-video-to-texture.html"
-    },
-    {
-        "duration": "24.0",
-        "name": "blink_perf.canvas/upload-webgl-to-texture.html"
-    },
-    {
-        "duration": "32.0",
-        "name": "blink_perf.css/AttributeDescendantSelector.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.css/CSSPropertySetterGetter.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.css/CSSPropertySetterGetterMethods.html"
-    },
-    {
-        "duration": "17.0",
-        "name": "blink_perf.css/CSSPropertyUpdateValue.html"
+        "duration": "23.0",
+        "name": "blink_perf.canvas/getImageData_RAF.html?RAF"
     },
     {
         "duration": "12.0",
-        "name": "blink_perf.css/ChangeStyleChildClassSelector.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.css/ChangeStyleChildElementSelectors.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.css/ChangeStyleElementSelector.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.css/ChangeStyleShallowTree.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.css/ChangeStyleSingleClassSelector.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.css/ChangeStyleUniversalSelector.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html"
-    },
-    {
-        "duration": "32.0",
-        "name": "blink_perf.css/ClassDescendantSelector.html"
-    },
-    {
-        "duration": "24.0",
-        "name": "blink_perf.css/ClassInvalidation.html"
-    },
-    {
-        "duration": "26.0",
-        "name": "blink_perf.css/CustomPropertiesCascade.html"
-    },
-    {
-        "duration": "13.0",
-        "name": "blink_perf.css/CustomPropertiesNonRootInheritance.html"
-    },
-    {
-        "duration": "13.0",
-        "name": "blink_perf.css/CustomPropertiesRootInheritance.html"
-    },
-    {
-        "duration": "10.0",
-        "name": "blink_perf.css/CustomPropertiesVarAlias.html"
-    },
-    {
-        "duration": "22.0",
-        "name": "blink_perf.css/FocusUpdate.html"
+        "name": "blink_perf.canvas/gpu-bound-shader.html"
     },
     {
         "duration": "14.0",
-        "name": "blink_perf.css/LoadBootstrapBlog.html"
+        "name": "blink_perf.canvas/gpu-bound-shader_RAF.html?RAF"
     },
     {
-        "duration": "15.0",
-        "name": "blink_perf.css/LoadMaterializeStarterPage.html"
+        "duration": "23.0",
+        "name": "blink_perf.canvas/putImageData.html"
     },
     {
-        "duration": "17.0",
-        "name": "blink_perf.css/LoadSemanticPageExample.html"
+        "duration": "23.0",
+        "name": "blink_perf.canvas/putImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "41.0",
+        "name": "blink_perf.canvas/sheets-render.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.canvas/sheets-render_RAF.html?RAF"
+    },
+    {
+        "duration": "38.0",
+        "name": "blink_perf.canvas/toBlob_duration.html"
+    },
+    {
+        "duration": "38.0",
+        "name": "blink_perf.canvas/toBlob_duration_RAF.html?RAF"
+    },
+    {
+        "duration": "35.0",
+        "name": "blink_perf.canvas/toBlob_duration_jpeg.html"
+    },
+    {
+        "duration": "35.0",
+        "name": "blink_perf.canvas/toBlob_duration_jpeg_RAF.html?RAF"
     },
     {
         "duration": "18.0",
-        "name": "blink_perf.css/PseudoClassSelectors.html"
+        "name": "blink_perf.canvas/transferFromImageBitmap.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.canvas/transferFromImageBitmap_RAF.html?RAF"
+    },
+    {
+        "duration": "29.0",
+        "name": "blink_perf.canvas/upload-canvas-2d-to-texture.html"
+    },
+    {
+        "duration": "41.0",
+        "name": "blink_perf.canvas/upload-canvas-2d-to-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "23.0",
+        "name": "blink_perf.canvas/upload-video-to-sub-texture.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.canvas/upload-video-to-sub-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "30.0",
+        "name": "blink_perf.canvas/upload-video-to-texture.html"
     },
     {
         "duration": "16.0",
+        "name": "blink_perf.canvas/upload-video-to-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "29.0",
+        "name": "blink_perf.canvas/upload-webgl-to-texture.html"
+    },
+    {
+        "duration": "37.0",
+        "name": "blink_perf.canvas/upload-webgl-to-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "47.0",
+        "name": "blink_perf.css/AttributeDescendantSelector.html"
+    },
+    {
+        "duration": "21.0",
+        "name": "blink_perf.css/CSSPropertySetterGetter.html"
+    },
+    {
+        "duration": "22.0",
+        "name": "blink_perf.css/CSSPropertySetterGetterMethods.html"
+    },
+    {
+        "duration": "22.0",
+        "name": "blink_perf.css/CSSPropertyUpdateValue.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.css/ChangeStyleChildClassSelector.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.css/ChangeStyleChildElementSelectors.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.css/ChangeStyleElementSelector.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.css/ChangeStyleShallowTree.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.css/ChangeStyleSingleClassSelector.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.css/ChangeStyleUniversalSelector.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html"
+    },
+    {
+        "duration": "31.0",
+        "name": "blink_perf.css/ClassDescendantSelector.html"
+    },
+    {
+        "duration": "25.0",
+        "name": "blink_perf.css/ClassInvalidation.html"
+    },
+    {
+        "duration": "27.0",
+        "name": "blink_perf.css/CustomPropertiesCascade.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.css/CustomPropertiesNonRootInheritance.html"
+    },
+    {
+        "duration": "16.0",
+        "name": "blink_perf.css/CustomPropertiesRootInheritance.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.css/CustomPropertiesVarAlias.html"
+    },
+    {
+        "duration": "23.0",
+        "name": "blink_perf.css/FocusUpdate.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.css/LoadBootstrapBlog.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.css/LoadMaterializeStarterPage.html"
+    },
+    {
+        "duration": "21.0",
+        "name": "blink_perf.css/LoadSemanticPageExample.html"
+    },
+    {
+        "duration": "23.0",
+        "name": "blink_perf.css/PseudoClassSelectors.html"
+    },
+    {
+        "duration": "42.0",
         "name": "blink_perf.css/SelectorCountScaling.html"
     },
     {
-        "duration": "57.0",
-        "name": "blink_perf.dom/addRange.html"
-    },
-    {
-        "duration": "104.0",
+        "duration": "114.0",
         "name": "blink_perf.dom/custom-element-default-style-with-shadow.html"
     },
     {
@@ -360,231 +512,231 @@
         "name": "blink_perf.dom/custom-element-default-style.html"
     },
     {
-        "duration": "10.0",
-        "name": "blink_perf.dom/delete-in-password-field.html"
-    },
-    {
-        "duration": "29.0",
-        "name": "blink_perf.dom/div-editable.html"
-    },
-    {
-        "duration": "8.0",
-        "name": "blink_perf.dom/inner_html_with_selection.html"
-    },
-    {
-        "duration": "28.0",
+        "duration": "64.0",
         "name": "blink_perf.dom/long-sibling-list.html"
     },
     {
-        "duration": "25.0",
+        "duration": "27.0",
         "name": "blink_perf.dom/modify-element-classname.html"
     },
     {
-        "duration": "17.0",
+        "duration": "20.0",
         "name": "blink_perf.dom/modify-element-id.html"
     },
     {
-        "duration": "18.0",
+        "duration": "21.0",
         "name": "blink_perf.dom/modify-element-title.html"
     },
     {
-        "duration": "10.0",
-        "name": "blink_perf.dom/move-down-with-hidden-elements.html"
-    },
-    {
-        "duration": "10.0",
-        "name": "blink_perf.dom/move-up-with-hidden-elements.html"
-    },
-    {
-        "duration": "8.0",
-        "name": "blink_perf.dom/remove_child_with_selection.html"
-    },
-    {
-        "duration": "15.0",
+        "duration": "20.0",
         "name": "blink_perf.dom/select-multiple-add.html"
     },
     {
-        "duration": "16.0",
+        "duration": "20.0",
         "name": "blink_perf.dom/select-single-add.html"
     },
     {
-        "duration": "18.0",
+        "duration": "21.0",
         "name": "blink_perf.dom/select-single-remove.html"
     },
     {
-        "duration": "15.0",
-        "name": "blink_perf.dom/textarea-dom.html"
-    },
-    {
-        "duration": "34.0",
-        "name": "blink_perf.dom/textarea-edit.html"
-    },
-    {
-        "duration": "30.0",
+        "duration": "33.0",
         "name": "blink_perf.events/EventsDispatching.html"
     },
     {
-        "duration": "20.0",
-        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedShadowTrees.html"
+        "duration": "23.0",
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV0ShadowTrees.html"
     },
     {
-        "duration": "65.0",
-        "name": "blink_perf.events/EventsDispatchingInShadowTrees.html"
+        "duration": "25.0",
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html"
     },
     {
-        "duration": "86.0",
-        "name": "blink_perf.events/hit-test-lots-of-layers.html"
-    },
-    {
-        "duration": "48.0",
-        "name": "blink_perf.image_decoder/decode-gif.html"
-    },
-    {
-        "duration": "21.0",
-        "name": "blink_perf.image_decoder/decode-jpeg.html"
-    },
-    {
-        "duration": "54.0",
-        "name": "blink_perf.image_decoder/decode-lossless-webp.html"
-    },
-    {
-        "duration": "18.0",
-        "name": "blink_perf.image_decoder/decode-lossy-webp.html"
-    },
-    {
-        "duration": "28.0",
-        "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
-    },
-    {
-        "duration": "19.0",
-        "name": "blink_perf.image_decoder/decode-png-palette.html"
-    },
-    {
-        "duration": "40.0",
-        "name": "blink_perf.image_decoder/decode-png.html"
-    },
-    {
-        "duration": "26.0",
-        "name": "blink_perf.layout/ArabicLineLayout.html"
-    },
-    {
-        "duration": "9.0",
-        "name": "blink_perf.layout/Shapes/MultipleShapes.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "blink_perf.layout/SimpleTextPathLineLayout.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "blink_perf.layout/add-remove-inline-floats.html"
-    },
-    {
-        "duration": "18.0",
-        "name": "blink_perf.layout/attach-inlines-2.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "blink_perf.layout/attach-inlines.html"
-    },
-    {
-        "duration": "17.0",
-        "name": "blink_perf.layout/auto-grid-lots-of-data.html"
-    },
-    {
-        "duration": "31.0",
-        "name": "blink_perf.layout/change-text-css-contain.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.layout/chapter-reflow-once-random.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.layout/chapter-reflow-once.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.layout/chapter-reflow-thrice.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "blink_perf.layout/chapter-reflow-twice.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.layout/chapter-reflow.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.layout/character_fallback.html"
-    },
-    {
-        "duration": "10.0",
-        "name": "blink_perf.layout/character_fallback_aat.html"
-    },
-    {
-        "duration": "20.0",
-        "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
-    },
-    {
-        "duration": "20.0",
-        "name": "blink_perf.layout/fixed-grid-lots-of-stretched-data.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.layout/flexbox-column-nowrap.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.layout/flexbox-column-wrap.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html"
-    },
-    {
-        "duration": "20.0",
-        "name": "blink_perf.layout/flexbox-lots-of-data.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.layout/flexbox-row-nowrap.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.layout/flexbox-row-wrap.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.layout/flexbox-with-stretch-layout.html"
-    },
-    {
-        "duration": "71.0",
-        "name": "blink_perf.layout/floats_100_100.html"
-    },
-    {
-        "duration": "72.0",
-        "name": "blink_perf.layout/floats_100_100_nested.html"
-    },
-    {
-        "duration": "45.0",
-        "name": "blink_perf.layout/floats_10_1000.html"
+        "duration": "61.0",
+        "name": "blink_perf.events/EventsDispatchingInV0ShadowTrees.html"
     },
     {
         "duration": "59.0",
-        "name": "blink_perf.layout/floats_20_100.html"
+        "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html"
     },
     {
-        "duration": "34.0",
-        "name": "blink_perf.layout/floats_20_100_nested.html"
+        "duration": "88.0",
+        "name": "blink_perf.events/hit-test-lots-of-layers.html"
+    },
+    {
+        "duration": "24.0",
+        "name": "blink_perf.events/is-input-pending-all-events.html"
+    },
+    {
+        "duration": "23.0",
+        "name": "blink_perf.events/is-input-pending-default-events.html"
+    },
+    {
+        "duration": "58.0",
+        "name": "blink_perf.image_decoder/decode-gif.html"
+    },
+    {
+        "duration": "25.0",
+        "name": "blink_perf.image_decoder/decode-jpeg.html"
+    },
+    {
+        "duration": "56.0",
+        "name": "blink_perf.image_decoder/decode-lossless-webp.html"
+    },
+    {
+        "duration": "23.0",
+        "name": "blink_perf.image_decoder/decode-lossy-webp.html"
+    },
+    {
+        "duration": "33.0",
+        "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
+    },
+    {
+        "duration": "24.0",
+        "name": "blink_perf.image_decoder/decode-png-palette.html"
+    },
+    {
+        "duration": "45.0",
+        "name": "blink_perf.image_decoder/decode-png.html"
+    },
+    {
+        "duration": "37.0",
+        "name": "blink_perf.layout/ArabicLineLayout.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.layout/Shapes/MultipleShapes.html"
     },
     {
         "duration": "18.0",
-        "name": "blink_perf.layout/floats_2_100.html"
+        "name": "blink_perf.layout/SimpleTextPathLineLayout.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.layout/add-remove-inline-floats.html"
+    },
+    {
+        "duration": "23.0",
+        "name": "blink_perf.layout/attach-inlines-2.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.layout/attach-inlines.html"
     },
     {
         "duration": "21.0",
+        "name": "blink_perf.layout/auto-grid-lots-of-data.html"
+    },
+    {
+        "duration": "32.0",
+        "name": "blink_perf.layout/change-text-css-contain.html"
+    },
+    {
+        "duration": "20.0",
+        "name": "blink_perf.layout/chapter-reflow-once-random.html"
+    },
+    {
+        "duration": "20.0",
+        "name": "blink_perf.layout/chapter-reflow-once.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.layout/chapter-reflow-thrice.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.layout/chapter-reflow-twice.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.layout/chapter-reflow.html"
+    },
+    {
+        "duration": "25.0",
+        "name": "blink_perf.layout/character_fallback.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.layout/character_fallback_aat.html"
+    },
+    {
+        "duration": "66.0",
+        "name": "blink_perf.layout/contain-content-style-change.html"
+    },
+    {
+        "duration": "33.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-blocks.html"
+    },
+    {
+        "duration": "21.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-text.html"
+    },
+    {
+        "duration": "25.0",
+        "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
+    },
+    {
+        "duration": "24.0",
+        "name": "blink_perf.layout/fixed-grid-lots-of-stretched-data.html"
+    },
+    {
+        "duration": "21.0",
+        "name": "blink_perf.layout/flexbox-column-nowrap.html"
+    },
+    {
+        "duration": "21.0",
+        "name": "blink_perf.layout/flexbox-column-wrap.html"
+    },
+    {
+        "duration": "21.0",
+        "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html"
+    },
+    {
+        "duration": "25.0",
+        "name": "blink_perf.layout/flexbox-lots-of-data.html"
+    },
+    {
+        "duration": "20.0",
+        "name": "blink_perf.layout/flexbox-row-nowrap.html"
+    },
+    {
+        "duration": "33.0",
+        "name": "blink_perf.layout/flexbox-row-stretch-height-definite.html"
+    },
+    {
+        "duration": "20.0",
+        "name": "blink_perf.layout/flexbox-row-wrap.html"
+    },
+    {
+        "duration": "20.0",
+        "name": "blink_perf.layout/flexbox-with-stretch-layout.html"
+    },
+    {
+        "duration": "55.0",
+        "name": "blink_perf.layout/floats_100_100.html"
+    },
+    {
+        "duration": "55.0",
+        "name": "blink_perf.layout/floats_100_100_nested.html"
+    },
+    {
+        "duration": "46.0",
+        "name": "blink_perf.layout/floats_10_1000.html"
+    },
+    {
+        "duration": "30.0",
+        "name": "blink_perf.layout/floats_20_100.html"
+    },
+    {
+        "duration": "36.0",
+        "name": "blink_perf.layout/floats_20_100_nested.html"
+    },
+    {
+        "duration": "22.0",
+        "name": "blink_perf.layout/floats_2_100.html"
+    },
+    {
+        "duration": "25.0",
         "name": "blink_perf.layout/floats_2_100_nested.html"
     },
     {
@@ -592,207 +744,231 @@
         "name": "blink_perf.layout/floats_50_100.html"
     },
     {
-        "duration": "34.0",
+        "duration": "35.0",
         "name": "blink_perf.layout/floats_50_100_nested.html"
     },
     {
-        "duration": "17.0",
+        "duration": "22.0",
         "name": "blink_perf.layout/hindi-line-layout.html"
     },
     {
-        "duration": "15.0",
+        "duration": "20.0",
+        "name": "blink_perf.layout/japanese-kokoro-insert.html"
+    },
+    {
+        "duration": "64.0",
+        "name": "blink_perf.layout/large-grid.html"
+    },
+    {
+        "duration": "19.0",
         "name": "blink_perf.layout/large-spanning-grid-item.html"
     },
     {
-        "duration": "70.0",
+        "duration": "66.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html"
     },
     {
-        "duration": "70.0",
+        "duration": "65.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html"
     },
     {
-        "duration": "69.0",
+        "duration": "82.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html"
     },
     {
-        "duration": "218.0",
+        "duration": "203.0",
         "name": "blink_perf.layout/latin-ebook-resize.html"
     },
     {
-        "duration": "37.0",
+        "duration": "39.0",
         "name": "blink_perf.layout/latin-ebook.html"
     },
     {
-        "duration": "18.0",
+        "duration": "22.0",
         "name": "blink_perf.layout/layers_overlap_2d.html"
     },
     {
-        "duration": "19.0",
+        "duration": "23.0",
         "name": "blink_perf.layout/layers_overlap_3d.html"
     },
     {
-        "duration": "71.0",
+        "duration": "20.0",
+        "name": "blink_perf.layout/line-layout-fit-content-break-word.html"
+    },
+    {
+        "duration": "35.0",
+        "name": "blink_perf.layout/line-layout-fit-content.html"
+    },
+    {
+        "duration": "67.0",
         "name": "blink_perf.layout/line-layout-line-height.html"
     },
     {
-        "duration": "17.0",
+        "duration": "21.0",
         "name": "blink_perf.layout/line-layout-repeat-append-select.html"
     },
     {
-        "duration": "16.0",
+        "duration": "21.0",
         "name": "blink_perf.layout/line-layout-repeat-append.html"
     },
     {
-        "duration": "16.0",
+        "duration": "21.0",
         "name": "blink_perf.layout/line-layout.html"
     },
     {
-        "duration": "10.0",
+        "duration": "15.0",
         "name": "blink_perf.layout/long-line-nowrap-collapse.html"
     },
     {
-        "duration": "10.0",
+        "duration": "15.0",
         "name": "blink_perf.layout/long-line-nowrap-spans-collapse.html"
     },
     {
-        "duration": "23.0",
+        "duration": "27.0",
         "name": "blink_perf.layout/long-line-nowrap.html"
     },
     {
-        "duration": "17.0",
-        "name": "blink_perf.layout/multicol/deeply-nested-tables.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.layout/multicol/lots-of-text-autofill.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.layout/multicol/lots-of-text-balanced-orphans-widows.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.layout/multicol/lots-of-text-balanced.html"
-    },
-    {
-        "duration": "17.0",
-        "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html"
-    },
-    {
-        "duration": "17.0",
-        "name": "blink_perf.layout/multicol/tall-content-short-columns.html"
-    },
-    {
-        "duration": "18.0",
-        "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.layout/nested-grid.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.layout/nested-percent-height-tables.html"
-    },
-    {
-        "duration": "17.0",
-        "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html"
-    },
-    {
-        "duration": "18.0",
-        "name": "blink_perf.layout/word-break-break-all.html"
-    },
-    {
-        "duration": "18.0",
-        "name": "blink_perf.layout/word-break-break-word.html"
-    },
-    {
-        "duration": "18.0",
-        "name": "blink_perf.layout/word-wrap-break-word.html"
-    },
-    {
-        "duration": "30.0",
-        "name": "blink_perf.owp_storage/blob-perf-files.html"
-    },
-    {
-        "duration": "27.0",
-        "name": "blink_perf.owp_storage/blob-perf-ipc.html"
+        "duration": "20.0",
+        "name": "blink_perf.layout/many-block-children-auto-inline-size.html"
     },
     {
         "duration": "19.0",
-        "name": "blink_perf.owp_storage/blob-perf-shm.html"
-    },
-    {
-        "duration": "26.0",
-        "name": "blink_perf.owp_storage/blob-perf-tiny.html"
-    },
-    {
-        "duration": "26.0",
-        "name": "blink_perf.owp_storage/idb-load-docs.html"
+        "name": "blink_perf.layout/many-block-children-fixed-inline-size.html"
     },
     {
         "duration": "23.0",
-        "name": "blink_perf.parser/css-parser-yui.html"
+        "name": "blink_perf.layout/multicol/deeply-nested-tables.html"
     },
     {
-        "duration": "90.0",
-        "name": "blink_perf.parser/html-parser-threaded.html"
+        "duration": "20.0",
+        "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html"
     },
     {
-        "duration": "114.0",
-        "name": "blink_perf.parser/html-parser.html"
+        "duration": "22.0",
+        "name": "blink_perf.layout/multicol/lots-of-text-autofill.html"
     },
     {
-        "duration": "316.0",
-        "name": "blink_perf.parser/html5-full-render.html"
+        "duration": "21.0",
+        "name": "blink_perf.layout/multicol/lots-of-text-balanced-orphans-widows.html"
     },
     {
-        "duration": "15.0",
-        "name": "blink_perf.parser/iframe-append-remove.html"
+        "duration": "22.0",
+        "name": "blink_perf.layout/multicol/lots-of-text-balanced.html"
     },
     {
-        "duration": "17.0",
-        "name": "blink_perf.parser/innerHTML-setter-siblings.html"
-    },
-    {
-        "duration": "15.0",
-        "name": "blink_perf.parser/innerHTML-setter.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.parser/query-selector-all-attribute-complex.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.parser/query-selector-all-attribute.html"
-    },
-    {
-        "duration": "16.0",
-        "name": "blink_perf.parser/query-selector-all-class-deep.html"
+        "duration": "21.0",
+        "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html"
     },
     {
         "duration": "19.0",
+        "name": "blink_perf.layout/multicol/tall-content-short-columns.html"
+    },
+    {
+        "duration": "22.0",
+        "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html"
+    },
+    {
+        "duration": "20.0",
+        "name": "blink_perf.layout/nested-grid.html"
+    },
+    {
+        "duration": "20.0",
+        "name": "blink_perf.layout/nested-percent-height-tables.html"
+    },
+    {
+        "duration": "21.0",
+        "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html"
+    },
+    {
+        "duration": "24.0",
+        "name": "blink_perf.layout/word-break-break-all.html"
+    },
+    {
+        "duration": "22.0",
+        "name": "blink_perf.layout/word-break-break-word.html"
+    },
+    {
+        "duration": "23.0",
+        "name": "blink_perf.layout/word-wrap-break-word.html"
+    },
+    {
+        "duration": "43.0",
+        "name": "blink_perf.owp_storage/blob-perf-files.html"
+    },
+    {
+        "duration": "28.0",
+        "name": "blink_perf.owp_storage/blob-perf-ipc.html"
+    },
+    {
+        "duration": "22.0",
+        "name": "blink_perf.owp_storage/blob-perf-shm.html"
+    },
+    {
+        "duration": "28.0",
+        "name": "blink_perf.owp_storage/blob-perf-tiny.html"
+    },
+    {
+        "duration": "29.0",
+        "name": "blink_perf.owp_storage/idb-load-docs.html"
+    },
+    {
+        "duration": "38.0",
+        "name": "blink_perf.parser/css-parser-yui.html"
+    },
+    {
+        "duration": "50.0",
+        "name": "blink_perf.parser/html-parser-threaded.html"
+    },
+    {
+        "duration": "82.0",
+        "name": "blink_perf.parser/html-parser.html"
+    },
+    {
+        "duration": "339.0",
+        "name": "blink_perf.parser/html5-full-render.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.parser/iframe-append-remove.html"
+    },
+    {
+        "duration": "22.0",
+        "name": "blink_perf.parser/innerHTML-setter-siblings.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.parser/innerHTML-setter.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.parser/query-selector-all-attribute-complex.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.parser/query-selector-all-attribute.html"
+    },
+    {
+        "duration": "20.0",
+        "name": "blink_perf.parser/query-selector-all-class-deep.html"
+    },
+    {
+        "duration": "21.0",
         "name": "blink_perf.parser/query-selector-all-class-first.html"
     },
     {
-        "duration": "17.0",
+        "duration": "21.0",
         "name": "blink_perf.parser/query-selector-all-class-last.html"
     },
     {
-        "duration": "15.0",
+        "duration": "19.0",
         "name": "blink_perf.parser/query-selector-all-class.html"
     },
     {
-        "duration": "16.0",
+        "duration": "20.0",
         "name": "blink_perf.parser/query-selector-all-deep.html"
     },
     {
-        "duration": "15.0",
+        "duration": "20.0",
         "name": "blink_perf.parser/query-selector-all-first.html"
     },
     {
@@ -800,7 +976,7 @@
         "name": "blink_perf.parser/query-selector-all-id-deep.html"
     },
     {
-        "duration": "19.0",
+        "duration": "22.0",
         "name": "blink_perf.parser/query-selector-all-id-first.html"
     },
     {
@@ -808,203 +984,203 @@
         "name": "blink_perf.parser/query-selector-all-id-last.html"
     },
     {
-        "duration": "16.0",
+        "duration": "20.0",
         "name": "blink_perf.parser/query-selector-all-last.html"
     },
     {
-        "duration": "17.0",
+        "duration": "21.0",
         "name": "blink_perf.parser/query-selector-deep.html"
     },
     {
-        "duration": "18.0",
+        "duration": "22.0",
         "name": "blink_perf.parser/query-selector-first.html"
     },
     {
-        "duration": "19.0",
+        "duration": "24.0",
         "name": "blink_perf.parser/query-selector-id-deep.html"
     },
     {
-        "duration": "22.0",
+        "duration": "28.0",
         "name": "blink_perf.parser/query-selector-id-last.html"
     },
     {
-        "duration": "15.0",
+        "duration": "19.0",
         "name": "blink_perf.parser/query-selector-last.html"
     },
     {
-        "duration": "37.0",
+        "duration": "34.0",
         "name": "blink_perf.parser/simple-url.html"
     },
     {
-        "duration": "18.0",
+        "duration": "22.0",
         "name": "blink_perf.parser/textarea-parsing.html"
     },
     {
-        "duration": "51.0",
+        "duration": "49.0",
         "name": "blink_perf.parser/tiny-innerHTML.html"
     },
     {
-        "duration": "24.0",
+        "duration": "25.0",
         "name": "blink_perf.parser/url-parser.html"
     },
     {
-        "duration": "16.0",
+        "duration": "20.0",
         "name": "blink_perf.parser/xml-parser.html"
     },
     {
-        "duration": "16.0",
+        "duration": "28.0",
         "name": "blink_perf.shadow_dom/declarative-api.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.shadow_dom/imperative-api-appendchild.html"
     },
     {
-        "duration": "8.0",
+        "duration": "13.0",
         "name": "blink_perf.shadow_dom/imperative-api-assign.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.shadow_dom/imperative-api-assigned-elements.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.shadow_dom/imperative-api-assigned-slot.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary-large.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary.html"
     },
     {
-        "duration": "10.0",
+        "duration": "13.0",
         "name": "blink_perf.shadow_dom/imperative-api-detail-summary-large.html"
     },
     {
-        "duration": "9.0",
+        "duration": "13.0",
         "name": "blink_perf.shadow_dom/imperative-api-detail-summary.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.shadow_dom/imperative-api-insertbefore.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.shadow_dom/imperative-api.html"
     },
     {
-        "duration": "16.0",
+        "duration": "19.0",
         "name": "blink_perf.shadow_dom/shadow-style-share-attr-selectors.html"
     },
     {
-        "duration": "14.0",
+        "duration": "17.0",
         "name": "blink_perf.shadow_dom/shadow-style-share-media-query.html"
     },
     {
-        "duration": "13.0",
+        "duration": "16.0",
         "name": "blink_perf.shadow_dom/shadow-style-share-with-distribution.html"
     },
     {
-        "duration": "9.0",
+        "duration": "13.0",
         "name": "blink_perf.shadow_dom/shadow-style-share.html"
     },
     {
-        "duration": "10.0",
+        "duration": "15.0",
         "name": "blink_perf.shadow_dom/style-sheet-insert.html"
     },
     {
-        "duration": "12.0",
+        "duration": "15.0",
         "name": "blink_perf.shadow_dom/v0-changing-classname-with-shadow-dom.html"
     },
     {
-        "duration": "24.0",
+        "duration": "25.0",
         "name": "blink_perf.shadow_dom/v0-changing-classname-without-shadow-dom.html"
     },
     {
-        "duration": "47.0",
+        "duration": "43.0",
         "name": "blink_perf.shadow_dom/v0-changing-select-with-shadow-dom.html"
     },
     {
-        "duration": "55.0",
+        "duration": "52.0",
         "name": "blink_perf.shadow_dom/v0-changing-select-without-shadow-dom.html"
     },
     {
-        "duration": "10.0",
+        "duration": "15.0",
         "name": "blink_perf.shadow_dom/v0-content-reprojection.html"
     },
     {
-        "duration": "9.0",
+        "duration": "13.0",
         "name": "blink_perf.shadow_dom/v0-large-distribution-without-layout.html"
     },
     {
-        "duration": "9.0",
+        "duration": "12.0",
         "name": "blink_perf.shadow_dom/v0-multiple-insertion-points.html"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "blink_perf.shadow_dom/v0-shadow-reprojection.html"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "blink_perf.shadow_dom/v0-small-distribution-with-layout.html"
     },
     {
-        "duration": "92.0",
+        "duration": "46.0",
         "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.shadow_dom/v1-distribution.html"
     },
     {
-        "duration": "9.0",
+        "duration": "13.0",
         "name": "blink_perf.shadow_dom/v1-host-child-append.html"
     },
     {
-        "duration": "91.0",
+        "duration": "46.0",
         "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html"
     },
     {
-        "duration": "294.0",
+        "duration": "207.0",
         "name": "blink_perf.shadow_dom/v1-large-deep-layout.html"
     },
     {
-        "duration": "8.0",
+        "duration": "13.0",
         "name": "blink_perf.shadow_dom/v1-large-shallow-distribution.html"
     },
     {
-        "duration": "9.0",
+        "duration": "13.0",
         "name": "blink_perf.shadow_dom/v1-large-shallow-layout.html"
     },
     {
-        "duration": "13.0",
+        "duration": "16.0",
         "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-re-layout.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-assigned-nodes.html"
     },
     {
-        "duration": "9.0",
+        "duration": "12.0",
         "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-flatten.html"
     },
     {
-        "duration": "9.0",
+        "duration": "13.0",
         "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-re-layout.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-assigned-nodes.html"
     },
     {
-        "duration": "9.0",
+        "duration": "13.0",
         "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-flatten.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.shadow_dom/v1-slot-append.html"
     },
     {
@@ -1012,143 +1188,135 @@
         "name": "blink_perf.shadow_dom/v1-small-deep-distribution.html"
     },
     {
-        "duration": "19.0",
+        "duration": "20.0",
         "name": "blink_perf.shadow_dom/v1-small-deep-layout.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.shadow_dom/v1-small-shallow-distribution.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.shadow_dom/v1-small-shallow-layout.html"
     },
     {
-        "duration": "18.0",
+        "duration": "29.0",
         "name": "blink_perf.svg/AzLizardBenjiPark.html"
     },
     {
-        "duration": "24.0",
+        "duration": "26.0",
         "name": "blink_perf.svg/Bamboo.html"
     },
     {
-        "duration": "12.0",
+        "duration": "15.0",
         "name": "blink_perf.svg/Cactus.html"
     },
     {
-        "duration": "12.0",
+        "duration": "16.0",
         "name": "blink_perf.svg/Cowboy.html"
     },
     {
-        "duration": "9.0",
+        "duration": "13.0",
         "name": "blink_perf.svg/CrawFishGanson.html"
     },
     {
-        "duration": "10.0",
+        "duration": "15.0",
         "name": "blink_perf.svg/Debian.html"
     },
     {
-        "duration": "9.0",
+        "duration": "13.0",
         "name": "blink_perf.svg/DropsOnABlade.html"
     },
     {
-        "duration": "9.0",
+        "duration": "13.0",
         "name": "blink_perf.svg/FlowerFromMyGarden.html"
     },
     {
-        "duration": "9.0",
+        "duration": "14.0",
         "name": "blink_perf.svg/FoodLeifLodahl.html"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "blink_perf.svg/France.html"
     },
     {
-        "duration": "9.0",
+        "duration": "13.0",
         "name": "blink_perf.svg/FrancoBolloGnomeEzechi.html"
     },
     {
-        "duration": "11.0",
+        "duration": "15.0",
         "name": "blink_perf.svg/GearFlowers.html"
     },
     {
-        "duration": "9.0",
+        "duration": "13.0",
         "name": "blink_perf.svg/HarveyRayner.html"
     },
     {
-        "duration": "9.0",
+        "duration": "13.0",
         "name": "blink_perf.svg/HereGear.html"
     },
     {
-        "duration": "28.0",
+        "duration": "29.0",
         "name": "blink_perf.svg/MtSaintHelens.html"
     },
     {
-        "duration": "9.0",
+        "duration": "13.0",
         "name": "blink_perf.svg/Samurai.html"
     },
     {
-        "duration": "308.0",
-        "name": "blink_perf.svg/SierpinskiCarpet.html"
-    },
-    {
-        "duration": "23.0",
+        "duration": "18.0",
         "name": "blink_perf.svg/SvgCubics.html"
     },
     {
-        "duration": "15.0",
+        "duration": "19.0",
         "name": "blink_perf.svg/SvgHitTesting.html"
     },
     {
-        "duration": "17.0",
+        "duration": "21.0",
         "name": "blink_perf.svg/SvgNestedUse.html"
     },
     {
-        "duration": "10.0",
+        "duration": "13.0",
         "name": "blink_perf.svg/UnderTheSee.html"
     },
     {
-        "duration": "11.0",
+        "duration": "15.0",
         "name": "blink_perf.svg/WorldIso.html"
     },
     {
-        "duration": "24.0",
+        "duration": "26.0",
         "name": "blink_perf.svg/Worldcup.html"
     },
     {
-        "duration": "48.0",
+        "duration": "61.0",
         "name": "dromaeo/http://dromaeo.com?dom-attr"
     },
     {
-        "duration": "42.0",
+        "duration": "45.0",
         "name": "dromaeo/http://dromaeo.com?dom-modify"
     },
     {
-        "duration": "56.0",
+        "duration": "59.0",
         "name": "dromaeo/http://dromaeo.com?dom-query"
     },
     {
-        "duration": "35.0",
+        "duration": "40.0",
         "name": "dromaeo/http://dromaeo.com?dom-traverse"
     },
     {
-        "duration": "22.0",
-        "name": "dummy_benchmark.histogram_benchmark_1/dummy_page.html"
-    },
-    {
-        "duration": "20.0",
+        "duration": "26.0",
         "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html"
     },
     {
-        "duration": "13.0",
+        "duration": "25.0",
         "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html"
     },
     {
-        "duration": "650.0",
+        "duration": "653.0",
         "name": "jetstream/http://browserbench.org/JetStream/"
     },
     {
-        "duration": "175.0",
+        "duration": "190.0",
         "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html"
     },
     {
@@ -1156,179 +1324,175 @@
         "name": "loading.mobile/58Pic"
     },
     {
-        "duration": "63.0",
+        "duration": "45.0",
         "name": "loading.mobile/58Pic_3g"
     },
     {
-        "duration": "36.0",
+        "duration": "26.0",
         "name": "loading.mobile/Amazon"
     },
     {
-        "duration": "175.0",
+        "duration": "96.0",
         "name": "loading.mobile/Amazon_3g"
     },
     {
-        "duration": "31.0",
+        "duration": "29.0",
         "name": "loading.mobile/BOLNoticias"
     },
     {
-        "duration": "286.0",
+        "duration": "137.0",
         "name": "loading.mobile/BOLNoticias_3g"
     },
     {
-        "duration": "27.0",
+        "duration": "29.0",
         "name": "loading.mobile/Baidu"
     },
     {
-        "duration": "190.0",
+        "duration": "88.0",
         "name": "loading.mobile/Baidu_3g"
     },
     {
-        "duration": "27.0",
+        "duration": "25.0",
         "name": "loading.mobile/Bradesco"
     },
     {
-        "duration": "26.0",
+        "duration": "28.0",
         "name": "loading.mobile/Dailymotion"
     },
     {
-        "duration": "34.0",
+        "duration": "31.0",
         "name": "loading.mobile/Dawn"
     },
     {
-        "duration": "21.0",
+        "duration": "23.0",
         "name": "loading.mobile/DevOpera_cold"
     },
     {
-        "duration": "124.0",
+        "duration": "55.0",
         "name": "loading.mobile/DevOpera_cold_3g"
     },
     {
-        "duration": "30.0",
+        "duration": "28.0",
         "name": "loading.mobile/DevOpera_hot"
     },
     {
-        "duration": "33.0",
+        "duration": "37.0",
         "name": "loading.mobile/DevOpera_hot_3g"
     },
     {
-        "duration": "25.0",
+        "duration": "26.0",
         "name": "loading.mobile/DevOpera_warm"
     },
     {
-        "duration": "36.0",
+        "duration": "26.0",
         "name": "loading.mobile/DevOpera_warm_3g"
     },
     {
-        "duration": "32.0",
+        "duration": "29.0",
         "name": "loading.mobile/Dramaq"
     },
     {
-        "duration": "275.0",
+        "duration": "178.0",
         "name": "loading.mobile/Dramaq_3g"
     },
     {
-        "duration": "21.0",
+        "duration": "22.0",
         "name": "loading.mobile/EnquiryIndianRail"
     },
     {
-        "duration": "125.0",
+        "duration": "44.0",
         "name": "loading.mobile/EnquiryIndianRail_3g"
     },
     {
-        "duration": "27.0",
+        "duration": "28.0",
         "name": "loading.mobile/Facebook"
     },
     {
-        "duration": "261.0",
-        "name": "loading.mobile/Facebook_3g"
-    },
-    {
-        "duration": "25.0",
+        "duration": "23.0",
         "name": "loading.mobile/FlipBoard_cold"
     },
     {
-        "duration": "38.0",
+        "duration": "34.0",
         "name": "loading.mobile/FlipBoard_hot"
     },
     {
-        "duration": "54.0",
+        "duration": "41.0",
         "name": "loading.mobile/FlipBoard_hot_3g"
     },
     {
-        "duration": "30.0",
+        "duration": "26.0",
         "name": "loading.mobile/FlipBoard_warm"
     },
     {
-        "duration": "51.0",
+        "duration": "38.0",
         "name": "loading.mobile/FlipBoard_warm_3g"
     },
     {
-        "duration": "33.0",
+        "duration": "29.0",
         "name": "loading.mobile/FlipKart_cold"
     },
     {
-        "duration": "59.0",
+        "duration": "41.0",
         "name": "loading.mobile/FlipKart_hot"
     },
     {
-        "duration": "59.0",
+        "duration": "43.0",
         "name": "loading.mobile/FlipKart_hot_3g"
     },
     {
-        "duration": "44.0",
+        "duration": "35.0",
         "name": "loading.mobile/FlipKart_warm"
     },
     {
-        "duration": "23.0",
+        "duration": "22.0",
         "name": "loading.mobile/FranceTVInfo"
     },
     {
-        "duration": "98.0",
+        "duration": "65.0",
         "name": "loading.mobile/FranceTVInfo_3g"
     },
     {
-        "duration": "40.0",
+        "duration": "38.0",
         "name": "loading.mobile/GSShop"
     },
     {
-        "duration": "19.0",
+        "duration": "21.0",
         "name": "loading.mobile/GoogleBrazil"
     },
     {
-        "duration": "22.0",
+        "duration": "23.0",
         "name": "loading.mobile/GoogleIndia"
     },
     {
-        "duration": "19.0",
+        "duration": "20.0",
         "name": "loading.mobile/GoogleIndonesia"
     },
     {
-        "duration": "24.0",
+        "duration": "31.0",
         "name": "loading.mobile/GoogleRedirectToGoogleJapan"
     },
     {
-        "duration": "27.0",
+        "duration": "24.0",
         "name": "loading.mobile/Hongkiat"
     },
     {
-        "duration": "32.0",
+        "duration": "30.0",
         "name": "loading.mobile/KapanLagi"
     },
     {
-        "duration": "42.0",
+        "duration": "43.0",
         "name": "loading.mobile/Kaskus"
     },
     {
-        "duration": "26.0",
+        "duration": "31.0",
         "name": "loading.mobile/LocalMoxie"
     },
     {
-        "duration": "20.0",
+        "duration": "19.0",
         "name": "loading.mobile/Locanto"
     },
     {
-        "duration": "43.0",
+        "duration": "33.0",
         "name": "loading.mobile/Locanto_3g"
     },
     {
@@ -1336,31 +1500,31 @@
         "name": "loading.mobile/OLX"
     },
     {
-        "duration": "208.0",
+        "duration": "76.0",
         "name": "loading.mobile/OLX_3g"
     },
     {
-        "duration": "22.0",
+        "duration": "27.0",
         "name": "loading.mobile/QQNews"
     },
     {
-        "duration": "186.0",
+        "duration": "78.0",
         "name": "loading.mobile/QQNews_3g"
     },
     {
-        "duration": "23.0",
+        "duration": "22.0",
         "name": "loading.mobile/SlideShare"
     },
     {
-        "duration": "103.0",
+        "duration": "76.0",
         "name": "loading.mobile/SlideShare_3g"
     },
     {
-        "duration": "20.0",
+        "duration": "22.0",
         "name": "loading.mobile/Suumo_cold"
     },
     {
-        "duration": "34.0",
+        "duration": "25.0",
         "name": "loading.mobile/Suumo_cold_3g"
     },
     {
@@ -1368,7 +1532,7 @@
         "name": "loading.mobile/Suumo_hot"
     },
     {
-        "duration": "31.0",
+        "duration": "28.0",
         "name": "loading.mobile/Suumo_hot_3g"
     },
     {
@@ -1376,215 +1540,191 @@
         "name": "loading.mobile/Suumo_warm"
     },
     {
-        "duration": "28.0",
+        "duration": "25.0",
         "name": "loading.mobile/Suumo_warm_3g"
     },
     {
-        "duration": "28.0",
+        "duration": "25.0",
         "name": "loading.mobile/Thairath"
     },
     {
-        "duration": "41.0",
+        "duration": "35.0",
         "name": "loading.mobile/TheStar"
     },
     {
-        "duration": "38.0",
+        "duration": "42.0",
         "name": "loading.mobile/TribunNews"
     },
     {
-        "duration": "202.0",
-        "name": "loading.mobile/TribunNews_3g"
-    },
-    {
-        "duration": "21.0",
+        "duration": "20.0",
         "name": "loading.mobile/Twitter"
     },
     {
-        "duration": "109.0",
+        "duration": "42.0",
         "name": "loading.mobile/Twitter_3g"
     },
     {
-        "duration": "24.0",
+        "duration": "25.0",
         "name": "loading.mobile/VoiceMemos_cold"
     },
     {
-        "duration": "124.0",
+        "duration": "49.0",
         "name": "loading.mobile/VoiceMemos_cold_3g"
     },
     {
-        "duration": "34.0",
-        "name": "loading.mobile/VoiceMemos_hot"
-    },
-    {
-        "duration": "38.0",
-        "name": "loading.mobile/VoiceMemos_hot_3g"
-    },
-    {
-        "duration": "28.0",
-        "name": "loading.mobile/VoiceMemos_warm"
-    },
-    {
-        "duration": "33.0",
-        "name": "loading.mobile/VoiceMemos_warm_3g"
-    },
-    {
-        "duration": "19.0",
+        "duration": "21.0",
         "name": "loading.mobile/Wikipedia"
     },
     {
-        "duration": "202.0",
+        "duration": "76.0",
         "name": "loading.mobile/Wikipedia_3g"
     },
     {
-        "duration": "33.0",
+        "duration": "31.0",
         "name": "loading.mobile/YahooNews"
     },
     {
-        "duration": "20.0",
+        "duration": "21.0",
         "name": "loading.mobile/Youtube"
     },
     {
-        "duration": "298.0",
+        "duration": "175.0",
         "name": "loading.mobile/Youtube_3g"
     },
     {
-        "duration": "27.0",
+        "duration": "31.0",
         "name": "media.mobile/mse.html?media=aac_audio.mp4"
     },
     {
-        "duration": "35.0",
+        "duration": "40.0",
         "name": "media.mobile/mse.html?media=aac_audio.mp4,h264_video.mp4"
     },
     {
-        "duration": "35.0",
+        "duration": "41.0",
         "name": "media.mobile/mse.html?media=aac_audio.mp4,h264_video.mp4&waitForPageLoaded=true"
     },
     {
-        "duration": "30.0",
+        "duration": "33.0",
         "name": "media.mobile/mse.html?media=h264_video.mp4"
     },
     {
-        "duration": "56.0",
+        "duration": "41.0",
         "name": "media.mobile/video.html?src=crowd.ogg&type=audio"
     },
     {
-        "duration": "29.0",
+        "duration": "32.0",
         "name": "media.mobile/video.html?src=crowd1080_vp9.webm"
     },
     {
-        "duration": "21.0",
+        "duration": "24.0",
         "name": "media.mobile/video.html?src=crowd1080_vp9.webm&seek"
     },
     {
-        "duration": "28.0",
+        "duration": "31.0",
         "name": "media.mobile/video.html?src=crowd720_vp9.webm"
     },
     {
-        "duration": "35.0",
+        "duration": "37.0",
         "name": "media.mobile/video.html?src=tulip2.m4a&type=audio"
     },
     {
-        "duration": "35.0",
+        "duration": "37.0",
         "name": "media.mobile/video.html?src=tulip2.mp3&type=audio"
     },
     {
-        "duration": "17.0",
+        "duration": "20.0",
         "name": "media.mobile/video.html?src=tulip2.mp3&type=audio&seek"
     },
     {
-        "duration": "40.0",
+        "duration": "43.0",
         "name": "media.mobile/video.html?src=tulip2.mp4"
     },
     {
-        "duration": "40.0",
+        "duration": "43.0",
         "name": "media.mobile/video.html?src=tulip2.mp4&busyjs"
     },
     {
-        "duration": "21.0",
+        "duration": "25.0",
         "name": "media.mobile/video.html?src=tulip2.mp4&seek"
     },
     {
-        "duration": "35.0",
+        "duration": "38.0",
         "name": "media.mobile/video.html?src=tulip2.ogg&type=audio"
     },
     {
-        "duration": "17.0",
+        "duration": "19.0",
         "name": "media.mobile/video.html?src=tulip2.ogg&type=audio&seek"
     },
     {
-        "duration": "40.0",
+        "duration": "45.0",
         "name": "media.mobile/video.html?src=tulip2.vp9.webm"
     },
     {
-        "duration": "33.0",
+        "duration": "35.0",
         "name": "media.mobile/video.html?src=tulip2.vp9.webm&background"
     },
     {
-        "duration": "30.0",
+        "duration": "33.0",
         "name": "media.mobile/video.html?src=tulip2.vp9.webm&seek"
     },
     {
-        "duration": "44.0",
+        "duration": "47.0",
+        "name": "media.mobile/video.html?src=tulip2.vp9.webm_WiFi"
+    },
+    {
+        "duration": "37.0",
         "name": "media.mobile/video.html?src=tulip2.wav&type=audio"
     },
     {
-        "duration": "17.0",
+        "duration": "20.0",
         "name": "media.mobile/video.html?src=tulip2.wav&type=audio&seek"
     },
     {
-        "duration": "292.0",
-        "name": "memory.long_running_idle_gmail_background_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "273.0",
-        "name": "memory.long_running_idle_gmail_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "23.0",
+        "duration": "18.0",
         "name": "memory.top_10_mobile/after_http_en_m_wikipedia_org_wiki_Science"
     },
     {
-        "duration": "23.0",
+        "duration": "17.0",
         "name": "memory.top_10_mobile/after_http_m_intl_taobao_com_group_purchase_html"
     },
     {
-        "duration": "23.0",
+        "duration": "18.0",
         "name": "memory.top_10_mobile/after_http_m_youtube_com_results_q_science"
     },
     {
-        "duration": "23.0",
+        "duration": "17.0",
         "name": "memory.top_10_mobile/after_http_search_yahoo_com_search__ylt_p_google"
     },
     {
-        "duration": "23.0",
+        "duration": "18.0",
         "name": "memory.top_10_mobile/after_http_www_amazon_com_gp_aw_s_k_nexus"
     },
     {
-        "duration": "23.0",
+        "duration": "17.0",
         "name": "memory.top_10_mobile/after_http_www_baidu_com_s_word_google"
     },
     {
-        "duration": "23.0",
+        "duration": "18.0",
         "name": "memory.top_10_mobile/after_http_yandex_ru_touchsearch_text_science"
     },
     {
-        "duration": "23.0",
+        "duration": "18.0",
         "name": "memory.top_10_mobile/after_https_m_facebook_com_rihanna"
     },
     {
-        "duration": "23.0",
+        "duration": "18.0",
         "name": "memory.top_10_mobile/after_https_mobile_twitter_com_justinbieber_skip_interstitial_true"
     },
     {
-        "duration": "23.0",
+        "duration": "18.0",
         "name": "memory.top_10_mobile/after_https_www_google_co_uk_hl_en_q_science"
     },
     {
-        "duration": "31.0",
+        "duration": "32.0",
         "name": "memory.top_10_mobile/http_en_m_wikipedia_org_wiki_Science"
     },
     {
-        "duration": "27.0",
+        "duration": "28.0",
         "name": "memory.top_10_mobile/http_m_intl_taobao_com_group_purchase_html"
     },
     {
@@ -1596,11 +1736,11 @@
         "name": "memory.top_10_mobile/http_search_yahoo_com_search__ylt_p_google"
     },
     {
-        "duration": "28.0",
+        "duration": "29.0",
         "name": "memory.top_10_mobile/http_www_amazon_com_gp_aw_s_k_nexus"
     },
     {
-        "duration": "29.0",
+        "duration": "33.0",
         "name": "memory.top_10_mobile/http_www_baidu_com_s_word_google"
     },
     {
@@ -1616,295 +1756,267 @@
         "name": "memory.top_10_mobile/https_mobile_twitter_com_justinbieber_skip_interstitial_true"
     },
     {
-        "duration": "29.0",
+        "duration": "32.0",
         "name": "memory.top_10_mobile/https_www_google_co_uk_hl_en_q_science"
     },
     {
-        "duration": "134.0",
+        "duration": "144.0",
         "name": "octane/http://chromium.github.io/octane/index.html?auto=1"
     },
     {
-        "duration": "22.0",
-        "name": "oortonline_tbmv2/http://oortonline.gl/#run"
-    },
-    {
-        "duration": "62.0",
+        "duration": "67.0",
         "name": "power.typical_10_mobile/http://de.m.wikipedia.org/wiki/K%C3%B6lner_Dom"
     },
     {
-        "duration": "64.0",
+        "duration": "70.0",
         "name": "power.typical_10_mobile/http://m.chiebukuro.yahoo.co.jp/detail/q10136829180"
     },
     {
-        "duration": "56.0",
+        "duration": "61.0",
         "name": "power.typical_10_mobile/http://m.ebay.com/itm/351157205404"
     },
     {
-        "duration": "65.0",
+        "duration": "78.0",
         "name": "power.typical_10_mobile/http://m.facebook.com/barackobama"
     },
     {
-        "duration": "63.0",
+        "duration": "66.0",
         "name": "power.typical_10_mobile/http://m.huffpost.com/us/entry/6004486"
     },
     {
-        "duration": "61.0",
+        "duration": "66.0",
         "name": "power.typical_10_mobile/http://m.ynet.co.il"
     },
     {
-        "duration": "63.0",
+        "duration": "68.0",
         "name": "power.typical_10_mobile/http://siriuslymeg.tumblr.com/"
     },
     {
-        "duration": "56.0",
+        "duration": "63.0",
         "name": "power.typical_10_mobile/http://wapbaike.baidu.com/"
     },
     {
-        "duration": "58.0",
+        "duration": "64.0",
         "name": "power.typical_10_mobile/http://www.cnn.com/2014/03/31/showbiz/tv/himym-finale/index.html"
     },
     {
-        "duration": "66.0",
+        "duration": "71.0",
         "name": "power.typical_10_mobile/http://www.rg.ru/2014/10/21/cska-site.html"
     },
     {
-        "duration": "62.0",
+        "duration": "67.0",
         "name": "power.typical_10_mobile/https://en.wikipedia.org/wiki/File:Rotating_earth_(large).gif"
     },
     {
-        "duration": "28.0",
+        "duration": "46.0",
         "name": "rasterize_and_record_micro.partial_invalidation/800_relpos_divs.html"
     },
     {
-        "duration": "48.0",
+        "duration": "67.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html"
     },
     {
-        "duration": "22.0",
+        "duration": "29.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html"
     },
     {
-        "duration": "50.0",
+        "duration": "69.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html"
     },
     {
-        "duration": "30.0",
+        "duration": "39.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html"
     },
     {
-        "duration": "20.0",
+        "duration": "27.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/ebay.html"
     },
     {
-        "duration": "44.0",
+        "duration": "72.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html"
     },
     {
-        "duration": "40.0",
+        "duration": "63.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html"
     },
     {
-        "duration": "57.0",
+        "duration": "95.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html"
     },
     {
-        "duration": "64.0",
+        "duration": "101.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/google.html"
     },
     {
-        "duration": "41.0",
+        "duration": "70.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googlecalendar.html"
     },
     {
-        "duration": "30.0",
+        "duration": "38.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googledocs.html"
     },
     {
-        "duration": "57.0",
+        "duration": "91.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html"
     },
     {
-        "duration": "46.0",
+        "duration": "63.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html"
     },
     {
-        "duration": "34.0",
+        "duration": "54.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html"
     },
     {
-        "duration": "14.0",
+        "duration": "21.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html"
     },
     {
-        "duration": "50.0",
+        "duration": "48.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html"
     },
     {
-        "duration": "55.0",
+        "duration": "89.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html"
     },
     {
-        "duration": "27.0",
+        "duration": "36.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html"
     },
     {
-        "duration": "23.0",
+        "duration": "31.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html"
     },
     {
-        "duration": "36.0",
+        "duration": "58.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html"
     },
     {
-        "duration": "45.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html"
-    },
-    {
-        "duration": "102.0",
+        "duration": "119.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html"
     },
     {
-        "duration": "63.0",
+        "duration": "85.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html"
     },
     {
-        "duration": "73.0",
+        "duration": "61.0",
         "name": "rendering.mobile/accu_weather_2018"
     },
     {
-        "duration": "59.0",
-        "name": "rendering.mobile/accu_weather_desktop_gpu_raster_2018"
+        "duration": "66.0",
+        "name": "rendering.mobile/accu_weather_mobile_pinch_2018"
     },
     {
-        "duration": "38.0",
+        "duration": "37.0",
         "name": "rendering.mobile/amazon_2018"
     },
     {
-        "duration": "37.0",
-        "name": "rendering.mobile/amazon_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "37.0",
+        "duration": "38.0",
         "name": "rendering.mobile/amazon_mobile_2018"
     },
     {
-        "duration": "30.0",
-        "name": "rendering.mobile/amazon_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "32.0",
+        "duration": "34.0",
         "name": "rendering.mobile/analog_clock_svg"
     },
     {
-        "duration": "67.0",
+        "duration": "56.0",
         "name": "rendering.mobile/androidpolice_mobile_2018"
     },
     {
-        "duration": "63.0",
-        "name": "rendering.mobile/androidpolice_mobile_sync_scroll_2018"
+        "duration": "36.0",
+        "name": "rendering.mobile/animometer_webgl"
     },
     {
-        "duration": "34.0",
-        "name": "rendering.mobile/animometer_webgl"
+        "duration": "29.0",
+        "name": "rendering.mobile/animometer_webgl_attrib_arrays"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/animometer_webgl_multi_draw"
     },
     {
         "duration": "47.0",
         "name": "rendering.mobile/aquarium"
     },
     {
-        "duration": "43.0",
+        "duration": "45.0",
         "name": "rendering.mobile/background_color_animation"
     },
     {
-        "duration": "33.0",
+        "duration": "35.0",
         "name": "rendering.mobile/background_color_animation_with_gradient"
     },
     {
-        "duration": "35.0",
+        "duration": "31.0",
         "name": "rendering.mobile/baidu_mobile_2018"
     },
     {
-        "duration": "29.0",
-        "name": "rendering.mobile/baidu_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "36.0",
+        "duration": "39.0",
         "name": "rendering.mobile/balls_css_key_frame_animations"
     },
     {
-        "duration": "31.0",
+        "duration": "33.0",
         "name": "rendering.mobile/balls_css_transition_2_properties"
     },
     {
-        "duration": "32.0",
+        "duration": "34.0",
         "name": "rendering.mobile/balls_css_transition_40_properties"
     },
     {
-        "duration": "31.0",
+        "duration": "33.0",
         "name": "rendering.mobile/balls_css_transition_all_properties"
     },
     {
-        "duration": "29.0",
+        "duration": "32.0",
         "name": "rendering.mobile/balls_javascript_canvas"
     },
     {
-        "duration": "33.0",
+        "duration": "36.0",
         "name": "rendering.mobile/balls_javascript_css"
     },
     {
-        "duration": "60.0",
+        "duration": "51.0",
         "name": "rendering.mobile/balls_svg_animations"
     },
     {
         "duration": "39.0",
+        "name": "rendering.mobile/basic_stream"
+    },
+    {
+        "duration": "35.0",
         "name": "rendering.mobile/bing_mobile_2018"
     },
     {
-        "duration": "40.0",
-        "name": "rendering.mobile/bing_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "31.0",
+        "duration": "32.0",
         "name": "rendering.mobile/blob"
     },
     {
-        "duration": "33.0",
+        "duration": "30.0",
         "name": "rendering.mobile/blogspot_2018"
     },
     {
         "duration": "28.0",
-        "name": "rendering.mobile/blogspot_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "33.0",
         "name": "rendering.mobile/blogspot_mobile_2018"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.mobile/blogspot_mobile_sync_scroll_2018"
+        "duration": "38.0",
+        "name": "rendering.mobile/blur_rotating_background"
     },
     {
-        "duration": "35.0",
+        "duration": "37.0",
         "name": "rendering.mobile/boingboing_mobile_2018"
     },
     {
-        "duration": "41.0",
+        "duration": "38.0",
         "name": "rendering.mobile/booking.com_2018"
     },
     {
-        "duration": "36.0",
-        "name": "rendering.mobile/booking.com_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "32.0",
+        "duration": "27.0",
         "name": "rendering.mobile/booking.com_mobile_2018"
     },
     {
-        "duration": "25.0",
-        "name": "rendering.mobile/booking.com_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "26.0",
+        "duration": "27.0",
         "name": "rendering.mobile/bouncing_balls_15"
     },
     {
@@ -1912,207 +2024,139 @@
         "name": "rendering.mobile/bouncing_balls_shadow"
     },
     {
-        "duration": "25.0",
+        "duration": "28.0",
         "name": "rendering.mobile/bouncing_clipped_rectangles"
     },
     {
-        "duration": "24.0",
+        "duration": "26.0",
         "name": "rendering.mobile/bouncing_gradient_circles"
     },
     {
-        "duration": "20.0",
+        "duration": "22.0",
         "name": "rendering.mobile/bouncing_png_images"
     },
     {
-        "duration": "33.0",
+        "duration": "34.0",
         "name": "rendering.mobile/bouncing_svg_images"
     },
     {
-        "duration": "38.0",
+        "duration": "40.0",
         "name": "rendering.mobile/camera_to_webgl"
     },
     {
-        "duration": "47.0",
+        "duration": "34.0",
         "name": "rendering.mobile/canvas_05000_pixels_per_second"
     },
     {
-        "duration": "32.0",
-        "name": "rendering.mobile/canvas_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "32.0",
+        "duration": "34.0",
         "name": "rendering.mobile/canvas_10000_pixels_per_second"
     },
     {
-        "duration": "32.0",
-        "name": "rendering.mobile/canvas_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/canvas_15000_pixels_per_second"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/canvas_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "33.0",
+        "duration": "35.0",
         "name": "rendering.mobile/canvas_20000_pixels_per_second"
     },
     {
-        "duration": "33.0",
-        "name": "rendering.mobile/canvas_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
         "duration": "34.0",
-        "name": "rendering.mobile/canvas_30000_pixels_per_second"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/canvas_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "33.0",
         "name": "rendering.mobile/canvas_40000_pixels_per_second"
     },
     {
-        "duration": "33.0",
-        "name": "rendering.mobile/canvas_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/canvas_50000_pixels_per_second"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/canvas_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "29.0",
+        "duration": "30.0",
         "name": "rendering.mobile/canvas_60000_pixels_per_second"
     },
     {
-        "duration": "29.0",
-        "name": "rendering.mobile/canvas_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "27.0",
+        "duration": "28.0",
         "name": "rendering.mobile/canvas_75000_pixels_per_second"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.mobile/canvas_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "25.0",
+        "duration": "27.0",
         "name": "rendering.mobile/canvas_90000_pixels_per_second"
     },
     {
-        "duration": "24.0",
-        "name": "rendering.mobile/canvas_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
+        "duration": "26.0",
         "name": "rendering.mobile/canvas_animation_no_clear"
     },
     {
-        "duration": "24.0",
+        "duration": "26.0",
         "name": "rendering.mobile/canvas_arcs"
     },
     {
-        "duration": "24.0",
+        "duration": "26.0",
         "name": "rendering.mobile/canvas_font_cycler"
     },
     {
-        "duration": "23.0",
+        "duration": "26.0",
         "name": "rendering.mobile/canvas_lines"
     },
     {
-        "duration": "26.0",
+        "duration": "28.0",
         "name": "rendering.mobile/canvas_to_blob"
     },
     {
-        "duration": "56.0",
+        "duration": "46.0",
         "name": "rendering.mobile/capitolvolkswagen_mobile_2018"
     },
     {
-        "duration": "83.0",
-        "name": "rendering.mobile/capitolvolkswagen_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "27.0",
+        "duration": "28.0",
         "name": "rendering.mobile/card_expansion"
     },
     {
-        "duration": "28.0",
+        "duration": "30.0",
         "name": "rendering.mobile/card_expansion_animated"
     },
     {
-        "duration": "27.0",
+        "duration": "30.0",
         "name": "rendering.mobile/card_expansion_images_text"
     },
     {
-        "duration": "25.0",
+        "duration": "27.0",
         "name": "rendering.mobile/card_flying"
     },
     {
-        "duration": "19.0",
+        "duration": "21.0",
         "name": "rendering.mobile/cats_unscaled"
     },
     {
-        "duration": "17.0",
+        "duration": "21.0",
         "name": "rendering.mobile/cats_viewport_width"
     },
     {
-        "duration": "37.0",
+        "duration": "38.0",
         "name": "rendering.mobile/cc_poster_circle"
     },
     {
-        "duration": "33.0",
-        "name": "rendering.mobile/cc_scroll_200_layer_grid"
-    },
-    {
-        "duration": "34.0",
+        "duration": "37.0",
         "name": "rendering.mobile/cc_scroll_text_only"
     },
     {
-        "duration": "29.0",
+        "duration": "31.0",
         "name": "rendering.mobile/chip_tune"
     },
     {
-        "duration": "42.0",
+        "duration": "40.0",
         "name": "rendering.mobile/cnn_2018"
     },
     {
-        "duration": "64.0",
+        "duration": "47.0",
         "name": "rendering.mobile/cnn_article_mobile_2018"
     },
     {
-        "duration": "57.0",
-        "name": "rendering.mobile/cnn_article_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "37.0",
-        "name": "rendering.mobile/cnn_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "40.0",
+        "duration": "43.0",
         "name": "rendering.mobile/cnn_mobile_2018"
     },
     {
-        "duration": "42.0",
-        "name": "rendering.mobile/cnn_mobile_sync_scroll_2018"
+        "duration": "60.0",
+        "name": "rendering.mobile/cnn_mobile_pinch_2018"
     },
     {
-        "duration": "38.0",
+        "duration": "40.0",
         "name": "rendering.mobile/cnn_pathological_2018"
     },
     {
-        "duration": "31.0",
+        "duration": "32.0",
         "name": "rendering.mobile/compositor_heavy_animation"
     },
     {
-        "duration": "26.0",
+        "duration": "28.0",
         "name": "rendering.mobile/coordinated_animation"
     },
     {
@@ -2124,23 +2168,23 @@
         "name": "rendering.mobile/css_animations_many_keyframes"
     },
     {
-        "duration": "33.0",
+        "duration": "34.0",
         "name": "rendering.mobile/css_animations_simultaneous_inline_style"
     },
     {
-        "duration": "34.0",
+        "duration": "35.0",
         "name": "rendering.mobile/css_animations_simultaneous_new_element"
     },
     {
-        "duration": "33.0",
+        "duration": "34.0",
         "name": "rendering.mobile/css_animations_simultaneous_style_element"
     },
     {
-        "duration": "33.0",
+        "duration": "34.0",
         "name": "rendering.mobile/css_animations_simultaneous_updating_class"
     },
     {
-        "duration": "31.0",
+        "duration": "33.0",
         "name": "rendering.mobile/css_animations_staggered_infinite_iterations"
     },
     {
@@ -2168,7 +2212,7 @@
         "name": "rendering.mobile/css_animations_triggered_new_element"
     },
     {
-        "duration": "34.0",
+        "duration": "35.0",
         "name": "rendering.mobile/css_animations_triggered_style_element"
     },
     {
@@ -2180,7 +2224,7 @@
         "name": "rendering.mobile/css_opacity_plus_n_layers_0"
     },
     {
-        "duration": "37.0",
+        "duration": "36.0",
         "name": "rendering.mobile/css_opacity_plus_n_layers_75"
     },
     {
@@ -2188,7 +2232,7 @@
         "name": "rendering.mobile/css_opacity_plus_n_layers_99"
     },
     {
-        "duration": "33.0",
+        "duration": "34.0",
         "name": "rendering.mobile/css_transitions_inline_style"
     },
     {
@@ -2196,19 +2240,19 @@
         "name": "rendering.mobile/css_transitions_new_element"
     },
     {
-        "duration": "33.0",
+        "duration": "35.0",
         "name": "rendering.mobile/css_transitions_staggered_inline_style"
     },
     {
-        "duration": "34.0",
+        "duration": "35.0",
         "name": "rendering.mobile/css_transitions_staggered_new_element"
     },
     {
-        "duration": "33.0",
+        "duration": "35.0",
         "name": "rendering.mobile/css_transitions_staggered_style_element"
     },
     {
-        "duration": "34.0",
+        "duration": "35.0",
         "name": "rendering.mobile/css_transitions_staggered_updating_class"
     },
     {
@@ -2232,43 +2276,43 @@
         "name": "rendering.mobile/css_transitions_triggered_updating_class"
     },
     {
-        "duration": "33.0",
+        "duration": "45.0",
         "name": "rendering.mobile/css_transitions_updating_class"
     },
     {
-        "duration": "31.0",
+        "duration": "33.0",
         "name": "rendering.mobile/css_value_type_color"
     },
     {
-        "duration": "28.0",
+        "duration": "31.0",
         "name": "rendering.mobile/css_value_type_filter"
     },
     {
-        "duration": "29.0",
+        "duration": "32.0",
         "name": "rendering.mobile/css_value_type_length"
     },
     {
-        "duration": "30.0",
+        "duration": "33.0",
         "name": "rendering.mobile/css_value_type_length_complex"
     },
     {
-        "duration": "31.0",
+        "duration": "33.0",
         "name": "rendering.mobile/css_value_type_length_simple"
     },
     {
-        "duration": "30.0",
+        "duration": "33.0",
         "name": "rendering.mobile/css_value_type_path"
     },
     {
-        "duration": "29.0",
+        "duration": "32.0",
         "name": "rendering.mobile/css_value_type_shadow"
     },
     {
-        "duration": "29.0",
+        "duration": "32.0",
         "name": "rendering.mobile/css_value_type_transform_complex"
     },
     {
-        "duration": "29.0",
+        "duration": "31.0",
         "name": "rendering.mobile/css_value_type_transform_simple"
     },
     {
@@ -2276,19 +2320,11 @@
         "name": "rendering.mobile/deviantart_mobile_2018"
     },
     {
-        "duration": "44.0",
-        "name": "rendering.mobile/deviantart_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "32.0",
+        "duration": "34.0",
         "name": "rendering.mobile/digg_mobile_2018"
     },
     {
-        "duration": "31.0",
-        "name": "rendering.mobile/digg_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "32.0",
+        "duration": "35.0",
         "name": "rendering.mobile/dynamic_cube_map"
     },
     {
@@ -2296,71 +2332,51 @@
         "name": "rendering.mobile/earth"
     },
     {
-        "duration": "37.0",
+        "duration": "34.0",
         "name": "rendering.mobile/ebay_2018"
     },
     {
-        "duration": "32.0",
-        "name": "rendering.mobile/ebay_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "rendering.mobile/ebay_mobile_2018"
     },
     {
-        "duration": "25.0",
-        "name": "rendering.mobile/ebay_mobile_sync_scroll_2018"
+        "duration": "39.0",
+        "name": "rendering.mobile/ebay_mobile_pinch_2018"
     },
     {
-        "duration": "44.0",
+        "duration": "42.0",
         "name": "rendering.mobile/ebay_scroll_2018"
     },
     {
-        "duration": "31.0",
+        "duration": "33.0",
         "name": "rendering.mobile/effect_games"
     },
     {
-        "duration": "44.0",
+        "duration": "46.0",
         "name": "rendering.mobile/espn_2018"
     },
     {
-        "duration": "38.0",
-        "name": "rendering.mobile/espn_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "46.0",
-        "name": "rendering.mobile/espn_mobile_2018"
-    },
-    {
         "duration": "37.0",
-        "name": "rendering.mobile/espn_mobile_sync_scroll_2018"
+        "name": "rendering.mobile/espn_mobile_2018"
     },
     {
         "duration": "35.0",
         "name": "rendering.mobile/espn_pathological_2018"
     },
     {
-        "duration": "31.0",
+        "duration": "34.0",
         "name": "rendering.mobile/extra_large_texture_uploads"
     },
     {
-        "duration": "29.0",
+        "duration": "32.0",
         "name": "rendering.mobile/facebook_2018"
     },
     {
-        "duration": "24.0",
-        "name": "rendering.mobile/facebook_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "45.0",
+        "duration": "40.0",
         "name": "rendering.mobile/facebook_mobile_2018"
     },
     {
-        "duration": "37.0",
-        "name": "rendering.mobile/facebook_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "24.0",
+        "duration": "26.0",
         "name": "rendering.mobile/fill_shapes"
     },
     {
@@ -2368,104 +2384,64 @@
         "name": "rendering.mobile/filter_terrain_svg"
     },
     {
-        "duration": "41.0",
+        "duration": "43.0",
         "name": "rendering.mobile/flickr_scroll_2018"
     },
     {
-        "duration": "24.0",
+        "duration": "26.0",
         "name": "rendering.mobile/font_wipe"
     },
     {
-        "duration": "32.0",
+        "duration": "28.0",
         "name": "rendering.mobile/forecast.io_mobile_2018"
     },
     {
-        "duration": "24.0",
-        "name": "rendering.mobile/forecast.io_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "37.0",
+        "duration": "31.0",
         "name": "rendering.mobile/gmail_2018"
     },
     {
         "duration": "33.0",
-        "name": "rendering.mobile/gmail_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "32.0",
         "name": "rendering.mobile/google_calendar_2018"
     },
     {
-        "duration": "33.0",
-        "name": "rendering.mobile/google_calendar_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "40.0",
+        "duration": "45.0",
         "name": "rendering.mobile/google_docs_2018"
     },
     {
-        "duration": "40.0",
-        "name": "rendering.mobile/google_docs_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "31.0",
+        "duration": "34.0",
         "name": "rendering.mobile/google_image_search_2018"
     },
     {
-        "duration": "31.0",
-        "name": "rendering.mobile/google_image_search_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "34.0",
+        "duration": "35.0",
         "name": "rendering.mobile/google_image_search_mobile_2018"
     },
     {
-        "duration": "33.0",
-        "name": "rendering.mobile/google_image_search_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "29.0",
+        "duration": "30.0",
         "name": "rendering.mobile/google_news_ios"
     },
     {
-        "duration": "44.0",
+        "duration": "37.0",
         "name": "rendering.mobile/google_news_mobile_2018"
     },
     {
-        "duration": "43.0",
-        "name": "rendering.mobile/google_news_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "35.0",
+        "duration": "37.0",
         "name": "rendering.mobile/google_plus_2018"
     },
     {
-        "duration": "31.0",
-        "name": "rendering.mobile/google_plus_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "43.0",
+        "duration": "40.0",
         "name": "rendering.mobile/google_plus_mobile_2018"
     },
     {
         "duration": "35.0",
-        "name": "rendering.mobile/google_plus_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/google_web_search_2018"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/google_web_search_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/google_web_search_mobile_2018"
+        "name": "rendering.mobile/google_search_mobile_pinch_2018"
     },
     {
         "duration": "30.0",
-        "name": "rendering.mobile/google_web_search_mobile_sync_scroll_2018"
+        "name": "rendering.mobile/google_web_search_2018"
+    },
+    {
+        "duration": "33.0",
+        "name": "rendering.mobile/google_web_search_mobile_2018"
     },
     {
         "duration": "39.0",
@@ -2473,10 +2449,6 @@
     },
     {
         "duration": "39.0",
-        "name": "rendering.mobile/gsp.ro_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "41.0",
         "name": "rendering.mobile/guardian_pathological_2018"
     },
     {
@@ -2484,11 +2456,11 @@
         "name": "rendering.mobile/guimark_vector_chart"
     },
     {
-        "duration": "25.0",
+        "duration": "28.0",
         "name": "rendering.mobile/gws_boogie_expansion"
     },
     {
-        "duration": "25.0",
+        "duration": "27.0",
         "name": "rendering.mobile/gws_google_expansion"
     },
     {
@@ -2496,35 +2468,35 @@
         "name": "rendering.mobile/hakim"
     },
     {
-        "duration": "27.0",
+        "duration": "29.0",
         "name": "rendering.mobile/horizontal_vertical_expansion"
     },
     {
-        "duration": "44.0",
+        "duration": "58.0",
         "name": "rendering.mobile/idle_power_animated_gif"
     },
     {
-        "duration": "37.0",
+        "duration": "41.0",
         "name": "rendering.mobile/idle_power_blank"
     },
     {
-        "duration": "45.0",
+        "duration": "46.0",
         "name": "rendering.mobile/idle_power_css_animation"
     },
     {
-        "duration": "45.0",
+        "duration": "46.0",
         "name": "rendering.mobile/idle_power_request_animation_frame"
     },
     {
-        "duration": "116.0",
+        "duration": "118.0",
         "name": "rendering.mobile/idle_power_set_timeout_long"
     },
     {
-        "duration": "46.0",
+        "duration": "47.0",
         "name": "rendering.mobile/idle_power_set_timetout"
     },
     {
-        "duration": "44.0",
+        "duration": "46.0",
         "name": "rendering.mobile/ie_chalkboard"
     },
     {
@@ -2532,63 +2504,75 @@
         "name": "rendering.mobile/ie_pirate_mark"
     },
     {
-        "duration": "34.0",
+        "duration": "36.0",
         "name": "rendering.mobile/infinite_scroll_element_n_layers_0"
     },
     {
-        "duration": "35.0",
+        "duration": "37.0",
         "name": "rendering.mobile/infinite_scroll_element_n_layers_75"
     },
     {
-        "duration": "35.0",
+        "duration": "36.0",
         "name": "rendering.mobile/infinite_scroll_element_n_layers_99"
     },
     {
-        "duration": "34.0",
+        "duration": "36.0",
+        "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_0"
+    },
+    {
+        "duration": "37.0",
+        "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_75"
+    },
+    {
+        "duration": "36.0",
+        "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_99"
+    },
+    {
+        "duration": "36.0",
         "name": "rendering.mobile/infinite_scroll_root_n_layers_0"
     },
     {
-        "duration": "34.0",
+        "duration": "37.0",
         "name": "rendering.mobile/infinite_scroll_root_n_layers_75"
     },
     {
-        "duration": "50.0",
+        "duration": "36.0",
         "name": "rendering.mobile/infinite_scroll_root_n_layers_99"
     },
     {
-        "duration": "32.0",
+        "duration": "34.0",
         "name": "rendering.mobile/infinite_scrolling"
     },
     {
-        "duration": "33.0",
+        "duration": "34.0",
         "name": "rendering.mobile/jarro_doverson"
     },
     {
-        "duration": "52.0",
+        "duration": "56.0",
         "name": "rendering.mobile/js_full_screen_invalidation"
     },
     {
-        "duration": "42.0",
+        "duration": "38.0",
         "name": "rendering.mobile/js_opacity_plus_n_layers_0"
     },
     {
-        "duration": "42.0",
+        "duration": "39.0",
         "name": "rendering.mobile/js_opacity_plus_n_layers_75"
     },
     {
-        "duration": "40.0",
+        "duration": "38.0",
         "name": "rendering.mobile/js_opacity_plus_n_layers_99"
     },
     {
-        "duration": "44.0",
+        "duration": "41.0",
         "name": "rendering.mobile/js_paint_plus_n_layers_0"
     },
     {
-        "duration": "44.0",
+        "duration": "41.0",
         "name": "rendering.mobile/js_paint_plus_n_layers_75"
     },
     {
-        "duration": "40.0",
+        "duration": "39.0",
         "name": "rendering.mobile/js_paint_plus_n_layers_99"
     },
     {
@@ -2596,15 +2580,11 @@
         "name": "rendering.mobile/js_poster_circle"
     },
     {
-        "duration": "35.0",
-        "name": "rendering.mobile/js_scroll_200_layer_grid"
-    },
-    {
-        "duration": "35.0",
+        "duration": "24.0",
         "name": "rendering.mobile/js_scroll_text_only"
     },
     {
-        "duration": "28.0",
+        "duration": "27.0",
         "name": "rendering.mobile/kevs_3d"
     },
     {
@@ -2612,39 +2592,35 @@
         "name": "rendering.mobile/keyframed_animations"
     },
     {
-        "duration": "30.0",
+        "duration": "31.0",
         "name": "rendering.mobile/large_texture_uploads"
     },
     {
-        "duration": "49.0",
+        "duration": "48.0",
         "name": "rendering.mobile/latimes_pathological_2018"
     },
     {
-        "duration": "54.0",
+        "duration": "40.0",
         "name": "rendering.mobile/linkedin_2018"
     },
     {
-        "duration": "50.0",
-        "name": "rendering.mobile/linkedin_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "70.0",
+        "duration": "75.0",
         "name": "rendering.mobile/linkedin_mobile_2018"
     },
     {
-        "duration": "63.0",
-        "name": "rendering.mobile/linkedin_mobile_sync_scroll_2018"
+        "duration": "68.0",
+        "name": "rendering.mobile/linkedin_mobile_pinch_2018"
     },
     {
-        "duration": "43.0",
+        "duration": "57.0",
         "name": "rendering.mobile/linkedin_pathological_2018"
     },
     {
-        "duration": "23.0",
+        "duration": "26.0",
         "name": "rendering.mobile/list_animation_simple"
     },
     {
-        "duration": "34.0",
+        "duration": "36.0",
         "name": "rendering.mobile/list_recycle_transform"
     },
     {
@@ -2652,107 +2628,191 @@
         "name": "rendering.mobile/man_in_blue"
     },
     {
-        "duration": "35.0",
+        "duration": "37.0",
         "name": "rendering.mobile/many_images"
     },
     {
-        "duration": "31.0",
+        "duration": "32.0",
         "name": "rendering.mobile/many_planets_deep"
     },
     {
-        "duration": "55.0",
+        "duration": "45.0",
         "name": "rendering.mobile/maps_perf_test"
     },
     {
-        "duration": "24.0",
+        "duration": "27.0",
         "name": "rendering.mobile/mask_transition_animation"
     },
     {
-        "duration": "35.0",
+        "duration": "32.0",
+        "name": "rendering.mobile/masonry"
+    },
+    {
+        "duration": "36.0",
         "name": "rendering.mobile/medium_texture_uploads"
     },
     {
-        "duration": "28.0",
+        "duration": "27.0",
         "name": "rendering.mobile/megi_dish"
     },
     {
-        "duration": "29.0",
+        "duration": "34.0",
         "name": "rendering.mobile/microsoft_asteroid_belt"
     },
     {
-        "duration": "35.0",
-        "name": "rendering.mobile/microsoft_fireflies"
+        "duration": "29.0",
+        "name": "rendering.mobile/microsoft_fish_ie_tank"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.mobile/microsoft_fish_ie_tank"
+        "duration": "37.0",
+        "name": "rendering.mobile/microsoft_performance"
     },
     {
         "duration": "28.0",
         "name": "rendering.mobile/microsoft_snow"
     },
     {
-        "duration": "24.0",
+        "duration": "28.0",
         "name": "rendering.mobile/microsoft_speed_reading"
     },
     {
-        "duration": "29.0",
+        "duration": "30.0",
         "name": "rendering.mobile/microsoft_tweet_map"
     },
     {
-        "duration": "30.0",
+        "duration": "36.0",
         "name": "rendering.mobile/microsoft_video_city"
     },
     {
-        "duration": "25.0",
+        "duration": "28.0",
         "name": "rendering.mobile/microsoft_worker_fountains"
     },
     {
-        "duration": "26.0",
+        "duration": "27.0",
         "name": "rendering.mobile/mix_10k"
     },
     {
-        "duration": "28.0",
+        "duration": "29.0",
         "name": "rendering.mobile/mix_blend_mode_animation_difference"
     },
     {
-        "duration": "28.0",
+        "duration": "29.0",
         "name": "rendering.mobile/mix_blend_mode_animation_hue"
     },
     {
-        "duration": "36.0",
+        "duration": "35.0",
         "name": "rendering.mobile/mix_blend_mode_animation_propagating_isolation"
     },
     {
-        "duration": "28.0",
+        "duration": "29.0",
         "name": "rendering.mobile/mix_blend_mode_animation_screen"
     },
     {
-        "duration": "67.0",
+        "duration": "51.0",
         "name": "rendering.mobile/mlb_mobile_2018"
     },
     {
-        "duration": "59.0",
-        "name": "rendering.mobile/mlb_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "22.0",
+        "duration": "27.0",
         "name": "rendering.mobile/mobile_news_sandbox"
     },
     {
-        "duration": "30.0",
+        "duration": "32.0",
         "name": "rendering.mobile/motion_mark_canvas_fill_shapes"
     },
     {
-        "duration": "29.0",
+        "duration": "33.0",
         "name": "rendering.mobile/motion_mark_canvas_stroke_shapes"
     },
     {
-        "duration": "29.0",
-        "name": "rendering.mobile/motion_mark_focus"
+        "duration": "31.0",
+        "name": "rendering.mobile/motionmark_anim_design_15"
     },
     {
-        "duration": "44.0",
+        "duration": "28.0",
+        "name": "rendering.mobile/motionmark_anim_focus_25"
+    },
+    {
+        "duration": "32.0",
+        "name": "rendering.mobile/motionmark_anim_images_50"
+    },
+    {
+        "duration": "31.0",
+        "name": "rendering.mobile/motionmark_anim_leaves_250"
+    },
+    {
+        "duration": "31.0",
+        "name": "rendering.mobile/motionmark_anim_multiply_175"
+    },
+    {
+        "duration": "32.0",
+        "name": "rendering.mobile/motionmark_anim_suits_125"
+    },
+    {
+        "duration": "31.0",
+        "name": "rendering.mobile/motionmark_html_composited_transforms_125"
+    },
+    {
+        "duration": "29.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_blend_circles_25"
+    },
+    {
+        "duration": "31.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_circles_250"
+    },
+    {
+        "duration": "31.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_clipped_rects_100"
+    },
+    {
+        "duration": "30.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_filter_circles_15"
+    },
+    {
+        "duration": "31.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_gradient_circles_250"
+    },
+    {
+        "duration": "31.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_svg_images_50"
+    },
+    {
+        "duration": "30.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_tagged_images_225"
+    },
+    {
+        "duration": "29.0",
+        "name": "rendering.mobile/motionmark_html_dom_particles_svg_masks_25"
+    },
+    {
+        "duration": "28.0",
+        "name": "rendering.mobile/motionmark_html_focus_20_15"
+    },
+    {
+        "duration": "32.0",
+        "name": "rendering.mobile/motionmark_html_leaves_20_50"
+    },
+    {
+        "duration": "31.0",
+        "name": "rendering.mobile/motionmark_svg_bouncing_circles_250"
+    },
+    {
+        "duration": "30.0",
+        "name": "rendering.mobile/motionmark_svg_bouncing_clipped_rects_100"
+    },
+    {
+        "duration": "31.0",
+        "name": "rendering.mobile/motionmark_svg_bouncing_gradient_circles_200"
+    },
+    {
+        "duration": "31.0",
+        "name": "rendering.mobile/motionmark_svg_bouncing_png_images_200"
+    },
+    {
+        "duration": "34.0",
+        "name": "rendering.mobile/motionmark_svg_bouncing_svg_images_50"
+    },
+    {
+        "duration": "43.0",
         "name": "rendering.mobile/new_tilings"
     },
     {
@@ -2760,15 +2820,15 @@
         "name": "rendering.mobile/no_op_raf"
     },
     {
-        "duration": "23.0",
+        "duration": "27.0",
         "name": "rendering.mobile/no_op_scroll"
     },
     {
-        "duration": "22.0",
+        "duration": "25.0",
         "name": "rendering.mobile/no_op_settimeout"
     },
     {
-        "duration": "27.0",
+        "duration": "29.0",
         "name": "rendering.mobile/no_op_touch_handler"
     },
     {
@@ -2780,11 +2840,11 @@
         "name": "rendering.mobile/nyc_gov_scroll_2018"
     },
     {
-        "duration": "59.0",
+        "duration": "51.0",
         "name": "rendering.mobile/nytimes_mobile_2018"
     },
     {
-        "duration": "54.0",
+        "duration": "51.0",
         "name": "rendering.mobile/nytimes_scroll_2018"
     },
     {
@@ -2792,123 +2852,115 @@
         "name": "rendering.mobile/overlay_background_color_css_transitions_page"
     },
     {
-        "duration": "29.0",
+        "duration": "33.0",
         "name": "rendering.mobile/parallax_effect"
     },
     {
-        "duration": "28.0",
+        "duration": "31.0",
         "name": "rendering.mobile/particles"
     },
     {
-        "duration": "35.0",
+        "duration": "37.0",
         "name": "rendering.mobile/pbs_pathological_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "25.0",
         "name": "rendering.mobile/physical_simulation"
     },
     {
-        "duration": "32.0",
+        "duration": "43.0",
         "name": "rendering.mobile/pinterest_2018"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.mobile/pinterest_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "27.0",
+        "duration": "29.0",
         "name": "rendering.mobile/pinterest_mobile_2018"
     },
     {
-        "duration": "19.0",
-        "name": "rendering.mobile/pinterest_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "24.0",
+        "duration": "28.0",
         "name": "rendering.mobile/put_get_image_data"
     },
     {
-        "duration": "32.0",
+        "duration": "34.0",
         "name": "rendering.mobile/raf"
     },
     {
-        "duration": "31.0",
+        "duration": "34.0",
         "name": "rendering.mobile/raf_animation"
     },
     {
-        "duration": "31.0",
+        "duration": "34.0",
         "name": "rendering.mobile/raf_canvas"
     },
     {
-        "duration": "31.0",
+        "duration": "32.0",
         "name": "rendering.mobile/raf_touch_animation"
     },
     {
-        "duration": "44.0",
+        "duration": "41.0",
         "name": "rendering.mobile/recode_pathological_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "36.0",
         "name": "rendering.mobile/reddit_mobile_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "28.0",
         "name": "rendering.mobile/runway"
     },
     {
-        "duration": "30.0",
+        "duration": "32.0",
         "name": "rendering.mobile/san_angeles"
     },
     {
-        "duration": "21.0",
+        "duration": "23.0",
         "name": "rendering.mobile/second_batch_js_heavy"
     },
     {
-        "duration": "19.0",
+        "duration": "21.0",
         "name": "rendering.mobile/second_batch_js_light"
     },
     {
-        "duration": "19.0",
+        "duration": "21.0",
         "name": "rendering.mobile/second_batch_js_medium"
     },
     {
-        "duration": "48.0",
+        "duration": "42.0",
         "name": "rendering.mobile/sfgate_mobile_2018"
     },
     {
         "duration": "40.0",
-        "name": "rendering.mobile/sfgate_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "40.0",
         "name": "rendering.mobile/silk_finance"
     },
     {
-        "duration": "29.0",
+        "duration": "31.0",
         "name": "rendering.mobile/simple_text_page"
     },
     {
-        "duration": "22.0",
+        "duration": "24.0",
         "name": "rendering.mobile/simple_touch_drag"
     },
     {
-        "duration": "50.0",
+        "duration": "41.0",
         "name": "rendering.mobile/slashdot_mobile_2018"
     },
     {
-        "duration": "36.0",
+        "duration": "37.0",
+        "name": "rendering.mobile/slide_drawer"
+    },
+    {
+        "duration": "34.0",
         "name": "rendering.mobile/small_texture_uploads"
     },
     {
-        "duration": "31.0",
+        "duration": "30.0",
         "name": "rendering.mobile/smash_cat"
     },
     {
-        "duration": "24.0",
+        "duration": "26.0",
         "name": "rendering.mobile/spielzeugz"
     },
     {
-        "duration": "23.0",
+        "duration": "26.0",
         "name": "rendering.mobile/sticky_using_webkit"
     },
     {
@@ -2916,15 +2968,19 @@
         "name": "rendering.mobile/stress_hidey_bars"
     },
     {
-        "duration": "25.0",
+        "duration": "27.0",
         "name": "rendering.mobile/stroke_shapes"
     },
     {
-        "duration": "36.0",
+        "duration": "37.0",
         "name": "rendering.mobile/svg_icon_raster"
     },
     {
-        "duration": "27.0",
+        "duration": "21.0",
+        "name": "rendering.mobile/swipe_action"
+    },
+    {
+        "duration": "30.0",
         "name": "rendering.mobile/swipe_to_dismiss"
     },
     {
@@ -2932,283 +2988,111 @@
         "name": "rendering.mobile/sync_scroll_offset"
     },
     {
-        "duration": "51.0",
+        "duration": "43.0",
         "name": "rendering.mobile/techcrunch_2018"
     },
     {
-        "duration": "45.0",
-        "name": "rendering.mobile/techcrunch_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "52.0",
+        "duration": "43.0",
         "name": "rendering.mobile/techcrunch_mobile_2018"
     },
     {
-        "duration": "44.0",
-        "name": "rendering.mobile/techcrunch_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "30.0",
+        "duration": "31.0",
         "name": "rendering.mobile/text_05000_pixels_per_second"
     },
     {
-        "duration": "30.0",
-        "name": "rendering.mobile/text_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "30.0",
+        "duration": "32.0",
         "name": "rendering.mobile/text_10000_pixels_per_second"
     },
     {
-        "duration": "29.0",
-        "name": "rendering.mobile/text_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/text_15000_pixels_per_second"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/text_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "31.0",
+        "duration": "32.0",
         "name": "rendering.mobile/text_20000_pixels_per_second"
     },
     {
-        "duration": "30.0",
-        "name": "rendering.mobile/text_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/text_30000_pixels_per_second"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/text_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "32.0",
+        "duration": "33.0",
         "name": "rendering.mobile/text_40000_pixels_per_second"
     },
     {
-        "duration": "31.0",
-        "name": "rendering.mobile/text_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/text_50000_pixels_per_second"
-    },
-    {
         "duration": "30.0",
-        "name": "rendering.mobile/text_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "28.0",
         "name": "rendering.mobile/text_60000_pixels_per_second"
     },
     {
-        "duration": "28.0",
-        "name": "rendering.mobile/text_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
         "duration": "26.0",
         "name": "rendering.mobile/text_75000_pixels_per_second"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.mobile/text_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "24.0",
+        "duration": "25.0",
         "name": "rendering.mobile/text_90000_pixels_per_second"
     },
     {
-        "duration": "24.0",
-        "name": "rendering.mobile/text_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "33.0",
+        "duration": "34.0",
         "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second"
     },
     {
-        "duration": "33.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "33.0",
+        "duration": "34.0",
         "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second"
     },
     {
-        "duration": "32.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "33.0",
+        "duration": "34.0",
         "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second"
     },
     {
-        "duration": "32.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
         "duration": "33.0",
         "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second"
     },
     {
-        "duration": "32.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "31.0",
+        "duration": "33.0",
         "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second"
     },
     {
-        "duration": "30.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "28.0",
+        "duration": "31.0",
         "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second"
     },
     {
-        "duration": "28.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "27.0",
+        "duration": "30.0",
         "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
+        "duration": "26.0",
         "name": "rendering.mobile/text_hover_05000_pixels_per_second"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_hover_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
+        "duration": "26.0",
         "name": "rendering.mobile/text_hover_10000_pixels_per_second"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_hover_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_hover_15000_pixels_per_second"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_hover_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
+        "duration": "26.0",
         "name": "rendering.mobile/text_hover_20000_pixels_per_second"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_hover_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_hover_30000_pixels_per_second"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_hover_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
+        "duration": "25.0",
         "name": "rendering.mobile/text_hover_40000_pixels_per_second"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_hover_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_hover_50000_pixels_per_second"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_hover_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "22.0",
+        "duration": "25.0",
         "name": "rendering.mobile/text_hover_60000_pixels_per_second"
     },
     {
-        "duration": "21.0",
-        "name": "rendering.mobile/text_hover_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "21.0",
+        "duration": "24.0",
         "name": "rendering.mobile/text_hover_75000_pixels_per_second"
     },
     {
-        "duration": "21.0",
-        "name": "rendering.mobile/text_hover_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "20.0",
+        "duration": "23.0",
         "name": "rendering.mobile/text_hover_90000_pixels_per_second"
     },
     {
-        "duration": "20.0",
-        "name": "rendering.mobile/text_hover_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "43.0",
+        "duration": "42.0",
         "name": "rendering.mobile/theverge_article_mobile_2018"
     },
     {
-        "duration": "44.0",
-        "name": "rendering.mobile/theverge_article_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "52.0",
+        "duration": "43.0",
         "name": "rendering.mobile/theverge_mobile_2018"
     },
     {
-        "duration": "45.0",
-        "name": "rendering.mobile/theverge_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "29.0",
+        "duration": "31.0",
         "name": "rendering.mobile/toggle_drawer"
     },
     {
-        "duration": "29.0",
+        "duration": "31.0",
         "name": "rendering.mobile/touch_handler_scrolling"
     },
     {
@@ -3220,55 +3104,43 @@
         "name": "rendering.mobile/transform_transitions_js_block"
     },
     {
-        "duration": "49.0",
+        "duration": "41.0",
         "name": "rendering.mobile/twitch_2018"
     },
     {
-        "duration": "42.0",
-        "name": "rendering.mobile/twitch_desktop_gpu_raster_2018"
+        "duration": "52.0",
+        "name": "rendering.mobile/twitch_mobile_pinch_2018"
     },
     {
         "duration": "48.0",
         "name": "rendering.mobile/twitter_2018"
     },
     {
-        "duration": "46.0",
-        "name": "rendering.mobile/twitter_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "32.0",
+        "duration": "25.0",
         "name": "rendering.mobile/twitter_mobile_2018"
     },
     {
-        "duration": "24.0",
-        "name": "rendering.mobile/twitter_mobile_sync_scroll_2018"
-    },
-    {
         "duration": "30.0",
         "name": "rendering.mobile/update_history_state"
     },
     {
-        "duration": "29.0",
+        "duration": "34.0",
         "name": "rendering.mobile/usatoday_mobile_2018"
     },
     {
         "duration": "30.0",
-        "name": "rendering.mobile/usatoday_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "30.0",
         "name": "rendering.mobile/vertical_expansion"
     },
     {
-        "duration": "32.0",
+        "duration": "34.0",
         "name": "rendering.mobile/web_animation_value_type_color"
     },
     {
-        "duration": "30.0",
+        "duration": "31.0",
         "name": "rendering.mobile/web_animation_value_type_length_3d"
     },
     {
-        "duration": "31.0",
+        "duration": "33.0",
         "name": "rendering.mobile/web_animation_value_type_length_complex"
     },
     {
@@ -3276,31 +3148,31 @@
         "name": "rendering.mobile/web_animation_value_type_length_simple"
     },
     {
-        "duration": "31.0",
+        "duration": "32.0",
         "name": "rendering.mobile/web_animation_value_type_path"
     },
     {
-        "duration": "52.0",
+        "duration": "32.0",
         "name": "rendering.mobile/web_animation_value_type_shadow"
     },
     {
-        "duration": "30.0",
+        "duration": "32.0",
         "name": "rendering.mobile/web_animation_value_type_transform_complex"
     },
     {
-        "duration": "30.0",
+        "duration": "32.0",
         "name": "rendering.mobile/web_animation_value_type_transform_simple"
     },
     {
-        "duration": "51.0",
+        "duration": "52.0",
         "name": "rendering.mobile/web_animations_many_keyframes"
     },
     {
-        "duration": "30.0",
+        "duration": "31.0",
         "name": "rendering.mobile/web_animations_set_current_time"
     },
     {
-        "duration": "32.0",
+        "duration": "34.0",
         "name": "rendering.mobile/web_animations_simultaneous"
     },
     {
@@ -3308,299 +3180,187 @@
         "name": "rendering.mobile/web_animations_staggered_chaining"
     },
     {
-        "duration": "32.0",
+        "duration": "33.0",
         "name": "rendering.mobile/web_animations_staggered_infinite_iterations"
     },
     {
-        "duration": "36.0",
+        "duration": "37.0",
         "name": "rendering.mobile/web_animations_staggered_triggering_page"
     },
     {
-        "duration": "50.0",
+        "duration": "46.0",
         "name": "rendering.mobile/wikipedia_2018"
     },
     {
-        "duration": "46.0",
+        "duration": "42.0",
         "name": "rendering.mobile/wikipedia_delayed_scroll_start_2018"
     },
     {
-        "duration": "39.0",
-        "name": "rendering.mobile/wikipedia_delayed_scroll_start_sync_scroll_2018"
-    },
-    {
-        "duration": "44.0",
-        "name": "rendering.mobile/wikipedia_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "38.0",
+        "duration": "41.0",
         "name": "rendering.mobile/wikipedia_mobile_2018"
     },
     {
-        "duration": "37.0",
-        "name": "rendering.mobile/wikipedia_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "44.0",
+        "duration": "39.0",
         "name": "rendering.mobile/wordpress_2018"
     },
     {
-        "duration": "40.0",
-        "name": "rendering.mobile/wordpress_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "45.0",
+        "duration": "37.0",
         "name": "rendering.mobile/wordpress_mobile_2018"
     },
     {
-        "duration": "38.0",
-        "name": "rendering.mobile/wordpress_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "39.0",
+        "duration": "41.0",
         "name": "rendering.mobile/worldjournal_mobile_2018"
     },
     {
-        "duration": "40.0",
-        "name": "rendering.mobile/worldjournal_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "54.0",
+        "duration": "47.0",
         "name": "rendering.mobile/wow_wiki_pathological_2018"
     },
     {
-        "duration": "80.0",
+        "duration": "66.0",
         "name": "rendering.mobile/wowwiki_mobile_2018"
     },
     {
-        "duration": "71.0",
-        "name": "rendering.mobile/wowwiki_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "53.0",
+        "duration": "46.0",
         "name": "rendering.mobile/wsj_mobile_2018"
     },
     {
-        "duration": "47.0",
-        "name": "rendering.mobile/wsj_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "32.0",
+        "duration": "28.0",
         "name": "rendering.mobile/yahoo_answers_2018"
     },
     {
         "duration": "27.0",
-        "name": "rendering.mobile/yahoo_answers_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "29.0",
         "name": "rendering.mobile/yahoo_answers_mobile_2018"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.mobile/yahoo_answers_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "40.0",
-        "name": "rendering.mobile/yahoo_news_2018"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/yahoo_news_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "42.0",
+        "duration": "28.0",
         "name": "rendering.mobile/yahoo_news_mobile_2018"
     },
     {
-        "duration": "36.0",
-        "name": "rendering.mobile/yahoo_news_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "42.0",
+        "duration": "41.0",
         "name": "rendering.mobile/yahoo_sports_2018"
     },
     {
-        "duration": "37.0",
-        "name": "rendering.mobile/yahoo_sports_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "24.0",
+        "duration": "30.0",
         "name": "rendering.mobile/yahoo_sports_pathological_2018"
     },
     {
-        "duration": "39.0",
+        "duration": "38.0",
         "name": "rendering.mobile/youtube_2018"
     },
     {
-        "duration": "34.0",
-        "name": "rendering.mobile/youtube_desktop_gpu_raster_2018"
-    },
-    {
         "duration": "26.0",
         "name": "rendering.mobile/youtube_mobile_2018"
     },
     {
-        "duration": "18.0",
-        "name": "rendering.mobile/youtube_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "49.0",
+        "duration": "60.0",
         "name": "rendering.mobile/yuv_decoding"
     },
     {
-        "duration": "50.0",
+        "duration": "60.0",
         "name": "rendering.mobile/yuv_decoding_gpu_rasterization_and_decoding"
     },
     {
-        "duration": "35.0",
+        "duration": "36.0",
         "name": "rendering.mobile/zdnet_pathological_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "29.0",
         "name": "rendering.mobile/zoom_in_animation"
     },
     {
-        "duration": "52.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/accu_weather_pinch_2018"
-    },
-    {
-        "duration": "35.0",
+        "duration": "49.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/amazon_pinch_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "32.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/blogspot_pinch_2018"
     },
     {
-        "duration": "33.0",
+        "duration": "42.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/booking_pinch_2018"
     },
     {
-        "duration": "35.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/cnn_pinch_2018"
-    },
-    {
-        "duration": "25.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/ebay_pinch_2018"
-    },
-    {
-        "duration": "37.0",
+        "duration": "45.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/espn_pinch_2018"
     },
     {
-        "duration": "36.0",
+        "duration": "49.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/facebook_pinch_2018"
     },
     {
-        "duration": "66.0",
+        "duration": "79.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/gmail_pinch_2018"
     },
     {
-        "duration": "42.0",
+        "duration": "43.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_calendar_pinch_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "32.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_image_pinch_2018"
     },
     {
-        "duration": "37.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_search_pinch_2018"
-    },
-    {
-        "duration": "47.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/linkedin_pinch_2018"
-    },
-    {
-        "duration": "39.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/twitch_pinch_2018"
-    },
-    {
-        "duration": "34.0",
+        "duration": "46.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/twitter_pinch_2018"
     },
     {
-        "duration": "37.0",
+        "duration": "59.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_news_pinch_2018"
     },
     {
-        "duration": "41.0",
+        "duration": "52.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_sports_pinch_2018"
     },
     {
-        "duration": "35.0",
+        "duration": "53.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/youtube_pinch_2018"
     },
     {
-        "duration": "52.0",
-        "name": "smoothness.tough_pinch_zoom_cases/accu_weather_pinch_2018"
-    },
-    {
-        "duration": "37.0",
+        "duration": "48.0",
         "name": "smoothness.tough_pinch_zoom_cases/amazon_pinch_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "30.0",
         "name": "smoothness.tough_pinch_zoom_cases/blogspot_pinch_2018"
     },
     {
-        "duration": "36.0",
+        "duration": "40.0",
         "name": "smoothness.tough_pinch_zoom_cases/booking_pinch_2018"
     },
     {
-        "duration": "35.0",
-        "name": "smoothness.tough_pinch_zoom_cases/cnn_pinch_2018"
-    },
-    {
-        "duration": "25.0",
-        "name": "smoothness.tough_pinch_zoom_cases/ebay_pinch_2018"
-    },
-    {
-        "duration": "37.0",
+        "duration": "43.0",
         "name": "smoothness.tough_pinch_zoom_cases/espn_pinch_2018"
     },
     {
-        "duration": "37.0",
+        "duration": "47.0",
         "name": "smoothness.tough_pinch_zoom_cases/facebook_pinch_2018"
     },
     {
-        "duration": "68.0",
+        "duration": "78.0",
         "name": "smoothness.tough_pinch_zoom_cases/gmail_pinch_2018"
     },
     {
-        "duration": "43.0",
+        "duration": "41.0",
         "name": "smoothness.tough_pinch_zoom_cases/google_calendar_pinch_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "31.0",
         "name": "smoothness.tough_pinch_zoom_cases/google_image_pinch_2018"
     },
     {
-        "duration": "37.0",
-        "name": "smoothness.tough_pinch_zoom_cases/google_search_pinch_2018"
-    },
-    {
-        "duration": "46.0",
-        "name": "smoothness.tough_pinch_zoom_cases/linkedin_pinch_2018"
-    },
-    {
-        "duration": "41.0",
-        "name": "smoothness.tough_pinch_zoom_cases/twitch_pinch_2018"
-    },
-    {
-        "duration": "34.0",
+        "duration": "43.0",
         "name": "smoothness.tough_pinch_zoom_cases/twitter_pinch_2018"
     },
     {
-        "duration": "42.0",
+        "duration": "58.0",
         "name": "smoothness.tough_pinch_zoom_cases/yahoo_news_pinch_2018"
     },
     {
-        "duration": "42.0",
+        "duration": "51.0",
         "name": "smoothness.tough_pinch_zoom_cases/yahoo_sports_pinch_2018"
     },
     {
-        "duration": "36.0",
+        "duration": "49.0",
         "name": "smoothness.tough_pinch_zoom_cases/youtube_pinch_2018"
     },
     {
@@ -3612,155 +3372,159 @@
         "name": "speedometer/http://browserbench.org/Speedometer/"
     },
     {
-        "duration": "246.0",
+        "duration": "227.0",
         "name": "speedometer2-future/Speedometer2"
     },
     {
-        "duration": "244.0",
+        "duration": "233.0",
         "name": "speedometer2/Speedometer2"
     },
     {
-        "duration": "207.0",
+        "duration": "140.0",
+        "name": "startup.mobile/cct:coldish:bbc"
+    },
+    {
+        "duration": "218.0",
         "name": "startup.mobile/intent:coldish:bbc"
     },
     {
-        "duration": "176.0",
+        "duration": "178.0",
         "name": "startup.mobile/intent:warm:bbc"
     },
     {
-        "duration": "28.0",
+        "duration": "29.0",
         "name": "system_health.common_mobile/background:media:imgur"
     },
     {
-        "duration": "57.0",
+        "duration": "55.0",
         "name": "system_health.common_mobile/background:news:nytimes"
     },
     {
-        "duration": "30.0",
+        "duration": "35.0",
         "name": "system_health.common_mobile/background:search:google"
     },
     {
-        "duration": "42.0",
+        "duration": "30.0",
         "name": "system_health.common_mobile/background:social:facebook"
     },
     {
-        "duration": "46.0",
-        "name": "system_health.common_mobile/background:tools:gmail"
-    },
-    {
-        "duration": "127.0",
-        "name": "system_health.common_mobile/browse:chrome:newtab"
-    },
-    {
-        "duration": "42.0",
+        "duration": "43.0",
         "name": "system_health.common_mobile/browse:chrome:omnibox"
     },
     {
-        "duration": "109.0",
+        "duration": "108.0",
         "name": "system_health.common_mobile/browse:media:facebook_photos"
     },
     {
-        "duration": "66.0",
+        "duration": "64.0",
         "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll"
     },
     {
+        "duration": "63.0",
+        "name": "system_health.common_mobile/browse:media:googleplaystore:2019"
+    },
+    {
         "duration": "91.0",
         "name": "system_health.common_mobile/browse:media:imgur"
     },
     {
-        "duration": "129.0",
+        "duration": "134.0",
         "name": "system_health.common_mobile/browse:media:youtube"
     },
     {
-        "duration": "208.0",
+        "duration": "207.0",
         "name": "system_health.common_mobile/browse:news:cnn"
     },
     {
-        "duration": "171.0",
+        "duration": "159.0",
         "name": "system_health.common_mobile/browse:news:cnn:2018"
     },
     {
-        "duration": "78.0",
+        "duration": "76.0",
         "name": "system_health.common_mobile/browse:news:cricbuzz"
     },
     {
-        "duration": "66.0",
+        "duration": "74.0",
         "name": "system_health.common_mobile/browse:news:qq"
     },
     {
-        "duration": "73.0",
+        "duration": "77.0",
         "name": "system_health.common_mobile/browse:news:reddit"
     },
     {
-        "duration": "250.0",
+        "duration": "240.0",
         "name": "system_health.common_mobile/browse:news:toi"
     },
     {
-        "duration": "65.0",
+        "duration": "68.0",
         "name": "system_health.common_mobile/browse:news:washingtonpost"
     },
     {
-        "duration": "102.0",
+        "duration": "42.0",
+        "name": "system_health.common_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "98.0",
         "name": "system_health.common_mobile/browse:shopping:amazon"
     },
     {
-        "duration": "102.0",
-        "name": "system_health.common_mobile/browse:shopping:avito"
-    },
-    {
-        "duration": "51.0",
+        "duration": "48.0",
         "name": "system_health.common_mobile/browse:shopping:lazada"
     },
     {
-        "duration": "86.0",
+        "duration": "90.0",
         "name": "system_health.common_mobile/browse:social:facebook"
     },
     {
-        "duration": "125.0",
+        "duration": "133.0",
         "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "112.0",
+        "duration": "118.0",
         "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "103.0",
+        "duration": "110.0",
         "name": "system_health.common_mobile/browse:social:instagram"
     },
     {
-        "duration": "103.0",
+        "duration": "110.0",
         "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll"
     },
     {
-        "duration": "126.0",
+        "duration": "125.0",
         "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "68.0",
+        "duration": "139.0",
+        "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "70.0",
         "name": "system_health.common_mobile/browse:social:twitter"
     },
     {
-        "duration": "81.0",
+        "duration": "86.0",
         "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "102.0",
+        "duration": "107.0",
         "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "58.0",
+        "duration": "61.0",
         "name": "system_health.common_mobile/browse:tools:maps"
     },
     {
-        "duration": "23.0",
+        "duration": "36.0",
         "name": "system_health.common_mobile/load:chrome:blank"
     },
     {
-        "duration": "31.0",
+        "duration": "33.0",
         "name": "system_health.common_mobile/load:games:bubbles"
     },
     {
-        "duration": "24.0",
+        "duration": "27.0",
         "name": "system_health.common_mobile/load:games:lazors"
     },
     {
@@ -3768,147 +3532,199 @@
         "name": "system_health.common_mobile/load:games:spychase"
     },
     {
-        "duration": "32.0",
+        "duration": "41.0",
+        "name": "system_health.common_mobile/load:games:spychase:2018"
+    },
+    {
+        "duration": "33.0",
         "name": "system_health.common_mobile/load:media:dailymotion"
     },
     {
-        "duration": "28.0",
+        "duration": "29.0",
         "name": "system_health.common_mobile/load:media:facebook_photos"
     },
     {
-        "duration": "28.0",
+        "duration": "37.0",
+        "name": "system_health.common_mobile/load:media:flickr:2018"
+    },
+    {
+        "duration": "29.0",
         "name": "system_health.common_mobile/load:media:google_images"
     },
     {
-        "duration": "28.0",
+        "duration": "31.0",
+        "name": "system_health.common_mobile/load:media:google_images:2018"
+    },
+    {
+        "duration": "29.0",
         "name": "system_health.common_mobile/load:media:imgur"
     },
     {
-        "duration": "28.0",
+        "duration": "41.0",
+        "name": "system_health.common_mobile/load:media:imgur:2018"
+    },
+    {
+        "duration": "29.0",
         "name": "system_health.common_mobile/load:media:soundcloud"
     },
     {
         "duration": "28.0",
+        "name": "system_health.common_mobile/load:media:soundcloud:2018"
+    },
+    {
+        "duration": "29.0",
         "name": "system_health.common_mobile/load:media:youtube"
     },
     {
-        "duration": "60.0",
+        "duration": "32.0",
+        "name": "system_health.common_mobile/load:media:youtube:2018"
+    },
+    {
+        "duration": "62.0",
         "name": "system_health.common_mobile/load:news:cnn"
     },
     {
-        "duration": "39.0",
+        "duration": "51.0",
+        "name": "system_health.common_mobile/load:news:cnn:2018"
+    },
+    {
+        "duration": "37.0",
         "name": "system_health.common_mobile/load:news:irctc"
     },
     {
-        "duration": "35.0",
+        "duration": "36.0",
         "name": "system_health.common_mobile/load:news:nytimes"
     },
     {
-        "duration": "27.0",
+        "duration": "31.0",
         "name": "system_health.common_mobile/load:news:qq"
     },
     {
-        "duration": "30.0",
+        "duration": "31.0",
         "name": "system_health.common_mobile/load:news:reddit"
     },
     {
-        "duration": "31.0",
+        "duration": "33.0",
         "name": "system_health.common_mobile/load:news:washingtonpost"
     },
     {
-        "duration": "30.0",
+        "duration": "33.0",
         "name": "system_health.common_mobile/load:news:wikipedia"
     },
     {
-        "duration": "27.0",
-        "name": "system_health.common_mobile/load:search:baidu"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.common_mobile/load:search:ebay"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.common_mobile/load:search:google"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_mobile/load:search:taobao"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.common_mobile/load:search:yahoo"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.common_mobile/load:search:yandex"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_mobile/load:social:twitter"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.common_mobile/load:tools:docs"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.common_mobile/load:tools:drive"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.common_mobile/load:tools:dropbox"
-    },
-    {
-        "duration": "41.0",
-        "name": "system_health.common_mobile/load:tools:gmail"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.common_mobile/load:tools:stackoverflow"
-    },
-    {
-        "duration": "39.0",
-        "name": "system_health.common_mobile/load:tools:weather"
-    },
-    {
-        "duration": "32.0",
-        "name": "system_health.memory_mobile/background:media:imgur"
-    },
-    {
-        "duration": "53.0",
-        "name": "system_health.memory_mobile/background:news:nytimes"
+        "duration": "29.0",
+        "name": "system_health.common_mobile/load:news:wikipedia:2018"
     },
     {
         "duration": "34.0",
+        "name": "system_health.common_mobile/load:search:baidu"
+    },
+    {
+        "duration": "38.0",
+        "name": "system_health.common_mobile/load:search:baidu:2018"
+    },
+    {
+        "duration": "30.0",
+        "name": "system_health.common_mobile/load:search:ebay"
+    },
+    {
+        "duration": "33.0",
+        "name": "system_health.common_mobile/load:search:ebay:2018"
+    },
+    {
+        "duration": "28.0",
+        "name": "system_health.common_mobile/load:search:google"
+    },
+    {
+        "duration": "30.0",
+        "name": "system_health.common_mobile/load:search:google:2018"
+    },
+    {
+        "duration": "42.0",
+        "name": "system_health.common_mobile/load:search:taobao"
+    },
+    {
+        "duration": "28.0",
+        "name": "system_health.common_mobile/load:search:yahoo"
+    },
+    {
+        "duration": "25.0",
+        "name": "system_health.common_mobile/load:search:yahoo:2018"
+    },
+    {
+        "duration": "29.0",
+        "name": "system_health.common_mobile/load:search:yandex"
+    },
+    {
+        "duration": "30.0",
+        "name": "system_health.common_mobile/load:search:yandex:2018"
+    },
+    {
+        "duration": "29.0",
+        "name": "system_health.common_mobile/load:social:twitter"
+    },
+    {
+        "duration": "28.0",
+        "name": "system_health.common_mobile/load:tools:docs"
+    },
+    {
+        "duration": "31.0",
+        "name": "system_health.common_mobile/load:tools:drive"
+    },
+    {
+        "duration": "27.0",
+        "name": "system_health.common_mobile/load:tools:dropbox"
+    },
+    {
+        "duration": "30.0",
+        "name": "system_health.common_mobile/load:tools:stackoverflow"
+    },
+    {
+        "duration": "30.0",
+        "name": "system_health.common_mobile/load:tools:stackoverflow:2018"
+    },
+    {
+        "duration": "38.0",
+        "name": "system_health.common_mobile/load:tools:weather"
+    },
+    {
+        "duration": "31.0",
+        "name": "system_health.memory_mobile/background:media:imgur"
+    },
+    {
+        "duration": "50.0",
+        "name": "system_health.memory_mobile/background:news:nytimes"
+    },
+    {
+        "duration": "35.0",
         "name": "system_health.memory_mobile/background:search:google"
     },
     {
-        "duration": "44.0",
+        "duration": "31.0",
         "name": "system_health.memory_mobile/background:social:facebook"
     },
     {
-        "duration": "121.0",
-        "name": "system_health.memory_mobile/browse:chrome:newtab"
-    },
-    {
         "duration": "44.0",
         "name": "system_health.memory_mobile/browse:chrome:omnibox"
     },
     {
-        "duration": "98.0",
+        "duration": "96.0",
         "name": "system_health.memory_mobile/browse:media:facebook_photos"
     },
     {
-        "duration": "70.0",
+        "duration": "56.0",
         "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll"
     },
     {
+        "duration": "58.0",
+        "name": "system_health.memory_mobile/browse:media:googleplaystore:2019"
+    },
+    {
         "duration": "81.0",
         "name": "system_health.memory_mobile/browse:media:imgur"
     },
     {
-        "duration": "98.0",
+        "duration": "96.0",
         "name": "system_health.memory_mobile/browse:media:youtube"
     },
     {
@@ -3916,7 +3732,7 @@
         "name": "system_health.memory_mobile/browse:news:cnn"
     },
     {
-        "duration": "125.0",
+        "duration": "121.0",
         "name": "system_health.memory_mobile/browse:news:cnn:2018"
     },
     {
@@ -3924,55 +3740,63 @@
         "name": "system_health.memory_mobile/browse:news:cricbuzz"
     },
     {
-        "duration": "62.0",
+        "duration": "66.0",
         "name": "system_health.memory_mobile/browse:news:qq"
     },
     {
-        "duration": "69.0",
+        "duration": "70.0",
         "name": "system_health.memory_mobile/browse:news:reddit"
     },
     {
-        "duration": "164.0",
+        "duration": "161.0",
         "name": "system_health.memory_mobile/browse:news:toi"
     },
     {
-        "duration": "58.0",
+        "duration": "59.0",
         "name": "system_health.memory_mobile/browse:news:washingtonpost"
     },
     {
-        "duration": "77.0",
+        "duration": "38.0",
+        "name": "system_health.memory_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "76.0",
         "name": "system_health.memory_mobile/browse:shopping:amazon"
     },
     {
-        "duration": "48.0",
+        "duration": "45.0",
         "name": "system_health.memory_mobile/browse:shopping:lazada"
     },
     {
-        "duration": "88.0",
+        "duration": "87.0",
         "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "92.0",
+        "duration": "90.0",
         "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "88.0",
+        "duration": "89.0",
         "name": "system_health.memory_mobile/browse:social:instagram"
     },
     {
-        "duration": "100.0",
+        "duration": "97.0",
         "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "62.0",
+        "duration": "106.0",
+        "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "61.0",
         "name": "system_health.memory_mobile/browse:social:twitter"
     },
     {
-        "duration": "69.0",
+        "duration": "71.0",
         "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "83.0",
+        "duration": "84.0",
         "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll:2018"
     },
     {
@@ -3980,22 +3804,26 @@
         "name": "system_health.memory_mobile/browse:tools:maps"
     },
     {
-        "duration": "28.0",
+        "duration": "33.0",
         "name": "system_health.memory_mobile/load:chrome:blank"
     },
     {
-        "duration": "30.0",
+        "duration": "32.0",
         "name": "system_health.memory_mobile/load:games:bubbles"
     },
     {
-        "duration": "29.0",
+        "duration": "30.0",
         "name": "system_health.memory_mobile/load:games:lazors"
     },
     {
-        "duration": "37.0",
+        "duration": "36.0",
         "name": "system_health.memory_mobile/load:games:spychase"
     },
     {
+        "duration": "37.0",
+        "name": "system_health.memory_mobile/load:games:spychase:2018"
+    },
+    {
         "duration": "36.0",
         "name": "system_health.memory_mobile/load:media:dailymotion"
     },
@@ -4004,79 +3832,127 @@
         "name": "system_health.memory_mobile/load:media:facebook_photos"
     },
     {
+        "duration": "38.0",
+        "name": "system_health.memory_mobile/load:media:flickr:2018"
+    },
+    {
         "duration": "32.0",
         "name": "system_health.memory_mobile/load:media:google_images"
     },
     {
-        "duration": "31.0",
+        "duration": "35.0",
+        "name": "system_health.memory_mobile/load:media:google_images:2018"
+    },
+    {
+        "duration": "32.0",
         "name": "system_health.memory_mobile/load:media:imgur"
     },
     {
+        "duration": "38.0",
+        "name": "system_health.memory_mobile/load:media:imgur:2018"
+    },
+    {
         "duration": "31.0",
         "name": "system_health.memory_mobile/load:media:soundcloud"
     },
     {
-        "duration": "32.0",
+        "duration": "31.0",
+        "name": "system_health.memory_mobile/load:media:soundcloud:2018"
+    },
+    {
+        "duration": "31.0",
         "name": "system_health.memory_mobile/load:media:youtube"
     },
     {
-        "duration": "58.0",
+        "duration": "33.0",
+        "name": "system_health.memory_mobile/load:media:youtube:2018"
+    },
+    {
+        "duration": "60.0",
         "name": "system_health.memory_mobile/load:news:cnn"
     },
     {
-        "duration": "37.0",
+        "duration": "50.0",
+        "name": "system_health.memory_mobile/load:news:cnn:2018"
+    },
+    {
+        "duration": "35.0",
         "name": "system_health.memory_mobile/load:news:irctc"
     },
     {
-        "duration": "38.0",
+        "duration": "37.0",
         "name": "system_health.memory_mobile/load:news:nytimes"
     },
     {
-        "duration": "31.0",
+        "duration": "33.0",
         "name": "system_health.memory_mobile/load:news:qq"
     },
     {
-        "duration": "34.0",
+        "duration": "33.0",
         "name": "system_health.memory_mobile/load:news:reddit"
     },
     {
-        "duration": "34.0",
+        "duration": "33.0",
         "name": "system_health.memory_mobile/load:news:washingtonpost"
     },
     {
-        "duration": "33.0",
+        "duration": "34.0",
         "name": "system_health.memory_mobile/load:news:wikipedia"
     },
     {
-        "duration": "31.0",
+        "duration": "33.0",
+        "name": "system_health.memory_mobile/load:news:wikipedia:2018"
+    },
+    {
+        "duration": "41.0",
         "name": "system_health.memory_mobile/load:search:baidu"
     },
     {
+        "duration": "41.0",
+        "name": "system_health.memory_mobile/load:search:baidu:2018"
+    },
+    {
         "duration": "31.0",
         "name": "system_health.memory_mobile/load:search:ebay"
     },
     {
-        "duration": "30.0",
+        "duration": "35.0",
+        "name": "system_health.memory_mobile/load:search:ebay:2018"
+    },
+    {
+        "duration": "32.0",
         "name": "system_health.memory_mobile/load:search:google"
     },
     {
-        "duration": "31.0",
+        "duration": "34.0",
+        "name": "system_health.memory_mobile/load:search:google:2018"
+    },
+    {
+        "duration": "38.0",
         "name": "system_health.memory_mobile/load:search:taobao"
     },
     {
-        "duration": "31.0",
+        "duration": "30.0",
         "name": "system_health.memory_mobile/load:search:yahoo"
     },
     {
+        "duration": "29.0",
+        "name": "system_health.memory_mobile/load:search:yahoo:2018"
+    },
+    {
         "duration": "30.0",
         "name": "system_health.memory_mobile/load:search:yandex"
     },
     {
+        "duration": "32.0",
+        "name": "system_health.memory_mobile/load:search:yandex:2018"
+    },
+    {
         "duration": "31.0",
         "name": "system_health.memory_mobile/load:social:twitter"
     },
     {
-        "duration": "30.0",
+        "duration": "31.0",
         "name": "system_health.memory_mobile/load:tools:docs"
     },
     {
@@ -4084,7 +3960,7 @@
         "name": "system_health.memory_mobile/load:tools:drive"
     },
     {
-        "duration": "29.0",
+        "duration": "31.0",
         "name": "system_health.memory_mobile/load:tools:dropbox"
     },
     {
@@ -4092,87 +3968,95 @@
         "name": "system_health.memory_mobile/load:tools:stackoverflow"
     },
     {
-        "duration": "40.0",
+        "duration": "33.0",
+        "name": "system_health.memory_mobile/load:tools:stackoverflow:2018"
+    },
+    {
+        "duration": "38.0",
         "name": "system_health.memory_mobile/load:tools:weather"
     },
     {
-        "duration": "19.0",
+        "duration": "22.0",
         "name": "tracing.tracing_with_background_memory_infra/Facebook"
     },
     {
-        "duration": "20.0",
+        "duration": "24.0",
         "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
     },
     {
-        "duration": "14.0",
+        "duration": "18.0",
         "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
     },
     {
-        "duration": "15.0",
+        "duration": "19.0",
         "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
     },
     {
-        "duration": "14.0",
+        "duration": "18.0",
         "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
     },
     {
-        "duration": "16.0",
+        "duration": "19.0",
         "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
     },
     {
-        "duration": "17.0",
+        "duration": "20.0",
         "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
     },
     {
-        "duration": "23.0",
+        "duration": "27.0",
         "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
     },
     {
-        "duration": "18.0",
+        "duration": "21.0",
         "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
     },
     {
-        "duration": "46.0",
+        "duration": "48.0",
         "name": "v8.browsing_mobile-future/browse:chrome:omnibox"
     },
     {
-        "duration": "131.0",
+        "duration": "130.0",
         "name": "v8.browsing_mobile-future/browse:media:facebook_photos"
     },
     {
-        "duration": "83.0",
+        "duration": "77.0",
         "name": "v8.browsing_mobile-future/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "125.0",
+        "duration": "73.0",
+        "name": "v8.browsing_mobile-future/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "106.0",
         "name": "v8.browsing_mobile-future/browse:media:imgur"
     },
     {
-        "duration": "163.0",
+        "duration": "161.0",
         "name": "v8.browsing_mobile-future/browse:media:youtube"
     },
     {
-        "duration": "309.0",
+        "duration": "301.0",
         "name": "v8.browsing_mobile-future/browse:news:cnn"
     },
     {
-        "duration": "245.0",
+        "duration": "219.0",
         "name": "v8.browsing_mobile-future/browse:news:cnn:2018"
     },
     {
-        "duration": "105.0",
+        "duration": "88.0",
         "name": "v8.browsing_mobile-future/browse:news:cricbuzz"
     },
     {
-        "duration": "104.0",
+        "duration": "87.0",
         "name": "v8.browsing_mobile-future/browse:news:qq"
     },
     {
-        "duration": "85.0",
+        "duration": "89.0",
         "name": "v8.browsing_mobile-future/browse:news:reddit"
     },
     {
-        "duration": "393.0",
+        "duration": "278.0",
         "name": "v8.browsing_mobile-future/browse:news:toi"
     },
     {
@@ -4180,51 +4064,47 @@
         "name": "v8.browsing_mobile-future/browse:news:washingtonpost"
     },
     {
-        "duration": "154.0",
-        "name": "v8.browsing_mobile-future/browse:shopping:amazon"
-    },
-    {
-        "duration": "148.0",
-        "name": "v8.browsing_mobile-future/browse:shopping:avito"
-    },
-    {
-        "duration": "66.0",
-        "name": "v8.browsing_mobile-future/browse:shopping:lazada"
-    },
-    {
-        "duration": "112.0",
-        "name": "v8.browsing_mobile-future/browse:social:facebook"
-    },
-    {
-        "duration": "172.0",
-        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "170.0",
-        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll:2018"
-    },
-    {
-        "duration": "147.0",
-        "name": "v8.browsing_mobile-future/browse:social:instagram"
-    },
-    {
-        "duration": "158.0",
-        "name": "v8.browsing_mobile-future/browse:social:pinterest_infinite_scroll"
-    },
-    {
-        "duration": "181.0",
-        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "91.0",
-        "name": "v8.browsing_mobile-future/browse:social:twitter"
-    },
-    {
-        "duration": "110.0",
-        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll"
+        "duration": "34.0",
+        "name": "v8.browsing_mobile-future/browse:search:amp:2018"
     },
     {
         "duration": "139.0",
+        "name": "v8.browsing_mobile-future/browse:shopping:amazon"
+    },
+    {
+        "duration": "58.0",
+        "name": "v8.browsing_mobile-future/browse:shopping:lazada"
+    },
+    {
+        "duration": "110.0",
+        "name": "v8.browsing_mobile-future/browse:social:facebook"
+    },
+    {
+        "duration": "150.0",
+        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "141.0",
+        "name": "v8.browsing_mobile-future/browse:social:instagram"
+    },
+    {
+        "duration": "142.0",
+        "name": "v8.browsing_mobile-future/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "160.0",
+        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "183.0",
+        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "81.0",
+        "name": "v8.browsing_mobile-future/browse:social:twitter"
+    },
+    {
+        "duration": "132.0",
         "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll:2018"
     },
     {
@@ -4236,123 +4116,131 @@
         "name": "v8.browsing_mobile/browse:chrome:omnibox"
     },
     {
-        "duration": "135.0",
+        "duration": "128.0",
         "name": "v8.browsing_mobile/browse:media:facebook_photos"
     },
     {
-        "duration": "85.0",
+        "duration": "75.0",
         "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "115.0",
+        "duration": "75.0",
+        "name": "v8.browsing_mobile/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "104.0",
         "name": "v8.browsing_mobile/browse:media:imgur"
     },
     {
-        "duration": "168.0",
+        "duration": "160.0",
         "name": "v8.browsing_mobile/browse:media:youtube"
     },
     {
-        "duration": "312.0",
+        "duration": "300.0",
         "name": "v8.browsing_mobile/browse:news:cnn"
     },
     {
-        "duration": "254.0",
+        "duration": "219.0",
         "name": "v8.browsing_mobile/browse:news:cnn:2018"
     },
     {
-        "duration": "107.0",
+        "duration": "87.0",
         "name": "v8.browsing_mobile/browse:news:cricbuzz"
     },
     {
-        "duration": "80.0",
+        "duration": "85.0",
         "name": "v8.browsing_mobile/browse:news:qq"
     },
     {
-        "duration": "91.0",
+        "duration": "87.0",
         "name": "v8.browsing_mobile/browse:news:reddit"
     },
     {
-        "duration": "401.0",
+        "duration": "279.0",
         "name": "v8.browsing_mobile/browse:news:toi"
     },
     {
-        "duration": "86.0",
+        "duration": "80.0",
         "name": "v8.browsing_mobile/browse:news:washingtonpost"
     },
     {
-        "duration": "154.0",
+        "duration": "33.0",
+        "name": "v8.browsing_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "138.0",
         "name": "v8.browsing_mobile/browse:shopping:amazon"
     },
     {
-        "duration": "152.0",
-        "name": "v8.browsing_mobile/browse:shopping:avito"
-    },
-    {
-        "duration": "66.0",
+        "duration": "57.0",
         "name": "v8.browsing_mobile/browse:shopping:lazada"
     },
     {
-        "duration": "116.0",
+        "duration": "110.0",
         "name": "v8.browsing_mobile/browse:social:facebook"
     },
     {
-        "duration": "170.0",
+        "duration": "161.0",
         "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "168.0",
+        "duration": "150.0",
         "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "147.0",
+        "duration": "141.0",
         "name": "v8.browsing_mobile/browse:social:instagram"
     },
     {
-        "duration": "146.0",
+        "duration": "143.0",
         "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll"
     },
     {
-        "duration": "201.0",
+        "duration": "161.0",
         "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "81.0",
+        "duration": "184.0",
+        "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "79.0",
         "name": "v8.browsing_mobile/browse:social:twitter"
     },
     {
-        "duration": "113.0",
+        "duration": "105.0",
         "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "140.0",
+        "duration": "135.0",
         "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "75.0",
+        "duration": "73.0",
         "name": "v8.browsing_mobile/browse:tools:maps"
     },
     {
-        "duration": "11.0",
+        "duration": "19.0",
         "name": "wasm/AsmJsZenGarden"
     },
     {
-        "duration": "38.0",
+        "duration": "39.0",
         "name": "wasm/WasmSpaceBuggy"
     },
     {
-        "duration": "11.0",
+        "duration": "19.0",
         "name": "wasm/WasmStylizedRenderer"
     },
     {
-        "duration": "11.0",
+        "duration": "19.0",
         "name": "wasm/WasmSunTemple"
     },
     {
-        "duration": "20.0",
+        "duration": "29.0",
         "name": "wasm/WasmTanks"
     },
     {
-        "duration": "11.0",
+        "duration": "19.0",
         "name": "wasm/WasmZenGarden"
     },
     {
@@ -4364,7 +4252,7 @@
         "name": "webrtc/canvas_capture_peer_connection"
     },
     {
-        "duration": "39.0",
+        "duration": "40.0",
         "name": "webrtc/codec_constraints_h264"
     },
     {
@@ -4372,7 +4260,7 @@
         "name": "webrtc/codec_constraints_vp8"
     },
     {
-        "duration": "39.0",
+        "duration": "40.0",
         "name": "webrtc/codec_constraints_vp9"
     },
     {
@@ -4380,11 +4268,11 @@
         "name": "webrtc/hd_local_stream_10s"
     },
     {
-        "duration": "44.0",
+        "duration": "47.0",
         "name": "webrtc/multiple_peerconnections"
     },
     {
-        "duration": "62.0",
+        "duration": "72.0",
         "name": "webrtc/pause_play_peerconnections"
     }
 ]
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/android_nexus5x_webview_perf_timing.json b/tools/perf/core/shard_maps/timing_data/android_nexus5x_webview_perf_timing.json
index bdf1328..8093eee7 100644
--- a/tools/perf/core/shard_maps/timing_data/android_nexus5x_webview_perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/android_nexus5x_webview_perf_timing.json
@@ -1,14 +1,18 @@
 [
     {
-        "duration": "30.0",
+        "duration": "28.0",
+        "name": "blink_perf.accessibility/line-breaks.html"
+    },
+    {
+        "duration": "21.0",
         "name": "blink_perf.accessibility/textarea-append.html"
     },
     {
-        "duration": "22.0",
+        "duration": "24.0",
         "name": "blink_perf.bindings/append-child.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/create-element.html"
     },
     {
@@ -20,67 +24,67 @@
         "name": "blink_perf.bindings/dom-attribute-on-prototoype.html"
     },
     {
-        "duration": "18.0",
+        "duration": "22.0",
         "name": "blink_perf.bindings/first-child.html"
     },
     {
-        "duration": "23.0",
+        "duration": "21.0",
         "name": "blink_perf.bindings/gc-forest.html"
     },
     {
-        "duration": "24.0",
+        "duration": "26.0",
         "name": "blink_perf.bindings/gc-mini-tree.html"
     },
     {
-        "duration": "110.0",
+        "duration": "102.0",
         "name": "blink_perf.bindings/gc-tree.html"
     },
     {
-        "duration": "40.0",
+        "duration": "49.0",
         "name": "blink_perf.bindings/get-attribute-rare.html"
     },
     {
-        "duration": "12.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/get-attribute.html"
     },
     {
-        "duration": "29.0",
+        "duration": "22.0",
         "name": "blink_perf.bindings/get-element-by-id.html"
     },
     {
-        "duration": "23.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/get-elements-by-tag-name.html"
     },
     {
-        "duration": "18.0",
+        "duration": "12.0",
         "name": "blink_perf.bindings/id-getter.html"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "blink_perf.bindings/id-setter.html"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "blink_perf.bindings/indexed-getter.html"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "blink_perf.bindings/insert-before.html"
     },
     {
-        "duration": "23.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/named-property-enumerator.html"
     },
     {
-        "duration": "210.0",
+        "duration": "137.0",
         "name": "blink_perf.bindings/node-list-access.html"
     },
     {
-        "duration": "97.0",
+        "duration": "59.0",
         "name": "blink_perf.bindings/node-type.html"
     },
     {
-        "duration": "12.0",
+        "duration": "16.0",
         "name": "blink_perf.bindings/post-message.html"
     },
     {
@@ -88,11 +92,11 @@
         "name": "blink_perf.bindings/sequence-conversion-array.html"
     },
     {
-        "duration": "18.0",
+        "duration": "22.0",
         "name": "blink_perf.bindings/sequence-conversion-custom-iterator.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.bindings/serialize-array.html"
     },
     {
@@ -100,7 +104,7 @@
         "name": "blink_perf.bindings/serialize-long-string.html"
     },
     {
-        "duration": "11.0",
+        "duration": "16.0",
         "name": "blink_perf.bindings/serialize-map.html"
     },
     {
@@ -116,115 +120,243 @@
         "name": "blink_perf.bindings/set-attribute.html"
     },
     {
-        "duration": "24.0",
-        "name": "blink_perf.bindings/structured-clone-json-deserialize.html"
-    },
-    {
-        "duration": "25.0",
-        "name": "blink_perf.bindings/structured-clone-json-serialize.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "blink_perf.bindings/structured-clone-long-string-deserialize.html"
-    },
-    {
-        "duration": "17.0",
-        "name": "blink_perf.bindings/structured-clone-long-string-serialize.html"
-    },
-    {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/typed-array-construct-from-array.html"
     },
     {
-        "duration": "18.0",
+        "duration": "22.0",
         "name": "blink_perf.bindings/typed-array-construct-from-same-type.html"
     },
     {
-        "duration": "18.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/typed-array-construct-from-typed.html"
     },
     {
-        "duration": "35.0",
+        "duration": "21.0",
         "name": "blink_perf.bindings/typed-array-set-from-typed.html"
     },
     {
-        "duration": "40.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/undefined-first-child.html"
     },
     {
-        "duration": "29.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/undefined-get-element-by-id.html"
     },
     {
-        "duration": "18.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/undefined-id-getter.html"
     },
     {
-        "duration": "52.0",
-        "name": "blink_perf.bindings/worker-structured-clone-json-roundtrip.html"
+        "duration": "15.0",
+        "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html"
     },
     {
-        "duration": "57.0",
-        "name": "blink_perf.bindings/worker-structured-clone-json-serialize.html"
+        "duration": "11.0",
+        "name": "blink_perf.bindings/worker-structured-clone-workerDOM-DBMon-from-worker.html"
+    },
+    {
+        "duration": "6.0",
+        "name": "blink_perf.bindings/worker-structured-clone-workerDOM-Map-from-worker.html"
     },
     {
         "duration": "23.0",
-        "name": "blink_perf.canvas/createImageBitmapFromImageData.html"
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-from-worker.html"
     },
     {
         "duration": "25.0",
-        "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d.html"
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-roundtrip.html"
     },
     {
-        "duration": "14.0",
-        "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d.html"
+        "duration": "28.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-to-worker.html"
+    },
+    {
+        "duration": "39.0",
+        "name": "blink_perf.bindings/worker-transferable-from-worker.html"
+    },
+    {
+        "duration": "30.0",
+        "name": "blink_perf.bindings/worker-transferable-roundtrip.html"
+    },
+    {
+        "duration": "25.0",
+        "name": "blink_perf.bindings/worker-transferable-to-worker.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.canvas/createImageBitmapFromImageData.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.canvas/createImageBitmapFromImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.canvas/docs-paper.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.canvas/docs-paper_RAF.html?RAF"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.canvas/docs-resume.html"
     },
     {
         "duration": "8.0",
+        "name": "blink_perf.canvas/docs-resume_RAF.html?RAF"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.canvas/docs-table.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.canvas/docs-table_RAF.html?RAF"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "26.0",
+        "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "17.0",
         "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d.html"
     },
     {
-        "duration": "13.0",
+        "duration": "7.0",
+        "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "22.0",
         "name": "blink_perf.canvas/drawimage-not-pixelaligned.html"
     },
     {
-        "duration": "13.0",
+        "duration": "17.0",
+        "name": "blink_perf.canvas/drawimage-not-pixelaligned_RAF.html?RAF"
+    },
+    {
+        "duration": "14.0",
         "name": "blink_perf.canvas/drawimage.html"
     },
     {
-        "duration": "31.0",
+        "duration": "14.0",
+        "name": "blink_perf.canvas/drawimage_RAF.html?RAF"
+    },
+    {
+        "duration": "18.0",
         "name": "blink_perf.canvas/getImageData.html"
     },
     {
-        "duration": "35.0",
+        "duration": "12.0",
         "name": "blink_perf.canvas/getImageDataColorManaged.html"
     },
     {
-        "duration": "33.0",
+        "duration": "12.0",
+        "name": "blink_perf.canvas/getImageDataColorManaged_RAF.html?RAF"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.canvas/getImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.canvas/gpu-bound-shader.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.canvas/gpu-bound-shader_RAF.html?RAF"
+    },
+    {
+        "duration": "12.0",
         "name": "blink_perf.canvas/putImageData.html"
     },
     {
-        "duration": "16.0",
+        "duration": "12.0",
+        "name": "blink_perf.canvas/putImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "21.0",
+        "name": "blink_perf.canvas/sheets-render.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/sheets-render_RAF.html?RAF"
+    },
+    {
+        "duration": "22.0",
         "name": "blink_perf.canvas/toBlob_duration.html"
     },
     {
+        "duration": "17.0",
+        "name": "blink_perf.canvas/toBlob_duration_RAF.html?RAF"
+    },
+    {
         "duration": "19.0",
         "name": "blink_perf.canvas/toBlob_duration_jpeg.html"
     },
     {
-        "duration": "7.0",
+        "duration": "10.0",
+        "name": "blink_perf.canvas/toBlob_duration_jpeg_RAF.html?RAF"
+    },
+    {
+        "duration": "10.0",
         "name": "blink_perf.canvas/transferFromImageBitmap.html"
     },
     {
-        "duration": "17.0",
+        "duration": "13.0",
+        "name": "blink_perf.canvas/transferFromImageBitmap_RAF.html?RAF"
+    },
+    {
+        "duration": "16.0",
         "name": "blink_perf.canvas/upload-canvas-2d-to-texture.html"
     },
     {
         "duration": "17.0",
+        "name": "blink_perf.canvas/upload-canvas-2d-to-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "28.0",
+        "name": "blink_perf.canvas/upload-video-to-sub-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.canvas/upload-video-to-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "26.0",
         "name": "blink_perf.canvas/upload-webgl-to-texture.html"
     },
     {
-        "duration": "38.0",
+        "duration": "37.0",
+        "name": "blink_perf.canvas/upload-webgl-to-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "26.0",
         "name": "blink_perf.css/AttributeDescendantSelector.html"
     },
     {
@@ -236,7 +368,7 @@
         "name": "blink_perf.css/CSSPropertySetterGetterMethods.html"
     },
     {
-        "duration": "14.0",
+        "duration": "13.0",
         "name": "blink_perf.css/CSSPropertyUpdateValue.html"
     },
     {
@@ -248,7 +380,7 @@
         "name": "blink_perf.css/ChangeStyleChildElementSelectors.html"
     },
     {
-        "duration": "16.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleElementSelector.html"
     },
     {
@@ -284,7 +416,7 @@
         "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleShallowTree.html"
     },
     {
@@ -312,19 +444,19 @@
         "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html"
     },
     {
-        "duration": "28.0",
+        "duration": "24.0",
         "name": "blink_perf.css/ClassDescendantSelector.html"
     },
     {
-        "duration": "15.0",
+        "duration": "14.0",
         "name": "blink_perf.css/ClassInvalidation.html"
     },
     {
-        "duration": "15.0",
+        "duration": "13.0",
         "name": "blink_perf.css/CustomPropertiesCascade.html"
     },
     {
-        "duration": "14.0",
+        "duration": "8.0",
         "name": "blink_perf.css/CustomPropertiesNonRootInheritance.html"
     },
     {
@@ -332,19 +464,15 @@
         "name": "blink_perf.css/CustomPropertiesRootInheritance.html"
     },
     {
-        "duration": "7.0",
-        "name": "blink_perf.css/CustomPropertiesVarAlias.html"
-    },
-    {
-        "duration": "32.0",
+        "duration": "19.0",
         "name": "blink_perf.css/FocusUpdate.html"
     },
     {
-        "duration": "34.0",
+        "duration": "11.0",
         "name": "blink_perf.css/LoadBootstrapBlog.html"
     },
     {
-        "duration": "17.0",
+        "duration": "11.0",
         "name": "blink_perf.css/LoadMaterializeStarterPage.html"
     },
     {
@@ -352,39 +480,23 @@
         "name": "blink_perf.css/LoadSemanticPageExample.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.css/PseudoClassSelectors.html"
     },
     {
-        "duration": "24.0",
+        "duration": "61.0",
         "name": "blink_perf.css/SelectorCountScaling.html"
     },
     {
-        "duration": "28.0",
-        "name": "blink_perf.dom/addRange.html"
-    },
-    {
-        "duration": "58.0",
+        "duration": "54.0",
         "name": "blink_perf.dom/custom-element-default-style-with-shadow.html"
     },
     {
-        "duration": "86.0",
+        "duration": "40.0",
         "name": "blink_perf.dom/custom-element-default-style.html"
     },
     {
-        "duration": "18.0",
-        "name": "blink_perf.dom/delete-in-password-field.html"
-    },
-    {
-        "duration": "17.0",
-        "name": "blink_perf.dom/div-editable.html"
-    },
-    {
-        "duration": "6.0",
-        "name": "blink_perf.dom/inner_html_with_selection.html"
-    },
-    {
-        "duration": "27.0",
+        "duration": "85.0",
         "name": "blink_perf.dom/long-sibling-list.html"
     },
     {
@@ -392,79 +504,75 @@
         "name": "blink_perf.dom/modify-element-classname.html"
     },
     {
-        "duration": "15.0",
+        "duration": "13.0",
         "name": "blink_perf.dom/modify-element-id.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.dom/modify-element-title.html"
     },
     {
-        "duration": "7.0",
-        "name": "blink_perf.dom/move-down-with-hidden-elements.html"
-    },
-    {
-        "duration": "7.0",
-        "name": "blink_perf.dom/move-up-with-hidden-elements.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.dom/remove_child_with_selection.html"
-    },
-    {
         "duration": "13.0",
         "name": "blink_perf.dom/select-multiple-add.html"
     },
     {
-        "duration": "20.0",
+        "duration": "14.0",
         "name": "blink_perf.dom/select-single-add.html"
     },
     {
-        "duration": "25.0",
+        "duration": "22.0",
         "name": "blink_perf.dom/select-single-remove.html"
     },
     {
-        "duration": "12.0",
-        "name": "blink_perf.dom/textarea-dom.html"
-    },
-    {
-        "duration": "34.0",
-        "name": "blink_perf.dom/textarea-edit.html"
-    },
-    {
-        "duration": "29.0",
+        "duration": "38.0",
         "name": "blink_perf.events/EventsDispatching.html"
     },
     {
         "duration": "15.0",
-        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedShadowTrees.html"
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV0ShadowTrees.html"
     },
     {
-        "duration": "49.0",
-        "name": "blink_perf.events/EventsDispatchingInShadowTrees.html"
+        "duration": "15.0",
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html"
     },
     {
-        "duration": "51.0",
+        "duration": "36.0",
+        "name": "blink_perf.events/EventsDispatchingInV0ShadowTrees.html"
+    },
+    {
+        "duration": "35.0",
+        "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html"
+    },
+    {
+        "duration": "53.0",
         "name": "blink_perf.events/hit-test-lots-of-layers.html"
     },
     {
-        "duration": "47.0",
-        "name": "blink_perf.image_decoder/decode-gif.html"
-    },
-    {
-        "duration": "17.0",
-        "name": "blink_perf.image_decoder/decode-jpeg.html"
-    },
-    {
-        "duration": "40.0",
-        "name": "blink_perf.image_decoder/decode-lossless-webp.html"
+        "duration": "13.0",
+        "name": "blink_perf.events/is-input-pending-all-events.html"
     },
     {
         "duration": "13.0",
+        "name": "blink_perf.events/is-input-pending-default-events.html"
+    },
+    {
+        "duration": "38.0",
+        "name": "blink_perf.image_decoder/decode-gif.html"
+    },
+    {
+        "duration": "18.0",
+        "name": "blink_perf.image_decoder/decode-jpeg.html"
+    },
+    {
+        "duration": "39.0",
+        "name": "blink_perf.image_decoder/decode-lossless-webp.html"
+    },
+    {
+        "duration": "14.0",
         "name": "blink_perf.image_decoder/decode-lossy-webp.html"
     },
     {
-        "duration": "26.0",
+        "duration": "25.0",
         "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
     },
     {
@@ -472,15 +580,15 @@
         "name": "blink_perf.image_decoder/decode-png-palette.html"
     },
     {
-        "duration": "41.0",
+        "duration": "42.0",
         "name": "blink_perf.image_decoder/decode-png.html"
     },
     {
-        "duration": "26.0",
+        "duration": "23.0",
         "name": "blink_perf.layout/ArabicLineLayout.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/Shapes/MultipleShapes.html"
     },
     {
@@ -492,7 +600,7 @@
         "name": "blink_perf.layout/add-remove-inline-floats.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/attach-inlines-2.html"
     },
     {
@@ -500,15 +608,15 @@
         "name": "blink_perf.layout/attach-inlines.html"
     },
     {
-        "duration": "13.0",
+        "duration": "15.0",
         "name": "blink_perf.layout/auto-grid-lots-of-data.html"
     },
     {
-        "duration": "31.0",
+        "duration": "26.0",
         "name": "blink_perf.layout/change-text-css-contain.html"
     },
     {
-        "duration": "12.0",
+        "duration": "21.0",
         "name": "blink_perf.layout/chapter-reflow-once-random.html"
     },
     {
@@ -520,7 +628,7 @@
         "name": "blink_perf.layout/chapter-reflow-thrice.html"
     },
     {
-        "duration": "13.0",
+        "duration": "17.0",
         "name": "blink_perf.layout/chapter-reflow-twice.html"
     },
     {
@@ -528,67 +636,83 @@
         "name": "blink_perf.layout/chapter-reflow.html"
     },
     {
-        "duration": "8.0",
+        "duration": "29.0",
         "name": "blink_perf.layout/character_fallback.html"
     },
     {
-        "duration": "6.0",
+        "duration": "11.0",
         "name": "blink_perf.layout/character_fallback_aat.html"
     },
     {
-        "duration": "16.0",
+        "duration": "29.0",
+        "name": "blink_perf.layout/contain-content-style-change.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-blocks.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-text.html"
+    },
+    {
+        "duration": "15.0",
         "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
     },
     {
-        "duration": "16.0",
+        "duration": "15.0",
         "name": "blink_perf.layout/fixed-grid-lots-of-stretched-data.html"
     },
     {
-        "duration": "18.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/flexbox-column-nowrap.html"
     },
     {
-        "duration": "13.0",
+        "duration": "22.0",
         "name": "blink_perf.layout/flexbox-column-wrap.html"
     },
     {
-        "duration": "19.0",
+        "duration": "22.0",
         "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html"
     },
     {
-        "duration": "14.0",
+        "duration": "38.0",
         "name": "blink_perf.layout/flexbox-lots-of-data.html"
     },
     {
-        "duration": "18.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/flexbox-row-nowrap.html"
     },
     {
         "duration": "18.0",
+        "name": "blink_perf.layout/flexbox-row-stretch-height-definite.html"
+    },
+    {
+        "duration": "13.0",
         "name": "blink_perf.layout/flexbox-row-wrap.html"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/flexbox-with-stretch-layout.html"
     },
     {
-        "duration": "57.0",
+        "duration": "42.0",
         "name": "blink_perf.layout/floats_100_100.html"
     },
     {
-        "duration": "89.0",
+        "duration": "42.0",
         "name": "blink_perf.layout/floats_100_100_nested.html"
     },
     {
-        "duration": "25.0",
+        "duration": "23.0",
         "name": "blink_perf.layout/floats_10_1000.html"
     },
     {
-        "duration": "16.0",
+        "duration": "15.0",
         "name": "blink_perf.layout/floats_20_100.html"
     },
     {
-        "duration": "19.0",
+        "duration": "17.0",
         "name": "blink_perf.layout/floats_20_100_nested.html"
     },
     {
@@ -596,47 +720,55 @@
         "name": "blink_perf.layout/floats_2_100.html"
     },
     {
-        "duration": "11.0",
+        "duration": "10.0",
         "name": "blink_perf.layout/floats_2_100_nested.html"
     },
     {
-        "duration": "22.0",
+        "duration": "18.0",
         "name": "blink_perf.layout/floats_50_100.html"
     },
     {
-        "duration": "22.0",
+        "duration": "19.0",
         "name": "blink_perf.layout/floats_50_100_nested.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/hindi-line-layout.html"
     },
     {
-        "duration": "12.0",
+        "duration": "17.0",
+        "name": "blink_perf.layout/japanese-kokoro-insert.html"
+    },
+    {
+        "duration": "27.0",
+        "name": "blink_perf.layout/large-grid.html"
+    },
+    {
+        "duration": "13.0",
         "name": "blink_perf.layout/large-spanning-grid-item.html"
     },
     {
-        "duration": "34.0",
+        "duration": "38.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html"
     },
     {
-        "duration": "33.0",
+        "duration": "41.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html"
     },
     {
-        "duration": "33.0",
+        "duration": "32.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html"
     },
     {
-        "duration": "243.0",
+        "duration": "217.0",
         "name": "blink_perf.layout/latin-ebook-resize.html"
     },
     {
-        "duration": "33.0",
+        "duration": "30.0",
         "name": "blink_perf.layout/latin-ebook.html"
     },
     {
-        "duration": "9.0",
+        "duration": "18.0",
         "name": "blink_perf.layout/layers_overlap_2d.html"
     },
     {
@@ -644,34 +776,50 @@
         "name": "blink_perf.layout/layers_overlap_3d.html"
     },
     {
-        "duration": "27.0",
+        "duration": "8.0",
+        "name": "blink_perf.layout/line-layout-fit-content-break-word.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.layout/line-layout-fit-content.html"
+    },
+    {
+        "duration": "25.0",
         "name": "blink_perf.layout/line-layout-line-height.html"
     },
     {
-        "duration": "12.0",
+        "duration": "14.0",
         "name": "blink_perf.layout/line-layout-repeat-append-select.html"
     },
     {
-        "duration": "12.0",
+        "duration": "22.0",
         "name": "blink_perf.layout/line-layout-repeat-append.html"
     },
     {
-        "duration": "12.0",
+        "duration": "21.0",
         "name": "blink_perf.layout/line-layout.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/long-line-nowrap-collapse.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/long-line-nowrap-spans-collapse.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/long-line-nowrap.html"
     },
     {
+        "duration": "17.0",
+        "name": "blink_perf.layout/many-block-children-auto-inline-size.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.layout/many-block-children-fixed-inline-size.html"
+    },
+    {
         "duration": "14.0",
         "name": "blink_perf.layout/multicol/deeply-nested-tables.html"
     },
@@ -680,11 +828,11 @@
         "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/multicol/lots-of-text-autofill.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/multicol/lots-of-text-balanced-orphans-widows.html"
     },
     {
@@ -692,39 +840,35 @@
         "name": "blink_perf.layout/multicol/lots-of-text-balanced.html"
     },
     {
-        "duration": "14.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html"
     },
     {
-        "duration": "13.0",
+        "duration": "17.0",
         "name": "blink_perf.layout/multicol/tall-content-short-columns.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html"
     },
     {
-        "duration": "12.0",
+        "duration": "23.0",
         "name": "blink_perf.layout/nested-grid.html"
     },
     {
-        "duration": "48.0",
+        "duration": "95.0",
         "name": "blink_perf.layout/nested-percent-height-tables.html"
     },
     {
-        "duration": "263.0",
-        "name": "blink_perf.layout/subtree-detaching.html"
-    },
-    {
-        "duration": "9.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html"
     },
     {
-        "duration": "11.0",
+        "duration": "16.0",
         "name": "blink_perf.layout/word-break-break-all.html"
     },
     {
-        "duration": "11.0",
+        "duration": "16.0",
         "name": "blink_perf.layout/word-break-break-word.html"
     },
     {
@@ -732,11 +876,11 @@
         "name": "blink_perf.layout/word-wrap-break-word.html"
     },
     {
-        "duration": "24.0",
+        "duration": "20.0",
         "name": "blink_perf.owp_storage/blob-perf-files.html"
     },
     {
-        "duration": "16.0",
+        "duration": "15.0",
         "name": "blink_perf.owp_storage/blob-perf-ipc.html"
     },
     {
@@ -744,83 +888,27 @@
         "name": "blink_perf.owp_storage/blob-perf-shm.html"
     },
     {
-        "duration": "16.0",
+        "duration": "15.0",
         "name": "blink_perf.owp_storage/blob-perf-tiny.html"
     },
     {
-        "duration": "17.0",
+        "duration": "22.0",
         "name": "blink_perf.owp_storage/idb-load-docs.html"
     },
     {
-        "duration": "27.0",
-        "name": "blink_perf.paint/appending-text.html"
-    },
-    {
-        "duration": "36.0",
-        "name": "blink_perf.paint/color-changes.html"
-    },
-    {
-        "duration": "26.0",
-        "name": "blink_perf.paint/complex-content-slow-scroll.html"
-    },
-    {
-        "duration": "30.0",
-        "name": "blink_perf.paint/containment-resize.html"
-    },
-    {
-        "duration": "31.0",
-        "name": "blink_perf.paint/fixed-and-many-layers-scroll.html"
-    },
-    {
-        "duration": "39.0",
-        "name": "blink_perf.paint/large-table-background-change-with-invisible-collapsed-borders.html"
-    },
-    {
-        "duration": "25.0",
-        "name": "blink_perf.paint/large-table-background-change-with-visible-collapsed-borders.html"
-    },
-    {
-        "duration": "42.0",
-        "name": "blink_perf.paint/large-table-background-change-with-zero-width-collapsed-borders.html"
-    },
-    {
-        "duration": "29.0",
-        "name": "blink_perf.paint/large-table-collapsed-border-change-with-backgrounds.html"
-    },
-    {
-        "duration": "34.0",
-        "name": "blink_perf.paint/large-table-collapsed-border-change-with-text.html"
-    },
-    {
-        "duration": "24.0",
-        "name": "blink_perf.paint/large-table-collapsed-border-change.html"
-    },
-    {
-        "duration": "38.0",
-        "name": "blink_perf.paint/large-table-repaint.html"
-    },
-    {
-        "duration": "22.0",
-        "name": "blink_perf.paint/move-text-with-mask.html"
-    },
-    {
-        "duration": "33.0",
-        "name": "blink_perf.paint/transform-changes.html"
-    },
-    {
-        "duration": "22.0",
+        "duration": "19.0",
         "name": "blink_perf.parser/css-parser-yui.html"
     },
     {
-        "duration": "39.0",
+        "duration": "23.0",
         "name": "blink_perf.parser/html-parser-threaded.html"
     },
     {
-        "duration": "64.0",
+        "duration": "51.0",
         "name": "blink_perf.parser/html-parser.html"
     },
     {
-        "duration": "139.0",
+        "duration": "164.0",
         "name": "blink_perf.parser/html5-full-render.html"
     },
     {
@@ -828,19 +916,19 @@
         "name": "blink_perf.parser/iframe-append-remove.html"
     },
     {
-        "duration": "13.0",
+        "duration": "19.0",
         "name": "blink_perf.parser/innerHTML-setter-siblings.html"
     },
     {
-        "duration": "13.0",
+        "duration": "23.0",
         "name": "blink_perf.parser/innerHTML-setter.html"
     },
     {
-        "duration": "12.0",
+        "duration": "17.0",
         "name": "blink_perf.parser/query-selector-all-attribute-complex.html"
     },
     {
-        "duration": "12.0",
+        "duration": "17.0",
         "name": "blink_perf.parser/query-selector-all-attribute.html"
     },
     {
@@ -848,7 +936,7 @@
         "name": "blink_perf.parser/query-selector-all-class-deep.html"
     },
     {
-        "duration": "14.0",
+        "duration": "18.0",
         "name": "blink_perf.parser/query-selector-all-class-first.html"
     },
     {
@@ -856,31 +944,31 @@
         "name": "blink_perf.parser/query-selector-all-class-last.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.parser/query-selector-all-class.html"
     },
     {
-        "duration": "13.0",
+        "duration": "23.0",
         "name": "blink_perf.parser/query-selector-all-deep.html"
     },
     {
-        "duration": "14.0",
+        "duration": "23.0",
         "name": "blink_perf.parser/query-selector-all-first.html"
     },
     {
-        "duration": "16.0",
+        "duration": "15.0",
         "name": "blink_perf.parser/query-selector-all-id-deep.html"
     },
     {
-        "duration": "14.0",
+        "duration": "18.0",
         "name": "blink_perf.parser/query-selector-all-id-first.html"
     },
     {
-        "duration": "15.0",
+        "duration": "16.0",
         "name": "blink_perf.parser/query-selector-all-id-last.html"
     },
     {
-        "duration": "14.0",
+        "duration": "23.0",
         "name": "blink_perf.parser/query-selector-all-last.html"
     },
     {
@@ -888,23 +976,23 @@
         "name": "blink_perf.parser/query-selector-deep.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.parser/query-selector-first.html"
     },
     {
-        "duration": "14.0",
+        "duration": "15.0",
         "name": "blink_perf.parser/query-selector-id-deep.html"
     },
     {
-        "duration": "14.0",
+        "duration": "16.0",
         "name": "blink_perf.parser/query-selector-id-last.html"
     },
     {
-        "duration": "13.0",
+        "duration": "18.0",
         "name": "blink_perf.parser/query-selector-last.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.parser/simple-url.html"
     },
     {
@@ -912,39 +1000,39 @@
         "name": "blink_perf.parser/textarea-parsing.html"
     },
     {
-        "duration": "20.0",
+        "duration": "19.0",
         "name": "blink_perf.parser/tiny-innerHTML.html"
     },
     {
-        "duration": "14.0",
+        "duration": "17.0",
         "name": "blink_perf.parser/url-parser.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.parser/xml-parser.html"
     },
     {
-        "duration": "16.0",
+        "duration": "13.0",
         "name": "blink_perf.svg/AzLizardBenjiPark.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.svg/Bamboo.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.svg/Cactus.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.svg/Cowboy.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.svg/DropsOnABlade.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.svg/FoodLeifLodahl.html"
     },
     {
@@ -956,11 +1044,11 @@
         "name": "blink_perf.svg/FrancoBolloGnomeEzechi.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.svg/GearFlowers.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.svg/HereGear.html"
     },
     {
@@ -972,10 +1060,6 @@
         "name": "blink_perf.svg/Samurai.html"
     },
     {
-        "duration": "136.0",
-        "name": "blink_perf.svg/SierpinskiCarpet.html"
-    },
-    {
         "duration": "8.0",
         "name": "blink_perf.svg/SvgHitTesting.html"
     },
@@ -988,7 +1072,7 @@
         "name": "blink_perf.svg/WorldIso.html"
     },
     {
-        "duration": "46.0",
+        "duration": "42.0",
         "name": "dromaeo/http://dromaeo.com?dom-attr"
     },
     {
@@ -996,403 +1080,367 @@
         "name": "dromaeo/http://dromaeo.com?dom-modify"
     },
     {
-        "duration": "54.0",
+        "duration": "53.0",
         "name": "dromaeo/http://dromaeo.com?dom-query"
     },
     {
-        "duration": "32.0",
+        "duration": "37.0",
         "name": "dromaeo/http://dromaeo.com?dom-traverse"
     },
     {
-        "duration": "21.0",
-        "name": "dummy_benchmark.histogram_benchmark_1/dummy_page.html"
-    },
-    {
-        "duration": "13.0",
+        "duration": "10.0",
         "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html"
     },
     {
-        "duration": "13.0",
+        "duration": "10.0",
         "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html"
     },
     {
-        "duration": "93.0",
+        "duration": "89.0",
         "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html"
     },
     {
-        "duration": "18.0",
+        "duration": "11.0",
         "name": "loading.mobile/58Pic"
     },
     {
-        "duration": "155.0",
+        "duration": "50.0",
         "name": "loading.mobile/58Pic_3g"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "loading.mobile/Amazon"
     },
     {
-        "duration": "235.0",
+        "duration": "75.0",
         "name": "loading.mobile/Amazon_3g"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "loading.mobile/BOLNoticias"
     },
     {
-        "duration": "279.0",
+        "duration": "94.0",
         "name": "loading.mobile/BOLNoticias_3g"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "loading.mobile/Baidu"
     },
     {
-        "duration": "194.0",
+        "duration": "69.0",
         "name": "loading.mobile/Baidu_3g"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "loading.mobile/Bradesco"
     },
     {
-        "duration": "18.0",
+        "duration": "12.0",
         "name": "loading.mobile/Dailymotion"
     },
     {
-        "duration": "24.0",
+        "duration": "15.0",
         "name": "loading.mobile/Dawn"
     },
     {
-        "duration": "16.0",
+        "duration": "13.0",
         "name": "loading.mobile/DevOpera_cold"
     },
     {
-        "duration": "159.0",
+        "duration": "66.0",
         "name": "loading.mobile/DevOpera_cold_3g"
     },
     {
-        "duration": "23.0",
+        "duration": "16.0",
         "name": "loading.mobile/DevOpera_hot"
     },
     {
-        "duration": "157.0",
+        "duration": "61.0",
         "name": "loading.mobile/DevOpera_hot_3g"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "loading.mobile/DevOpera_warm"
     },
     {
-        "duration": "137.0",
+        "duration": "62.0",
         "name": "loading.mobile/DevOpera_warm_3g"
     },
     {
-        "duration": "130.0",
+        "duration": "82.0",
         "name": "loading.mobile/Dramaq_3g"
     },
     {
-        "duration": "16.0",
+        "duration": "9.0",
         "name": "loading.mobile/EnquiryIndianRail"
     },
     {
-        "duration": "155.0",
+        "duration": "38.0",
         "name": "loading.mobile/EnquiryIndianRail_3g"
     },
     {
-        "duration": "14.0",
+        "duration": "9.0",
         "name": "loading.mobile/Facebook"
     },
     {
-        "duration": "39.0",
-        "name": "loading.mobile/Facebook_3g"
-    },
-    {
-        "duration": "18.0",
+        "duration": "12.0",
         "name": "loading.mobile/FlipBoard_cold"
     },
     {
-        "duration": "25.0",
+        "duration": "17.0",
         "name": "loading.mobile/FlipBoard_hot"
     },
     {
-        "duration": "56.0",
+        "duration": "29.0",
         "name": "loading.mobile/FlipBoard_hot_3g"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "loading.mobile/FlipBoard_warm"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "loading.mobile/FlipKart_cold"
     },
     {
-        "duration": "36.0",
+        "duration": "21.0",
         "name": "loading.mobile/FlipKart_hot"
     },
     {
-        "duration": "34.0",
+        "duration": "24.0",
         "name": "loading.mobile/FlipKart_hot_3g"
     },
     {
-        "duration": "28.0",
+        "duration": "15.0",
         "name": "loading.mobile/FlipKart_warm"
     },
     {
-        "duration": "302.0",
+        "duration": "124.0",
         "name": "loading.mobile/FlipKart_warm_3g"
     },
     {
-        "duration": "17.0",
+        "duration": "16.0",
         "name": "loading.mobile/FranceTVInfo"
     },
     {
-        "duration": "169.0",
+        "duration": "62.0",
         "name": "loading.mobile/FranceTVInfo_3g"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "loading.mobile/GSShop"
     },
     {
-        "duration": "14.0",
+        "duration": "9.0",
         "name": "loading.mobile/GoogleBrazil"
     },
     {
-        "duration": "16.0",
+        "duration": "10.0",
         "name": "loading.mobile/GoogleIndia"
     },
     {
-        "duration": "14.0",
+        "duration": "9.0",
         "name": "loading.mobile/GoogleIndonesia"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "loading.mobile/GoogleRedirectToGoogleJapan"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "loading.mobile/KapanLagi"
     },
     {
-        "duration": "29.0",
+        "duration": "16.0",
         "name": "loading.mobile/Kaskus"
     },
     {
-        "duration": "20.0",
+        "duration": "17.0",
         "name": "loading.mobile/LocalMoxie"
     },
     {
-        "duration": "15.0",
+        "duration": "10.0",
         "name": "loading.mobile/Locanto"
     },
     {
-        "duration": "95.0",
+        "duration": "34.0",
         "name": "loading.mobile/Locanto_3g"
     },
     {
-        "duration": "17.0",
+        "duration": "10.0",
         "name": "loading.mobile/OLX"
     },
     {
-        "duration": "264.0",
-        "name": "loading.mobile/OLX_3g"
-    },
-    {
-        "duration": "16.0",
+        "duration": "14.0",
         "name": "loading.mobile/QQNews"
     },
     {
-        "duration": "17.0",
+        "duration": "10.0",
         "name": "loading.mobile/SlideShare"
     },
     {
-        "duration": "206.0",
+        "duration": "82.0",
         "name": "loading.mobile/SlideShare_3g"
     },
     {
-        "duration": "15.0",
+        "duration": "10.0",
         "name": "loading.mobile/Suumo_cold"
     },
     {
-        "duration": "37.0",
+        "duration": "16.0",
         "name": "loading.mobile/Suumo_cold_3g"
     },
     {
-        "duration": "20.0",
+        "duration": "14.0",
         "name": "loading.mobile/Suumo_hot"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "loading.mobile/Suumo_hot_3g"
     },
     {
-        "duration": "18.0",
+        "duration": "12.0",
         "name": "loading.mobile/Suumo_warm"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "loading.mobile/Suumo_warm_3g"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "loading.mobile/Thairath"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "loading.mobile/TheStar"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "loading.mobile/TribunNews"
     },
     {
-        "duration": "17.0",
+        "duration": "9.0",
         "name": "loading.mobile/Twitter"
     },
     {
-        "duration": "146.0",
+        "duration": "51.0",
         "name": "loading.mobile/Twitter_3g"
     },
     {
-        "duration": "18.0",
+        "duration": "11.0",
         "name": "loading.mobile/VoiceMemos_cold"
     },
     {
-        "duration": "237.0",
+        "duration": "71.0",
         "name": "loading.mobile/VoiceMemos_cold_3g"
     },
     {
-        "duration": "25.0",
-        "name": "loading.mobile/VoiceMemos_hot"
-    },
-    {
-        "duration": "48.0",
-        "name": "loading.mobile/VoiceMemos_hot_3g"
-    },
-    {
-        "duration": "21.0",
-        "name": "loading.mobile/VoiceMemos_warm"
-    },
-    {
-        "duration": "45.0",
-        "name": "loading.mobile/VoiceMemos_warm_3g"
-    },
-    {
-        "duration": "15.0",
+        "duration": "9.0",
         "name": "loading.mobile/Wikipedia"
     },
     {
-        "duration": "212.0",
+        "duration": "61.0",
         "name": "loading.mobile/Wikipedia_3g"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "loading.mobile/YahooNews"
     },
     {
-        "duration": "16.0",
+        "duration": "9.0",
         "name": "loading.mobile/Youtube"
     },
     {
-        "duration": "221.0",
-        "name": "memory.long_running_idle_gmail_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "23.0",
+        "duration": "18.0",
         "name": "memory.top_10_mobile/after_http_en_m_wikipedia_org_wiki_Science"
     },
     {
-        "duration": "22.0",
+        "duration": "17.0",
         "name": "memory.top_10_mobile/after_http_m_intl_taobao_com_group_purchase_html"
     },
     {
-        "duration": "31.0",
+        "duration": "17.0",
         "name": "memory.top_10_mobile/after_http_m_youtube_com_results_q_science"
     },
     {
-        "duration": "23.0",
+        "duration": "17.0",
         "name": "memory.top_10_mobile/after_http_search_yahoo_com_search__ylt_p_google"
     },
     {
-        "duration": "23.0",
+        "duration": "18.0",
         "name": "memory.top_10_mobile/after_http_www_amazon_com_gp_aw_s_k_nexus"
     },
     {
-        "duration": "23.0",
+        "duration": "17.0",
         "name": "memory.top_10_mobile/after_http_www_baidu_com_s_word_google"
     },
     {
-        "duration": "23.0",
+        "duration": "17.0",
         "name": "memory.top_10_mobile/after_http_yandex_ru_touchsearch_text_science"
     },
     {
-        "duration": "22.0",
+        "duration": "17.0",
         "name": "memory.top_10_mobile/after_https_m_facebook_com_rihanna"
     },
     {
-        "duration": "23.0",
+        "duration": "17.0",
         "name": "memory.top_10_mobile/after_https_mobile_twitter_com_justinbieber_skip_interstitial_true"
     },
     {
-        "duration": "23.0",
+        "duration": "18.0",
         "name": "memory.top_10_mobile/after_https_www_google_co_uk_hl_en_q_science"
     },
     {
-        "duration": "26.0",
+        "duration": "21.0",
         "name": "memory.top_10_mobile/http_en_m_wikipedia_org_wiki_Science"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "memory.top_10_mobile/http_m_intl_taobao_com_group_purchase_html"
     },
     {
-        "duration": "25.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/http_m_youtube_com_results_q_science"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "memory.top_10_mobile/http_search_yahoo_com_search__ylt_p_google"
     },
     {
-        "duration": "25.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/http_www_amazon_com_gp_aw_s_k_nexus"
     },
     {
-        "duration": "25.0",
+        "duration": "23.0",
         "name": "memory.top_10_mobile/http_www_baidu_com_s_word_google"
     },
     {
-        "duration": "26.0",
+        "duration": "21.0",
         "name": "memory.top_10_mobile/http_yandex_ru_touchsearch_text_science"
     },
     {
-        "duration": "24.0",
+        "duration": "19.0",
         "name": "memory.top_10_mobile/https_m_facebook_com_rihanna"
     },
     {
-        "duration": "25.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/https_mobile_twitter_com_justinbieber_skip_interstitial_true"
     },
     {
-        "duration": "23.0",
+        "duration": "21.0",
         "name": "memory.top_10_mobile/https_www_google_co_uk_hl_en_q_science"
     },
     {
-        "duration": "80.0",
+        "duration": "81.0",
         "name": "octane/http://chromium.github.io/octane/index.html?auto=1"
     },
     {
-        "duration": "24.0",
-        "name": "oortonline_tbmv2/http://oortonline.gl/#run"
-    },
-    {
-        "duration": "62.0",
+        "duration": "63.0",
         "name": "power.typical_10_mobile/http://de.m.wikipedia.org/wiki/K%C3%B6lner_Dom"
     },
     {
-        "duration": "65.0",
+        "duration": "67.0",
         "name": "power.typical_10_mobile/http://m.chiebukuro.yahoo.co.jp/detail/q10136829180"
     },
     {
@@ -1400,23 +1448,23 @@
         "name": "power.typical_10_mobile/http://m.ebay.com/itm/351157205404"
     },
     {
-        "duration": "69.0",
+        "duration": "64.0",
         "name": "power.typical_10_mobile/http://m.facebook.com/barackobama"
     },
     {
-        "duration": "63.0",
+        "duration": "62.0",
         "name": "power.typical_10_mobile/http://m.huffpost.com/us/entry/6004486"
     },
     {
-        "duration": "62.0",
+        "duration": "63.0",
         "name": "power.typical_10_mobile/http://m.ynet.co.il"
     },
     {
-        "duration": "63.0",
+        "duration": "64.0",
         "name": "power.typical_10_mobile/http://siriuslymeg.tumblr.com/"
     },
     {
-        "duration": "57.0",
+        "duration": "59.0",
         "name": "power.typical_10_mobile/http://wapbaike.baidu.com/"
     },
     {
@@ -1432,355 +1480,319 @@
         "name": "power.typical_10_mobile/https://en.wikipedia.org/wiki/File:Rotating_earth_(large).gif"
     },
     {
-        "duration": "23.0",
+        "duration": "19.0",
         "name": "rasterize_and_record_micro.partial_invalidation/800_relpos_divs.html"
     },
     {
-        "duration": "34.0",
+        "duration": "33.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html"
     },
     {
-        "duration": "14.0",
+        "duration": "15.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html"
     },
     {
-        "duration": "29.0",
+        "duration": "33.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html"
     },
     {
-        "duration": "19.0",
+        "duration": "20.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/ebay.html"
     },
     {
-        "duration": "30.0",
+        "duration": "37.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html"
     },
     {
-        "duration": "25.0",
+        "duration": "28.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html"
     },
     {
-        "duration": "41.0",
+        "duration": "51.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html"
     },
     {
-        "duration": "41.0",
+        "duration": "44.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/google.html"
     },
     {
-        "duration": "30.0",
+        "duration": "35.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googlecalendar.html"
     },
     {
-        "duration": "23.0",
+        "duration": "30.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googledocs.html"
     },
     {
-        "duration": "31.0",
+        "duration": "58.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html"
     },
     {
-        "duration": "28.0",
+        "duration": "46.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html"
     },
     {
-        "duration": "23.0",
+        "duration": "33.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html"
     },
     {
-        "duration": "10.0",
+        "duration": "16.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html"
     },
     {
-        "duration": "35.0",
+        "duration": "30.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html"
     },
     {
-        "duration": "42.0",
+        "duration": "51.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html"
     },
     {
-        "duration": "19.0",
+        "duration": "42.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html"
     },
     {
-        "duration": "22.0",
+        "duration": "28.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html"
     },
     {
-        "duration": "61.0",
-        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html"
-    },
-    {
-        "duration": "108.0",
+        "duration": "102.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html"
     },
     {
-        "duration": "49.0",
+        "duration": "59.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html"
     },
     {
-        "duration": "53.0",
+        "duration": "48.0",
         "name": "rendering.mobile/accu_weather_2018"
     },
     {
-        "duration": "38.0",
-        "name": "rendering.mobile/accu_weather_desktop_gpu_raster_2018"
+        "duration": "37.0",
+        "name": "rendering.mobile/accu_weather_mobile_pinch_2018"
     },
     {
-        "duration": "32.0",
+        "duration": "31.0",
         "name": "rendering.mobile/amazon_2018"
     },
     {
-        "duration": "31.0",
-        "name": "rendering.mobile/amazon_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "33.0",
+        "duration": "41.0",
         "name": "rendering.mobile/amazon_mobile_2018"
     },
     {
-        "duration": "25.0",
-        "name": "rendering.mobile/amazon_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "28.0",
+        "duration": "52.0",
         "name": "rendering.mobile/analog_clock_svg"
     },
     {
-        "duration": "49.0",
+        "duration": "37.0",
         "name": "rendering.mobile/androidpolice_mobile_2018"
     },
     {
-        "duration": "56.0",
-        "name": "rendering.mobile/androidpolice_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "48.0",
-        "name": "rendering.mobile/aquarium"
-    },
-    {
-        "duration": "146.0",
-        "name": "rendering.mobile/background_color_animation"
-    },
-    {
-        "duration": "40.0",
-        "name": "rendering.mobile/background_color_animation_with_gradient"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/baidu_mobile_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/baidu_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/balls_css_key_frame_animations"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/balls_css_transition_2_properties"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/balls_css_transition_40_properties"
-    },
-    {
-        "duration": "75.0",
-        "name": "rendering.mobile/balls_css_transition_all_properties"
-    },
-    {
-        "duration": "78.0",
-        "name": "rendering.mobile/balls_javascript_canvas"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/balls_javascript_css"
-    },
-    {
-        "duration": "53.0",
-        "name": "rendering.mobile/balls_svg_animations"
-    },
-    {
-        "duration": "41.0",
-        "name": "rendering.mobile/bing_mobile_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/bing_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/blob"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/blogspot_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/blogspot_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/blogspot_mobile_2018"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/blogspot_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/boingboing_mobile_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/booking.com_2018"
-    },
-    {
         "duration": "26.0",
-        "name": "rendering.mobile/booking.com_desktop_gpu_raster_2018"
+        "name": "rendering.mobile/animometer_webgl"
     },
     {
-        "duration": "25.0",
-        "name": "rendering.mobile/booking.com_mobile_2018"
+        "duration": "47.0",
+        "name": "rendering.mobile/animometer_webgl_attrib_arrays"
     },
     {
-        "duration": "19.0",
-        "name": "rendering.mobile/booking.com_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/bouncing_balls_15"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/bouncing_clipped_rectangles"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/bouncing_gradient_circles"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/bouncing_png_images"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/bouncing_svg_images"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/camera_to_webgl"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/canvas_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/canvas_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/canvas_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "81.0",
-        "name": "rendering.mobile/canvas_animation_no_clear"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/canvas_arcs"
-    },
-    {
-        "duration": "37.0",
-        "name": "rendering.mobile/canvas_font_cycler"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.mobile/canvas_lines"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/canvas_to_blob"
-    },
-    {
-        "duration": "68.0",
-        "name": "rendering.mobile/capitolvolkswagen_mobile_2018"
-    },
-    {
-        "duration": "54.0",
-        "name": "rendering.mobile/capitolvolkswagen_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/card_expansion"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/card_expansion_animated"
-    },
-    {
-        "duration": "43.0",
-        "name": "rendering.mobile/card_expansion_images_text"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/card_flying"
-    },
-    {
-        "duration": "68.0",
-        "name": "rendering.mobile/cc_poster_circle"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/cc_scroll_200_layer_grid"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/cc_scroll_text_only"
+        "duration": "66.0",
+        "name": "rendering.mobile/animometer_webgl_multi_draw"
     },
     {
         "duration": "45.0",
-        "name": "rendering.mobile/chip_tune"
+        "name": "rendering.mobile/aquarium"
+    },
+    {
+        "duration": "31.0",
+        "name": "rendering.mobile/background_color_animation"
+    },
+    {
+        "duration": "43.0",
+        "name": "rendering.mobile/background_color_animation_with_gradient"
     },
     {
         "duration": "30.0",
-        "name": "rendering.mobile/cnn_2018"
+        "name": "rendering.mobile/baidu_mobile_2018"
     },
     {
-        "duration": "46.0",
-        "name": "rendering.mobile/cnn_article_mobile_2018"
+        "duration": "22.0",
+        "name": "rendering.mobile/balls_css_key_frame_animations"
     },
     {
-        "duration": "62.0",
-        "name": "rendering.mobile/cnn_article_mobile_sync_scroll_2018"
+        "duration": "21.0",
+        "name": "rendering.mobile/balls_css_transition_2_properties"
     },
     {
-        "duration": "25.0",
-        "name": "rendering.mobile/cnn_desktop_gpu_raster_2018"
+        "duration": "21.0",
+        "name": "rendering.mobile/balls_css_transition_40_properties"
     },
     {
-        "duration": "39.0",
-        "name": "rendering.mobile/cnn_mobile_2018"
+        "duration": "21.0",
+        "name": "rendering.mobile/balls_css_transition_all_properties"
+    },
+    {
+        "duration": "35.0",
+        "name": "rendering.mobile/balls_javascript_canvas"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/balls_javascript_css"
     },
     {
         "duration": "26.0",
-        "name": "rendering.mobile/cnn_mobile_sync_scroll_2018"
+        "name": "rendering.mobile/balls_svg_animations"
     },
     {
-        "duration": "38.0",
+        "duration": "23.0",
+        "name": "rendering.mobile/basic_stream"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/bing_mobile_2018"
+    },
+    {
+        "duration": "30.0",
+        "name": "rendering.mobile/blob"
+    },
+    {
+        "duration": "56.0",
+        "name": "rendering.mobile/blogspot_2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.mobile/blogspot_mobile_2018"
+    },
+    {
+        "duration": "23.0",
+        "name": "rendering.mobile/blur_rotating_background"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/boingboing_mobile_2018"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/booking.com_2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.mobile/booking.com_mobile_2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.mobile/bouncing_balls_15"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.mobile/bouncing_clipped_rectangles"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/bouncing_gradient_circles"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/bouncing_png_images"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/bouncing_svg_images"
+    },
+    {
+        "duration": "23.0",
+        "name": "rendering.mobile/camera_to_webgl"
+    },
+    {
+        "duration": "29.0",
+        "name": "rendering.mobile/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.mobile/canvas_animation_no_clear"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/canvas_arcs"
+    },
+    {
+        "duration": "28.0",
+        "name": "rendering.mobile/canvas_font_cycler"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/canvas_lines"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.mobile/canvas_to_blob"
+    },
+    {
+        "duration": "28.0",
+        "name": "rendering.mobile/capitolvolkswagen_mobile_2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.mobile/card_expansion"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.mobile/card_expansion_animated"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.mobile/card_expansion_images_text"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.mobile/card_flying"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.mobile/cats_unscaled"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.mobile/cats_viewport_width"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/cc_poster_circle"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/cc_scroll_text_only"
+    },
+    {
+        "duration": "33.0",
+        "name": "rendering.mobile/chip_tune"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/cnn_2018"
+    },
+    {
+        "duration": "37.0",
+        "name": "rendering.mobile/cnn_article_mobile_2018"
+    },
+    {
+        "duration": "28.0",
+        "name": "rendering.mobile/cnn_mobile_2018"
+    },
+    {
+        "duration": "35.0",
+        "name": "rendering.mobile/cnn_mobile_pinch_2018"
+    },
+    {
+        "duration": "19.0",
         "name": "rendering.mobile/cnn_pathological_2018"
     },
     {
@@ -1788,87 +1800,87 @@
         "name": "rendering.mobile/compositor_heavy_animation"
     },
     {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "rendering.mobile/coordinated_animation"
     },
     {
-        "duration": "79.0",
+        "duration": "17.0",
         "name": "rendering.mobile/crafty_mind"
     },
     {
-        "duration": "33.0",
+        "duration": "23.0",
         "name": "rendering.mobile/css_animations_many_keyframes"
     },
     {
-        "duration": "36.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_animations_simultaneous_inline_style"
     },
     {
-        "duration": "37.0",
+        "duration": "26.0",
         "name": "rendering.mobile/css_animations_simultaneous_new_element"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_animations_simultaneous_style_element"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_animations_simultaneous_updating_class"
     },
     {
-        "duration": "28.0",
+        "duration": "25.0",
         "name": "rendering.mobile/css_animations_staggered_infinite_iterations"
     },
     {
-        "duration": "34.0",
+        "duration": "28.0",
         "name": "rendering.mobile/css_animations_staggered_inline_style"
     },
     {
-        "duration": "37.0",
+        "duration": "40.0",
         "name": "rendering.mobile/css_animations_staggered_new_element"
     },
     {
-        "duration": "52.0",
+        "duration": "77.0",
         "name": "rendering.mobile/css_animations_staggered_style_element"
     },
     {
-        "duration": "68.0",
+        "duration": "47.0",
         "name": "rendering.mobile/css_animations_staggered_updating_class"
     },
     {
-        "duration": "62.0",
+        "duration": "38.0",
         "name": "rendering.mobile/css_animations_triggered_inline_style"
     },
     {
-        "duration": "89.0",
+        "duration": "54.0",
         "name": "rendering.mobile/css_animations_triggered_new_element"
     },
     {
-        "duration": "66.0",
+        "duration": "59.0",
         "name": "rendering.mobile/css_animations_triggered_style_element"
     },
     {
-        "duration": "57.0",
+        "duration": "42.0",
         "name": "rendering.mobile/css_animations_triggered_updating_class"
     },
     {
-        "duration": "33.0",
+        "duration": "24.0",
         "name": "rendering.mobile/css_opacity_plus_n_layers_0"
     },
     {
-        "duration": "33.0",
+        "duration": "23.0",
         "name": "rendering.mobile/css_opacity_plus_n_layers_75"
     },
     {
-        "duration": "34.0",
+        "duration": "23.0",
         "name": "rendering.mobile/css_opacity_plus_n_layers_99"
     },
     {
-        "duration": "64.0",
+        "duration": "26.0",
         "name": "rendering.mobile/css_transitions_inline_style"
     },
     {
-        "duration": "37.0",
+        "duration": "26.0",
         "name": "rendering.mobile/css_transitions_new_element"
     },
     {
@@ -1876,887 +1888,1411 @@
         "name": "rendering.mobile/css_transitions_staggered_inline_style"
     },
     {
-        "duration": "32.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_transitions_staggered_new_element"
     },
     {
-        "duration": "49.0",
+        "duration": "41.0",
         "name": "rendering.mobile/css_transitions_staggered_style_element"
     },
     {
-        "duration": "37.0",
+        "duration": "26.0",
         "name": "rendering.mobile/css_transitions_staggered_updating_class"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.mobile/font_wipe"
+        "duration": "30.0",
+        "name": "rendering.mobile/css_transitions_style_element"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.mobile/google_news_ios"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/horizontal_vertical_expansion"
-    },
-    {
-        "duration": "47.0",
-        "name": "rendering.mobile/idle_power_animated_gif"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/idle_power_blank"
-    },
-    {
-        "duration": "72.0",
-        "name": "rendering.mobile/idle_power_css_animation"
+        "duration": "28.0",
+        "name": "rendering.mobile/css_transitions_triggered_inline_style"
     },
     {
         "duration": "46.0",
-        "name": "rendering.mobile/idle_power_request_animation_frame"
+        "name": "rendering.mobile/css_transitions_triggered_new_element"
     },
     {
         "duration": "42.0",
-        "name": "rendering.mobile/ie_chalkboard"
+        "name": "rendering.mobile/css_transitions_triggered_style_element"
     },
     {
-        "duration": "40.0",
-        "name": "rendering.mobile/ie_pirate_mark"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/infinite_scrolling"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.mobile/linkedin_2018"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/linkedin_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "81.0",
-        "name": "rendering.mobile/linkedin_pathological_2018"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/list_animation_simple"
-    },
-    {
-        "duration": "105.0",
-        "name": "rendering.mobile/list_recycle_transform"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/man_in_blue"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/many_images"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/many_planets_deep"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/mask_transition_animation"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/medium_texture_uploads"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/megi_dish"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/microsoft_asteroid_belt"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/microsoft_fireflies"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/microsoft_fish_ie_tank"
-    },
-    {
-        "duration": "51.0",
-        "name": "rendering.mobile/microsoft_snow"
-    },
-    {
-        "duration": "71.0",
-        "name": "rendering.mobile/microsoft_speed_reading"
-    },
-    {
-        "duration": "58.0",
-        "name": "rendering.mobile/microsoft_tweet_map"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.mobile/microsoft_video_city"
-    },
-    {
-        "duration": "77.0",
-        "name": "rendering.mobile/microsoft_worker_fountains"
-    },
-    {
-        "duration": "41.0",
-        "name": "rendering.mobile/mix_10k"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/mix_blend_mode_animation_difference"
-    },
-    {
-        "duration": "57.0",
-        "name": "rendering.mobile/mix_blend_mode_animation_hue"
-    },
-    {
-        "duration": "42.0",
-        "name": "rendering.mobile/mix_blend_mode_animation_propagating_isolation"
-    },
-    {
-        "duration": "37.0",
-        "name": "rendering.mobile/mix_blend_mode_animation_screen"
-    },
-    {
-        "duration": "42.0",
-        "name": "rendering.mobile/mlb_mobile_2018"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/mlb_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.mobile/mobile_news_sandbox"
-    },
-    {
-        "duration": "51.0",
-        "name": "rendering.mobile/motion_mark_canvas_fill_shapes"
-    },
-    {
-        "duration": "44.0",
-        "name": "rendering.mobile/motion_mark_canvas_stroke_shapes"
-    },
-    {
-        "duration": "46.0",
-        "name": "rendering.mobile/motion_mark_focus"
-    },
-    {
-        "duration": "55.0",
-        "name": "rendering.mobile/new_tilings"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/no_op_raf"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/no_op_scroll"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/no_op_settimeout"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/no_op_touch_handler"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/nvidia_vertex_buffer_object"
-    },
-    {
-        "duration": "76.0",
-        "name": "rendering.mobile/nytimes_mobile_2018"
-    },
-    {
-        "duration": "57.0",
-        "name": "rendering.mobile/overlay_background_color_css_transitions_page"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/parallax_effect"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/particles"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/pbs_pathological_2018"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.mobile/physical_simulation"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/pinterest_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/pinterest_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/pinterest_mobile_2018"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.mobile/pinterest_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/put_get_image_data"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/raf"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/raf_animation"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/raf_canvas"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/raf_touch_animation"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/recode_pathological_2018"
-    },
-    {
-        "duration": "42.0",
-        "name": "rendering.mobile/reddit_mobile_2018"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/runway"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/san_angeles"
-    },
-    {
-        "duration": "41.0",
-        "name": "rendering.mobile/sfgate_mobile_2018"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/sfgate_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/sticky_using_webkit"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/stress_hidey_bars"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/svg_icon_raster"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.mobile/swipe_to_dismiss"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/toggle_drawer"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/vertical_expansion"
-    },
-    {
-        "duration": "41.0",
-        "name": "rendering.mobile/web_animation_value_type_color"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/web_animation_value_type_length_3d"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/web_animation_value_type_length_complex"
-    },
-    {
-        "duration": "57.0",
-        "name": "rendering.mobile/web_animation_value_type_length_simple"
-    },
-    {
-        "duration": "76.0",
-        "name": "rendering.mobile/web_animation_value_type_path"
-    },
-    {
-        "duration": "84.0",
-        "name": "rendering.mobile/web_animation_value_type_shadow"
-    },
-    {
-        "duration": "41.0",
-        "name": "rendering.mobile/web_animation_value_type_transform_complex"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/web_animation_value_type_transform_simple"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/web_animations_set_current_time"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.mobile/web_animations_simultaneous"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.mobile/web_animations_staggered_chaining"
-    },
-    {
-        "duration": "41.0",
-        "name": "rendering.mobile/web_animations_staggered_triggering_page"
-    },
-    {
-        "duration": "76.0",
-        "name": "rendering.mobile/wikipedia_2018"
+        "duration": "60.0",
+        "name": "rendering.mobile/css_transitions_triggered_updating_class"
     },
     {
         "duration": "39.0",
-        "name": "rendering.mobile/wikipedia_delayed_scroll_start_2018"
+        "name": "rendering.mobile/css_transitions_updating_class"
     },
     {
-        "duration": "31.0",
-        "name": "rendering.mobile/wikipedia_delayed_scroll_start_sync_scroll_2018"
+        "duration": "27.0",
+        "name": "rendering.mobile/css_value_type_color"
     },
     {
-        "duration": "32.0",
-        "name": "rendering.mobile/wikipedia_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/wikipedia_mobile_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/wikipedia_mobile_sync_scroll_2018"
+        "duration": "48.0",
+        "name": "rendering.mobile/css_value_type_filter"
     },
     {
         "duration": "39.0",
-        "name": "rendering.mobile/wordpress_2018"
+        "name": "rendering.mobile/css_value_type_length"
     },
     {
-        "duration": "34.0",
-        "name": "rendering.mobile/wordpress_desktop_gpu_raster_2018"
+        "duration": "60.0",
+        "name": "rendering.mobile/css_value_type_length_complex"
     },
     {
-        "duration": "40.0",
-        "name": "rendering.mobile/wordpress_mobile_2018"
+        "duration": "27.0",
+        "name": "rendering.mobile/css_value_type_length_simple"
     },
     {
-        "duration": "33.0",
-        "name": "rendering.mobile/wordpress_mobile_sync_scroll_2018"
+        "duration": "41.0",
+        "name": "rendering.mobile/css_value_type_path"
     },
     {
-        "duration": "33.0",
-        "name": "rendering.mobile/worldjournal_mobile_2018"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/worldjournal_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.mobile/wow_wiki_pathological_2018"
-    },
-    {
-        "duration": "61.0",
-        "name": "rendering.mobile/wowwiki_mobile_2018"
-    },
-    {
-        "duration": "54.0",
-        "name": "rendering.mobile/wowwiki_mobile_sync_scroll_2018"
+        "duration": "59.0",
+        "name": "rendering.mobile/css_value_type_shadow"
     },
     {
         "duration": "29.0",
-        "name": "rendering.mobile/yahoo_answers_2018"
+        "name": "rendering.mobile/css_value_type_transform_complex"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.mobile/yahoo_answers_desktop_gpu_raster_2018"
+        "duration": "30.0",
+        "name": "rendering.mobile/css_value_type_transform_simple"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.mobile/yahoo_news_2018"
+        "duration": "24.0",
+        "name": "rendering.mobile/deviantart_mobile_2018"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.mobile/yahoo_news_desktop_gpu_raster_2018"
+        "duration": "19.0",
+        "name": "rendering.mobile/digg_mobile_2018"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/dynamic_cube_map"
     },
     {
         "duration": "43.0",
-        "name": "rendering.mobile/yahoo_news_mobile_2018"
+        "name": "rendering.mobile/earth"
     },
     {
-        "duration": "30.0",
-        "name": "rendering.mobile/yahoo_news_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.mobile/yahoo_sports_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/yahoo_sports_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/yahoo_sports_pathological_2018"
-    },
-    {
-        "duration": "39.0",
-        "name": "rendering.mobile/youtube_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/youtube_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/youtube_mobile_2018"
+        "duration": "24.0",
+        "name": "rendering.mobile/ebay_2018"
     },
     {
         "duration": "18.0",
-        "name": "rendering.mobile/youtube_mobile_sync_scroll_2018"
+        "name": "rendering.mobile/ebay_mobile_2018"
     },
     {
-        "duration": "29.0",
-        "name": "rendering.mobile/yuv_decoding"
-    },
-    {
-        "duration": "37.0",
-        "name": "rendering.mobile/yuv_decoding_gpu_rasterization_and_decoding"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.mobile/zdnet_pathological_2018"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.mobile/zoom_in_animation"
-    },
-    {
-        "duration": "36.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/accu_weather_pinch_2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/amazon_pinch_2018"
-    },
-    {
-        "duration": "21.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/blogspot_pinch_2018"
-    },
-    {
-        "duration": "76.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/booking_pinch_2018"
+        "duration": "19.0",
+        "name": "rendering.mobile/ebay_mobile_pinch_2018"
     },
     {
         "duration": "31.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/cnn_pinch_2018"
+        "name": "rendering.mobile/ebay_scroll_2018"
+    },
+    {
+        "duration": "27.0",
+        "name": "rendering.mobile/espn_2018"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/espn_mobile_2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.mobile/espn_pathological_2018"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/extra_large_texture_uploads"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/facebook_2018"
+    },
+    {
+        "duration": "23.0",
+        "name": "rendering.mobile/facebook_mobile_2018"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/fill_shapes"
+    },
+    {
+        "duration": "29.0",
+        "name": "rendering.mobile/filter_terrain_svg"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/flickr_scroll_2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.mobile/font_wipe"
+    },
+    {
+        "duration": "29.0",
+        "name": "rendering.mobile/forecast.io_mobile_2018"
+    },
+    {
+        "duration": "32.0",
+        "name": "rendering.mobile/gmail_2018"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/google_calendar_2018"
+    },
+    {
+        "duration": "34.0",
+        "name": "rendering.mobile/google_docs_2018"
+    },
+    {
+        "duration": "27.0",
+        "name": "rendering.mobile/google_image_search_2018"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/google_image_search_mobile_2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.mobile/google_news_ios"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/google_news_mobile_2018"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/google_plus_2018"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/google_plus_mobile_2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/google_search_mobile_pinch_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.mobile/google_web_search_2018"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/google_web_search_mobile_2018"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/gsp.ro_mobile_2018"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/guardian_pathological_2018"
+    },
+    {
+        "duration": "29.0",
+        "name": "rendering.mobile/guimark_vector_chart"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.mobile/gws_boogie_expansion"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.mobile/gws_google_expansion"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.mobile/hakim"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.mobile/horizontal_vertical_expansion"
+    },
+    {
+        "duration": "44.0",
+        "name": "rendering.mobile/idle_power_animated_gif"
+    },
+    {
+        "duration": "31.0",
+        "name": "rendering.mobile/idle_power_blank"
+    },
+    {
+        "duration": "96.0",
+        "name": "rendering.mobile/idle_power_css_animation"
+    },
+    {
+        "duration": "42.0",
+        "name": "rendering.mobile/idle_power_request_animation_frame"
+    },
+    {
+        "duration": "111.0",
+        "name": "rendering.mobile/idle_power_set_timeout_long"
+    },
+    {
+        "duration": "36.0",
+        "name": "rendering.mobile/idle_power_set_timetout"
+    },
+    {
+        "duration": "60.0",
+        "name": "rendering.mobile/ie_chalkboard"
+    },
+    {
+        "duration": "44.0",
+        "name": "rendering.mobile/ie_pirate_mark"
+    },
+    {
+        "duration": "27.0",
+        "name": "rendering.mobile/infinite_scroll_element_n_layers_0"
+    },
+    {
+        "duration": "27.0",
+        "name": "rendering.mobile/infinite_scroll_element_n_layers_75"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/infinite_scroll_element_n_layers_99"
+    },
+    {
+        "duration": "27.0",
+        "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_0"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_75"
+    },
+    {
+        "duration": "23.0",
+        "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_99"
+    },
+    {
+        "duration": "27.0",
+        "name": "rendering.mobile/infinite_scroll_root_n_layers_0"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/infinite_scroll_root_n_layers_75"
+    },
+    {
+        "duration": "27.0",
+        "name": "rendering.mobile/infinite_scroll_root_n_layers_99"
     },
     {
         "duration": "20.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/ebay_pinch_2018"
+        "name": "rendering.mobile/infinite_scrolling"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/jarro_doverson"
+    },
+    {
+        "duration": "47.0",
+        "name": "rendering.mobile/js_full_screen_invalidation"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/js_opacity_plus_n_layers_0"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/js_opacity_plus_n_layers_75"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/js_opacity_plus_n_layers_99"
+    },
+    {
+        "duration": "27.0",
+        "name": "rendering.mobile/js_paint_plus_n_layers_0"
+    },
+    {
+        "duration": "36.0",
+        "name": "rendering.mobile/js_paint_plus_n_layers_75"
+    },
+    {
+        "duration": "28.0",
+        "name": "rendering.mobile/js_paint_plus_n_layers_99"
+    },
+    {
+        "duration": "45.0",
+        "name": "rendering.mobile/js_poster_circle"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/js_scroll_text_only"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/keyframed_animations"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/large_texture_uploads"
+    },
+    {
+        "duration": "37.0",
+        "name": "rendering.mobile/latimes_pathological_2018"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/linkedin_2018"
+    },
+    {
+        "duration": "49.0",
+        "name": "rendering.mobile/linkedin_mobile_2018"
+    },
+    {
+        "duration": "40.0",
+        "name": "rendering.mobile/linkedin_mobile_pinch_2018"
+    },
+    {
+        "duration": "37.0",
+        "name": "rendering.mobile/linkedin_pathological_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.mobile/list_animation_simple"
+    },
+    {
+        "duration": "31.0",
+        "name": "rendering.mobile/list_recycle_transform"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/man_in_blue"
+    },
+    {
+        "duration": "46.0",
+        "name": "rendering.mobile/many_images"
+    },
+    {
+        "duration": "29.0",
+        "name": "rendering.mobile/many_planets_deep"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/mask_transition_animation"
+    },
+    {
+        "duration": "41.0",
+        "name": "rendering.mobile/masonry"
+    },
+    {
+        "duration": "27.0",
+        "name": "rendering.mobile/medium_texture_uploads"
+    },
+    {
+        "duration": "29.0",
+        "name": "rendering.mobile/megi_dish"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/microsoft_asteroid_belt"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/microsoft_fish_ie_tank"
+    },
+    {
+        "duration": "27.0",
+        "name": "rendering.mobile/microsoft_performance"
+    },
+    {
+        "duration": "32.0",
+        "name": "rendering.mobile/microsoft_snow"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.mobile/microsoft_speed_reading"
+    },
+    {
+        "duration": "27.0",
+        "name": "rendering.mobile/microsoft_tweet_map"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/microsoft_video_city"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/microsoft_worker_fountains"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.mobile/mix_10k"
+    },
+    {
+        "duration": "31.0",
+        "name": "rendering.mobile/mix_blend_mode_animation_difference"
+    },
+    {
+        "duration": "51.0",
+        "name": "rendering.mobile/mix_blend_mode_animation_hue"
+    },
+    {
+        "duration": "32.0",
+        "name": "rendering.mobile/mix_blend_mode_animation_propagating_isolation"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/mix_blend_mode_animation_screen"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/mlb_mobile_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.mobile/mobile_news_sandbox"
+    },
+    {
+        "duration": "62.0",
+        "name": "rendering.mobile/motion_mark_canvas_fill_shapes"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/motion_mark_canvas_stroke_shapes"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/motionmark_anim_design_15"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/motionmark_anim_focus_25"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_anim_images_50"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_anim_leaves_250"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/motionmark_anim_multiply_175"
+    },
+    {
+        "duration": "23.0",
+        "name": "rendering.mobile/motionmark_anim_suits_125"
+    },
+    {
+        "duration": "34.0",
+        "name": "rendering.mobile/motionmark_html_composited_transforms_125"
+    },
+    {
+        "duration": "29.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_blend_circles_25"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_circles_250"
+    },
+    {
+        "duration": "29.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_clipped_rects_100"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_filter_circles_15"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_gradient_circles_250"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_svg_images_50"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_tagged_images_225"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_html_dom_particles_svg_masks_25"
+    },
+    {
+        "duration": "23.0",
+        "name": "rendering.mobile/motionmark_html_focus_20_15"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/motionmark_html_leaves_20_50"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_svg_bouncing_circles_250"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/motionmark_svg_bouncing_clipped_rects_100"
+    },
+    {
+        "duration": "29.0",
+        "name": "rendering.mobile/motionmark_svg_bouncing_gradient_circles_200"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/motionmark_svg_bouncing_png_images_200"
+    },
+    {
+        "duration": "31.0",
+        "name": "rendering.mobile/motionmark_svg_bouncing_svg_images_50"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/new_tilings"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/no_op_raf"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.mobile/no_op_scroll"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.mobile/no_op_settimeout"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.mobile/no_op_touch_handler"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/nvidia_vertex_buffer_object"
+    },
+    {
+        "duration": "30.0",
+        "name": "rendering.mobile/nyc_gov_scroll_2018"
+    },
+    {
+        "duration": "29.0",
+        "name": "rendering.mobile/nytimes_mobile_2018"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/nytimes_scroll_2018"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/overlay_background_color_css_transitions_page"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/parallax_effect"
+    },
+    {
+        "duration": "37.0",
+        "name": "rendering.mobile/particles"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/pbs_pathological_2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/physical_simulation"
+    },
+    {
+        "duration": "45.0",
+        "name": "rendering.mobile/pinterest_2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.mobile/pinterest_mobile_2018"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/put_get_image_data"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/raf"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/raf_animation"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/raf_canvas"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/raf_touch_animation"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/recode_pathological_2018"
+    },
+    {
+        "duration": "23.0",
+        "name": "rendering.mobile/reddit_mobile_2018"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/runway"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/san_angeles"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.mobile/second_batch_js_heavy"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.mobile/second_batch_js_light"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.mobile/second_batch_js_medium"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/sfgate_mobile_2018"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/silk_finance"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.mobile/simple_text_page"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.mobile/simple_touch_drag"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/slashdot_mobile_2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.mobile/slide_drawer"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/small_texture_uploads"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.mobile/spielzeugz"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.mobile/sticky_using_webkit"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/stress_hidey_bars"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.mobile/stroke_shapes"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/svg_icon_raster"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.mobile/swipe_action"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.mobile/swipe_to_dismiss"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.mobile/sync_scroll_offset"
+    },
+    {
+        "duration": "28.0",
+        "name": "rendering.mobile/techcrunch_2018"
+    },
+    {
+        "duration": "33.0",
+        "name": "rendering.mobile/techcrunch_mobile_2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.mobile/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.mobile/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.mobile/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.mobile/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.mobile/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.mobile/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.mobile/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "22.0",
+        "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.mobile/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.mobile/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.mobile/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.mobile/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.mobile/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.mobile/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.mobile/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "28.0",
+        "name": "rendering.mobile/theverge_article_mobile_2018"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/theverge_mobile_2018"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/toggle_drawer"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.mobile/touch_handler_scrolling"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/transform_transitions"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/transform_transitions_js_block"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/twitch_2018"
+    },
+    {
+        "duration": "30.0",
+        "name": "rendering.mobile/twitch_mobile_pinch_2018"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/twitter_2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.mobile/twitter_mobile_2018"
+    },
+    {
+        "duration": "27.0",
+        "name": "rendering.mobile/update_history_state"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.mobile/usatoday_mobile_2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.mobile/vertical_expansion"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/web_animation_value_type_color"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/web_animation_value_type_length_3d"
+    },
+    {
+        "duration": "32.0",
+        "name": "rendering.mobile/web_animation_value_type_length_complex"
+    },
+    {
+        "duration": "43.0",
+        "name": "rendering.mobile/web_animation_value_type_length_simple"
+    },
+    {
+        "duration": "46.0",
+        "name": "rendering.mobile/web_animation_value_type_path"
+    },
+    {
+        "duration": "67.0",
+        "name": "rendering.mobile/web_animation_value_type_shadow"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/web_animation_value_type_transform_complex"
+    },
+    {
+        "duration": "25.0",
+        "name": "rendering.mobile/web_animation_value_type_transform_simple"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/web_animations_set_current_time"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/web_animations_simultaneous"
+    },
+    {
+        "duration": "23.0",
+        "name": "rendering.mobile/web_animations_staggered_chaining"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/web_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "44.0",
+        "name": "rendering.mobile/web_animations_staggered_triggering_page"
+    },
+    {
+        "duration": "35.0",
+        "name": "rendering.mobile/wikipedia_2018"
+    },
+    {
+        "duration": "32.0",
+        "name": "rendering.mobile/wikipedia_delayed_scroll_start_2018"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/wikipedia_mobile_2018"
+    },
+    {
+        "duration": "26.0",
+        "name": "rendering.mobile/wordpress_2018"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/wordpress_mobile_2018"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/worldjournal_mobile_2018"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/wow_wiki_pathological_2018"
+    },
+    {
+        "duration": "43.0",
+        "name": "rendering.mobile/wowwiki_mobile_2018"
+    },
+    {
+        "duration": "30.0",
+        "name": "rendering.mobile/wsj_mobile_2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/yahoo_answers_2018"
+    },
+    {
+        "duration": "31.0",
+        "name": "rendering.mobile/yahoo_news_mobile_2018"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/yahoo_sports_2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.mobile/yahoo_sports_pathological_2018"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/youtube_2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.mobile/youtube_mobile_2018"
+    },
+    {
+        "duration": "56.0",
+        "name": "rendering.mobile/yuv_decoding"
+    },
+    {
+        "duration": "51.0",
+        "name": "rendering.mobile/yuv_decoding_gpu_rasterization_and_decoding"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/zdnet_pathological_2018"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/zoom_in_animation"
+    },
+    {
+        "duration": "95.0",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/amazon_pinch_2018"
+    },
+    {
+        "duration": "56.0",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/blogspot_pinch_2018"
+    },
+    {
+        "duration": "70.0",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/booking_pinch_2018"
     },
     {
         "duration": "25.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/espn_pinch_2018"
     },
     {
-        "duration": "24.0",
+        "duration": "31.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/facebook_pinch_2018"
     },
     {
-        "duration": "37.0",
+        "duration": "34.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/gmail_pinch_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "17.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_calendar_pinch_2018"
     },
     {
-        "duration": "19.0",
+        "duration": "21.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_image_pinch_2018"
     },
     {
-        "duration": "57.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_search_pinch_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/linkedin_pinch_2018"
-    },
-    {
-        "duration": "27.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/twitch_pinch_2018"
-    },
-    {
         "duration": "23.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/twitter_pinch_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "49.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_news_pinch_2018"
     },
     {
-        "duration": "38.0",
+        "duration": "45.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_sports_pinch_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "32.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/youtube_pinch_2018"
     },
     {
-        "duration": "36.0",
-        "name": "smoothness.tough_pinch_zoom_cases/accu_weather_pinch_2018"
-    },
-    {
-        "duration": "29.0",
+        "duration": "71.0",
         "name": "smoothness.tough_pinch_zoom_cases/amazon_pinch_2018"
     },
     {
-        "duration": "21.0",
+        "duration": "17.0",
         "name": "smoothness.tough_pinch_zoom_cases/blogspot_pinch_2018"
     },
     {
-        "duration": "56.0",
+        "duration": "88.0",
         "name": "smoothness.tough_pinch_zoom_cases/booking_pinch_2018"
     },
     {
-        "duration": "31.0",
-        "name": "smoothness.tough_pinch_zoom_cases/cnn_pinch_2018"
-    },
-    {
-        "duration": "20.0",
-        "name": "smoothness.tough_pinch_zoom_cases/ebay_pinch_2018"
-    },
-    {
         "duration": "32.0",
         "name": "smoothness.tough_pinch_zoom_cases/espn_pinch_2018"
     },
     {
-        "duration": "30.0",
+        "duration": "31.0",
         "name": "smoothness.tough_pinch_zoom_cases/facebook_pinch_2018"
     },
     {
-        "duration": "36.0",
+        "duration": "46.0",
         "name": "smoothness.tough_pinch_zoom_cases/gmail_pinch_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "43.0",
         "name": "smoothness.tough_pinch_zoom_cases/google_calendar_pinch_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "53.0",
         "name": "smoothness.tough_pinch_zoom_cases/google_image_pinch_2018"
     },
     {
-        "duration": "32.0",
-        "name": "smoothness.tough_pinch_zoom_cases/google_search_pinch_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "smoothness.tough_pinch_zoom_cases/linkedin_pinch_2018"
-    },
-    {
-        "duration": "27.0",
-        "name": "smoothness.tough_pinch_zoom_cases/twitch_pinch_2018"
-    },
-    {
-        "duration": "23.0",
+        "duration": "35.0",
         "name": "smoothness.tough_pinch_zoom_cases/twitter_pinch_2018"
     },
     {
-        "duration": "65.0",
+        "duration": "37.0",
         "name": "smoothness.tough_pinch_zoom_cases/yahoo_news_pinch_2018"
     },
     {
-        "duration": "51.0",
+        "duration": "50.0",
         "name": "smoothness.tough_pinch_zoom_cases/yahoo_sports_pinch_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "38.0",
         "name": "smoothness.tough_pinch_zoom_cases/youtube_pinch_2018"
     },
     {
-        "duration": "74.0",
+        "duration": "63.0",
         "name": "speedometer-future/http://browserbench.org/Speedometer/"
     },
     {
-        "duration": "69.0",
+        "duration": "72.0",
         "name": "speedometer/http://browserbench.org/Speedometer/"
     },
     {
-        "duration": "121.0",
+        "duration": "103.0",
         "name": "speedometer2-future/Speedometer2"
     },
     {
-        "duration": "122.0",
+        "duration": "101.0",
         "name": "speedometer2/Speedometer2"
     },
     {
-        "duration": "25.0",
+        "duration": "20.0",
         "name": "system_health.common_mobile/background:media:imgur"
     },
     {
-        "duration": "48.0",
+        "duration": "41.0",
         "name": "system_health.common_mobile/background:news:nytimes"
     },
     {
-        "duration": "26.0",
+        "duration": "24.0",
         "name": "system_health.common_mobile/background:search:google"
     },
     {
-        "duration": "36.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/background:social:facebook"
     },
     {
-        "duration": "37.0",
-        "name": "system_health.common_mobile/background:tools:gmail"
-    },
-    {
-        "duration": "10.0",
+        "duration": "24.0",
         "name": "system_health.common_mobile/browse:chrome:newtab"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "system_health.common_mobile/browse:chrome:omnibox"
     },
     {
-        "duration": "91.0",
+        "duration": "94.0",
         "name": "system_health.common_mobile/browse:media:facebook_photos"
     },
     {
-        "duration": "57.0",
+        "duration": "108.0",
         "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "82.0",
+        "duration": "44.0",
+        "name": "system_health.common_mobile/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "74.0",
         "name": "system_health.common_mobile/browse:media:imgur"
     },
     {
-        "duration": "117.0",
+        "duration": "99.0",
         "name": "system_health.common_mobile/browse:media:youtube"
     },
     {
-        "duration": "120.0",
+        "duration": "112.0",
         "name": "system_health.common_mobile/browse:news:cnn"
     },
     {
-        "duration": "104.0",
+        "duration": "148.0",
         "name": "system_health.common_mobile/browse:news:cnn:2018"
     },
     {
-        "duration": "71.0",
+        "duration": "58.0",
         "name": "system_health.common_mobile/browse:news:cricbuzz"
     },
     {
-        "duration": "61.0",
+        "duration": "82.0",
         "name": "system_health.common_mobile/browse:news:qq"
     },
     {
-        "duration": "59.0",
+        "duration": "49.0",
         "name": "system_health.common_mobile/browse:news:reddit"
     },
     {
-        "duration": "149.0",
+        "duration": "156.0",
         "name": "system_health.common_mobile/browse:news:toi"
     },
     {
-        "duration": "59.0",
+        "duration": "49.0",
         "name": "system_health.common_mobile/browse:news:washingtonpost"
     },
     {
-        "duration": "77.0",
+        "duration": "31.0",
+        "name": "system_health.common_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "62.0",
         "name": "system_health.common_mobile/browse:shopping:amazon"
     },
     {
-        "duration": "80.0",
-        "name": "system_health.common_mobile/browse:shopping:avito"
-    },
-    {
-        "duration": "39.0",
+        "duration": "29.0",
         "name": "system_health.common_mobile/browse:shopping:lazada"
     },
     {
-        "duration": "72.0",
+        "duration": "61.0",
         "name": "system_health.common_mobile/browse:social:facebook"
     },
     {
-        "duration": "149.0",
+        "duration": "121.0",
         "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "122.0",
+        "duration": "133.0",
         "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "92.0",
+        "duration": "102.0",
         "name": "system_health.common_mobile/browse:social:instagram"
     },
     {
-        "duration": "90.0",
+        "duration": "118.0",
         "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll"
     },
     {
-        "duration": "110.0",
+        "duration": "117.0",
         "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "59.0",
-        "name": "system_health.common_mobile/browse:social:twitter"
-    },
-    {
-        "duration": "73.0",
-        "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "107.0",
-        "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll:2018"
+        "duration": "98.0",
+        "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018"
     },
     {
         "duration": "49.0",
+        "name": "system_health.common_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "76.0",
+        "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "106.0",
+        "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "79.0",
         "name": "system_health.common_mobile/browse:tools:maps"
     },
     {
-        "duration": "21.0",
+        "duration": "25.0",
         "name": "system_health.common_mobile/load:chrome:blank"
     },
     {
-        "duration": "28.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:games:bubbles"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "system_health.common_mobile/load:games:lazors"
     },
     {
-        "duration": "37.0",
+        "duration": "30.0",
         "name": "system_health.common_mobile/load:games:spychase"
     },
     {
-        "duration": "26.0",
+        "duration": "27.0",
+        "name": "system_health.common_mobile/load:games:spychase:2018"
+    },
+    {
+        "duration": "20.0",
         "name": "system_health.common_mobile/load:media:dailymotion"
     },
     {
-        "duration": "25.0",
+        "duration": "22.0",
         "name": "system_health.common_mobile/load:media:facebook_photos"
     },
     {
-        "duration": "25.0",
+        "duration": "41.0",
+        "name": "system_health.common_mobile/load:media:flickr:2018"
+    },
+    {
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:media:google_images"
     },
     {
         "duration": "24.0",
+        "name": "system_health.common_mobile/load:media:google_images:2018"
+    },
+    {
+        "duration": "22.0",
         "name": "system_health.common_mobile/load:media:imgur"
     },
     {
-        "duration": "25.0",
+        "duration": "26.0",
+        "name": "system_health.common_mobile/load:media:imgur:2018"
+    },
+    {
+        "duration": "17.0",
         "name": "system_health.common_mobile/load:media:youtube"
     },
     {
-        "duration": "41.0",
+        "duration": "21.0",
+        "name": "system_health.common_mobile/load:media:youtube:2018"
+    },
+    {
+        "duration": "35.0",
         "name": "system_health.common_mobile/load:news:cnn"
     },
     {
-        "duration": "31.0",
+        "duration": "63.0",
+        "name": "system_health.common_mobile/load:news:cnn:2018"
+    },
+    {
+        "duration": "25.0",
         "name": "system_health.common_mobile/load:news:irctc"
     },
     {
-        "duration": "28.0",
+        "duration": "30.0",
         "name": "system_health.common_mobile/load:news:nytimes"
     },
     {
-        "duration": "24.0",
+        "duration": "20.0",
         "name": "system_health.common_mobile/load:news:qq"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:news:reddit"
     },
     {
-        "duration": "27.0",
+        "duration": "20.0",
         "name": "system_health.common_mobile/load:news:washingtonpost"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:news:wikipedia"
     },
     {
-        "duration": "24.0",
+        "duration": "18.0",
+        "name": "system_health.common_mobile/load:news:wikipedia:2018"
+    },
+    {
+        "duration": "28.0",
         "name": "system_health.common_mobile/load:search:baidu"
     },
     {
-        "duration": "25.0",
+        "duration": "27.0",
+        "name": "system_health.common_mobile/load:search:baidu:2018"
+    },
+    {
+        "duration": "17.0",
         "name": "system_health.common_mobile/load:search:ebay"
     },
     {
-        "duration": "23.0",
+        "duration": "20.0",
+        "name": "system_health.common_mobile/load:search:ebay:2018"
+    },
+    {
+        "duration": "22.0",
         "name": "system_health.common_mobile/load:search:google"
     },
     {
-        "duration": "25.0",
+        "duration": "60.0",
+        "name": "system_health.common_mobile/load:search:google:2018"
+    },
+    {
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:search:taobao"
     },
     {
-        "duration": "23.0",
+        "duration": "17.0",
         "name": "system_health.common_mobile/load:search:yahoo"
     },
     {
-        "duration": "23.0",
+        "duration": "27.0",
+        "name": "system_health.common_mobile/load:search:yahoo:2018"
+    },
+    {
+        "duration": "17.0",
         "name": "system_health.common_mobile/load:search:yandex"
     },
     {
-        "duration": "24.0",
+        "duration": "37.0",
+        "name": "system_health.common_mobile/load:search:yandex:2018"
+    },
+    {
+        "duration": "22.0",
         "name": "system_health.common_mobile/load:social:twitter"
     },
     {
-        "duration": "24.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:tools:docs"
     },
     {
-        "duration": "26.0",
+        "duration": "19.0",
         "name": "system_health.common_mobile/load:tools:drive"
     },
     {
-        "duration": "23.0",
+        "duration": "17.0",
         "name": "system_health.common_mobile/load:tools:dropbox"
     },
     {
-        "duration": "36.0",
-        "name": "system_health.common_mobile/load:tools:gmail"
-    },
-    {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:tools:stackoverflow"
     },
     {
-        "duration": "30.0",
+        "duration": "24.0",
+        "name": "system_health.common_mobile/load:tools:stackoverflow:2018"
+    },
+    {
+        "duration": "21.0",
         "name": "system_health.common_mobile/load:tools:weather"
     },
     {
-        "duration": "30.0",
+        "duration": "25.0",
         "name": "system_health.memory_mobile/background:media:imgur"
     },
     {
@@ -2764,75 +3300,67 @@
         "name": "system_health.memory_mobile/background:search:google"
     },
     {
-        "duration": "31.0",
+        "duration": "23.0",
         "name": "system_health.memory_mobile/background:social:facebook"
     },
     {
-        "duration": "51.0",
-        "name": "system_health.memory_mobile/background:tools:gmail"
-    },
-    {
-        "duration": "83.0",
+        "duration": "101.0",
         "name": "system_health.memory_mobile/browse:media:facebook_photos"
     },
     {
-        "duration": "62.0",
+        "duration": "52.0",
         "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "77.0",
+        "duration": "47.0",
+        "name": "system_health.memory_mobile/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "71.0",
         "name": "system_health.memory_mobile/browse:media:imgur"
     },
     {
-        "duration": "88.0",
+        "duration": "82.0",
         "name": "system_health.memory_mobile/browse:media:youtube"
     },
     {
-        "duration": "90.0",
+        "duration": "92.0",
         "name": "system_health.memory_mobile/browse:news:cnn"
     },
     {
-        "duration": "77.0",
+        "duration": "120.0",
         "name": "system_health.memory_mobile/browse:news:cnn:2018"
     },
     {
-        "duration": "62.0",
+        "duration": "59.0",
         "name": "system_health.memory_mobile/browse:news:cricbuzz"
     },
     {
-        "duration": "56.0",
+        "duration": "57.0",
         "name": "system_health.memory_mobile/browse:news:qq"
     },
     {
-        "duration": "59.0",
+        "duration": "52.0",
         "name": "system_health.memory_mobile/browse:news:reddit"
     },
     {
-        "duration": "95.0",
+        "duration": "118.0",
         "name": "system_health.memory_mobile/browse:news:toi"
     },
     {
-        "duration": "53.0",
-        "name": "system_health.memory_mobile/browse:news:washingtonpost"
+        "duration": "26.0",
+        "name": "system_health.memory_mobile/browse:search:amp:2018"
     },
     {
-        "duration": "61.0",
+        "duration": "57.0",
         "name": "system_health.memory_mobile/browse:shopping:amazon"
     },
     {
-        "duration": "38.0",
+        "duration": "37.0",
         "name": "system_health.memory_mobile/browse:shopping:lazada"
     },
     {
-        "duration": "65.0",
-        "name": "system_health.memory_mobile/browse:social:facebook"
-    },
-    {
-        "duration": "89.0",
-        "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "87.0",
+        "duration": "77.0",
         "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll:2018"
     },
     {
@@ -2840,407 +3368,463 @@
         "name": "system_health.memory_mobile/browse:social:instagram"
     },
     {
-        "duration": "79.0",
-        "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll"
+        "duration": "77.0",
+        "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018"
     },
     {
-        "duration": "55.0",
+        "duration": "50.0",
         "name": "system_health.memory_mobile/browse:social:twitter"
     },
     {
-        "duration": "63.0",
+        "duration": "58.0",
         "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "78.0",
-        "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "51.0",
+        "duration": "52.0",
         "name": "system_health.memory_mobile/browse:tools:maps"
     },
     {
-        "duration": "26.0",
+        "duration": "44.0",
         "name": "system_health.memory_mobile/load:chrome:blank"
     },
     {
-        "duration": "27.0",
+        "duration": "22.0",
         "name": "system_health.memory_mobile/load:games:bubbles"
     },
     {
-        "duration": "27.0",
+        "duration": "21.0",
         "name": "system_health.memory_mobile/load:games:lazors"
     },
     {
-        "duration": "33.0",
+        "duration": "28.0",
         "name": "system_health.memory_mobile/load:games:spychase"
     },
     {
-        "duration": "36.0",
-        "name": "system_health.memory_mobile/load:media:dailymotion"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:media:facebook_photos"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:media:google_images"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:media:imgur"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:media:youtube"
-    },
-    {
-        "duration": "38.0",
-        "name": "system_health.memory_mobile/load:news:cnn"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_mobile/load:news:irctc"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_mobile/load:news:nytimes"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_mobile/load:news:qq"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:news:reddit"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:news:washingtonpost"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:news:wikipedia"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_mobile/load:search:baidu"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_mobile/load:search:ebay"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_mobile/load:search:google"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:search:taobao"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_mobile/load:search:yahoo"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_mobile/load:search:yandex"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:social:twitter"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_mobile/load:tools:docs"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_mobile/load:tools:dropbox"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:tools:stackoverflow"
-    },
-    {
-        "duration": "32.0",
-        "name": "system_health.memory_mobile/load:tools:weather"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.webview_startup/load:chrome:blank"
-    },
-    {
-        "duration": "15.0",
-        "name": "tracing.tracing_with_background_memory_infra/Facebook"
-    },
-    {
-        "duration": "15.0",
-        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
-    },
-    {
-        "duration": "11.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
-    },
-    {
-        "duration": "11.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
-    },
-    {
-        "duration": "12.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
-    },
-    {
-        "duration": "12.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
-    },
-    {
-        "duration": "13.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
-    },
-    {
-        "duration": "22.0",
-        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
-    },
-    {
-        "duration": "14.0",
-        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
-    },
-    {
-        "duration": "103.0",
-        "name": "v8.browsing_mobile-future/browse:media:facebook_photos"
-    },
-    {
-        "duration": "72.0",
-        "name": "v8.browsing_mobile-future/browse:media:flickr_infinite_scroll"
-    },
-    {
-        "duration": "98.0",
-        "name": "v8.browsing_mobile-future/browse:media:imgur"
-    },
-    {
-        "duration": "148.0",
-        "name": "v8.browsing_mobile-future/browse:media:youtube"
-    },
-    {
-        "duration": "175.0",
-        "name": "v8.browsing_mobile-future/browse:news:cnn"
-    },
-    {
-        "duration": "147.0",
-        "name": "v8.browsing_mobile-future/browse:news:cnn:2018"
-    },
-    {
-        "duration": "91.0",
-        "name": "v8.browsing_mobile-future/browse:news:cricbuzz"
-    },
-    {
-        "duration": "73.0",
-        "name": "v8.browsing_mobile-future/browse:news:qq"
-    },
-    {
-        "duration": "68.0",
-        "name": "v8.browsing_mobile-future/browse:news:reddit"
-    },
-    {
-        "duration": "261.0",
-        "name": "v8.browsing_mobile-future/browse:news:toi"
-    },
-    {
-        "duration": "74.0",
-        "name": "v8.browsing_mobile-future/browse:news:washingtonpost"
-    },
-    {
-        "duration": "143.0",
-        "name": "v8.browsing_mobile-future/browse:shopping:amazon"
-    },
-    {
-        "duration": "108.0",
-        "name": "v8.browsing_mobile-future/browse:shopping:avito"
-    },
-    {
-        "duration": "48.0",
-        "name": "v8.browsing_mobile-future/browse:shopping:lazada"
-    },
-    {
-        "duration": "315.0",
-        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "212.0",
-        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll:2018"
-    },
-    {
-        "duration": "136.0",
-        "name": "v8.browsing_mobile-future/browse:social:instagram"
-    },
-    {
-        "duration": "132.0",
-        "name": "v8.browsing_mobile-future/browse:social:pinterest_infinite_scroll"
-    },
-    {
-        "duration": "169.0",
-        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "67.0",
-        "name": "v8.browsing_mobile-future/browse:social:twitter"
-    },
-    {
-        "duration": "106.0",
-        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "132.0",
-        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "61.0",
-        "name": "v8.browsing_mobile-future/browse:tools:maps"
-    },
-    {
-        "duration": "103.0",
-        "name": "v8.browsing_mobile/browse:media:facebook_photos"
-    },
-    {
-        "duration": "71.0",
-        "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll"
-    },
-    {
-        "duration": "98.0",
-        "name": "v8.browsing_mobile/browse:media:imgur"
-    },
-    {
-        "duration": "140.0",
-        "name": "v8.browsing_mobile/browse:news:cnn:2018"
-    },
-    {
-        "duration": "87.0",
-        "name": "v8.browsing_mobile/browse:news:cricbuzz"
-    },
-    {
-        "duration": "87.0",
-        "name": "v8.browsing_mobile/browse:news:qq"
-    },
-    {
-        "duration": "73.0",
-        "name": "v8.browsing_mobile/browse:news:reddit"
-    },
-    {
-        "duration": "261.0",
-        "name": "v8.browsing_mobile/browse:news:toi"
-    },
-    {
-        "duration": "80.0",
-        "name": "v8.browsing_mobile/browse:news:washingtonpost"
-    },
-    {
-        "duration": "131.0",
-        "name": "v8.browsing_mobile/browse:shopping:amazon"
-    },
-    {
-        "duration": "106.0",
-        "name": "v8.browsing_mobile/browse:shopping:avito"
-    },
-    {
-        "duration": "48.0",
-        "name": "v8.browsing_mobile/browse:shopping:lazada"
-    },
-    {
-        "duration": "92.0",
-        "name": "v8.browsing_mobile/browse:social:facebook"
-    },
-    {
-        "duration": "343.0",
-        "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "219.0",
-        "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll:2018"
-    },
-    {
-        "duration": "133.0",
-        "name": "v8.browsing_mobile/browse:social:instagram"
-    },
-    {
-        "duration": "132.0",
-        "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll"
-    },
-    {
-        "duration": "190.0",
-        "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "71.0",
-        "name": "v8.browsing_mobile/browse:social:twitter"
-    },
-    {
-        "duration": "109.0",
-        "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "133.0",
-        "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "60.0",
-        "name": "v8.browsing_mobile/browse:tools:maps"
-    },
-    {
-        "duration": "9.0",
-        "name": "wasm/AsmJsZenGarden"
-    },
-    {
-        "duration": "28.0",
-        "name": "wasm/WasmSpaceBuggy"
-    },
-    {
-        "duration": "9.0",
-        "name": "wasm/WasmStylizedRenderer"
-    },
-    {
-        "duration": "9.0",
-        "name": "wasm/WasmSunTemple"
-    },
-    {
-        "duration": "18.0",
-        "name": "wasm/WasmTanks"
-    },
-    {
-        "duration": "9.0",
-        "name": "wasm/WasmZenGarden"
-    },
-    {
-        "duration": "21.0",
-        "name": "webrtc/10s_datachannel_transfer"
-    },
-    {
-        "duration": "27.0",
-        "name": "webrtc/canvas_capture_peer_connection"
-    },
-    {
-        "duration": "36.0",
-        "name": "webrtc/codec_constraints_h264"
-    },
-    {
-        "duration": "36.0",
-        "name": "webrtc/codec_constraints_vp8"
-    },
-    {
-        "duration": "36.0",
-        "name": "webrtc/codec_constraints_vp9"
+        "duration": "33.0",
+        "name": "system_health.memory_mobile/load:games:spychase:2018"
     },
     {
         "duration": "24.0",
+        "name": "system_health.memory_mobile/load:media:dailymotion"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:media:facebook_photos"
+    },
+    {
+        "duration": "27.0",
+        "name": "system_health.memory_mobile/load:media:flickr:2018"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:media:google_images"
+    },
+    {
+        "duration": "29.0",
+        "name": "system_health.memory_mobile/load:media:google_images:2018"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:media:imgur"
+    },
+    {
+        "duration": "30.0",
+        "name": "system_health.memory_mobile/load:media:imgur:2018"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:media:youtube"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:media:youtube:2018"
+    },
+    {
+        "duration": "33.0",
+        "name": "system_health.memory_mobile/load:news:cnn"
+    },
+    {
+        "duration": "33.0",
+        "name": "system_health.memory_mobile/load:news:cnn:2018"
+    },
+    {
+        "duration": "39.0",
+        "name": "system_health.memory_mobile/load:news:irctc"
+    },
+    {
+        "duration": "27.0",
+        "name": "system_health.memory_mobile/load:news:nytimes"
+    },
+    {
+        "duration": "27.0",
+        "name": "system_health.memory_mobile/load:news:qq"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:news:reddit"
+    },
+    {
+        "duration": "27.0",
+        "name": "system_health.memory_mobile/load:news:wikipedia"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:news:wikipedia:2018"
+    },
+    {
+        "duration": "29.0",
+        "name": "system_health.memory_mobile/load:search:baidu"
+    },
+    {
+        "duration": "28.0",
+        "name": "system_health.memory_mobile/load:search:baidu:2018"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.memory_mobile/load:search:ebay"
+    },
+    {
+        "duration": "25.0",
+        "name": "system_health.memory_mobile/load:search:ebay:2018"
+    },
+    {
+        "duration": "24.0",
+        "name": "system_health.memory_mobile/load:search:google"
+    },
+    {
+        "duration": "61.0",
+        "name": "system_health.memory_mobile/load:search:google:2018"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:search:taobao"
+    },
+    {
+        "duration": "41.0",
+        "name": "system_health.memory_mobile/load:search:yahoo"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:search:yahoo:2018"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:search:yandex"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:search:yandex:2018"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:social:twitter"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:tools:docs"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.memory_mobile/load:tools:dropbox"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:tools:stackoverflow"
+    },
+    {
+        "duration": "33.0",
+        "name": "system_health.memory_mobile/load:tools:stackoverflow:2018"
+    },
+    {
+        "duration": "26.0",
+        "name": "system_health.memory_mobile/load:tools:weather"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.webview_startup/load:chrome:blank"
+    },
+    {
+        "duration": "10.0",
+        "name": "tracing.tracing_with_background_memory_infra/Facebook"
+    },
+    {
+        "duration": "10.0",
+        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
+    },
+    {
+        "duration": "7.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
+    },
+    {
+        "duration": "7.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
+    },
+    {
+        "duration": "7.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
+    },
+    {
+        "duration": "7.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
+    },
+    {
+        "duration": "9.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
+    },
+    {
+        "duration": "14.0",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "9.0",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "20.0",
+        "name": "v8.browsing_mobile-future/browse:chrome:omnibox"
+    },
+    {
+        "duration": "161.0",
+        "name": "v8.browsing_mobile-future/browse:media:facebook_photos"
+    },
+    {
+        "duration": "76.0",
+        "name": "v8.browsing_mobile-future/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "83.0",
+        "name": "v8.browsing_mobile-future/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "75.0",
+        "name": "v8.browsing_mobile-future/browse:media:imgur"
+    },
+    {
+        "duration": "105.0",
+        "name": "v8.browsing_mobile-future/browse:media:youtube"
+    },
+    {
+        "duration": "121.0",
+        "name": "v8.browsing_mobile-future/browse:news:cnn"
+    },
+    {
+        "duration": "133.0",
+        "name": "v8.browsing_mobile-future/browse:news:cnn:2018"
+    },
+    {
+        "duration": "61.0",
+        "name": "v8.browsing_mobile-future/browse:news:cricbuzz"
+    },
+    {
+        "duration": "61.0",
+        "name": "v8.browsing_mobile-future/browse:news:qq"
+    },
+    {
+        "duration": "52.0",
+        "name": "v8.browsing_mobile-future/browse:news:reddit"
+    },
+    {
+        "duration": "128.0",
+        "name": "v8.browsing_mobile-future/browse:news:toi"
+    },
+    {
+        "duration": "34.0",
+        "name": "v8.browsing_mobile-future/browse:search:amp:2018"
+    },
+    {
+        "duration": "79.0",
+        "name": "v8.browsing_mobile-future/browse:shopping:amazon"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.browsing_mobile-future/browse:shopping:lazada"
+    },
+    {
+        "duration": "127.0",
+        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "90.0",
+        "name": "v8.browsing_mobile-future/browse:social:instagram"
+    },
+    {
+        "duration": "117.0",
+        "name": "v8.browsing_mobile-future/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "124.0",
+        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "128.0",
+        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "52.0",
+        "name": "v8.browsing_mobile-future/browse:social:twitter"
+    },
+    {
+        "duration": "150.0",
+        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "43.0",
+        "name": "v8.browsing_mobile-future/browse:tools:maps"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.browsing_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "84.0",
+        "name": "v8.browsing_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "112.0",
+        "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "70.0",
+        "name": "v8.browsing_mobile/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "75.0",
+        "name": "v8.browsing_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "113.0",
+        "name": "v8.browsing_mobile/browse:news:cnn:2018"
+    },
+    {
+        "duration": "61.0",
+        "name": "v8.browsing_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "62.0",
+        "name": "v8.browsing_mobile/browse:news:qq"
+    },
+    {
+        "duration": "52.0",
+        "name": "v8.browsing_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "136.0",
+        "name": "v8.browsing_mobile/browse:news:toi"
+    },
+    {
+        "duration": "54.0",
+        "name": "v8.browsing_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.browsing_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "80.0",
+        "name": "v8.browsing_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.browsing_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "67.0",
+        "name": "v8.browsing_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "148.0",
+        "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "116.0",
+        "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "89.0",
+        "name": "v8.browsing_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "106.0",
+        "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "102.0",
+        "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "123.0",
+        "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "52.0",
+        "name": "v8.browsing_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "85.0",
+        "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "130.0",
+        "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "43.0",
+        "name": "v8.browsing_mobile/browse:tools:maps"
+    },
+    {
+        "duration": "10.0",
+        "name": "wasm/AsmJsZenGarden"
+    },
+    {
+        "duration": "20.0",
+        "name": "wasm/WasmSpaceBuggy"
+    },
+    {
+        "duration": "10.0",
+        "name": "wasm/WasmStylizedRenderer"
+    },
+    {
+        "duration": "10.0",
+        "name": "wasm/WasmSunTemple"
+    },
+    {
+        "duration": "16.0",
+        "name": "wasm/WasmTanks"
+    },
+    {
+        "duration": "13.0",
+        "name": "wasm/WasmZenGarden"
+    },
+    {
+        "duration": "17.0",
+        "name": "webrtc/10s_datachannel_transfer"
+    },
+    {
+        "duration": "20.0",
+        "name": "webrtc/canvas_capture_peer_connection"
+    },
+    {
+        "duration": "33.0",
+        "name": "webrtc/codec_constraints_h264"
+    },
+    {
+        "duration": "29.0",
+        "name": "webrtc/codec_constraints_vp8"
+    },
+    {
+        "duration": "29.0",
+        "name": "webrtc/codec_constraints_vp9"
+    },
+    {
+        "duration": "17.0",
         "name": "webrtc/hd_local_stream_10s"
     },
     {
-        "duration": "46.0",
+        "duration": "37.0",
         "name": "webrtc/multiple_peerconnections"
     },
     {
-        "duration": "65.0",
+        "duration": "44.0",
         "name": "webrtc/pause_play_peerconnections"
     }
 ]
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/android_nexus6_webview_perf_timing.json b/tools/perf/core/shard_maps/timing_data/android_nexus6_webview_perf_timing.json
index df687bb1..655ddda 100644
--- a/tools/perf/core/shard_maps/timing_data/android_nexus6_webview_perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/android_nexus6_webview_perf_timing.json
@@ -1,26 +1,30 @@
 [
     {
-        "duration": "33.0",
+        "duration": "29.0",
+        "name": "blink_perf.accessibility/line-breaks.html"
+    },
+    {
+        "duration": "21.0",
         "name": "blink_perf.accessibility/textarea-append.html"
     },
     {
-        "duration": "23.0",
+        "duration": "20.0",
         "name": "blink_perf.bindings/append-child.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.bindings/create-element.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/document-implementation.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/dom-attribute-on-prototoype.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.bindings/first-child.html"
     },
     {
@@ -28,23 +32,23 @@
         "name": "blink_perf.bindings/gc-forest.html"
     },
     {
-        "duration": "41.0",
+        "duration": "39.0",
         "name": "blink_perf.bindings/gc-mini-tree.html"
     },
     {
-        "duration": "81.0",
+        "duration": "84.0",
         "name": "blink_perf.bindings/gc-tree.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/get-attribute-rare.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/get-attribute.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/get-element-by-id.html"
     },
     {
@@ -60,11 +64,11 @@
         "name": "blink_perf.bindings/id-setter.html"
     },
     {
-        "duration": "14.0",
+        "duration": "16.0",
         "name": "blink_perf.bindings/indexed-getter.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/insert-before.html"
     },
     {
@@ -72,11 +76,11 @@
         "name": "blink_perf.bindings/named-property-enumerator.html"
     },
     {
-        "duration": "159.0",
+        "duration": "119.0",
         "name": "blink_perf.bindings/node-list-access.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.bindings/node-type.html"
     },
     {
@@ -84,11 +88,11 @@
         "name": "blink_perf.bindings/post-message.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/sequence-conversion-array.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.bindings/sequence-conversion-custom-iterator.html"
     },
     {
@@ -100,7 +104,7 @@
         "name": "blink_perf.bindings/serialize-long-string.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.bindings/serialize-map.html"
     },
     {
@@ -112,31 +116,23 @@
         "name": "blink_perf.bindings/set-attribute-rare.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/set-attribute.html"
     },
     {
-        "duration": "36.0",
+        "duration": "37.0",
         "name": "blink_perf.bindings/structured-clone-json-deserialize.html"
     },
     {
-        "duration": "35.0",
+        "duration": "37.0",
         "name": "blink_perf.bindings/structured-clone-json-serialize.html"
     },
     {
         "duration": "13.0",
-        "name": "blink_perf.bindings/structured-clone-long-string-deserialize.html"
-    },
-    {
-        "duration": "13.0",
-        "name": "blink_perf.bindings/structured-clone-long-string-serialize.html"
-    },
-    {
-        "duration": "13.0",
         "name": "blink_perf.bindings/typed-array-construct-from-array.html"
     },
     {
-        "duration": "14.0",
+        "duration": "15.0",
         "name": "blink_perf.bindings/typed-array-construct-from-same-type.html"
     },
     {
@@ -144,11 +140,11 @@
         "name": "blink_perf.bindings/typed-array-construct-from-typed.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.bindings/typed-array-set-from-typed.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.bindings/undefined-first-child.html"
     },
     {
@@ -156,87 +152,243 @@
         "name": "blink_perf.bindings/undefined-get-element-by-id.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.bindings/undefined-id-getter.html"
     },
     {
-        "duration": "66.0",
+        "duration": "6.0",
+        "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html"
+    },
+    {
+        "duration": "69.0",
+        "name": "blink_perf.bindings/worker-structured-clone-json-from-worker.html"
+    },
+    {
+        "duration": "69.0",
         "name": "blink_perf.bindings/worker-structured-clone-json-roundtrip.html"
     },
     {
-        "duration": "66.0",
-        "name": "blink_perf.bindings/worker-structured-clone-json-serialize.html"
+        "duration": "68.0",
+        "name": "blink_perf.bindings/worker-structured-clone-json-to-worker.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.bindings/worker-structured-clone-workerDOM-DBMon-from-worker.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.bindings/worker-structured-clone-workerDOM-Map-from-worker.html"
+    },
+    {
+        "duration": "70.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-from-worker.html"
+    },
+    {
+        "duration": "69.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-roundtrip.html"
+    },
+    {
+        "duration": "70.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-to-worker.html"
+    },
+    {
+        "duration": "39.0",
+        "name": "blink_perf.bindings/worker-transferable-from-worker.html"
+    },
+    {
+        "duration": "39.0",
+        "name": "blink_perf.bindings/worker-transferable-roundtrip.html"
+    },
+    {
+        "duration": "39.0",
+        "name": "blink_perf.bindings/worker-transferable-to-worker.html"
+    },
+    {
+        "duration": "19.0",
+        "name": "blink_perf.canvas/createImageBitmapFromImageData.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.canvas/createImageBitmapFromImageData_RAF.html?RAF"
     },
     {
         "duration": "24.0",
-        "name": "blink_perf.canvas/createImageBitmapFromImageData.html"
+        "name": "blink_perf.canvas/docs-paper.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/docs-paper_RAF.html?RAF"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.canvas/docs-resume.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/docs-resume_RAF.html?RAF"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.canvas/docs-table.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/docs-table_RAF.html?RAF"
     },
     {
         "duration": "10.0",
         "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d.html"
     },
     {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
         "duration": "19.0",
         "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d.html"
     },
     {
         "duration": "10.0",
+        "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "10.0",
         "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d.html"
     },
     {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d_RAF.html?RAF"
+    },
+    {
         "duration": "7.0",
         "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d.html"
     },
     {
         "duration": "7.0",
-        "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "blink_perf.canvas/drawimage-not-pixelaligned.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "blink_perf.canvas/drawimage.html"
-    },
-    {
-        "duration": "25.0",
-        "name": "blink_perf.canvas/getImageData.html"
-    },
-    {
-        "duration": "13.0",
-        "name": "blink_perf.canvas/getImageDataColorManaged.html"
-    },
-    {
-        "duration": "25.0",
-        "name": "blink_perf.canvas/putImageData.html"
-    },
-    {
-        "duration": "9.0",
-        "name": "blink_perf.canvas/toBlob_duration.html"
-    },
-    {
-        "duration": "10.0",
-        "name": "blink_perf.canvas/toBlob_duration_jpeg.html"
+        "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
     },
     {
         "duration": "7.0",
+        "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.canvas/drawimage-not-pixelaligned.html"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.canvas/drawimage-not-pixelaligned_RAF.html?RAF"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.canvas/drawimage.html"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.canvas/drawimage_RAF.html?RAF"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.canvas/getImageData.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.canvas/getImageDataColorManaged.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.canvas/getImageDataColorManaged_RAF.html?RAF"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.canvas/getImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "6.0",
+        "name": "blink_perf.canvas/gpu-bound-shader.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/gpu-bound-shader_RAF.html?RAF"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.canvas/putImageData.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.canvas/putImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "24.0",
+        "name": "blink_perf.canvas/sheets-render.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/sheets-render_RAF.html?RAF"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.canvas/toBlob_duration.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.canvas/toBlob_duration_RAF.html?RAF"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.canvas/toBlob_duration_jpeg.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.canvas/toBlob_duration_jpeg_RAF.html?RAF"
+    },
+    {
+        "duration": "11.0",
         "name": "blink_perf.canvas/transferFromImageBitmap.html"
     },
     {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/transferFromImageBitmap_RAF.html?RAF"
+    },
+    {
         "duration": "10.0",
         "name": "blink_perf.canvas/upload-canvas-2d-to-texture.html"
     },
     {
+        "duration": "17.0",
+        "name": "blink_perf.canvas/upload-canvas-2d-to-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.canvas/upload-video-to-sub-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.canvas/upload-video-to-texture_RAF.html?RAF"
+    },
+    {
         "duration": "10.0",
         "name": "blink_perf.canvas/upload-webgl-to-texture.html"
     },
     {
-        "duration": "32.0",
+        "duration": "18.0",
+        "name": "blink_perf.canvas/upload-webgl-to-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "27.0",
         "name": "blink_perf.css/AttributeDescendantSelector.html"
     },
     {
-        "duration": "14.0",
+        "duration": "15.0",
         "name": "blink_perf.css/CSSPropertySetterGetter.html"
     },
     {
@@ -248,79 +400,79 @@
         "name": "blink_perf.css/CSSPropertyUpdateValue.html"
     },
     {
-        "duration": "12.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleChildClassSelector.html"
     },
     {
-        "duration": "11.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleChildElementSelectors.html"
     },
     {
-        "duration": "11.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleElementSelector.html"
     },
     {
-        "duration": "11.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html"
     },
     {
-        "duration": "11.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html"
     },
     {
-        "duration": "11.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html"
     },
     {
-        "duration": "11.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html"
     },
     {
-        "duration": "11.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html"
     },
     {
-        "duration": "14.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStyleShallowTree.html"
     },
     {
-        "duration": "11.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleSingleClassSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html"
     },
     {
-        "duration": "11.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleUniversalSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html"
     },
     {
-        "duration": "20.0",
+        "duration": "18.0",
         "name": "blink_perf.css/ClassDescendantSelector.html"
     },
     {
@@ -328,7 +480,7 @@
         "name": "blink_perf.css/ClassInvalidation.html"
     },
     {
-        "duration": "16.0",
+        "duration": "15.0",
         "name": "blink_perf.css/CustomPropertiesCascade.html"
     },
     {
@@ -348,51 +500,35 @@
         "name": "blink_perf.css/FocusUpdate.html"
     },
     {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "blink_perf.css/LoadBootstrapBlog.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.css/LoadMaterializeStarterPage.html"
     },
     {
-        "duration": "14.0",
+        "duration": "13.0",
         "name": "blink_perf.css/LoadSemanticPageExample.html"
     },
     {
-        "duration": "15.0",
+        "duration": "16.0",
         "name": "blink_perf.css/PseudoClassSelectors.html"
     },
     {
-        "duration": "18.0",
+        "duration": "55.0",
         "name": "blink_perf.css/SelectorCountScaling.html"
     },
     {
-        "duration": "35.0",
-        "name": "blink_perf.dom/addRange.html"
-    },
-    {
-        "duration": "60.0",
+        "duration": "72.0",
         "name": "blink_perf.dom/custom-element-default-style-with-shadow.html"
     },
     {
-        "duration": "45.0",
+        "duration": "53.0",
         "name": "blink_perf.dom/custom-element-default-style.html"
     },
     {
-        "duration": "7.0",
-        "name": "blink_perf.dom/delete-in-password-field.html"
-    },
-    {
-        "duration": "17.0",
-        "name": "blink_perf.dom/div-editable.html"
-    },
-    {
-        "duration": "6.0",
-        "name": "blink_perf.dom/inner_html_with_selection.html"
-    },
-    {
-        "duration": "22.0",
+        "duration": "35.0",
         "name": "blink_perf.dom/long-sibling-list.html"
     },
     {
@@ -404,87 +540,83 @@
         "name": "blink_perf.dom/modify-element-id.html"
     },
     {
-        "duration": "11.0",
+        "duration": "10.0",
         "name": "blink_perf.dom/modify-element-title.html"
     },
     {
-        "duration": "7.0",
-        "name": "blink_perf.dom/move-down-with-hidden-elements.html"
-    },
-    {
-        "duration": "7.0",
-        "name": "blink_perf.dom/move-up-with-hidden-elements.html"
-    },
-    {
-        "duration": "6.0",
-        "name": "blink_perf.dom/remove_child_with_selection.html"
-    },
-    {
         "duration": "13.0",
         "name": "blink_perf.dom/select-multiple-add.html"
     },
     {
-        "duration": "14.0",
+        "duration": "15.0",
         "name": "blink_perf.dom/select-single-add.html"
     },
     {
-        "duration": "16.0",
+        "duration": "17.0",
         "name": "blink_perf.dom/select-single-remove.html"
     },
     {
-        "duration": "13.0",
-        "name": "blink_perf.dom/textarea-dom.html"
-    },
-    {
-        "duration": "20.0",
-        "name": "blink_perf.dom/textarea-edit.html"
-    },
-    {
-        "duration": "50.0",
+        "duration": "25.0",
         "name": "blink_perf.events/EventsDispatching.html"
     },
     {
-        "duration": "15.0",
-        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedShadowTrees.html"
+        "duration": "16.0",
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV0ShadowTrees.html"
     },
     {
-        "duration": "40.0",
-        "name": "blink_perf.events/EventsDispatchingInShadowTrees.html"
+        "duration": "17.0",
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html"
     },
     {
-        "duration": "59.0",
+        "duration": "38.0",
+        "name": "blink_perf.events/EventsDispatchingInV0ShadowTrees.html"
+    },
+    {
+        "duration": "36.0",
+        "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html"
+    },
+    {
+        "duration": "61.0",
         "name": "blink_perf.events/hit-test-lots-of-layers.html"
     },
     {
-        "duration": "52.0",
+        "duration": "14.0",
+        "name": "blink_perf.events/is-input-pending-all-events.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.events/is-input-pending-default-events.html"
+    },
+    {
+        "duration": "37.0",
         "name": "blink_perf.image_decoder/decode-gif.html"
     },
     {
-        "duration": "20.0",
+        "duration": "17.0",
         "name": "blink_perf.image_decoder/decode-jpeg.html"
     },
     {
-        "duration": "46.0",
+        "duration": "38.0",
         "name": "blink_perf.image_decoder/decode-lossless-webp.html"
     },
     {
-        "duration": "15.0",
+        "duration": "14.0",
         "name": "blink_perf.image_decoder/decode-lossy-webp.html"
     },
     {
-        "duration": "29.0",
+        "duration": "24.0",
         "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
     },
     {
-        "duration": "19.0",
+        "duration": "17.0",
         "name": "blink_perf.image_decoder/decode-png-palette.html"
     },
     {
-        "duration": "42.0",
+        "duration": "35.0",
         "name": "blink_perf.image_decoder/decode-png.html"
     },
     {
-        "duration": "26.0",
+        "duration": "22.0",
         "name": "blink_perf.layout/ArabicLineLayout.html"
     },
     {
@@ -500,7 +632,7 @@
         "name": "blink_perf.layout/add-remove-inline-floats.html"
     },
     {
-        "duration": "14.0",
+        "duration": "15.0",
         "name": "blink_perf.layout/attach-inlines-2.html"
     },
     {
@@ -508,11 +640,11 @@
         "name": "blink_perf.layout/attach-inlines.html"
     },
     {
-        "duration": "15.0",
+        "duration": "16.0",
         "name": "blink_perf.layout/auto-grid-lots-of-data.html"
     },
     {
-        "duration": "25.0",
+        "duration": "22.0",
         "name": "blink_perf.layout/change-text-css-contain.html"
     },
     {
@@ -524,7 +656,7 @@
         "name": "blink_perf.layout/chapter-reflow-once.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/chapter-reflow-thrice.html"
     },
     {
@@ -536,7 +668,7 @@
         "name": "blink_perf.layout/chapter-reflow.html"
     },
     {
-        "duration": "9.0",
+        "duration": "23.0",
         "name": "blink_perf.layout/character_fallback.html"
     },
     {
@@ -544,11 +676,23 @@
         "name": "blink_perf.layout/character_fallback_aat.html"
     },
     {
-        "duration": "15.0",
-        "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
+        "duration": "43.0",
+        "name": "blink_perf.layout/contain-content-style-change.html"
     },
     {
         "duration": "15.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-blocks.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-text.html"
+    },
+    {
+        "duration": "16.0",
+        "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
+    },
+    {
+        "duration": "16.0",
         "name": "blink_perf.layout/fixed-grid-lots-of-stretched-data.html"
     },
     {
@@ -560,7 +704,7 @@
         "name": "blink_perf.layout/flexbox-column-wrap.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html"
     },
     {
@@ -572,23 +716,27 @@
         "name": "blink_perf.layout/flexbox-row-nowrap.html"
     },
     {
+        "duration": "21.0",
+        "name": "blink_perf.layout/flexbox-row-stretch-height-definite.html"
+    },
+    {
         "duration": "13.0",
         "name": "blink_perf.layout/flexbox-row-wrap.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/flexbox-with-stretch-layout.html"
     },
     {
-        "duration": "42.0",
+        "duration": "33.0",
         "name": "blink_perf.layout/floats_100_100.html"
     },
     {
-        "duration": "42.0",
+        "duration": "33.0",
         "name": "blink_perf.layout/floats_100_100_nested.html"
     },
     {
-        "duration": "26.0",
+        "duration": "25.0",
         "name": "blink_perf.layout/floats_10_1000.html"
     },
     {
@@ -604,23 +752,31 @@
         "name": "blink_perf.layout/floats_2_100.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/floats_2_100_nested.html"
     },
     {
-        "duration": "19.0",
+        "duration": "18.0",
         "name": "blink_perf.layout/floats_50_100.html"
     },
     {
-        "duration": "20.0",
+        "duration": "19.0",
         "name": "blink_perf.layout/floats_50_100_nested.html"
     },
     {
-        "duration": "34.0",
+        "duration": "17.0",
         "name": "blink_perf.layout/hindi-line-layout.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
+        "name": "blink_perf.layout/japanese-kokoro-insert.html"
+    },
+    {
+        "duration": "36.0",
+        "name": "blink_perf.layout/large-grid.html"
+    },
+    {
+        "duration": "14.0",
         "name": "blink_perf.layout/large-spanning-grid-item.html"
     },
     {
@@ -628,30 +784,38 @@
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html"
     },
     {
-        "duration": "42.0",
+        "duration": "41.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html"
     },
     {
-        "duration": "42.0",
+        "duration": "41.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html"
     },
     {
-        "duration": "315.0",
+        "duration": "291.0",
         "name": "blink_perf.layout/latin-ebook-resize.html"
     },
     {
-        "duration": "41.0",
+        "duration": "39.0",
         "name": "blink_perf.layout/latin-ebook.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/layers_overlap_2d.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/layers_overlap_3d.html"
     },
     {
+        "duration": "10.0",
+        "name": "blink_perf.layout/line-layout-fit-content-break-word.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.layout/line-layout-fit-content.html"
+    },
+    {
         "duration": "38.0",
         "name": "blink_perf.layout/line-layout-line-height.html"
     },
@@ -664,7 +828,7 @@
         "name": "blink_perf.layout/line-layout-repeat-append.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.layout/line-layout.html"
     },
     {
@@ -676,23 +840,31 @@
         "name": "blink_perf.layout/long-line-nowrap-spans-collapse.html"
     },
     {
-        "duration": "16.0",
+        "duration": "15.0",
         "name": "blink_perf.layout/long-line-nowrap.html"
     },
     {
+        "duration": "12.0",
+        "name": "blink_perf.layout/many-block-children-auto-inline-size.html"
+    },
+    {
         "duration": "13.0",
+        "name": "blink_perf.layout/many-block-children-fixed-inline-size.html"
+    },
+    {
+        "duration": "14.0",
         "name": "blink_perf.layout/multicol/deeply-nested-tables.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/multicol/lots-of-text-autofill.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.layout/multicol/lots-of-text-balanced-orphans-widows.html"
     },
     {
@@ -700,15 +872,15 @@
         "name": "blink_perf.layout/multicol/lots-of-text-balanced.html"
     },
     {
-        "duration": "15.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html"
     },
     {
-        "duration": "15.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/multicol/tall-content-short-columns.html"
     },
     {
-        "duration": "14.0",
+        "duration": "15.0",
         "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html"
     },
     {
@@ -716,15 +888,15 @@
         "name": "blink_perf.layout/nested-grid.html"
     },
     {
-        "duration": "48.0",
+        "duration": "132.0",
         "name": "blink_perf.layout/nested-percent-height-tables.html"
     },
     {
-        "duration": "306.0",
+        "duration": "314.0",
         "name": "blink_perf.layout/subtree-detaching.html"
     },
     {
-        "duration": "11.0",
+        "duration": "15.0",
         "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html"
     },
     {
@@ -740,11 +912,11 @@
         "name": "blink_perf.layout/word-wrap-break-word.html"
     },
     {
-        "duration": "26.0",
+        "duration": "21.0",
         "name": "blink_perf.owp_storage/blob-perf-files.html"
     },
     {
-        "duration": "18.0",
+        "duration": "17.0",
         "name": "blink_perf.owp_storage/blob-perf-ipc.html"
     },
     {
@@ -752,7 +924,7 @@
         "name": "blink_perf.owp_storage/blob-perf-shm.html"
     },
     {
-        "duration": "18.0",
+        "duration": "17.0",
         "name": "blink_perf.owp_storage/blob-perf-tiny.html"
     },
     {
@@ -760,75 +932,19 @@
         "name": "blink_perf.owp_storage/idb-load-docs.html"
     },
     {
-        "duration": "32.0",
-        "name": "blink_perf.paint/appending-text.html"
-    },
-    {
-        "duration": "44.0",
-        "name": "blink_perf.paint/color-changes.html"
-    },
-    {
-        "duration": "30.0",
-        "name": "blink_perf.paint/complex-content-slow-scroll.html"
-    },
-    {
-        "duration": "40.0",
-        "name": "blink_perf.paint/containment-resize.html"
-    },
-    {
-        "duration": "37.0",
-        "name": "blink_perf.paint/fixed-and-many-layers-scroll.html"
-    },
-    {
-        "duration": "50.0",
-        "name": "blink_perf.paint/large-table-background-change-with-invisible-collapsed-borders.html"
-    },
-    {
-        "duration": "31.0",
-        "name": "blink_perf.paint/large-table-background-change-with-visible-collapsed-borders.html"
-    },
-    {
-        "duration": "54.0",
-        "name": "blink_perf.paint/large-table-background-change-with-zero-width-collapsed-borders.html"
-    },
-    {
-        "duration": "33.0",
-        "name": "blink_perf.paint/large-table-collapsed-border-change-with-backgrounds.html"
-    },
-    {
-        "duration": "42.0",
-        "name": "blink_perf.paint/large-table-collapsed-border-change-with-text.html"
-    },
-    {
-        "duration": "26.0",
-        "name": "blink_perf.paint/large-table-collapsed-border-change.html"
-    },
-    {
-        "duration": "49.0",
-        "name": "blink_perf.paint/large-table-repaint.html"
-    },
-    {
-        "duration": "28.0",
-        "name": "blink_perf.paint/move-text-with-mask.html"
-    },
-    {
-        "duration": "52.0",
-        "name": "blink_perf.paint/transform-changes.html"
-    },
-    {
-        "duration": "24.0",
+        "duration": "20.0",
         "name": "blink_perf.parser/css-parser-yui.html"
     },
     {
-        "duration": "53.0",
+        "duration": "31.0",
         "name": "blink_perf.parser/html-parser-threaded.html"
     },
     {
-        "duration": "73.0",
+        "duration": "50.0",
         "name": "blink_perf.parser/html-parser.html"
     },
     {
-        "duration": "163.0",
+        "duration": "200.0",
         "name": "blink_perf.parser/html5-full-render.html"
     },
     {
@@ -836,23 +952,23 @@
         "name": "blink_perf.parser/iframe-append-remove.html"
     },
     {
-        "duration": "13.0",
+        "duration": "15.0",
         "name": "blink_perf.parser/innerHTML-setter-siblings.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.parser/innerHTML-setter.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.parser/query-selector-all-attribute-complex.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.parser/query-selector-all-attribute.html"
     },
     {
-        "duration": "14.0",
+        "duration": "15.0",
         "name": "blink_perf.parser/query-selector-all-class-deep.html"
     },
     {
@@ -860,19 +976,19 @@
         "name": "blink_perf.parser/query-selector-all-class-first.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.parser/query-selector-all-class-last.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.parser/query-selector-all-class.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.parser/query-selector-all-deep.html"
     },
     {
-        "duration": "14.0",
+        "duration": "15.0",
         "name": "blink_perf.parser/query-selector-all-first.html"
     },
     {
@@ -880,19 +996,19 @@
         "name": "blink_perf.parser/query-selector-all-id-deep.html"
     },
     {
-        "duration": "15.0",
+        "duration": "16.0",
         "name": "blink_perf.parser/query-selector-all-id-first.html"
     },
     {
-        "duration": "18.0",
+        "duration": "19.0",
         "name": "blink_perf.parser/query-selector-all-id-last.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.parser/query-selector-all-last.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.parser/query-selector-deep.html"
     },
     {
@@ -900,19 +1016,19 @@
         "name": "blink_perf.parser/query-selector-first.html"
     },
     {
-        "duration": "15.0",
+        "duration": "16.0",
         "name": "blink_perf.parser/query-selector-id-deep.html"
     },
     {
-        "duration": "17.0",
+        "duration": "16.0",
         "name": "blink_perf.parser/query-selector-id-last.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.parser/query-selector-last.html"
     },
     {
-        "duration": "17.0",
+        "duration": "12.0",
         "name": "blink_perf.parser/simple-url.html"
     },
     {
@@ -920,19 +1036,19 @@
         "name": "blink_perf.parser/textarea-parsing.html"
     },
     {
-        "duration": "29.0",
+        "duration": "28.0",
         "name": "blink_perf.parser/tiny-innerHTML.html"
     },
     {
-        "duration": "13.0",
+        "duration": "16.0",
         "name": "blink_perf.parser/url-parser.html"
     },
     {
-        "duration": "15.0",
+        "duration": "14.0",
         "name": "blink_perf.parser/xml-parser.html"
     },
     {
-        "duration": "17.0",
+        "duration": "12.0",
         "name": "blink_perf.shadow_dom/declarative-api.html"
     },
     {
@@ -964,7 +1080,7 @@
         "name": "blink_perf.shadow_dom/imperative-api-detail-summary-large.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/imperative-api-detail-summary.html"
     },
     {
@@ -984,11 +1100,11 @@
         "name": "blink_perf.shadow_dom/shadow-style-share-media-query.html"
     },
     {
-        "duration": "8.0",
+        "duration": "9.0",
         "name": "blink_perf.shadow_dom/shadow-style-share-with-distribution.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/shadow-style-share.html"
     },
     {
@@ -996,19 +1112,19 @@
         "name": "blink_perf.shadow_dom/style-sheet-insert.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.shadow_dom/v0-changing-classname-with-shadow-dom.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.shadow_dom/v0-changing-classname-without-shadow-dom.html"
     },
     {
-        "duration": "20.0",
+        "duration": "21.0",
         "name": "blink_perf.shadow_dom/v0-changing-select-with-shadow-dom.html"
     },
     {
-        "duration": "24.0",
+        "duration": "25.0",
         "name": "blink_perf.shadow_dom/v0-changing-select-without-shadow-dom.html"
     },
     {
@@ -1016,15 +1132,15 @@
         "name": "blink_perf.shadow_dom/v0-content-reprojection.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v0-large-distribution-without-layout.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v0-multiple-insertion-points.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.shadow_dom/v0-shadow-reprojection.html"
     },
     {
@@ -1032,7 +1148,7 @@
         "name": "blink_perf.shadow_dom/v0-small-distribution-with-layout.html"
     },
     {
-        "duration": "53.0",
+        "duration": "26.0",
         "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html"
     },
     {
@@ -1040,15 +1156,15 @@
         "name": "blink_perf.shadow_dom/v1-distribution.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v1-host-child-append.html"
     },
     {
-        "duration": "53.0",
+        "duration": "25.0",
         "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html"
     },
     {
-        "duration": "157.0",
+        "duration": "113.0",
         "name": "blink_perf.shadow_dom/v1-large-deep-layout.html"
     },
     {
@@ -1056,7 +1172,7 @@
         "name": "blink_perf.shadow_dom/v1-large-shallow-distribution.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v1-large-shallow-layout.html"
     },
     {
@@ -1068,7 +1184,7 @@
         "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-assigned-nodes.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-flatten.html"
     },
     {
@@ -1076,11 +1192,11 @@
         "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-re-layout.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-assigned-nodes.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-flatten.html"
     },
     {
@@ -1088,11 +1204,11 @@
         "name": "blink_perf.shadow_dom/v1-slot-append.html"
     },
     {
-        "duration": "12.0",
+        "duration": "10.0",
         "name": "blink_perf.shadow_dom/v1-small-deep-distribution.html"
     },
     {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "blink_perf.shadow_dom/v1-small-deep-layout.html"
     },
     {
@@ -1104,11 +1220,11 @@
         "name": "blink_perf.shadow_dom/v1-small-shallow-layout.html"
     },
     {
-        "duration": "18.0",
+        "duration": "13.0",
         "name": "blink_perf.svg/AzLizardBenjiPark.html"
     },
     {
-        "duration": "28.0",
+        "duration": "15.0",
         "name": "blink_perf.svg/Bamboo.html"
     },
     {
@@ -1124,11 +1240,11 @@
         "name": "blink_perf.svg/CrawFishGanson.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.svg/Debian.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.svg/DropsOnABlade.html"
     },
     {
@@ -1144,7 +1260,7 @@
         "name": "blink_perf.svg/France.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.svg/FrancoBolloGnomeEzechi.html"
     },
     {
@@ -1160,7 +1276,7 @@
         "name": "blink_perf.svg/HereGear.html"
     },
     {
-        "duration": "18.0",
+        "duration": "17.0",
         "name": "blink_perf.svg/MtSaintHelens.html"
     },
     {
@@ -1168,15 +1284,15 @@
         "name": "blink_perf.svg/Samurai.html"
     },
     {
-        "duration": "191.0",
+        "duration": "183.0",
         "name": "blink_perf.svg/SierpinskiCarpet.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "blink_perf.svg/SvgCubics.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "blink_perf.svg/SvgHitTesting.html"
     },
     {
@@ -1192,11 +1308,11 @@
         "name": "blink_perf.svg/WorldIso.html"
     },
     {
-        "duration": "15.0",
+        "duration": "16.0",
         "name": "blink_perf.svg/Worldcup.html"
     },
     {
-        "duration": "48.0",
+        "duration": "43.0",
         "name": "dromaeo/http://dromaeo.com?dom-attr"
     },
     {
@@ -1212,19 +1328,15 @@
         "name": "dromaeo/http://dromaeo.com?dom-traverse"
     },
     {
-        "duration": "22.0",
-        "name": "dummy_benchmark.histogram_benchmark_1/dummy_page.html"
-    },
-    {
-        "duration": "25.0",
+        "duration": "10.0",
         "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html"
     },
     {
-        "duration": "15.0",
+        "duration": "10.0",
         "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html"
     },
     {
-        "duration": "401.0",
+        "duration": "390.0",
         "name": "jetstream/http://browserbench.org/JetStream/"
     },
     {
@@ -1232,359 +1344,331 @@
         "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html"
     },
     {
-        "duration": "18.0",
+        "duration": "13.0",
         "name": "loading.mobile/58Pic"
     },
     {
-        "duration": "116.0",
+        "duration": "47.0",
         "name": "loading.mobile/58Pic_3g"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "loading.mobile/Amazon"
     },
     {
-        "duration": "256.0",
+        "duration": "75.0",
         "name": "loading.mobile/Amazon_3g"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "loading.mobile/BOLNoticias"
     },
     {
-        "duration": "20.0",
+        "duration": "14.0",
         "name": "loading.mobile/Baidu"
     },
     {
-        "duration": "202.0",
+        "duration": "67.0",
         "name": "loading.mobile/Baidu_3g"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "loading.mobile/Bradesco"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "loading.mobile/Dailymotion"
     },
     {
-        "duration": "27.0",
+        "duration": "17.0",
         "name": "loading.mobile/Dawn"
     },
     {
-        "duration": "16.0",
+        "duration": "11.0",
         "name": "loading.mobile/DevOpera_cold"
     },
     {
-        "duration": "174.0",
+        "duration": "56.0",
         "name": "loading.mobile/DevOpera_cold_3g"
     },
     {
-        "duration": "25.0",
+        "duration": "17.0",
         "name": "loading.mobile/DevOpera_hot"
     },
     {
-        "duration": "120.0",
+        "duration": "54.0",
         "name": "loading.mobile/DevOpera_hot_3g"
     },
     {
-        "duration": "33.0",
+        "duration": "14.0",
         "name": "loading.mobile/DevOpera_warm"
     },
     {
-        "duration": "115.0",
+        "duration": "51.0",
         "name": "loading.mobile/DevOpera_warm_3g"
     },
     {
-        "duration": "27.0",
+        "duration": "15.0",
         "name": "loading.mobile/Dramaq"
     },
     {
-        "duration": "122.0",
+        "duration": "75.0",
         "name": "loading.mobile/Dramaq_3g"
     },
     {
-        "duration": "16.0",
+        "duration": "10.0",
         "name": "loading.mobile/EnquiryIndianRail"
     },
     {
-        "duration": "152.0",
+        "duration": "40.0",
         "name": "loading.mobile/EnquiryIndianRail_3g"
     },
     {
-        "duration": "14.0",
+        "duration": "9.0",
         "name": "loading.mobile/Facebook"
     },
     {
-        "duration": "39.0",
-        "name": "loading.mobile/Facebook_3g"
-    },
-    {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "loading.mobile/FlipBoard_cold"
     },
     {
-        "duration": "29.0",
+        "duration": "19.0",
         "name": "loading.mobile/FlipBoard_hot"
     },
     {
-        "duration": "49.0",
+        "duration": "33.0",
         "name": "loading.mobile/FlipBoard_hot_3g"
     },
     {
-        "duration": "24.0",
+        "duration": "15.0",
         "name": "loading.mobile/FlipBoard_warm"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "loading.mobile/FlipKart_cold"
     },
     {
-        "duration": "40.0",
+        "duration": "24.0",
         "name": "loading.mobile/FlipKart_hot"
     },
     {
-        "duration": "37.0",
+        "duration": "31.0",
         "name": "loading.mobile/FlipKart_hot_3g"
     },
     {
-        "duration": "30.0",
+        "duration": "18.0",
         "name": "loading.mobile/FlipKart_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "loading.mobile/FranceTVInfo"
     },
     {
-        "duration": "165.0",
+        "duration": "94.0",
         "name": "loading.mobile/FranceTVInfo_3g"
     },
     {
-        "duration": "29.0",
+        "duration": "21.0",
         "name": "loading.mobile/GSShop"
     },
     {
-        "duration": "15.0",
+        "duration": "9.0",
         "name": "loading.mobile/GoogleBrazil"
     },
     {
-        "duration": "16.0",
+        "duration": "10.0",
         "name": "loading.mobile/GoogleIndia"
     },
     {
-        "duration": "15.0",
+        "duration": "9.0",
         "name": "loading.mobile/GoogleIndonesia"
     },
     {
-        "duration": "21.0",
+        "duration": "15.0",
         "name": "loading.mobile/GoogleRedirectToGoogleJapan"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "loading.mobile/Hongkiat"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "loading.mobile/KapanLagi"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "loading.mobile/LocalMoxie"
     },
     {
-        "duration": "17.0",
+        "duration": "10.0",
         "name": "loading.mobile/Locanto"
     },
     {
-        "duration": "69.0",
+        "duration": "33.0",
         "name": "loading.mobile/Locanto_3g"
     },
     {
-        "duration": "18.0",
+        "duration": "11.0",
         "name": "loading.mobile/OLX"
     },
     {
-        "duration": "16.0",
+        "duration": "17.0",
         "name": "loading.mobile/QQNews"
     },
     {
-        "duration": "252.0",
+        "duration": "85.0",
         "name": "loading.mobile/QQNews_3g"
     },
     {
-        "duration": "19.0",
+        "duration": "11.0",
         "name": "loading.mobile/SlideShare"
     },
     {
-        "duration": "164.0",
+        "duration": "82.0",
         "name": "loading.mobile/SlideShare_3g"
     },
     {
-        "duration": "15.0",
+        "duration": "10.0",
         "name": "loading.mobile/Suumo_cold"
     },
     {
-        "duration": "39.0",
+        "duration": "15.0",
         "name": "loading.mobile/Suumo_cold_3g"
     },
     {
-        "duration": "20.0",
+        "duration": "15.0",
         "name": "loading.mobile/Suumo_hot"
     },
     {
-        "duration": "28.0",
+        "duration": "16.0",
         "name": "loading.mobile/Suumo_hot_3g"
     },
     {
-        "duration": "17.0",
+        "duration": "12.0",
         "name": "loading.mobile/Suumo_warm"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "loading.mobile/Suumo_warm_3g"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "loading.mobile/Thairath"
     },
     {
-        "duration": "31.0",
+        "duration": "17.0",
         "name": "loading.mobile/TheStar"
     },
     {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "loading.mobile/TribunNews"
     },
     {
-        "duration": "17.0",
+        "duration": "10.0",
         "name": "loading.mobile/Twitter"
     },
     {
-        "duration": "159.0",
+        "duration": "38.0",
         "name": "loading.mobile/Twitter_3g"
     },
     {
-        "duration": "18.0",
+        "duration": "12.0",
         "name": "loading.mobile/VoiceMemos_cold"
     },
     {
-        "duration": "264.0",
+        "duration": "58.0",
         "name": "loading.mobile/VoiceMemos_cold_3g"
     },
     {
-        "duration": "25.0",
-        "name": "loading.mobile/VoiceMemos_hot"
-    },
-    {
-        "duration": "52.0",
-        "name": "loading.mobile/VoiceMemos_hot_3g"
-    },
-    {
-        "duration": "21.0",
-        "name": "loading.mobile/VoiceMemos_warm"
-    },
-    {
-        "duration": "48.0",
-        "name": "loading.mobile/VoiceMemos_warm_3g"
-    },
-    {
-        "duration": "15.0",
+        "duration": "10.0",
         "name": "loading.mobile/Wikipedia"
     },
     {
-        "duration": "229.0",
-        "name": "loading.mobile/Wikipedia_3g"
-    },
-    {
-        "duration": "24.0",
+        "duration": "17.0",
         "name": "loading.mobile/YahooNews"
     },
     {
-        "duration": "16.0",
+        "duration": "10.0",
         "name": "loading.mobile/Youtube"
     },
     {
-        "duration": "239.0",
-        "name": "memory.long_running_idle_gmail_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "23.0",
+        "duration": "18.0",
         "name": "memory.top_10_mobile/after_http_en_m_wikipedia_org_wiki_Science"
     },
     {
-        "duration": "23.0",
+        "duration": "17.0",
         "name": "memory.top_10_mobile/after_http_m_intl_taobao_com_group_purchase_html"
     },
     {
-        "duration": "23.0",
+        "duration": "18.0",
         "name": "memory.top_10_mobile/after_http_m_youtube_com_results_q_science"
     },
     {
-        "duration": "23.0",
+        "duration": "18.0",
         "name": "memory.top_10_mobile/after_http_search_yahoo_com_search__ylt_p_google"
     },
     {
-        "duration": "23.0",
+        "duration": "18.0",
         "name": "memory.top_10_mobile/after_http_www_amazon_com_gp_aw_s_k_nexus"
     },
     {
-        "duration": "23.0",
+        "duration": "18.0",
         "name": "memory.top_10_mobile/after_http_www_baidu_com_s_word_google"
     },
     {
-        "duration": "23.0",
+        "duration": "18.0",
         "name": "memory.top_10_mobile/after_http_yandex_ru_touchsearch_text_science"
     },
     {
-        "duration": "23.0",
+        "duration": "17.0",
         "name": "memory.top_10_mobile/after_https_m_facebook_com_rihanna"
     },
     {
-        "duration": "23.0",
+        "duration": "18.0",
         "name": "memory.top_10_mobile/after_https_mobile_twitter_com_justinbieber_skip_interstitial_true"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "memory.top_10_mobile/after_https_www_google_co_uk_hl_en_q_science"
     },
     {
-        "duration": "27.0",
+        "duration": "22.0",
         "name": "memory.top_10_mobile/http_en_m_wikipedia_org_wiki_Science"
     },
     {
-        "duration": "25.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/http_m_intl_taobao_com_group_purchase_html"
     },
     {
-        "duration": "26.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/http_m_youtube_com_results_q_science"
     },
     {
-        "duration": "25.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/http_search_yahoo_com_search__ylt_p_google"
     },
     {
-        "duration": "25.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/http_www_amazon_com_gp_aw_s_k_nexus"
     },
     {
-        "duration": "26.0",
+        "duration": "24.0",
         "name": "memory.top_10_mobile/http_www_baidu_com_s_word_google"
     },
     {
-        "duration": "26.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/http_yandex_ru_touchsearch_text_science"
     },
     {
-        "duration": "30.0",
+        "duration": "19.0",
         "name": "memory.top_10_mobile/https_m_facebook_com_rihanna"
     },
     {
-        "duration": "25.0",
+        "duration": "20.0",
         "name": "memory.top_10_mobile/https_mobile_twitter_com_justinbieber_skip_interstitial_true"
     },
     {
-        "duration": "29.0",
+        "duration": "21.0",
         "name": "memory.top_10_mobile/https_www_google_co_uk_hl_en_q_science"
     },
     {
@@ -1592,15 +1676,11 @@
         "name": "octane/http://chromium.github.io/octane/index.html?auto=1"
     },
     {
-        "duration": "25.0",
-        "name": "oortonline_tbmv2/http://oortonline.gl/#run"
-    },
-    {
         "duration": "61.0",
         "name": "power.typical_10_mobile/http://de.m.wikipedia.org/wiki/K%C3%B6lner_Dom"
     },
     {
-        "duration": "63.0",
+        "duration": "66.0",
         "name": "power.typical_10_mobile/http://m.chiebukuro.yahoo.co.jp/detail/q10136829180"
     },
     {
@@ -1608,11 +1688,11 @@
         "name": "power.typical_10_mobile/http://m.ebay.com/itm/351157205404"
     },
     {
-        "duration": "68.0",
+        "duration": "63.0",
         "name": "power.typical_10_mobile/http://m.facebook.com/barackobama"
     },
     {
-        "duration": "63.0",
+        "duration": "61.0",
         "name": "power.typical_10_mobile/http://m.huffpost.com/us/entry/6004486"
     },
     {
@@ -1624,7 +1704,7 @@
         "name": "power.typical_10_mobile/http://siriuslymeg.tumblr.com/"
     },
     {
-        "duration": "56.0",
+        "duration": "58.0",
         "name": "power.typical_10_mobile/http://wapbaike.baidu.com/"
     },
     {
@@ -1632,7 +1712,7 @@
         "name": "power.typical_10_mobile/http://www.cnn.com/2014/03/31/showbiz/tv/himym-finale/index.html"
     },
     {
-        "duration": "60.0",
+        "duration": "59.0",
         "name": "power.typical_10_mobile/http://www.rg.ru/2014/10/21/cska-site.html"
     },
     {
@@ -1644,7 +1724,7 @@
         "name": "rasterize_and_record_micro.partial_invalidation/800_relpos_divs.html"
     },
     {
-        "duration": "36.0",
+        "duration": "41.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html"
     },
     {
@@ -1652,11 +1732,11 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html"
     },
     {
-        "duration": "33.0",
+        "duration": "46.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html"
     },
     {
-        "duration": "21.0",
+        "duration": "22.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html"
     },
     {
@@ -1664,39 +1744,39 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/ebay.html"
     },
     {
-        "duration": "34.0",
+        "duration": "45.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html"
     },
     {
-        "duration": "28.0",
+        "duration": "41.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html"
     },
     {
-        "duration": "37.0",
+        "duration": "56.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html"
     },
     {
-        "duration": "42.0",
+        "duration": "60.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/google.html"
     },
     {
-        "duration": "32.0",
+        "duration": "52.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googlecalendar.html"
     },
     {
-        "duration": "25.0",
+        "duration": "28.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googledocs.html"
     },
     {
-        "duration": "37.0",
+        "duration": "43.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html"
     },
     {
-        "duration": "54.0",
+        "duration": "40.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html"
     },
     {
-        "duration": "24.0",
+        "duration": "34.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html"
     },
     {
@@ -1704,579 +1784,475 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html"
     },
     {
-        "duration": "40.0",
+        "duration": "31.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html"
     },
     {
-        "duration": "39.0",
+        "duration": "57.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html"
     },
     {
-        "duration": "21.0",
+        "duration": "23.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html"
     },
     {
-        "duration": "16.0",
+        "duration": "18.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html"
     },
     {
-        "duration": "23.0",
+        "duration": "37.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html"
     },
     {
-        "duration": "96.0",
+        "duration": "103.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html"
     },
     {
-        "duration": "49.0",
+        "duration": "59.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html"
     },
     {
-        "duration": "54.0",
+        "duration": "41.0",
         "name": "rendering.mobile/accu_weather_2018"
     },
     {
-        "duration": "38.0",
-        "name": "rendering.mobile/accu_weather_desktop_gpu_raster_2018"
+        "duration": "31.0",
+        "name": "rendering.mobile/accu_weather_mobile_pinch_2018"
     },
     {
-        "duration": "30.0",
+        "duration": "22.0",
         "name": "rendering.mobile/amazon_2018"
     },
     {
-        "duration": "29.0",
-        "name": "rendering.mobile/amazon_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "32.0",
+        "duration": "26.0",
         "name": "rendering.mobile/amazon_mobile_2018"
     },
     {
-        "duration": "24.0",
-        "name": "rendering.mobile/amazon_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "28.0",
+        "duration": "29.0",
         "name": "rendering.mobile/analog_clock_svg"
     },
     {
-        "duration": "48.0",
+        "duration": "39.0",
         "name": "rendering.mobile/androidpolice_mobile_2018"
     },
     {
-        "duration": "45.0",
-        "name": "rendering.mobile/androidpolice_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "rendering.mobile/animometer_webgl"
     },
     {
-        "duration": "43.0",
+        "duration": "26.0",
+        "name": "rendering.mobile/animometer_webgl_attrib_arrays"
+    },
+    {
+        "duration": "33.0",
+        "name": "rendering.mobile/animometer_webgl_multi_draw"
+    },
+    {
+        "duration": "37.0",
         "name": "rendering.mobile/aquarium"
     },
     {
-        "duration": "47.0",
+        "duration": "27.0",
         "name": "rendering.mobile/background_color_animation"
     },
     {
-        "duration": "29.0",
+        "duration": "41.0",
         "name": "rendering.mobile/background_color_animation_with_gradient"
     },
     {
-        "duration": "29.0",
+        "duration": "17.0",
         "name": "rendering.mobile/baidu_mobile_2018"
     },
     {
-        "duration": "22.0",
-        "name": "rendering.mobile/baidu_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "30.0",
+        "duration": "24.0",
         "name": "rendering.mobile/balls_css_key_frame_animations"
     },
     {
-        "duration": "29.0",
+        "duration": "21.0",
         "name": "rendering.mobile/balls_css_transition_2_properties"
     },
     {
-        "duration": "29.0",
+        "duration": "21.0",
         "name": "rendering.mobile/balls_css_transition_40_properties"
     },
     {
-        "duration": "29.0",
+        "duration": "21.0",
         "name": "rendering.mobile/balls_css_transition_all_properties"
     },
     {
-        "duration": "26.0",
+        "duration": "20.0",
         "name": "rendering.mobile/balls_javascript_canvas"
     },
     {
-        "duration": "28.0",
+        "duration": "22.0",
         "name": "rendering.mobile/balls_javascript_css"
     },
     {
-        "duration": "46.0",
+        "duration": "31.0",
         "name": "rendering.mobile/balls_svg_animations"
     },
     {
-        "duration": "30.0",
+        "duration": "24.0",
+        "name": "rendering.mobile/basic_stream"
+    },
+    {
+        "duration": "22.0",
         "name": "rendering.mobile/bing_mobile_2018"
     },
     {
-        "duration": "31.0",
-        "name": "rendering.mobile/bing_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "30.0",
+        "duration": "20.0",
         "name": "rendering.mobile/blob"
     },
     {
-        "duration": "27.0",
+        "duration": "22.0",
         "name": "rendering.mobile/blogspot_2018"
     },
     {
-        "duration": "22.0",
-        "name": "rendering.mobile/blogspot_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "28.0",
+        "duration": "14.0",
         "name": "rendering.mobile/blogspot_mobile_2018"
     },
     {
-        "duration": "21.0",
-        "name": "rendering.mobile/blogspot_mobile_sync_scroll_2018"
+        "duration": "27.0",
+        "name": "rendering.mobile/blur_rotating_background"
     },
     {
-        "duration": "29.0",
+        "duration": "20.0",
         "name": "rendering.mobile/boingboing_mobile_2018"
     },
     {
-        "duration": "31.0",
+        "duration": "18.0",
         "name": "rendering.mobile/booking.com_2018"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.mobile/booking.com_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.mobile/booking.com_mobile_2018"
     },
     {
-        "duration": "19.0",
-        "name": "rendering.mobile/booking.com_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "23.0",
+        "duration": "16.0",
         "name": "rendering.mobile/bouncing_balls_15"
     },
     {
-        "duration": "21.0",
+        "duration": "16.0",
         "name": "rendering.mobile/bouncing_clipped_rectangles"
     },
     {
-        "duration": "20.0",
+        "duration": "15.0",
         "name": "rendering.mobile/bouncing_gradient_circles"
     },
     {
-        "duration": "18.0",
+        "duration": "13.0",
         "name": "rendering.mobile/bouncing_png_images"
     },
     {
-        "duration": "26.0",
+        "duration": "19.0",
         "name": "rendering.mobile/bouncing_svg_images"
     },
     {
-        "duration": "30.0",
+        "duration": "22.0",
         "name": "rendering.mobile/camera_to_webgl"
     },
     {
-        "duration": "34.0",
-        "name": "rendering.mobile/canvas_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.mobile/canvas_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.mobile/canvas_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/canvas_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/canvas_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/canvas_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/canvas_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
         "duration": "21.0",
-        "name": "rendering.mobile/canvas_60000_pixels_per_second_desktop_gpu_raster"
+        "name": "rendering.mobile/canvas_05000_pixels_per_second"
     },
     {
-        "duration": "21.0",
-        "name": "rendering.mobile/canvas_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.mobile/canvas_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/canvas_animation_no_clear"
-    },
-    {
-        "duration": "21.0",
+        "duration": "15.0",
         "name": "rendering.mobile/canvas_arcs"
     },
     {
-        "duration": "20.0",
+        "duration": "15.0",
         "name": "rendering.mobile/canvas_font_cycler"
     },
     {
-        "duration": "20.0",
+        "duration": "15.0",
         "name": "rendering.mobile/canvas_lines"
     },
     {
-        "duration": "23.0",
+        "duration": "16.0",
         "name": "rendering.mobile/canvas_to_blob"
     },
     {
-        "duration": "45.0",
+        "duration": "28.0",
         "name": "rendering.mobile/capitolvolkswagen_mobile_2018"
     },
     {
-        "duration": "38.0",
-        "name": "rendering.mobile/capitolvolkswagen_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "30.0",
+        "duration": "16.0",
         "name": "rendering.mobile/card_expansion"
     },
     {
-        "duration": "32.0",
+        "duration": "18.0",
         "name": "rendering.mobile/card_expansion_animated"
     },
     {
-        "duration": "31.0",
+        "duration": "18.0",
         "name": "rendering.mobile/card_expansion_images_text"
     },
     {
-        "duration": "28.0",
+        "duration": "16.0",
         "name": "rendering.mobile/card_flying"
     },
     {
-        "duration": "19.0",
+        "duration": "10.0",
         "name": "rendering.mobile/cats_unscaled"
     },
     {
-        "duration": "17.0",
+        "duration": "8.0",
         "name": "rendering.mobile/cats_viewport_width"
     },
     {
-        "duration": "33.0",
+        "duration": "26.0",
         "name": "rendering.mobile/cc_poster_circle"
     },
     {
-        "duration": "30.0",
-        "name": "rendering.mobile/cc_scroll_200_layer_grid"
-    },
-    {
-        "duration": "22.0",
+        "duration": "17.0",
         "name": "rendering.mobile/cc_scroll_text_only"
     },
     {
-        "duration": "27.0",
+        "duration": "21.0",
         "name": "rendering.mobile/chip_tune"
     },
     {
-        "duration": "31.0",
+        "duration": "19.0",
         "name": "rendering.mobile/cnn_2018"
     },
     {
-        "duration": "41.0",
+        "duration": "26.0",
         "name": "rendering.mobile/cnn_article_mobile_2018"
     },
     {
-        "duration": "33.0",
-        "name": "rendering.mobile/cnn_article_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/cnn_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "29.0",
+        "duration": "23.0",
         "name": "rendering.mobile/cnn_mobile_2018"
     },
     {
-        "duration": "28.0",
-        "name": "rendering.mobile/cnn_mobile_sync_scroll_2018"
+        "duration": "29.0",
+        "name": "rendering.mobile/cnn_mobile_pinch_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "21.0",
         "name": "rendering.mobile/cnn_pathological_2018"
     },
     {
-        "duration": "30.0",
+        "duration": "22.0",
         "name": "rendering.mobile/compositor_heavy_animation"
     },
     {
-        "duration": "27.0",
+        "duration": "17.0",
         "name": "rendering.mobile/coordinated_animation"
     },
     {
-        "duration": "27.0",
+        "duration": "17.0",
         "name": "rendering.mobile/crafty_mind"
     },
     {
-        "duration": "33.0",
+        "duration": "26.0",
         "name": "rendering.mobile/css_animations_many_keyframes"
     },
     {
-        "duration": "30.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_animations_simultaneous_inline_style"
     },
     {
-        "duration": "31.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_animations_simultaneous_new_element"
     },
     {
-        "duration": "30.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_animations_simultaneous_style_element"
     },
     {
-        "duration": "30.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_animations_simultaneous_updating_class"
     },
     {
-        "duration": "28.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_animations_staggered_infinite_iterations"
     },
     {
-        "duration": "62.0",
+        "duration": "24.0",
         "name": "rendering.mobile/css_animations_staggered_inline_style"
     },
     {
-        "duration": "38.0",
+        "duration": "27.0",
         "name": "rendering.mobile/css_animations_staggered_new_element"
     },
     {
-        "duration": "35.0",
+        "duration": "25.0",
         "name": "rendering.mobile/css_animations_staggered_style_element"
     },
     {
-        "duration": "33.0",
+        "duration": "24.0",
         "name": "rendering.mobile/css_animations_staggered_updating_class"
     },
     {
-        "duration": "33.0",
+        "duration": "24.0",
         "name": "rendering.mobile/css_animations_triggered_inline_style"
     },
     {
-        "duration": "38.0",
+        "duration": "28.0",
         "name": "rendering.mobile/css_animations_triggered_new_element"
     },
     {
-        "duration": "32.0",
+        "duration": "23.0",
         "name": "rendering.mobile/css_animations_triggered_style_element"
     },
     {
-        "duration": "33.0",
+        "duration": "24.0",
         "name": "rendering.mobile/css_animations_triggered_updating_class"
     },
     {
-        "duration": "32.0",
+        "duration": "24.0",
         "name": "rendering.mobile/css_opacity_plus_n_layers_0"
     },
     {
-        "duration": "32.0",
+        "duration": "25.0",
         "name": "rendering.mobile/css_opacity_plus_n_layers_75"
     },
     {
-        "duration": "33.0",
+        "duration": "25.0",
         "name": "rendering.mobile/css_opacity_plus_n_layers_99"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_transitions_inline_style"
     },
     {
-        "duration": "31.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_transitions_new_element"
     },
     {
-        "duration": "31.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_transitions_staggered_inline_style"
     },
     {
-        "duration": "31.0",
+        "duration": "23.0",
         "name": "rendering.mobile/css_transitions_staggered_new_element"
     },
     {
-        "duration": "32.0",
+        "duration": "23.0",
         "name": "rendering.mobile/css_transitions_staggered_style_element"
     },
     {
-        "duration": "31.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_transitions_staggered_updating_class"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_transitions_style_element"
     },
     {
-        "duration": "32.0",
+        "duration": "23.0",
         "name": "rendering.mobile/css_transitions_triggered_inline_style"
     },
     {
-        "duration": "32.0",
+        "duration": "23.0",
         "name": "rendering.mobile/css_transitions_triggered_new_element"
     },
     {
-        "duration": "32.0",
+        "duration": "23.0",
         "name": "rendering.mobile/css_transitions_triggered_style_element"
     },
     {
-        "duration": "32.0",
+        "duration": "23.0",
         "name": "rendering.mobile/css_transitions_triggered_updating_class"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "rendering.mobile/css_transitions_updating_class"
     },
     {
-        "duration": "29.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_value_type_color"
     },
     {
-        "duration": "40.0",
+        "duration": "36.0",
         "name": "rendering.mobile/css_value_type_filter"
     },
     {
-        "duration": "27.0",
+        "duration": "20.0",
         "name": "rendering.mobile/css_value_type_length"
     },
     {
-        "duration": "29.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_value_type_length_complex"
     },
     {
-        "duration": "29.0",
+        "duration": "22.0",
         "name": "rendering.mobile/css_value_type_length_simple"
     },
     {
-        "duration": "28.0",
+        "duration": "27.0",
         "name": "rendering.mobile/css_value_type_path"
     },
     {
-        "duration": "51.0",
+        "duration": "45.0",
         "name": "rendering.mobile/css_value_type_shadow"
     },
     {
-        "duration": "27.0",
+        "duration": "20.0",
         "name": "rendering.mobile/css_value_type_transform_complex"
     },
     {
-        "duration": "27.0",
+        "duration": "20.0",
         "name": "rendering.mobile/css_value_type_transform_simple"
     },
     {
-        "duration": "42.0",
+        "duration": "23.0",
         "name": "rendering.mobile/deviantart_mobile_2018"
     },
     {
-        "duration": "34.0",
-        "name": "rendering.mobile/deviantart_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "26.0",
+        "duration": "18.0",
         "name": "rendering.mobile/digg_mobile_2018"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.mobile/digg_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "31.0",
+        "duration": "21.0",
         "name": "rendering.mobile/dynamic_cube_map"
     },
     {
-        "duration": "28.0",
+        "duration": "19.0",
         "name": "rendering.mobile/earth"
     },
     {
-        "duration": "31.0",
+        "duration": "19.0",
         "name": "rendering.mobile/ebay_2018"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.mobile/ebay_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "28.0",
+        "duration": "14.0",
         "name": "rendering.mobile/ebay_mobile_2018"
     },
     {
-        "duration": "21.0",
-        "name": "rendering.mobile/ebay_mobile_sync_scroll_2018"
+        "duration": "19.0",
+        "name": "rendering.mobile/ebay_mobile_pinch_2018"
     },
     {
-        "duration": "44.0",
+        "duration": "27.0",
         "name": "rendering.mobile/ebay_scroll_2018"
     },
     {
-        "duration": "34.0",
+        "duration": "19.0",
         "name": "rendering.mobile/espn_2018"
     },
     {
-        "duration": "30.0",
-        "name": "rendering.mobile/espn_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "32.0",
+        "duration": "18.0",
         "name": "rendering.mobile/espn_mobile_2018"
     },
     {
-        "duration": "24.0",
-        "name": "rendering.mobile/espn_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "27.0",
+        "duration": "17.0",
         "name": "rendering.mobile/espn_pathological_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "21.0",
         "name": "rendering.mobile/extra_large_texture_uploads"
     },
     {
-        "duration": "25.0",
+        "duration": "17.0",
         "name": "rendering.mobile/facebook_2018"
     },
     {
-        "duration": "21.0",
-        "name": "rendering.mobile/facebook_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "40.0",
+        "duration": "25.0",
         "name": "rendering.mobile/facebook_mobile_2018"
     },
     {
-        "duration": "31.0",
-        "name": "rendering.mobile/facebook_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "21.0",
+        "duration": "15.0",
         "name": "rendering.mobile/fill_shapes"
     },
     {
@@ -2284,1927 +2260,1803 @@
         "name": "rendering.mobile/filter_terrain_svg"
     },
     {
-        "duration": "41.0",
+        "duration": "26.0",
         "name": "rendering.mobile/flickr_scroll_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.mobile/font_wipe"
     },
     {
-        "duration": "29.0",
+        "duration": "15.0",
         "name": "rendering.mobile/forecast.io_mobile_2018"
     },
     {
-        "duration": "21.0",
-        "name": "rendering.mobile/forecast.io_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "rendering.mobile/geo_apis"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/gmail_2018"
     },
     {
-        "duration": "24.0",
-        "name": "rendering.mobile/gmail_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "21.0",
+        "duration": "15.0",
         "name": "rendering.mobile/google_calendar_2018"
     },
     {
-        "duration": "21.0",
-        "name": "rendering.mobile/google_calendar_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "31.0",
+        "duration": "25.0",
         "name": "rendering.mobile/google_docs_2018"
     },
     {
-        "duration": "32.0",
-        "name": "rendering.mobile/google_docs_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "26.0",
+        "duration": "19.0",
         "name": "rendering.mobile/google_image_search_2018"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.mobile/google_image_search_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "30.0",
+        "duration": "22.0",
         "name": "rendering.mobile/google_image_search_mobile_2018"
     },
     {
-        "duration": "29.0",
-        "name": "rendering.mobile/google_image_search_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "30.0",
+        "duration": "18.0",
         "name": "rendering.mobile/google_news_ios"
     },
     {
-        "duration": "26.0",
+        "duration": "18.0",
         "name": "rendering.mobile/google_news_mobile_2018"
     },
     {
-        "duration": "25.0",
-        "name": "rendering.mobile/google_news_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "30.0",
+        "duration": "24.0",
         "name": "rendering.mobile/google_plus_2018"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.mobile/google_plus_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "37.0",
+        "duration": "24.0",
         "name": "rendering.mobile/google_plus_mobile_2018"
     },
     {
-        "duration": "31.0",
-        "name": "rendering.mobile/google_plus_mobile_sync_scroll_2018"
+        "duration": "18.0",
+        "name": "rendering.mobile/google_search_mobile_pinch_2018"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "rendering.mobile/google_web_search_2018"
     },
     {
-        "duration": "19.0",
-        "name": "rendering.mobile/google_web_search_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "27.0",
+        "duration": "20.0",
         "name": "rendering.mobile/google_web_search_mobile_2018"
     },
     {
-        "duration": "25.0",
-        "name": "rendering.mobile/google_web_search_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "33.0",
+        "duration": "23.0",
         "name": "rendering.mobile/gsp.ro_mobile_2018"
     },
     {
-        "duration": "33.0",
-        "name": "rendering.mobile/gsp.ro_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "32.0",
+        "duration": "22.0",
         "name": "rendering.mobile/guardian_pathological_2018"
     },
     {
-        "duration": "36.0",
+        "duration": "25.0",
         "name": "rendering.mobile/guimark_vector_chart"
     },
     {
-        "duration": "23.0",
+        "duration": "17.0",
         "name": "rendering.mobile/gws_boogie_expansion"
     },
     {
-        "duration": "22.0",
+        "duration": "17.0",
         "name": "rendering.mobile/gws_google_expansion"
     },
     {
-        "duration": "25.0",
+        "duration": "16.0",
         "name": "rendering.mobile/hakim"
     },
     {
-        "duration": "30.0",
+        "duration": "17.0",
         "name": "rendering.mobile/horizontal_vertical_expansion"
     },
     {
-        "duration": "41.0",
+        "duration": "43.0",
         "name": "rendering.mobile/idle_power_animated_gif"
     },
     {
-        "duration": "35.0",
+        "duration": "30.0",
         "name": "rendering.mobile/idle_power_blank"
     },
     {
-        "duration": "44.0",
+        "duration": "37.0",
         "name": "rendering.mobile/idle_power_css_animation"
     },
     {
-        "duration": "51.0",
+        "duration": "38.0",
         "name": "rendering.mobile/idle_power_request_animation_frame"
     },
     {
-        "duration": "140.0",
+        "duration": "116.0",
         "name": "rendering.mobile/idle_power_set_timeout_long"
     },
     {
-        "duration": "52.0",
+        "duration": "38.0",
         "name": "rendering.mobile/idle_power_set_timetout"
     },
     {
-        "duration": "41.0",
+        "duration": "36.0",
         "name": "rendering.mobile/ie_chalkboard"
     },
     {
-        "duration": "48.0",
+        "duration": "29.0",
         "name": "rendering.mobile/ie_pirate_mark"
     },
     {
-        "duration": "30.0",
+        "duration": "23.0",
         "name": "rendering.mobile/infinite_scroll_element_n_layers_0"
     },
     {
-        "duration": "30.0",
+        "duration": "24.0",
         "name": "rendering.mobile/infinite_scroll_element_n_layers_75"
     },
     {
-        "duration": "31.0",
+        "duration": "24.0",
         "name": "rendering.mobile/infinite_scroll_element_n_layers_99"
     },
     {
-        "duration": "30.0",
+        "duration": "23.0",
+        "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_0"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_75"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_99"
+    },
+    {
+        "duration": "23.0",
         "name": "rendering.mobile/infinite_scroll_root_n_layers_0"
     },
     {
-        "duration": "30.0",
+        "duration": "24.0",
         "name": "rendering.mobile/infinite_scroll_root_n_layers_75"
     },
     {
-        "duration": "31.0",
+        "duration": "24.0",
         "name": "rendering.mobile/infinite_scroll_root_n_layers_99"
     },
     {
-        "duration": "35.0",
+        "duration": "21.0",
         "name": "rendering.mobile/infinite_scrolling"
     },
     {
-        "duration": "62.0",
+        "duration": "22.0",
         "name": "rendering.mobile/jarro_doverson"
     },
     {
-        "duration": "58.0",
+        "duration": "44.0",
         "name": "rendering.mobile/js_full_screen_invalidation"
     },
     {
-        "duration": "36.0",
+        "duration": "26.0",
         "name": "rendering.mobile/js_opacity_plus_n_layers_0"
     },
     {
-        "duration": "36.0",
+        "duration": "27.0",
         "name": "rendering.mobile/js_opacity_plus_n_layers_75"
     },
     {
-        "duration": "36.0",
+        "duration": "27.0",
         "name": "rendering.mobile/js_opacity_plus_n_layers_99"
     },
     {
-        "duration": "39.0",
+        "duration": "28.0",
         "name": "rendering.mobile/js_paint_plus_n_layers_0"
     },
     {
-        "duration": "38.0",
+        "duration": "28.0",
         "name": "rendering.mobile/js_paint_plus_n_layers_75"
     },
     {
-        "duration": "39.0",
+        "duration": "28.0",
         "name": "rendering.mobile/js_paint_plus_n_layers_99"
     },
     {
-        "duration": "38.0",
+        "duration": "27.0",
         "name": "rendering.mobile/js_poster_circle"
     },
     {
-        "duration": "30.0",
-        "name": "rendering.mobile/js_scroll_200_layer_grid"
-    },
-    {
-        "duration": "30.0",
+        "duration": "13.0",
         "name": "rendering.mobile/js_scroll_text_only"
     },
     {
-        "duration": "35.0",
+        "duration": "21.0",
         "name": "rendering.mobile/keyframed_animations"
     },
     {
-        "duration": "33.0",
+        "duration": "22.0",
         "name": "rendering.mobile/large_texture_uploads"
     },
     {
-        "duration": "45.0",
+        "duration": "27.0",
         "name": "rendering.mobile/latimes_pathological_2018"
     },
     {
-        "duration": "48.0",
+        "duration": "22.0",
         "name": "rendering.mobile/linkedin_2018"
     },
     {
-        "duration": "41.0",
-        "name": "rendering.mobile/linkedin_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "67.0",
+        "duration": "53.0",
         "name": "rendering.mobile/linkedin_mobile_2018"
     },
     {
-        "duration": "54.0",
-        "name": "rendering.mobile/linkedin_mobile_sync_scroll_2018"
+        "duration": "43.0",
+        "name": "rendering.mobile/linkedin_mobile_pinch_2018"
     },
     {
-        "duration": "37.0",
+        "duration": "41.0",
         "name": "rendering.mobile/linkedin_pathological_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "rendering.mobile/list_animation_simple"
     },
     {
-        "duration": "38.0",
+        "duration": "22.0",
         "name": "rendering.mobile/list_recycle_transform"
     },
     {
-        "duration": "30.0",
+        "duration": "16.0",
         "name": "rendering.mobile/man_in_blue"
     },
     {
-        "duration": "36.0",
+        "duration": "23.0",
         "name": "rendering.mobile/many_images"
     },
     {
-        "duration": "34.0",
+        "duration": "19.0",
         "name": "rendering.mobile/many_planets_deep"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/mask_transition_animation"
     },
     {
-        "duration": "39.0",
+        "duration": "19.0",
+        "name": "rendering.mobile/masonry"
+    },
+    {
+        "duration": "23.0",
         "name": "rendering.mobile/medium_texture_uploads"
     },
     {
-        "duration": "29.0",
+        "duration": "15.0",
         "name": "rendering.mobile/megi_dish"
     },
     {
-        "duration": "33.0",
+        "duration": "20.0",
         "name": "rendering.mobile/microsoft_asteroid_belt"
     },
     {
-        "duration": "31.0",
-        "name": "rendering.mobile/microsoft_fireflies"
-    },
-    {
-        "duration": "31.0",
+        "duration": "19.0",
         "name": "rendering.mobile/microsoft_fish_ie_tank"
     },
     {
-        "duration": "30.0",
+        "duration": "22.0",
+        "name": "rendering.mobile/microsoft_performance"
+    },
+    {
+        "duration": "18.0",
         "name": "rendering.mobile/microsoft_snow"
     },
     {
-        "duration": "25.0",
+        "duration": "16.0",
         "name": "rendering.mobile/microsoft_speed_reading"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.mobile/microsoft_tweet_map"
     },
     {
-        "duration": "32.0",
+        "duration": "21.0",
         "name": "rendering.mobile/microsoft_video_city"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.mobile/microsoft_worker_fountains"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "rendering.mobile/mix_10k"
     },
     {
-        "duration": "37.0",
+        "duration": "27.0",
         "name": "rendering.mobile/mix_blend_mode_animation_difference"
     },
     {
-        "duration": "37.0",
+        "duration": "27.0",
         "name": "rendering.mobile/mix_blend_mode_animation_hue"
     },
     {
-        "duration": "43.0",
+        "duration": "26.0",
         "name": "rendering.mobile/mix_blend_mode_animation_propagating_isolation"
     },
     {
-        "duration": "35.0",
+        "duration": "25.0",
         "name": "rendering.mobile/mix_blend_mode_animation_screen"
     },
     {
-        "duration": "54.0",
+        "duration": "28.0",
         "name": "rendering.mobile/mlb_mobile_2018"
     },
     {
-        "duration": "41.0",
-        "name": "rendering.mobile/mlb_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "rendering.mobile/mobile_news_sandbox"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "rendering.mobile/motion_mark_canvas_fill_shapes"
     },
     {
-        "duration": "29.0",
+        "duration": "21.0",
         "name": "rendering.mobile/motion_mark_canvas_stroke_shapes"
     },
     {
-        "duration": "37.0",
-        "name": "rendering.mobile/motion_mark_focus"
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_anim_design_15"
     },
     {
-        "duration": "49.0",
+        "duration": "18.0",
+        "name": "rendering.mobile/motionmark_anim_focus_25"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/motionmark_anim_images_50"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_anim_leaves_250"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_anim_multiply_175"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_anim_suits_125"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_html_composited_transforms_125"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_blend_circles_25"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_circles_250"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_clipped_rects_100"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_filter_circles_15"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_gradient_circles_250"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_svg_images_50"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/motionmark_html_css_bouncing_tagged_images_225"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_html_dom_particles_svg_masks_25"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_html_focus_20_15"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/motionmark_html_leaves_20_50"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/motionmark_svg_bouncing_circles_250"
+    },
+    {
+        "duration": "19.0",
+        "name": "rendering.mobile/motionmark_svg_bouncing_clipped_rects_100"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/motionmark_svg_bouncing_gradient_circles_200"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.mobile/motionmark_svg_bouncing_png_images_200"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.mobile/motionmark_svg_bouncing_svg_images_50"
+    },
+    {
+        "duration": "30.0",
         "name": "rendering.mobile/new_tilings"
     },
     {
-        "duration": "34.0",
+        "duration": "21.0",
         "name": "rendering.mobile/no_op_raf"
     },
     {
-        "duration": "25.0",
+        "duration": "17.0",
         "name": "rendering.mobile/no_op_scroll"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "rendering.mobile/no_op_settimeout"
     },
     {
-        "duration": "27.0",
+        "duration": "18.0",
         "name": "rendering.mobile/no_op_touch_handler"
     },
     {
-        "duration": "36.0",
+        "duration": "21.0",
         "name": "rendering.mobile/nvidia_vertex_buffer_object"
     },
     {
-        "duration": "45.0",
+        "duration": "28.0",
         "name": "rendering.mobile/nyc_gov_scroll_2018"
     },
     {
-        "duration": "53.0",
+        "duration": "28.0",
         "name": "rendering.mobile/nytimes_mobile_2018"
     },
     {
-        "duration": "47.0",
+        "duration": "30.0",
         "name": "rendering.mobile/nytimes_scroll_2018"
     },
     {
-        "duration": "51.0",
+        "duration": "24.0",
         "name": "rendering.mobile/overlay_background_color_css_transitions_page"
     },
     {
-        "duration": "32.0",
+        "duration": "19.0",
         "name": "rendering.mobile/parallax_effect"
     },
     {
-        "duration": "38.0",
+        "duration": "21.0",
         "name": "rendering.mobile/particles"
     },
     {
-        "duration": "35.0",
+        "duration": "19.0",
         "name": "rendering.mobile/pbs_pathological_2018"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "rendering.mobile/physical_simulation"
     },
     {
-        "duration": "43.0",
+        "duration": "22.0",
         "name": "rendering.mobile/pinterest_2018"
     },
     {
-        "duration": "35.0",
-        "name": "rendering.mobile/pinterest_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "30.0",
+        "duration": "10.0",
         "name": "rendering.mobile/pinterest_mobile_2018"
     },
     {
-        "duration": "18.0",
-        "name": "rendering.mobile/pinterest_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "25.0",
+        "duration": "16.0",
         "name": "rendering.mobile/put_get_image_data"
     },
     {
-        "duration": "35.0",
+        "duration": "20.0",
         "name": "rendering.mobile/raf"
     },
     {
-        "duration": "34.0",
+        "duration": "20.0",
         "name": "rendering.mobile/raf_animation"
     },
     {
-        "duration": "35.0",
+        "duration": "28.0",
         "name": "rendering.mobile/raf_canvas"
     },
     {
-        "duration": "35.0",
+        "duration": "20.0",
         "name": "rendering.mobile/raf_touch_animation"
     },
     {
-        "duration": "42.0",
+        "duration": "25.0",
         "name": "rendering.mobile/recode_pathological_2018"
     },
     {
-        "duration": "48.0",
+        "duration": "33.0",
         "name": "rendering.mobile/reddit_mobile_2018"
     },
     {
-        "duration": "31.0",
+        "duration": "17.0",
         "name": "rendering.mobile/runway"
     },
     {
-        "duration": "38.0",
+        "duration": "22.0",
         "name": "rendering.mobile/san_angeles"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "rendering.mobile/second_batch_js_heavy"
     },
     {
-        "duration": "20.0",
+        "duration": "11.0",
         "name": "rendering.mobile/second_batch_js_light"
     },
     {
-        "duration": "20.0",
+        "duration": "11.0",
         "name": "rendering.mobile/second_batch_js_medium"
     },
     {
-        "duration": "51.0",
+        "duration": "23.0",
         "name": "rendering.mobile/sfgate_mobile_2018"
     },
     {
-        "duration": "41.0",
-        "name": "rendering.mobile/sfgate_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "43.0",
+        "duration": "27.0",
         "name": "rendering.mobile/silk_finance"
     },
     {
-        "duration": "29.0",
+        "duration": "18.0",
         "name": "rendering.mobile/simple_text_page"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "rendering.mobile/simple_touch_drag"
     },
     {
-        "duration": "50.0",
+        "duration": "23.0",
         "name": "rendering.mobile/slashdot_mobile_2018"
     },
     {
-        "duration": "38.0",
+        "duration": "14.0",
+        "name": "rendering.mobile/slide_drawer"
+    },
+    {
+        "duration": "23.0",
         "name": "rendering.mobile/small_texture_uploads"
     },
     {
-        "duration": "30.0",
+        "duration": "15.0",
         "name": "rendering.mobile/spielzeugz"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "rendering.mobile/sticky_using_webkit"
     },
     {
-        "duration": "39.0",
+        "duration": "24.0",
         "name": "rendering.mobile/stress_hidey_bars"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "rendering.mobile/stroke_shapes"
     },
     {
-        "duration": "37.0",
+        "duration": "26.0",
         "name": "rendering.mobile/svg_icon_raster"
     },
     {
-        "duration": "29.0",
+        "duration": "11.0",
+        "name": "rendering.mobile/swipe_action"
+    },
+    {
+        "duration": "17.0",
         "name": "rendering.mobile/swipe_to_dismiss"
     },
     {
-        "duration": "28.0",
+        "duration": "17.0",
         "name": "rendering.mobile/sync_scroll_offset"
     },
     {
-        "duration": "50.0",
+        "duration": "30.0",
         "name": "rendering.mobile/techcrunch_2018"
     },
     {
-        "duration": "44.0",
-        "name": "rendering.mobile/techcrunch_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "53.0",
+        "duration": "25.0",
         "name": "rendering.mobile/techcrunch_mobile_2018"
     },
     {
-        "duration": "43.0",
-        "name": "rendering.mobile/techcrunch_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "30.0",
+        "duration": "19.0",
         "name": "rendering.mobile/text_05000_pixels_per_second"
     },
     {
-        "duration": "30.0",
-        "name": "rendering.mobile/text_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "30.0",
+        "duration": "19.0",
         "name": "rendering.mobile/text_10000_pixels_per_second"
     },
     {
-        "duration": "31.0",
-        "name": "rendering.mobile/text_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/text_15000_pixels_per_second"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.mobile/text_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.mobile/text_20000_pixels_per_second"
     },
     {
-        "duration": "24.0",
-        "name": "rendering.mobile/text_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.mobile/text_30000_pixels_per_second"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/text_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "rendering.mobile/text_40000_pixels_per_second"
     },
     {
-        "duration": "21.0",
-        "name": "rendering.mobile/text_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.mobile/text_50000_pixels_per_second"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.mobile/text_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "19.0",
+        "duration": "11.0",
         "name": "rendering.mobile/text_60000_pixels_per_second"
     },
     {
-        "duration": "19.0",
-        "name": "rendering.mobile/text_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "19.0",
+        "duration": "10.0",
         "name": "rendering.mobile/text_75000_pixels_per_second"
     },
     {
-        "duration": "19.0",
-        "name": "rendering.mobile/text_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "18.0",
+        "duration": "10.0",
         "name": "rendering.mobile/text_90000_pixels_per_second"
     },
     {
-        "duration": "18.0",
-        "name": "rendering.mobile/text_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "33.0",
+        "duration": "20.0",
         "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second"
     },
     {
-        "duration": "31.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "33.0",
+        "duration": "20.0",
         "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second"
     },
     {
-        "duration": "32.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second"
     },
     {
-        "duration": "22.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second"
     },
     {
-        "duration": "21.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second"
     },
     {
-        "duration": "20.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second"
     },
     {
-        "duration": "20.0",
-        "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "rendering.mobile/text_hover_05000_pixels_per_second"
     },
     {
-        "duration": "22.0",
-        "name": "rendering.mobile/text_hover_05000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "rendering.mobile/text_hover_10000_pixels_per_second"
     },
     {
-        "duration": "22.0",
-        "name": "rendering.mobile/text_hover_10000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/text_hover_15000_pixels_per_second"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.mobile/text_hover_15000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "58.0",
+        "duration": "12.0",
         "name": "rendering.mobile/text_hover_20000_pixels_per_second"
     },
     {
-        "duration": "19.0",
-        "name": "rendering.mobile/text_hover_20000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "18.0",
-        "name": "rendering.mobile/text_hover_30000_pixels_per_second"
-    },
-    {
-        "duration": "18.0",
-        "name": "rendering.mobile/text_hover_30000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "18.0",
+        "duration": "10.0",
         "name": "rendering.mobile/text_hover_40000_pixels_per_second"
     },
     {
-        "duration": "18.0",
-        "name": "rendering.mobile/text_hover_40000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.mobile/text_hover_50000_pixels_per_second"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.mobile/text_hover_50000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "17.0",
+        "duration": "10.0",
         "name": "rendering.mobile/text_hover_60000_pixels_per_second"
     },
     {
-        "duration": "17.0",
-        "name": "rendering.mobile/text_hover_60000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "17.0",
+        "duration": "10.0",
         "name": "rendering.mobile/text_hover_75000_pixels_per_second"
     },
     {
-        "duration": "16.0",
-        "name": "rendering.mobile/text_hover_75000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "16.0",
+        "duration": "9.0",
         "name": "rendering.mobile/text_hover_90000_pixels_per_second"
     },
     {
-        "duration": "17.0",
-        "name": "rendering.mobile/text_hover_90000_pixels_per_second_desktop_gpu_raster"
-    },
-    {
-        "duration": "44.0",
+        "duration": "25.0",
         "name": "rendering.mobile/theverge_article_mobile_2018"
     },
     {
-        "duration": "43.0",
-        "name": "rendering.mobile/theverge_article_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "55.0",
+        "duration": "24.0",
         "name": "rendering.mobile/theverge_mobile_2018"
     },
     {
-        "duration": "43.0",
-        "name": "rendering.mobile/theverge_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "30.0",
+        "duration": "19.0",
         "name": "rendering.mobile/toggle_drawer"
     },
     {
-        "duration": "31.0",
+        "duration": "18.0",
         "name": "rendering.mobile/touch_handler_scrolling"
     },
     {
-        "duration": "38.0",
+        "duration": "22.0",
         "name": "rendering.mobile/transform_transitions"
     },
     {
-        "duration": "34.0",
+        "duration": "21.0",
         "name": "rendering.mobile/transform_transitions_js_block"
     },
     {
-        "duration": "42.0",
+        "duration": "20.0",
         "name": "rendering.mobile/twitch_2018"
     },
     {
-        "duration": "34.0",
-        "name": "rendering.mobile/twitch_desktop_gpu_raster_2018"
+        "duration": "24.0",
+        "name": "rendering.mobile/twitch_mobile_pinch_2018"
     },
     {
-        "duration": "40.0",
+        "duration": "27.0",
         "name": "rendering.mobile/twitter_2018"
     },
     {
-        "duration": "42.0",
-        "name": "rendering.mobile/twitter_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "40.0",
+        "duration": "13.0",
         "name": "rendering.mobile/twitter_mobile_2018"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.mobile/twitter_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "33.0",
+        "duration": "19.0",
         "name": "rendering.mobile/update_history_state"
     },
     {
-        "duration": "28.0",
+        "duration": "15.0",
         "name": "rendering.mobile/usatoday_mobile_2018"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.mobile/usatoday_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "32.0",
+        "duration": "19.0",
         "name": "rendering.mobile/vertical_expansion"
     },
     {
-        "duration": "35.0",
+        "duration": "22.0",
         "name": "rendering.mobile/web_animation_value_type_color"
     },
     {
-        "duration": "32.0",
+        "duration": "21.0",
         "name": "rendering.mobile/web_animation_value_type_length_3d"
     },
     {
-        "duration": "34.0",
+        "duration": "22.0",
         "name": "rendering.mobile/web_animation_value_type_length_complex"
     },
     {
-        "duration": "35.0",
+        "duration": "22.0",
         "name": "rendering.mobile/web_animation_value_type_length_simple"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "rendering.mobile/web_animation_value_type_path"
     },
     {
-        "duration": "55.0",
+        "duration": "45.0",
         "name": "rendering.mobile/web_animation_value_type_shadow"
     },
     {
-        "duration": "31.0",
+        "duration": "21.0",
         "name": "rendering.mobile/web_animation_value_type_transform_complex"
     },
     {
-        "duration": "32.0",
+        "duration": "21.0",
         "name": "rendering.mobile/web_animation_value_type_transform_simple"
     },
     {
-        "duration": "46.0",
+        "duration": "34.0",
         "name": "rendering.mobile/web_animations_many_keyframes"
     },
     {
-        "duration": "32.0",
+        "duration": "21.0",
         "name": "rendering.mobile/web_animations_set_current_time"
     },
     {
-        "duration": "35.0",
+        "duration": "21.0",
         "name": "rendering.mobile/web_animations_simultaneous"
     },
     {
-        "duration": "39.0",
+        "duration": "24.0",
         "name": "rendering.mobile/web_animations_staggered_chaining"
     },
     {
-        "duration": "32.0",
+        "duration": "21.0",
         "name": "rendering.mobile/web_animations_staggered_infinite_iterations"
     },
     {
-        "duration": "38.0",
+        "duration": "24.0",
         "name": "rendering.mobile/web_animations_staggered_triggering_page"
     },
     {
-        "duration": "46.0",
+        "duration": "27.0",
         "name": "rendering.mobile/wikipedia_2018"
     },
     {
-        "duration": "47.0",
+        "duration": "24.0",
         "name": "rendering.mobile/wikipedia_delayed_scroll_start_2018"
     },
     {
-        "duration": "38.0",
-        "name": "rendering.mobile/wikipedia_delayed_scroll_start_sync_scroll_2018"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.mobile/wikipedia_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "37.0",
+        "duration": "24.0",
         "name": "rendering.mobile/wikipedia_mobile_2018"
     },
     {
-        "duration": "37.0",
-        "name": "rendering.mobile/wikipedia_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "46.0",
+        "duration": "24.0",
         "name": "rendering.mobile/wordpress_2018"
     },
     {
-        "duration": "40.0",
-        "name": "rendering.mobile/wordpress_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "49.0",
+        "duration": "22.0",
         "name": "rendering.mobile/wordpress_mobile_2018"
     },
     {
-        "duration": "39.0",
-        "name": "rendering.mobile/wordpress_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "38.0",
+        "duration": "23.0",
         "name": "rendering.mobile/worldjournal_mobile_2018"
     },
     {
-        "duration": "38.0",
-        "name": "rendering.mobile/worldjournal_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "43.0",
+        "duration": "27.0",
         "name": "rendering.mobile/wow_wiki_pathological_2018"
     },
     {
-        "duration": "74.0",
+        "duration": "42.0",
         "name": "rendering.mobile/wowwiki_mobile_2018"
     },
     {
-        "duration": "64.0",
-        "name": "rendering.mobile/wowwiki_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "54.0",
+        "duration": "28.0",
         "name": "rendering.mobile/wsj_mobile_2018"
     },
     {
-        "duration": "43.0",
-        "name": "rendering.mobile/wsj_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "33.0",
+        "duration": "14.0",
         "name": "rendering.mobile/yahoo_answers_2018"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.mobile/yahoo_answers_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "29.0",
+        "duration": "19.0",
         "name": "rendering.mobile/yahoo_news_2018"
     },
     {
-        "duration": "43.0",
-        "name": "rendering.mobile/yahoo_news_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "43.0",
+        "duration": "14.0",
         "name": "rendering.mobile/yahoo_news_mobile_2018"
     },
     {
-        "duration": "34.0",
-        "name": "rendering.mobile/yahoo_news_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "39.0",
+        "duration": "22.0",
         "name": "rendering.mobile/yahoo_sports_2018"
     },
     {
-        "duration": "32.0",
-        "name": "rendering.mobile/yahoo_sports_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "rendering.mobile/yahoo_sports_pathological_2018"
     },
     {
-        "duration": "39.0",
+        "duration": "21.0",
         "name": "rendering.mobile/youtube_2018"
     },
     {
-        "duration": "32.0",
-        "name": "rendering.mobile/youtube_desktop_gpu_raster_2018"
-    },
-    {
-        "duration": "31.0",
+        "duration": "13.0",
         "name": "rendering.mobile/youtube_mobile_2018"
     },
     {
-        "duration": "21.0",
-        "name": "rendering.mobile/youtube_mobile_sync_scroll_2018"
-    },
-    {
-        "duration": "38.0",
+        "duration": "32.0",
         "name": "rendering.mobile/yuv_decoding"
     },
     {
-        "duration": "39.0",
+        "duration": "32.0",
         "name": "rendering.mobile/yuv_decoding_gpu_rasterization_and_decoding"
     },
     {
-        "duration": "33.0",
+        "duration": "21.0",
         "name": "rendering.mobile/zdnet_pathological_2018"
     },
     {
-        "duration": "30.0",
+        "duration": "17.0",
         "name": "rendering.mobile/zoom_in_animation"
     },
     {
-        "duration": "38.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/accu_weather_pinch_2018"
-    },
-    {
-        "duration": "26.0",
+        "duration": "23.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/amazon_pinch_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/blogspot_pinch_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "20.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/booking_pinch_2018"
     },
     {
-        "duration": "27.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/cnn_pinch_2018"
-    },
-    {
-        "duration": "21.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/ebay_pinch_2018"
-    },
-    {
-        "duration": "29.0",
+        "duration": "22.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/espn_pinch_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "23.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/facebook_pinch_2018"
     },
     {
-        "duration": "44.0",
+        "duration": "40.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/gmail_pinch_2018"
     },
     {
-        "duration": "31.0",
+        "duration": "19.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_calendar_pinch_2018"
     },
     {
-        "duration": "20.0",
+        "duration": "15.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_image_pinch_2018"
     },
     {
-        "duration": "36.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_search_pinch_2018"
-    },
-    {
-        "duration": "36.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/linkedin_pinch_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/twitch_pinch_2018"
-    },
-    {
-        "duration": "25.0",
+        "duration": "21.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/twitter_pinch_2018"
     },
     {
-        "duration": "28.0",
+        "duration": "27.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_news_pinch_2018"
     },
     {
-        "duration": "32.0",
+        "duration": "29.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_sports_pinch_2018"
     },
     {
-        "duration": "28.0",
+        "duration": "24.0",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/youtube_pinch_2018"
     },
     {
-        "duration": "38.0",
-        "name": "smoothness.tough_pinch_zoom_cases/accu_weather_pinch_2018"
-    },
-    {
-        "duration": "26.0",
+        "duration": "23.0",
         "name": "smoothness.tough_pinch_zoom_cases/amazon_pinch_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "smoothness.tough_pinch_zoom_cases/blogspot_pinch_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "20.0",
         "name": "smoothness.tough_pinch_zoom_cases/booking_pinch_2018"
     },
     {
-        "duration": "27.0",
-        "name": "smoothness.tough_pinch_zoom_cases/cnn_pinch_2018"
-    },
-    {
-        "duration": "21.0",
-        "name": "smoothness.tough_pinch_zoom_cases/ebay_pinch_2018"
-    },
-    {
-        "duration": "29.0",
+        "duration": "22.0",
         "name": "smoothness.tough_pinch_zoom_cases/espn_pinch_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "23.0",
         "name": "smoothness.tough_pinch_zoom_cases/facebook_pinch_2018"
     },
     {
-        "duration": "44.0",
+        "duration": "40.0",
         "name": "smoothness.tough_pinch_zoom_cases/gmail_pinch_2018"
     },
     {
-        "duration": "31.0",
+        "duration": "19.0",
         "name": "smoothness.tough_pinch_zoom_cases/google_calendar_pinch_2018"
     },
     {
-        "duration": "20.0",
+        "duration": "15.0",
         "name": "smoothness.tough_pinch_zoom_cases/google_image_pinch_2018"
     },
     {
-        "duration": "36.0",
-        "name": "smoothness.tough_pinch_zoom_cases/google_search_pinch_2018"
-    },
-    {
-        "duration": "35.0",
-        "name": "smoothness.tough_pinch_zoom_cases/linkedin_pinch_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "smoothness.tough_pinch_zoom_cases/twitch_pinch_2018"
-    },
-    {
-        "duration": "25.0",
+        "duration": "21.0",
         "name": "smoothness.tough_pinch_zoom_cases/twitter_pinch_2018"
     },
     {
-        "duration": "28.0",
+        "duration": "27.0",
         "name": "smoothness.tough_pinch_zoom_cases/yahoo_news_pinch_2018"
     },
     {
-        "duration": "32.0",
+        "duration": "29.0",
         "name": "smoothness.tough_pinch_zoom_cases/yahoo_sports_pinch_2018"
     },
     {
-        "duration": "28.0",
+        "duration": "24.0",
         "name": "smoothness.tough_pinch_zoom_cases/youtube_pinch_2018"
     },
     {
-        "duration": "94.0",
+        "duration": "86.0",
         "name": "speedometer-future/http://browserbench.org/Speedometer/"
     },
     {
-        "duration": "94.0",
+        "duration": "85.0",
         "name": "speedometer/http://browserbench.org/Speedometer/"
     },
     {
-        "duration": "152.0",
+        "duration": "137.0",
         "name": "speedometer2-future/Speedometer2"
     },
     {
-        "duration": "151.0",
+        "duration": "135.0",
         "name": "speedometer2/Speedometer2"
     },
     {
-        "duration": "27.0",
+        "duration": "20.0",
         "name": "system_health.common_mobile/background:media:imgur"
     },
     {
-        "duration": "50.0",
+        "duration": "40.0",
         "name": "system_health.common_mobile/background:news:nytimes"
     },
     {
-        "duration": "30.0",
+        "duration": "22.0",
         "name": "system_health.common_mobile/background:search:google"
     },
     {
-        "duration": "47.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/background:social:facebook"
     },
     {
-        "duration": "39.0",
-        "name": "system_health.common_mobile/background:tools:gmail"
-    },
-    {
         "duration": "10.0",
         "name": "system_health.common_mobile/browse:chrome:newtab"
     },
     {
-        "duration": "10.0",
+        "duration": "9.0",
         "name": "system_health.common_mobile/browse:chrome:omnibox"
     },
     {
-        "duration": "93.0",
+        "duration": "83.0",
         "name": "system_health.common_mobile/browse:media:facebook_photos"
     },
     {
-        "duration": "57.0",
+        "duration": "46.0",
         "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "82.0",
+        "duration": "46.0",
+        "name": "system_health.common_mobile/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "73.0",
         "name": "system_health.common_mobile/browse:media:imgur"
     },
     {
-        "duration": "116.0",
+        "duration": "105.0",
         "name": "system_health.common_mobile/browse:media:youtube"
     },
     {
-        "duration": "143.0",
+        "duration": "122.0",
         "name": "system_health.common_mobile/browse:news:cnn"
     },
     {
-        "duration": "116.0",
+        "duration": "92.0",
         "name": "system_health.common_mobile/browse:news:cnn:2018"
     },
     {
-        "duration": "71.0",
+        "duration": "56.0",
         "name": "system_health.common_mobile/browse:news:cricbuzz"
     },
     {
-        "duration": "61.0",
+        "duration": "63.0",
         "name": "system_health.common_mobile/browse:news:qq"
     },
     {
-        "duration": "61.0",
+        "duration": "55.0",
         "name": "system_health.common_mobile/browse:news:reddit"
     },
     {
-        "duration": "167.0",
+        "duration": "143.0",
         "name": "system_health.common_mobile/browse:news:toi"
     },
     {
-        "duration": "59.0",
+        "duration": "51.0",
         "name": "system_health.common_mobile/browse:news:washingtonpost"
     },
     {
-        "duration": "87.0",
+        "duration": "28.0",
+        "name": "system_health.common_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "69.0",
         "name": "system_health.common_mobile/browse:shopping:amazon"
     },
     {
-        "duration": "86.0",
-        "name": "system_health.common_mobile/browse:shopping:avito"
-    },
-    {
-        "duration": "45.0",
+        "duration": "31.0",
         "name": "system_health.common_mobile/browse:shopping:lazada"
     },
     {
-        "duration": "95.0",
+        "duration": "66.0",
         "name": "system_health.common_mobile/browse:social:facebook"
     },
     {
-        "duration": "144.0",
+        "duration": "105.0",
         "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "110.0",
+        "duration": "89.0",
         "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "93.0",
+        "duration": "85.0",
         "name": "system_health.common_mobile/browse:social:instagram"
     },
     {
-        "duration": "93.0",
+        "duration": "87.0",
         "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll"
     },
     {
-        "duration": "104.0",
+        "duration": "93.0",
         "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "60.0",
+        "duration": "99.0",
+        "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "53.0",
         "name": "system_health.common_mobile/browse:social:twitter"
     },
     {
-        "duration": "82.0",
+        "duration": "64.0",
         "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "102.0",
+        "duration": "85.0",
         "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "49.0",
+        "duration": "42.0",
         "name": "system_health.common_mobile/browse:tools:maps"
     },
     {
-        "duration": "23.0",
+        "duration": "26.0",
         "name": "system_health.common_mobile/load:chrome:blank"
     },
     {
-        "duration": "28.0",
+        "duration": "21.0",
         "name": "system_health.common_mobile/load:games:bubbles"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "system_health.common_mobile/load:games:lazors"
     },
     {
-        "duration": "37.0",
+        "duration": "27.0",
         "name": "system_health.common_mobile/load:games:spychase"
     },
     {
-        "duration": "27.0",
+        "duration": "29.0",
+        "name": "system_health.common_mobile/load:games:spychase:2018"
+    },
+    {
+        "duration": "21.0",
         "name": "system_health.common_mobile/load:media:dailymotion"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:media:facebook_photos"
     },
     {
-        "duration": "25.0",
+        "duration": "24.0",
+        "name": "system_health.common_mobile/load:media:flickr:2018"
+    },
+    {
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:media:google_images"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
+        "name": "system_health.common_mobile/load:media:google_images:2018"
+    },
+    {
+        "duration": "18.0",
         "name": "system_health.common_mobile/load:media:imgur"
     },
     {
         "duration": "25.0",
-        "name": "system_health.common_mobile/load:media:youtube"
-    },
-    {
-        "duration": "43.0",
-        "name": "system_health.common_mobile/load:news:cnn"
-    },
-    {
-        "duration": "33.0",
-        "name": "system_health.common_mobile/load:news:irctc"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.common_mobile/load:news:nytimes"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_mobile/load:news:qq"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.common_mobile/load:news:reddit"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_mobile/load:news:washingtonpost"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.common_mobile/load:news:wikipedia"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_mobile/load:search:baidu"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.common_mobile/load:search:ebay"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.common_mobile/load:search:google"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.common_mobile/load:search:taobao"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.common_mobile/load:search:yahoo"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_mobile/load:search:yandex"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_mobile/load:social:twitter"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_mobile/load:tools:docs"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_mobile/load:tools:drive"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.common_mobile/load:tools:dropbox"
-    },
-    {
-        "duration": "37.0",
-        "name": "system_health.common_mobile/load:tools:gmail"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.common_mobile/load:tools:stackoverflow"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.common_mobile/load:tools:weather"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_mobile/background:media:imgur"
-    },
-    {
-        "duration": "46.0",
-        "name": "system_health.memory_mobile/background:news:nytimes"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_mobile/background:search:google"
-    },
-    {
-        "duration": "32.0",
-        "name": "system_health.memory_mobile/background:social:facebook"
-    },
-    {
-        "duration": "39.0",
-        "name": "system_health.memory_mobile/background:tools:gmail"
-    },
-    {
-        "duration": "86.0",
-        "name": "system_health.memory_mobile/browse:media:facebook_photos"
-    },
-    {
-        "duration": "54.0",
-        "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll"
-    },
-    {
-        "duration": "76.0",
-        "name": "system_health.memory_mobile/browse:media:imgur"
-    },
-    {
-        "duration": "90.0",
-        "name": "system_health.memory_mobile/browse:media:youtube"
-    },
-    {
-        "duration": "108.0",
-        "name": "system_health.memory_mobile/browse:news:cnn"
-    },
-    {
-        "duration": "84.0",
-        "name": "system_health.memory_mobile/browse:news:cnn:2018"
-    },
-    {
-        "duration": "66.0",
-        "name": "system_health.memory_mobile/browse:news:cricbuzz"
-    },
-    {
-        "duration": "57.0",
-        "name": "system_health.memory_mobile/browse:news:qq"
-    },
-    {
-        "duration": "59.0",
-        "name": "system_health.memory_mobile/browse:news:reddit"
-    },
-    {
-        "duration": "106.0",
-        "name": "system_health.memory_mobile/browse:news:toi"
-    },
-    {
-        "duration": "54.0",
-        "name": "system_health.memory_mobile/browse:news:washingtonpost"
-    },
-    {
-        "duration": "66.0",
-        "name": "system_health.memory_mobile/browse:shopping:amazon"
-    },
-    {
-        "duration": "68.0",
-        "name": "system_health.memory_mobile/browse:shopping:avito"
-    },
-    {
-        "duration": "40.0",
-        "name": "system_health.memory_mobile/browse:shopping:lazada"
-    },
-    {
-        "duration": "67.0",
-        "name": "system_health.memory_mobile/browse:social:facebook"
-    },
-    {
-        "duration": "86.0",
-        "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "88.0",
-        "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll:2018"
-    },
-    {
-        "duration": "82.0",
-        "name": "system_health.memory_mobile/browse:social:instagram"
-    },
-    {
-        "duration": "81.0",
-        "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll"
-    },
-    {
-        "duration": "81.0",
-        "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "57.0",
-        "name": "system_health.memory_mobile/browse:social:twitter"
-    },
-    {
-        "duration": "67.0",
-        "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "80.0",
-        "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "50.0",
-        "name": "system_health.memory_mobile/browse:tools:maps"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.memory_mobile/load:chrome:blank"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:games:bubbles"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_mobile/load:games:lazors"
-    },
-    {
-        "duration": "34.0",
-        "name": "system_health.memory_mobile/load:games:spychase"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_mobile/load:media:dailymotion"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:media:facebook_photos"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:media:google_images"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:media:imgur"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:media:youtube"
-    },
-    {
-        "duration": "42.0",
-        "name": "system_health.memory_mobile/load:news:cnn"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_mobile/load:news:irctc"
-    },
-    {
-        "duration": "32.0",
-        "name": "system_health.memory_mobile/load:news:nytimes"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:news:qq"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_mobile/load:news:reddit"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_mobile/load:news:washingtonpost"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_mobile/load:news:wikipedia"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:search:baidu"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:search:ebay"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:search:google"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:search:taobao"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:search:yahoo"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:search:yandex"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:social:twitter"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_mobile/load:tools:docs"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_mobile/load:tools:dropbox"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_mobile/load:tools:stackoverflow"
-    },
-    {
-        "duration": "33.0",
-        "name": "system_health.memory_mobile/load:tools:weather"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.webview_startup/load:chrome:blank"
+        "name": "system_health.common_mobile/load:media:imgur:2018"
     },
     {
         "duration": "18.0",
-        "name": "tracing.tracing_with_background_memory_infra/Facebook"
+        "name": "system_health.common_mobile/load:media:youtube"
     },
     {
-        "duration": "19.0",
-        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
+        "duration": "22.0",
+        "name": "system_health.common_mobile/load:media:youtube:2018"
     },
     {
-        "duration": "13.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
+        "duration": "36.0",
+        "name": "system_health.common_mobile/load:news:cnn"
     },
     {
-        "duration": "13.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
+        "duration": "31.0",
+        "name": "system_health.common_mobile/load:news:cnn:2018"
     },
     {
-        "duration": "14.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
+        "duration": "24.0",
+        "name": "system_health.common_mobile/load:news:irctc"
     },
     {
-        "duration": "14.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
+        "duration": "23.0",
+        "name": "system_health.common_mobile/load:news:nytimes"
     },
     {
-        "duration": "15.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
+        "duration": "22.0",
+        "name": "system_health.common_mobile/load:news:qq"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.common_mobile/load:news:reddit"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.common_mobile/load:news:washingtonpost"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.common_mobile/load:news:wikipedia"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.common_mobile/load:news:wikipedia:2018"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.common_mobile/load:search:baidu"
     },
     {
         "duration": "25.0",
-        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
+        "name": "system_health.common_mobile/load:search:baidu:2018"
     },
     {
-        "duration": "16.0",
-        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
+        "duration": "19.0",
+        "name": "system_health.common_mobile/load:search:ebay"
     },
     {
-        "duration": "109.0",
-        "name": "v8.browsing_mobile-future/browse:media:facebook_photos"
+        "duration": "21.0",
+        "name": "system_health.common_mobile/load:search:ebay:2018"
     },
     {
-        "duration": "73.0",
-        "name": "v8.browsing_mobile-future/browse:media:flickr_infinite_scroll"
+        "duration": "18.0",
+        "name": "system_health.common_mobile/load:search:google"
     },
     {
-        "duration": "97.0",
-        "name": "v8.browsing_mobile-future/browse:media:imgur"
+        "duration": "19.0",
+        "name": "system_health.common_mobile/load:search:google:2018"
     },
     {
-        "duration": "146.0",
-        "name": "v8.browsing_mobile-future/browse:media:youtube"
+        "duration": "19.0",
+        "name": "system_health.common_mobile/load:search:taobao"
     },
     {
-        "duration": "215.0",
-        "name": "v8.browsing_mobile-future/browse:news:cnn"
+        "duration": "17.0",
+        "name": "system_health.common_mobile/load:search:yahoo"
     },
     {
-        "duration": "166.0",
-        "name": "v8.browsing_mobile-future/browse:news:cnn:2018"
+        "duration": "17.0",
+        "name": "system_health.common_mobile/load:search:yahoo:2018"
     },
     {
-        "duration": "111.0",
-        "name": "v8.browsing_mobile-future/browse:news:cricbuzz"
+        "duration": "17.0",
+        "name": "system_health.common_mobile/load:search:yandex"
     },
     {
-        "duration": "73.0",
-        "name": "v8.browsing_mobile-future/browse:news:qq"
+        "duration": "20.0",
+        "name": "system_health.common_mobile/load:search:yandex:2018"
     },
     {
-        "duration": "73.0",
-        "name": "v8.browsing_mobile-future/browse:news:reddit"
+        "duration": "18.0",
+        "name": "system_health.common_mobile/load:social:twitter"
     },
     {
-        "duration": "269.0",
-        "name": "v8.browsing_mobile-future/browse:news:toi"
+        "duration": "18.0",
+        "name": "system_health.common_mobile/load:tools:docs"
     },
     {
-        "duration": "74.0",
-        "name": "v8.browsing_mobile-future/browse:news:washingtonpost"
+        "duration": "20.0",
+        "name": "system_health.common_mobile/load:tools:drive"
     },
     {
-        "duration": "160.0",
-        "name": "v8.browsing_mobile-future/browse:shopping:amazon"
+        "duration": "17.0",
+        "name": "system_health.common_mobile/load:tools:dropbox"
     },
     {
-        "duration": "131.0",
-        "name": "v8.browsing_mobile-future/browse:shopping:avito"
+        "duration": "18.0",
+        "name": "system_health.common_mobile/load:tools:stackoverflow"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.common_mobile/load:tools:stackoverflow:2018"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.common_mobile/load:tools:weather"
+    },
+    {
+        "duration": "25.0",
+        "name": "system_health.memory_mobile/background:media:imgur"
+    },
+    {
+        "duration": "41.0",
+        "name": "system_health.memory_mobile/background:news:nytimes"
+    },
+    {
+        "duration": "26.0",
+        "name": "system_health.memory_mobile/background:search:google"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/background:social:facebook"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_mobile/browse:chrome:newtab"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "81.0",
+        "name": "system_health.memory_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "47.0",
+        "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "45.0",
+        "name": "system_health.memory_mobile/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "71.0",
+        "name": "system_health.memory_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "85.0",
+        "name": "system_health.memory_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "106.0",
+        "name": "system_health.memory_mobile/browse:news:cnn"
+    },
+    {
+        "duration": "77.0",
+        "name": "system_health.memory_mobile/browse:news:cnn:2018"
+    },
+    {
+        "duration": "53.0",
+        "name": "system_health.memory_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "62.0",
+        "name": "system_health.memory_mobile/browse:news:qq"
+    },
+    {
+        "duration": "54.0",
+        "name": "system_health.memory_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "107.0",
+        "name": "system_health.memory_mobile/browse:news:toi"
+    },
+    {
+        "duration": "50.0",
+        "name": "system_health.memory_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "27.0",
+        "name": "system_health.memory_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "61.0",
+        "name": "system_health.memory_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "34.0",
+        "name": "system_health.memory_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "63.0",
+        "name": "system_health.memory_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "75.0",
+        "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "78.0",
+        "name": "system_health.memory_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "76.0",
+        "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "77.0",
+        "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "81.0",
+        "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018"
     },
     {
         "duration": "52.0",
-        "name": "v8.browsing_mobile-future/browse:shopping:lazada"
+        "name": "system_health.memory_mobile/browse:social:twitter"
     },
     {
-        "duration": "96.0",
-        "name": "v8.browsing_mobile-future/browse:social:facebook"
+        "duration": "57.0",
+        "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "231.0",
-        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll"
+        "duration": "44.0",
+        "name": "system_health.memory_mobile/browse:tools:maps"
     },
     {
-        "duration": "174.0",
-        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll:2018"
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:chrome:blank"
     },
     {
-        "duration": "134.0",
-        "name": "v8.browsing_mobile-future/browse:social:instagram"
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:games:bubbles"
     },
     {
-        "duration": "132.0",
-        "name": "v8.browsing_mobile-future/browse:social:pinterest_infinite_scroll"
+        "duration": "21.0",
+        "name": "system_health.memory_mobile/load:games:lazors"
     },
     {
-        "duration": "160.0",
-        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll"
+        "duration": "28.0",
+        "name": "system_health.memory_mobile/load:games:spychase"
     },
     {
-        "duration": "68.0",
-        "name": "v8.browsing_mobile-future/browse:social:twitter"
+        "duration": "29.0",
+        "name": "system_health.memory_mobile/load:games:spychase:2018"
     },
     {
-        "duration": "105.0",
-        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll"
+        "duration": "26.0",
+        "name": "system_health.memory_mobile/load:media:dailymotion"
     },
     {
-        "duration": "136.0",
-        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll:2018"
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:media:facebook_photos"
     },
     {
-        "duration": "60.0",
-        "name": "v8.browsing_mobile-future/browse:tools:maps"
+        "duration": "28.0",
+        "name": "system_health.memory_mobile/load:media:flickr:2018"
     },
     {
-        "duration": "123.0",
-        "name": "v8.browsing_mobile/browse:media:facebook_photos"
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:media:google_images"
     },
     {
-        "duration": "88.0",
-        "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll"
+        "duration": "24.0",
+        "name": "system_health.memory_mobile/load:media:google_images:2018"
     },
     {
-        "duration": "112.0",
-        "name": "v8.browsing_mobile/browse:media:imgur"
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:media:imgur"
     },
     {
-        "duration": "194.0",
-        "name": "v8.browsing_mobile/browse:news:cnn:2018"
+        "duration": "27.0",
+        "name": "system_health.memory_mobile/load:media:imgur:2018"
     },
     {
-        "duration": "100.0",
-        "name": "v8.browsing_mobile/browse:news:cricbuzz"
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:media:youtube"
     },
     {
-        "duration": "87.0",
-        "name": "v8.browsing_mobile/browse:news:qq"
+        "duration": "24.0",
+        "name": "system_health.memory_mobile/load:media:youtube:2018"
     },
     {
-        "duration": "83.0",
-        "name": "v8.browsing_mobile/browse:news:reddit"
+        "duration": "39.0",
+        "name": "system_health.memory_mobile/load:news:cnn"
     },
     {
-        "duration": "322.0",
-        "name": "v8.browsing_mobile/browse:news:toi"
+        "duration": "33.0",
+        "name": "system_health.memory_mobile/load:news:cnn:2018"
     },
     {
-        "duration": "88.0",
-        "name": "v8.browsing_mobile/browse:news:washingtonpost"
+        "duration": "25.0",
+        "name": "system_health.memory_mobile/load:news:irctc"
     },
     {
-        "duration": "142.0",
-        "name": "v8.browsing_mobile/browse:shopping:amazon"
+        "duration": "27.0",
+        "name": "system_health.memory_mobile/load:news:nytimes"
     },
     {
-        "duration": "130.0",
-        "name": "v8.browsing_mobile/browse:shopping:avito"
+        "duration": "26.0",
+        "name": "system_health.memory_mobile/load:news:qq"
     },
     {
-        "duration": "58.0",
-        "name": "v8.browsing_mobile/browse:shopping:lazada"
+        "duration": "24.0",
+        "name": "system_health.memory_mobile/load:news:reddit"
     },
     {
-        "duration": "114.0",
-        "name": "v8.browsing_mobile/browse:social:facebook"
+        "duration": "25.0",
+        "name": "system_health.memory_mobile/load:news:washingtonpost"
     },
     {
-        "duration": "311.0",
-        "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll"
+        "duration": "25.0",
+        "name": "system_health.memory_mobile/load:news:wikipedia"
     },
     {
-        "duration": "221.0",
-        "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll:2018"
+        "duration": "25.0",
+        "name": "system_health.memory_mobile/load:news:wikipedia:2018"
     },
     {
-        "duration": "164.0",
-        "name": "v8.browsing_mobile/browse:social:instagram"
+        "duration": "29.0",
+        "name": "system_health.memory_mobile/load:search:baidu"
     },
     {
-        "duration": "165.0",
-        "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll"
+        "duration": "30.0",
+        "name": "system_health.memory_mobile/load:search:baidu:2018"
     },
     {
-        "duration": "204.0",
-        "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll"
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:search:ebay"
     },
     {
-        "duration": "79.0",
-        "name": "v8.browsing_mobile/browse:social:twitter"
+        "duration": "25.0",
+        "name": "system_health.memory_mobile/load:search:ebay:2018"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:search:google"
+    },
+    {
+        "duration": "24.0",
+        "name": "system_health.memory_mobile/load:search:google:2018"
+    },
+    {
+        "duration": "24.0",
+        "name": "system_health.memory_mobile/load:search:taobao"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:search:yahoo"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:search:yahoo:2018"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:search:yandex"
+    },
+    {
+        "duration": "24.0",
+        "name": "system_health.memory_mobile/load:search:yandex:2018"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:social:twitter"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:tools:docs"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_mobile/load:tools:dropbox"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_mobile/load:tools:stackoverflow"
+    },
+    {
+        "duration": "24.0",
+        "name": "system_health.memory_mobile/load:tools:stackoverflow:2018"
+    },
+    {
+        "duration": "27.0",
+        "name": "system_health.memory_mobile/load:tools:weather"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.webview_startup/load:chrome:blank"
+    },
+    {
+        "duration": "10.0",
+        "name": "tracing.tracing_with_background_memory_infra/Facebook"
+    },
+    {
+        "duration": "11.0",
+        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
+    },
+    {
+        "duration": "7.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
+    },
+    {
+        "duration": "7.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
+    },
+    {
+        "duration": "7.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
+    },
+    {
+        "duration": "8.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
+    },
+    {
+        "duration": "9.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
+    },
+    {
+        "duration": "13.0",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "9.0",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "11.0",
+        "name": "v8.browsing_mobile-future/browse:chrome:newtab"
+    },
+    {
+        "duration": "10.0",
+        "name": "v8.browsing_mobile-future/browse:chrome:omnibox"
+    },
+    {
+        "duration": "94.0",
+        "name": "v8.browsing_mobile-future/browse:media:facebook_photos"
+    },
+    {
+        "duration": "56.0",
+        "name": "v8.browsing_mobile-future/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "53.0",
+        "name": "v8.browsing_mobile-future/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "80.0",
+        "name": "v8.browsing_mobile-future/browse:media:imgur"
     },
     {
         "duration": "121.0",
+        "name": "v8.browsing_mobile-future/browse:media:youtube"
+    },
+    {
+        "duration": "177.0",
+        "name": "v8.browsing_mobile-future/browse:news:cnn"
+    },
+    {
+        "duration": "125.0",
+        "name": "v8.browsing_mobile-future/browse:news:cnn:2018"
+    },
+    {
+        "duration": "60.0",
+        "name": "v8.browsing_mobile-future/browse:news:cricbuzz"
+    },
+    {
+        "duration": "70.0",
+        "name": "v8.browsing_mobile-future/browse:news:qq"
+    },
+    {
+        "duration": "62.0",
+        "name": "v8.browsing_mobile-future/browse:news:reddit"
+    },
+    {
+        "duration": "59.0",
+        "name": "v8.browsing_mobile-future/browse:news:washingtonpost"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.browsing_mobile-future/browse:search:amp:2018"
+    },
+    {
+        "duration": "82.0",
+        "name": "v8.browsing_mobile-future/browse:shopping:amazon"
+    },
+    {
+        "duration": "37.0",
+        "name": "v8.browsing_mobile-future/browse:shopping:lazada"
+    },
+    {
+        "duration": "78.0",
+        "name": "v8.browsing_mobile-future/browse:social:facebook"
+    },
+    {
+        "duration": "110.0",
+        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "102.0",
+        "name": "v8.browsing_mobile-future/browse:social:instagram"
+    },
+    {
+        "duration": "106.0",
+        "name": "v8.browsing_mobile-future/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "117.0",
+        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "129.0",
+        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "58.0",
+        "name": "v8.browsing_mobile-future/browse:social:twitter"
+    },
+    {
+        "duration": "104.0",
+        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "48.0",
+        "name": "v8.browsing_mobile-future/browse:tools:maps"
+    },
+    {
+        "duration": "11.0",
+        "name": "v8.browsing_mobile/browse:chrome:newtab"
+    },
+    {
+        "duration": "10.0",
+        "name": "v8.browsing_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "94.0",
+        "name": "v8.browsing_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "54.0",
+        "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "53.0",
+        "name": "v8.browsing_mobile/browse:media:googleplaystore:2019"
+    },
+    {
+        "duration": "80.0",
+        "name": "v8.browsing_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "125.0",
+        "name": "v8.browsing_mobile/browse:news:cnn:2018"
+    },
+    {
+        "duration": "60.0",
+        "name": "v8.browsing_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "71.0",
+        "name": "v8.browsing_mobile/browse:news:qq"
+    },
+    {
+        "duration": "62.0",
+        "name": "v8.browsing_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "59.0",
+        "name": "v8.browsing_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.browsing_mobile/browse:search:amp:2018"
+    },
+    {
+        "duration": "92.0",
+        "name": "v8.browsing_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "38.0",
+        "name": "v8.browsing_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "78.0",
+        "name": "v8.browsing_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "116.0",
+        "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "110.0",
+        "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "102.0",
+        "name": "v8.browsing_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "106.0",
+        "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "117.0",
+        "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "128.0",
+        "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "58.0",
+        "name": "v8.browsing_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "76.0",
         "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "164.0",
+        "duration": "103.0",
         "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "73.0",
+        "duration": "47.0",
         "name": "v8.browsing_mobile/browse:tools:maps"
     },
     {
@@ -4212,7 +4064,7 @@
         "name": "wasm/AsmJsZenGarden"
     },
     {
-        "duration": "27.0",
+        "duration": "20.0",
         "name": "wasm/WasmSpaceBuggy"
     },
     {
@@ -4224,7 +4076,7 @@
         "name": "wasm/WasmSunTemple"
     },
     {
-        "duration": "18.0",
+        "duration": "15.0",
         "name": "wasm/WasmTanks"
     },
     {
@@ -4232,35 +4084,35 @@
         "name": "wasm/WasmZenGarden"
     },
     {
-        "duration": "22.0",
+        "duration": "17.0",
         "name": "webrtc/10s_datachannel_transfer"
     },
     {
-        "duration": "28.0",
+        "duration": "21.0",
         "name": "webrtc/canvas_capture_peer_connection"
     },
     {
-        "duration": "37.0",
+        "duration": "30.0",
         "name": "webrtc/codec_constraints_h264"
     },
     {
-        "duration": "38.0",
+        "duration": "30.0",
         "name": "webrtc/codec_constraints_vp8"
     },
     {
-        "duration": "38.0",
+        "duration": "30.0",
         "name": "webrtc/codec_constraints_vp9"
     },
     {
-        "duration": "24.0",
+        "duration": "18.0",
         "name": "webrtc/hd_local_stream_10s"
     },
     {
-        "duration": "46.0",
+        "duration": "36.0",
         "name": "webrtc/multiple_peerconnections"
     },
     {
-        "duration": "65.0",
+        "duration": "50.0",
         "name": "webrtc/pause_play_peerconnections"
     }
 ]
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/linux-perf_timing.json b/tools/perf/core/shard_maps/timing_data/linux-perf_timing.json
index b6aff32..e050dfa 100644
--- a/tools/perf/core/shard_maps/timing_data/linux-perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/linux-perf_timing.json
@@ -1,10 +1,14 @@
 [
     {
-        "duration": "29.0",
+        "duration": "26.0",
+        "name": "blink_perf.accessibility/line-breaks.html"
+    },
+    {
+        "duration": "21.0",
         "name": "blink_perf.accessibility/textarea-append.html"
     },
     {
-        "duration": "18.0",
+        "duration": "15.0",
         "name": "blink_perf.bindings/append-child.html"
     },
     {
@@ -32,7 +36,7 @@
         "name": "blink_perf.bindings/gc-mini-tree.html"
     },
     {
-        "duration": "22.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/gc-tree.html"
     },
     {
@@ -60,7 +64,7 @@
         "name": "blink_perf.bindings/id-setter.html"
     },
     {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "blink_perf.bindings/indexed-getter.html"
     },
     {
@@ -72,7 +76,7 @@
         "name": "blink_perf.bindings/named-property-enumerator.html"
     },
     {
-        "duration": "34.0",
+        "duration": "21.0",
         "name": "blink_perf.bindings/node-list-access.html"
     },
     {
@@ -116,11 +120,11 @@
         "name": "blink_perf.bindings/set-attribute.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "blink_perf.bindings/structured-clone-json-deserialize.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "blink_perf.bindings/structured-clone-json-serialize.html"
     },
     {
@@ -160,51 +164,151 @@
         "name": "blink_perf.bindings/undefined-id-getter.html"
     },
     {
-        "duration": "13.0",
+        "duration": "6.0",
+        "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.bindings/worker-structured-clone-json-from-worker.html"
+    },
+    {
+        "duration": "14.0",
         "name": "blink_perf.bindings/worker-structured-clone-json-roundtrip.html"
     },
     {
-        "duration": "13.0",
-        "name": "blink_perf.bindings/worker-structured-clone-json-serialize.html"
+        "duration": "14.0",
+        "name": "blink_perf.bindings/worker-structured-clone-json-to-worker.html"
     },
     {
-        "duration": "19.0",
+        "duration": "7.0",
+        "name": "blink_perf.bindings/worker-structured-clone-workerDOM-DBMon-from-worker.html"
+    },
+    {
+        "duration": "6.0",
+        "name": "blink_perf.bindings/worker-structured-clone-workerDOM-Map-from-worker.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-from-worker.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-roundtrip.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-to-worker.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.bindings/worker-transferable-from-worker.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.bindings/worker-transferable-roundtrip.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.bindings/worker-transferable-to-worker.html"
+    },
+    {
+        "duration": "15.0",
         "name": "blink_perf.canvas/createImageBitmapFromImageData.html"
     },
     {
+        "duration": "11.0",
+        "name": "blink_perf.canvas/createImageBitmapFromImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.canvas/docs-paper.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/docs-paper_RAF.html?RAF"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.canvas/docs-resume.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/docs-resume_RAF.html?RAF"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.canvas/docs-table.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/docs-table_RAF.html?RAF"
+    },
+    {
         "duration": "7.0",
         "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d.html"
     },
     {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
         "duration": "9.0",
         "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d.html"
     },
     {
         "duration": "7.0",
+        "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "7.0",
         "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d.html"
     },
     {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d_RAF.html?RAF"
+    },
+    {
         "duration": "7.0",
         "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d.html"
     },
     {
         "duration": "7.0",
+        "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "7.0",
         "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d.html"
     },
     {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
         "duration": "7.0",
         "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d.html"
     },
     {
-        "duration": "11.0",
+        "duration": "8.0",
+        "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "12.0",
         "name": "blink_perf.canvas/drawimage-not-pixelaligned.html"
     },
     {
         "duration": "12.0",
+        "name": "blink_perf.canvas/drawimage-not-pixelaligned_RAF.html?RAF"
+    },
+    {
+        "duration": "12.0",
         "name": "blink_perf.canvas/drawimage.html"
     },
     {
         "duration": "12.0",
+        "name": "blink_perf.canvas/drawimage_RAF.html?RAF"
+    },
+    {
+        "duration": "12.0",
         "name": "blink_perf.canvas/getImageData.html"
     },
     {
@@ -212,39 +316,95 @@
         "name": "blink_perf.canvas/getImageDataColorManaged.html"
     },
     {
+        "duration": "11.0",
+        "name": "blink_perf.canvas/getImageDataColorManaged_RAF.html?RAF"
+    },
+    {
         "duration": "12.0",
+        "name": "blink_perf.canvas/getImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "6.0",
+        "name": "blink_perf.canvas/gpu-bound-shader.html"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.canvas/gpu-bound-shader_RAF.html?RAF"
+    },
+    {
+        "duration": "11.0",
         "name": "blink_perf.canvas/putImageData.html"
     },
     {
+        "duration": "11.0",
+        "name": "blink_perf.canvas/putImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.canvas/sheets-render.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/sheets-render_RAF.html?RAF"
+    },
+    {
         "duration": "7.0",
         "name": "blink_perf.canvas/toBlob_duration.html"
     },
     {
         "duration": "7.0",
+        "name": "blink_perf.canvas/toBlob_duration_RAF.html?RAF"
+    },
+    {
+        "duration": "7.0",
         "name": "blink_perf.canvas/toBlob_duration_jpeg.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
+        "name": "blink_perf.canvas/toBlob_duration_jpeg_RAF.html?RAF"
+    },
+    {
+        "duration": "7.0",
         "name": "blink_perf.canvas/transferFromImageBitmap.html"
     },
     {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/transferFromImageBitmap_RAF.html?RAF"
+    },
+    {
         "duration": "7.0",
         "name": "blink_perf.canvas/upload-canvas-2d-to-texture.html"
     },
     {
+        "duration": "12.0",
+        "name": "blink_perf.canvas/upload-canvas-2d-to-texture_RAF.html?RAF"
+    },
+    {
         "duration": "13.0",
         "name": "blink_perf.canvas/upload-video-to-sub-texture.html"
     },
     {
-        "duration": "7.0",
+        "duration": "9.0",
+        "name": "blink_perf.canvas/upload-video-to-sub-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "8.0",
         "name": "blink_perf.canvas/upload-video-to-texture.html"
     },
     {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/upload-video-to-texture_RAF.html?RAF"
+    },
+    {
         "duration": "7.0",
         "name": "blink_perf.canvas/upload-webgl-to-texture.html"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
+        "name": "blink_perf.canvas/upload-webgl-to-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "17.0",
         "name": "blink_perf.css/AttributeDescendantSelector.html"
     },
     {
@@ -260,83 +420,83 @@
         "name": "blink_perf.css/CSSPropertyUpdateValue.html"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "blink_perf.css/ChangeStyleChildClassSelector.html"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "blink_perf.css/ChangeStyleChildElementSelectors.html"
     },
     {
-        "duration": "10.0",
+        "duration": "15.0",
         "name": "blink_perf.css/ChangeStyleElementSelector.html"
     },
     {
-        "duration": "10.0",
+        "duration": "15.0",
         "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html"
     },
     {
-        "duration": "10.0",
+        "duration": "15.0",
         "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html"
     },
     {
-        "duration": "10.0",
+        "duration": "15.0",
         "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html"
     },
     {
-        "duration": "10.0",
+        "duration": "15.0",
         "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html"
     },
     {
-        "duration": "10.0",
+        "duration": "15.0",
         "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html"
     },
     {
-        "duration": "10.0",
+        "duration": "15.0",
         "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html"
     },
     {
-        "duration": "10.0",
+        "duration": "16.0",
         "name": "blink_perf.css/ChangeStyleShallowTree.html"
     },
     {
-        "duration": "10.0",
+        "duration": "15.0",
         "name": "blink_perf.css/ChangeStyleSingleClassSelector.html"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "blink_perf.css/ChangeStyleUniversalSelector.html"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html"
     },
     {
-        "duration": "15.0",
+        "duration": "13.0",
         "name": "blink_perf.css/ClassDescendantSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ClassInvalidation.html"
     },
     {
@@ -356,19 +516,19 @@
         "name": "blink_perf.css/CustomPropertiesVarAlias.html"
     },
     {
-        "duration": "14.0",
+        "duration": "12.0",
         "name": "blink_perf.css/FocusUpdate.html"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "blink_perf.css/LoadBootstrapBlog.html"
     },
     {
-        "duration": "10.0",
+        "duration": "15.0",
         "name": "blink_perf.css/LoadMaterializeStarterPage.html"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "blink_perf.css/LoadSemanticPageExample.html"
     },
     {
@@ -380,31 +540,15 @@
         "name": "blink_perf.css/SelectorCountScaling.html"
     },
     {
-        "duration": "15.0",
-        "name": "blink_perf.dom/addRange.html"
-    },
-    {
-        "duration": "16.0",
+        "duration": "20.0",
         "name": "blink_perf.dom/custom-element-default-style-with-shadow.html"
     },
     {
-        "duration": "14.0",
+        "duration": "15.0",
         "name": "blink_perf.dom/custom-element-default-style.html"
     },
     {
-        "duration": "6.0",
-        "name": "blink_perf.dom/delete-in-password-field.html"
-    },
-    {
-        "duration": "13.0",
-        "name": "blink_perf.dom/div-editable.html"
-    },
-    {
-        "duration": "6.0",
-        "name": "blink_perf.dom/inner_html_with_selection.html"
-    },
-    {
-        "duration": "18.0",
+        "duration": "16.0",
         "name": "blink_perf.dom/long-sibling-list.html"
     },
     {
@@ -412,7 +556,7 @@
         "name": "blink_perf.dom/modify-element-classname.html"
     },
     {
-        "duration": "7.0",
+        "duration": "6.0",
         "name": "blink_perf.dom/modify-element-id.html"
     },
     {
@@ -420,83 +564,79 @@
         "name": "blink_perf.dom/modify-element-title.html"
     },
     {
-        "duration": "6.0",
-        "name": "blink_perf.dom/move-down-with-hidden-elements.html"
-    },
-    {
-        "duration": "6.0",
-        "name": "blink_perf.dom/move-up-with-hidden-elements.html"
-    },
-    {
-        "duration": "6.0",
-        "name": "blink_perf.dom/remove_child_with_selection.html"
-    },
-    {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "blink_perf.dom/select-multiple-add.html"
     },
     {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "blink_perf.dom/select-single-add.html"
     },
     {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "blink_perf.dom/select-single-remove.html"
     },
     {
-        "duration": "12.0",
-        "name": "blink_perf.dom/textarea-dom.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.dom/textarea-edit.html"
-    },
-    {
-        "duration": "19.0",
+        "duration": "16.0",
         "name": "blink_perf.events/EventsDispatching.html"
     },
     {
         "duration": "12.0",
-        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedShadowTrees.html"
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV0ShadowTrees.html"
     },
     {
-        "duration": "21.0",
-        "name": "blink_perf.events/EventsDispatchingInShadowTrees.html"
+        "duration": "12.0",
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.events/EventsDispatchingInV0ShadowTrees.html"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html"
     },
     {
         "duration": "11.0",
         "name": "blink_perf.events/hit-test-lots-of-layers.html"
     },
     {
-        "duration": "22.0",
-        "name": "blink_perf.image_decoder/decode-gif.html"
+        "duration": "11.0",
+        "name": "blink_perf.events/is-input-pending-all-events.html"
     },
     {
-        "duration": "12.0",
-        "name": "blink_perf.image_decoder/decode-jpeg.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "blink_perf.image_decoder/decode-lossless-webp.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.image_decoder/decode-lossy-webp.html"
-    },
-    {
-        "duration": "13.0",
-        "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.image_decoder/decode-png-palette.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "blink_perf.image_decoder/decode-png.html"
+        "duration": "11.0",
+        "name": "blink_perf.events/is-input-pending-default-events.html"
     },
     {
         "duration": "19.0",
+        "name": "blink_perf.image_decoder/decode-gif.html"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.image_decoder/decode-jpeg.html"
+    },
+    {
+        "duration": "16.0",
+        "name": "blink_perf.image_decoder/decode-lossless-webp.html"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.image_decoder/decode-lossy-webp.html"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.image_decoder/decode-png-palette.html"
+    },
+    {
+        "duration": "17.0",
+        "name": "blink_perf.image_decoder/decode-png.html"
+    },
+    {
+        "duration": "15.0",
         "name": "blink_perf.layout/ArabicLineLayout.html"
     },
     {
@@ -524,7 +664,7 @@
         "name": "blink_perf.layout/auto-grid-lots-of-data.html"
     },
     {
-        "duration": "14.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/change-text-css-contain.html"
     },
     {
@@ -556,6 +696,18 @@
         "name": "blink_perf.layout/character_fallback_aat.html"
     },
     {
+        "duration": "9.0",
+        "name": "blink_perf.layout/contain-content-style-change.html"
+    },
+    {
+        "duration": "16.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-blocks.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-text.html"
+    },
+    {
         "duration": "12.0",
         "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
     },
@@ -576,7 +728,7 @@
         "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html"
     },
     {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "blink_perf.layout/flexbox-lots-of-data.html"
     },
     {
@@ -584,19 +736,23 @@
         "name": "blink_perf.layout/flexbox-row-nowrap.html"
     },
     {
+        "duration": "12.0",
+        "name": "blink_perf.layout/flexbox-row-stretch-height-definite.html"
+    },
+    {
         "duration": "11.0",
         "name": "blink_perf.layout/flexbox-row-wrap.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/flexbox-with-stretch-layout.html"
     },
     {
-        "duration": "10.0",
+        "duration": "9.0",
         "name": "blink_perf.layout/floats_100_100.html"
     },
     {
-        "duration": "10.0",
+        "duration": "9.0",
         "name": "blink_perf.layout/floats_100_100_nested.html"
     },
     {
@@ -632,6 +788,14 @@
         "name": "blink_perf.layout/hindi-line-layout.html"
     },
     {
+        "duration": "7.0",
+        "name": "blink_perf.layout/japanese-kokoro-insert.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.layout/large-grid.html"
+    },
+    {
         "duration": "11.0",
         "name": "blink_perf.layout/large-spanning-grid-item.html"
     },
@@ -664,7 +828,15 @@
         "name": "blink_perf.layout/layers_overlap_3d.html"
     },
     {
-        "duration": "10.0",
+        "duration": "7.0",
+        "name": "blink_perf.layout/line-layout-fit-content-break-word.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.layout/line-layout-fit-content.html"
+    },
+    {
+        "duration": "9.0",
         "name": "blink_perf.layout/line-layout-line-height.html"
     },
     {
@@ -693,6 +865,14 @@
     },
     {
         "duration": "11.0",
+        "name": "blink_perf.layout/many-block-children-auto-inline-size.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.layout/many-block-children-fixed-inline-size.html"
+    },
+    {
+        "duration": "12.0",
         "name": "blink_perf.layout/multicol/deeply-nested-tables.html"
     },
     {
@@ -704,7 +884,7 @@
         "name": "blink_perf.layout/multicol/lots-of-text-autofill.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/multicol/lots-of-text-balanced-orphans-widows.html"
     },
     {
@@ -716,7 +896,7 @@
         "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/multicol/tall-content-short-columns.html"
     },
     {
@@ -724,7 +904,7 @@
         "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.layout/nested-grid.html"
     },
     {
@@ -732,7 +912,7 @@
         "name": "blink_perf.layout/nested-percent-height-tables.html"
     },
     {
-        "duration": "40.0",
+        "duration": "35.0",
         "name": "blink_perf.layout/subtree-detaching.html"
     },
     {
@@ -752,99 +932,111 @@
         "name": "blink_perf.layout/word-wrap-break-word.html"
     },
     {
-        "duration": "18.0",
+        "duration": "16.0",
         "name": "blink_perf.owp_storage/blob-perf-files.html"
     },
     {
-        "duration": "11.0",
+        "duration": "15.0",
         "name": "blink_perf.owp_storage/blob-perf-ipc.html"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "blink_perf.owp_storage/blob-perf-shm.html"
     },
     {
-        "duration": "11.0",
+        "duration": "15.0",
         "name": "blink_perf.owp_storage/blob-perf-tiny.html"
     },
     {
-        "duration": "11.0",
+        "duration": "15.0",
         "name": "blink_perf.owp_storage/idb-load-docs.html"
     },
     {
-        "duration": "18.0",
+        "duration": "17.0",
         "name": "blink_perf.paint/appending-text.html"
     },
     {
-        "duration": "14.0",
+        "duration": "18.0",
         "name": "blink_perf.paint/color-changes.html"
     },
     {
-        "duration": "13.0",
+        "duration": "15.0",
         "name": "blink_perf.paint/complex-content-slow-scroll.html"
     },
     {
-        "duration": "12.0",
+        "duration": "15.0",
+        "name": "blink_perf.paint/complex-iframe-filtered.html"
+    },
+    {
+        "duration": "24.0",
+        "name": "blink_perf.paint/contain-update-layer-tree.html"
+    },
+    {
+        "duration": "15.0",
         "name": "blink_perf.paint/containment-resize.html"
     },
     {
-        "duration": "13.0",
+        "duration": "15.0",
         "name": "blink_perf.paint/fixed-and-many-layers-scroll.html"
     },
     {
-        "duration": "13.0",
+        "duration": "15.0",
         "name": "blink_perf.paint/large-table-background-change-with-invisible-collapsed-borders.html"
     },
     {
-        "duration": "11.0",
+        "duration": "15.0",
         "name": "blink_perf.paint/large-table-background-change-with-visible-collapsed-borders.html"
     },
     {
-        "duration": "14.0",
+        "duration": "16.0",
         "name": "blink_perf.paint/large-table-background-change-with-zero-width-collapsed-borders.html"
     },
     {
-        "duration": "12.0",
+        "duration": "15.0",
         "name": "blink_perf.paint/large-table-collapsed-border-change-with-backgrounds.html"
     },
     {
-        "duration": "13.0",
+        "duration": "15.0",
         "name": "blink_perf.paint/large-table-collapsed-border-change-with-text.html"
     },
     {
-        "duration": "11.0",
+        "duration": "15.0",
         "name": "blink_perf.paint/large-table-collapsed-border-change.html"
     },
     {
-        "duration": "13.0",
+        "duration": "16.0",
         "name": "blink_perf.paint/large-table-repaint.html"
     },
     {
-        "duration": "11.0",
+        "duration": "14.0",
         "name": "blink_perf.paint/move-text-with-mask.html"
     },
     {
-        "duration": "12.0",
+        "duration": "14.0",
         "name": "blink_perf.paint/paint-offset-changes.html"
     },
     {
-        "duration": "14.0",
+        "duration": "16.0",
+        "name": "blink_perf.paint/select-all-words.html"
+    },
+    {
+        "duration": "15.0",
         "name": "blink_perf.paint/transform-changes.html"
     },
     {
-        "duration": "19.0",
+        "duration": "16.0",
         "name": "blink_perf.parser/css-parser-yui.html"
     },
     {
-        "duration": "10.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/html-parser-threaded.html"
     },
     {
-        "duration": "10.0",
+        "duration": "12.0",
         "name": "blink_perf.parser/html-parser.html"
     },
     {
-        "duration": "23.0",
+        "duration": "24.0",
         "name": "blink_perf.parser/html5-full-render.html"
     },
     {
@@ -872,7 +1064,7 @@
         "name": "blink_perf.parser/query-selector-all-class-deep.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.parser/query-selector-all-class-first.html"
     },
     {
@@ -888,19 +1080,19 @@
         "name": "blink_perf.parser/query-selector-all-deep.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.parser/query-selector-all-first.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.parser/query-selector-all-id-deep.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.parser/query-selector-all-id-first.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.parser/query-selector-all-id-last.html"
     },
     {
@@ -916,7 +1108,7 @@
         "name": "blink_perf.parser/query-selector-first.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.parser/query-selector-id-deep.html"
     },
     {
@@ -944,11 +1136,11 @@
         "name": "blink_perf.parser/url-parser.html"
     },
     {
-        "duration": "11.0",
+        "duration": "14.0",
         "name": "blink_perf.parser/xml-parser.html"
     },
     {
-        "duration": "13.0",
+        "duration": "10.0",
         "name": "blink_perf.shadow_dom/declarative-api.html"
     },
     {
@@ -968,7 +1160,7 @@
         "name": "blink_perf.shadow_dom/imperative-api-assigned-slot.html"
     },
     {
-        "duration": "13.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary-large.html"
     },
     {
@@ -992,7 +1184,7 @@
         "name": "blink_perf.shadow_dom/imperative-api.html"
     },
     {
-        "duration": "7.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/shadow-style-share-attr-selectors.html"
     },
     {
@@ -1048,7 +1240,7 @@
         "name": "blink_perf.shadow_dom/v0-small-distribution-with-layout.html"
     },
     {
-        "duration": "14.0",
+        "duration": "9.0",
         "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html"
     },
     {
@@ -1060,11 +1252,11 @@
         "name": "blink_perf.shadow_dom/v1-host-child-append.html"
     },
     {
-        "duration": "14.0",
+        "duration": "9.0",
         "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html"
     },
     {
-        "duration": "23.0",
+        "duration": "19.0",
         "name": "blink_perf.shadow_dom/v1-large-deep-layout.html"
     },
     {
@@ -1120,7 +1312,7 @@
         "name": "blink_perf.shadow_dom/v1-small-shallow-layout.html"
     },
     {
-        "duration": "14.0",
+        "duration": "10.0",
         "name": "blink_perf.svg/AzLizardBenjiPark.html"
     },
     {
@@ -1136,7 +1328,7 @@
         "name": "blink_perf.svg/Cowboy.html"
     },
     {
-        "duration": "6.0",
+        "duration": "10.0",
         "name": "blink_perf.svg/CrawFishGanson.html"
     },
     {
@@ -1176,7 +1368,7 @@
         "name": "blink_perf.svg/HereGear.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.svg/MtSaintHelens.html"
     },
     {
@@ -1184,11 +1376,11 @@
         "name": "blink_perf.svg/Samurai.html"
     },
     {
-        "duration": "28.0",
+        "duration": "27.0",
         "name": "blink_perf.svg/SierpinskiCarpet.html"
     },
     {
-        "duration": "7.0",
+        "duration": "6.0",
         "name": "blink_perf.svg/SvgCubics.html"
     },
     {
@@ -1196,7 +1388,7 @@
         "name": "blink_perf.svg/SvgHitTesting.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.svg/SvgNestedUse.html"
     },
     {
@@ -1212,7 +1404,7 @@
         "name": "blink_perf.svg/Worldcup.html"
     },
     {
-        "duration": "42.0",
+        "duration": "39.0",
         "name": "dromaeo/http://dromaeo.com?dom-attr"
     },
     {
@@ -1220,39 +1412,35 @@
         "name": "dromaeo/http://dromaeo.com?dom-modify"
     },
     {
-        "duration": "53.0",
+        "duration": "52.0",
         "name": "dromaeo/http://dromaeo.com?dom-query"
     },
     {
-        "duration": "32.0",
+        "duration": "33.0",
         "name": "dromaeo/http://dromaeo.com?dom-traverse"
     },
     {
-        "duration": "17.0",
-        "name": "dummy_benchmark.histogram_benchmark_1/dummy_page.html"
-    },
-    {
-        "duration": "11.0",
+        "duration": "8.0",
         "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html"
     },
     {
-        "duration": "11.0",
+        "duration": "8.0",
         "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html"
     },
     {
-        "duration": "179.0",
+        "duration": "175.0",
         "name": "jetstream/http://browserbench.org/JetStream/"
     },
     {
-        "duration": "32.0",
+        "duration": "25.0",
         "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html"
     },
     {
-        "duration": "16.0",
+        "duration": "12.0",
         "name": "loading.desktop/24h_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "loading.desktop/24h_warm"
     },
     {
@@ -1260,619 +1448,607 @@
         "name": "loading.desktop/AirBnB_cold"
     },
     {
-        "duration": "34.0",
+        "duration": "24.0",
         "name": "loading.desktop/AirBnB_warm"
     },
     {
-        "duration": "14.0",
+        "duration": "11.0",
         "name": "loading.desktop/Aljayyash_cold"
     },
     {
-        "duration": "17.0",
+        "duration": "12.0",
         "name": "loading.desktop/Aljayyash_warm"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "loading.desktop/AllRecipes_cold"
     },
     {
-        "duration": "41.0",
+        "duration": "16.0",
         "name": "loading.desktop/AllRecipes_warm"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "loading.desktop/ArsTechnica_cold"
     },
     {
-        "duration": "29.0",
+        "duration": "21.0",
         "name": "loading.desktop/ArsTechnica_warm"
     },
     {
-        "duration": "14.0",
+        "duration": "12.0",
         "name": "loading.desktop/Baidu_cold"
     },
     {
-        "duration": "17.0",
+        "duration": "12.0",
         "name": "loading.desktop/Baidu_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "12.0",
         "name": "loading.desktop/Bhaskar_cold"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "loading.desktop/Bhaskar_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "12.0",
         "name": "loading.desktop/Chosun_cold"
     },
     {
-        "duration": "20.0",
+        "duration": "21.0",
         "name": "loading.desktop/Chosun_warm"
     },
     {
-        "duration": "15.0",
+        "duration": "11.0",
         "name": "loading.desktop/Colorado.edu_cold"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "loading.desktop/Colorado.edu_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "11.0",
         "name": "loading.desktop/Danawa_cold"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "loading.desktop/Danawa_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "12.0",
         "name": "loading.desktop/Daum_cold"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "loading.desktop/Daum_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "12.0",
         "name": "loading.desktop/Donga_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "loading.desktop/Donga_warm"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "loading.desktop/Economist_cold"
     },
     {
-        "duration": "30.0",
+        "duration": "20.0",
         "name": "loading.desktop/Economist_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "loading.desktop/Elmundo_cold"
     },
     {
-        "duration": "16.0",
+        "duration": "12.0",
         "name": "loading.desktop/FC2Blog_cold"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "loading.desktop/FC2Blog_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "12.0",
         "name": "loading.desktop/FIFA_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "loading.desktop/FIFA_warm"
     },
     {
-        "duration": "27.0",
+        "duration": "19.0",
         "name": "loading.desktop/FarsNews_cold"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "loading.desktop/FarsNews_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "12.0",
         "name": "loading.desktop/Flickr_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "loading.desktop/Flickr_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "11.0",
         "name": "loading.desktop/FlipKart_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "loading.desktop/FlipKart_warm"
     },
     {
-        "duration": "14.0",
+        "duration": "12.0",
         "name": "loading.desktop/Free.fr_cold"
     },
     {
-        "duration": "17.0",
+        "duration": "12.0",
         "name": "loading.desktop/Free.fr_warm"
     },
     {
-        "duration": "14.0",
+        "duration": "11.0",
         "name": "loading.desktop/HTML5Rocks_cold"
     },
     {
-        "duration": "16.0",
+        "duration": "12.0",
         "name": "loading.desktop/HTML5Rocks_warm"
     },
     {
-        "duration": "14.0",
+        "duration": "11.0",
         "name": "loading.desktop/Haraj_cold"
     },
     {
-        "duration": "17.0",
+        "duration": "12.0",
         "name": "loading.desktop/Haraj_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "19.0",
         "name": "loading.desktop/HatenaBookmark_cold"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "loading.desktop/HatenaBookmark_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "12.0",
         "name": "loading.desktop/IGN_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "loading.desktop/IGN_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "12.0",
         "name": "loading.desktop/IMDB_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "loading.desktop/IMDB_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "12.0",
         "name": "loading.desktop/IndiaTimes_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "loading.desktop/IndiaTimes_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "12.0",
         "name": "loading.desktop/Kakaku_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "loading.desktop/Kakaku_warm"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "loading.desktop/Kenh14_cold"
     },
     {
-        "duration": "35.0",
+        "duration": "19.0",
         "name": "loading.desktop/Kenh14_warm"
     },
     {
-        "duration": "15.0",
+        "duration": "11.0",
         "name": "loading.desktop/Mercadolivre_cold"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "loading.desktop/Mercadolivre_warm"
     },
     {
-        "duration": "15.0",
+        "duration": "11.0",
         "name": "loading.desktop/Naver_cold"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "loading.desktop/Naver_warm"
     },
     {
-        "duration": "14.0",
+        "duration": "11.0",
         "name": "loading.desktop/Orange_cold"
     },
     {
-        "duration": "17.0",
+        "duration": "12.0",
         "name": "loading.desktop/Orange_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "12.0",
         "name": "loading.desktop/Pantip_cold"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "loading.desktop/Pantip_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "12.0",
         "name": "loading.desktop/PremierLeague_cold"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "loading.desktop/PremierLeague_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "12.0",
         "name": "loading.desktop/QQ_cold"
     },
     {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "loading.desktop/QQ_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "12.0",
         "name": "loading.desktop/REI_cold"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "loading.desktop/REI_warm"
     },
     {
-        "duration": "15.0",
+        "duration": "12.0",
         "name": "loading.desktop/Ruten_cold"
     },
     {
-        "duration": "18.0",
+        "duration": "13.0",
         "name": "loading.desktop/Ruten_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "loading.desktop/Sina_cold"
     },
     {
-        "duration": "26.0",
+        "duration": "18.0",
         "name": "loading.desktop/Sina_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "loading.desktop/Taobao_cold"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "loading.desktop/Taobao_warm"
     },
     {
-        "duration": "18.0",
-        "name": "loading.desktop/TheOnion_cold"
-    },
-    {
-        "duration": "25.0",
-        "name": "loading.desktop/TheOnion_warm"
-    },
-    {
-        "duration": "18.0",
+        "duration": "12.0",
         "name": "loading.desktop/TheVerge_cold"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "loading.desktop/TheVerge_warm"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "loading.desktop/TicketMaster_cold"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "loading.desktop/TicketMaster_warm"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "loading.desktop/Vietnamnet_cold"
     },
     {
-        "duration": "34.0",
+        "duration": "18.0",
         "name": "loading.desktop/Vietnamnet_warm"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "loading.desktop/Vnexpress_cold"
     },
     {
-        "duration": "39.0",
+        "duration": "15.0",
         "name": "loading.desktop/Vnexpress_warm"
     },
     {
-        "duration": "22.0",
-        "name": "loading.desktop/Walgreens_cold"
-    },
-    {
-        "duration": "32.0",
-        "name": "loading.desktop/Walgreens_warm"
-    },
-    {
-        "duration": "15.0",
+        "duration": "11.0",
         "name": "loading.desktop/Yandex_cold"
     },
     {
-        "duration": "17.0",
+        "duration": "13.0",
         "name": "loading.desktop/Yandex_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "13.0",
         "name": "loading.desktop/amazon.co.jp_cold"
     },
     {
-        "duration": "25.0",
+        "duration": "16.0",
         "name": "loading.desktop/amazon.co.jp_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "12.0",
         "name": "loading.desktop/ja.wikipedia_cold"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "loading.desktop/ja.wikipedia_warm"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "loading.desktop/money.cnn_cold"
     },
     {
-        "duration": "29.0",
+        "duration": "17.0",
         "name": "loading.desktop/money.cnn_warm"
     },
     {
-        "duration": "27.0",
+        "duration": "12.0",
         "name": "loading.desktop/ru.wikipedia_cold"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "loading.desktop/ru.wikipedia_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "11.0",
         "name": "loading.desktop/yahoo.co.jp_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "loading.desktop/yahoo.co.jp_warm"
     },
     {
-        "duration": "15.0",
+        "duration": "12.0",
         "name": "media.desktop/mse.html?media=aac_audio.mp4"
     },
     {
-        "duration": "16.0",
+        "duration": "13.0",
         "name": "media.desktop/mse.html?media=aac_audio.mp4,h264_video.mp4"
     },
     {
-        "duration": "16.0",
+        "duration": "12.0",
         "name": "media.desktop/mse.html?media=aac_audio.mp4,h264_video.mp4&waitForPageLoaded=true"
     },
     {
-        "duration": "16.0",
+        "duration": "11.0",
         "name": "media.desktop/mse.html?media=h264_video.mp4"
     },
     {
-        "duration": "28.0",
+        "duration": "12.0",
+        "name": "media.desktop/mse.html?media=tulip0.av1.mp4"
+    },
+    {
+        "duration": "19.0",
         "name": "media.desktop/video.html?src=crowd.ogg&type=audio"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "media.desktop/video.html?src=crowd1080.mp4"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "media.desktop/video.html?src=crowd1080.webm"
     },
     {
-        "duration": "23.0",
+        "duration": "17.0",
         "name": "media.desktop/video.html?src=crowd1080_vp9.webm"
     },
     {
-        "duration": "13.0",
+        "duration": "11.0",
         "name": "media.desktop/video.html?src=crowd1080_vp9.webm&seek"
     },
     {
-        "duration": "23.0",
+        "duration": "17.0",
         "name": "media.desktop/video.html?src=crowd720_vp9.webm"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "media.desktop/video.html?src=garden2_10s.mp4"
     },
     {
-        "duration": "15.0",
+        "duration": "11.0",
         "name": "media.desktop/video.html?src=garden2_10s.mp4&seek"
     },
     {
-        "duration": "24.0",
+        "duration": "17.0",
         "name": "media.desktop/video.html?src=garden2_10s.webm"
     },
     {
-        "duration": "14.0",
+        "duration": "11.0",
         "name": "media.desktop/video.html?src=garden2_10s.webm&seek"
     },
     {
-        "duration": "16.0",
+        "duration": "12.0",
         "name": "media.desktop/video.html?src=smpte_3840x2160_60fps_vp9.webm&seek"
     },
     {
-        "duration": "30.0",
-        "name": "media.desktop/video.html?src=tulip2.m4a&type=audio"
+        "duration": "18.0",
+        "name": "media.desktop/video.html?src=tulip0.av1.mp4"
     },
     {
-        "duration": "30.0",
-        "name": "media.desktop/video.html?src=tulip2.mp3&type=audio"
-    },
-    {
-        "duration": "13.0",
-        "name": "media.desktop/video.html?src=tulip2.mp3&type=audio&seek"
-    },
-    {
-        "duration": "32.0",
-        "name": "media.desktop/video.html?src=tulip2.mp4"
-    },
-    {
-        "duration": "32.0",
-        "name": "media.desktop/video.html?src=tulip2.mp4&busyjs"
-    },
-    {
-        "duration": "13.0",
-        "name": "media.desktop/video.html?src=tulip2.mp4&seek"
-    },
-    {
-        "duration": "30.0",
-        "name": "media.desktop/video.html?src=tulip2.ogg&type=audio"
-    },
-    {
-        "duration": "13.0",
-        "name": "media.desktop/video.html?src=tulip2.ogg&type=audio&seek"
-    },
-    {
-        "duration": "37.0",
-        "name": "media.desktop/video.html?src=tulip2.vp9.webm"
-    },
-    {
-        "duration": "25.0",
-        "name": "media.desktop/video.html?src=tulip2.vp9.webm&background"
-    },
-    {
-        "duration": "15.0",
-        "name": "media.desktop/video.html?src=tulip2.vp9.webm&seek"
-    },
-    {
-        "duration": "30.0",
-        "name": "media.desktop/video.html?src=tulip2.wav&type=audio"
-    },
-    {
-        "duration": "13.0",
-        "name": "media.desktop/video.html?src=tulip2.wav&type=audio&seek"
-    },
-    {
-        "duration": "23.0",
-        "name": "memory.desktop/TrivialAnimationPageSharedPageState"
-    },
-    {
-        "duration": "22.0",
-        "name": "memory.desktop/TrivialBlinkingCursorPageSharedPageState"
-    },
-    {
-        "duration": "22.0",
-        "name": "memory.desktop/TrivialBlurAnimationPageSharedPageState"
-    },
-    {
-        "duration": "22.0",
-        "name": "memory.desktop/TrivialCanvasPageSharedPageState"
-    },
-    {
-        "duration": "23.0",
-        "name": "memory.desktop/TrivialFullscreenVideoPageSharedPageState"
-    },
-    {
-        "duration": "22.0",
-        "name": "memory.desktop/TrivialGifPageSharedPageState"
+        "duration": "11.0",
+        "name": "media.desktop/video.html?src=tulip0.av1.mp4&seek"
     },
     {
         "duration": "24.0",
+        "name": "media.desktop/video.html?src=tulip2.m4a&type=audio"
+    },
+    {
+        "duration": "24.0",
+        "name": "media.desktop/video.html?src=tulip2.mp3&type=audio"
+    },
+    {
+        "duration": "11.0",
+        "name": "media.desktop/video.html?src=tulip2.mp3&type=audio&seek"
+    },
+    {
+        "duration": "25.0",
+        "name": "media.desktop/video.html?src=tulip2.mp4"
+    },
+    {
+        "duration": "25.0",
+        "name": "media.desktop/video.html?src=tulip2.mp4&busyjs"
+    },
+    {
+        "duration": "11.0",
+        "name": "media.desktop/video.html?src=tulip2.mp4&seek"
+    },
+    {
+        "duration": "24.0",
+        "name": "media.desktop/video.html?src=tulip2.ogg&type=audio"
+    },
+    {
+        "duration": "11.0",
+        "name": "media.desktop/video.html?src=tulip2.ogg&type=audio&seek"
+    },
+    {
+        "duration": "26.0",
+        "name": "media.desktop/video.html?src=tulip2.vp9.webm"
+    },
+    {
+        "duration": "18.0",
+        "name": "media.desktop/video.html?src=tulip2.vp9.webm&background"
+    },
+    {
+        "duration": "12.0",
+        "name": "media.desktop/video.html?src=tulip2.vp9.webm&seek"
+    },
+    {
+        "duration": "52.0",
+        "name": "media.desktop/video.html?src=tulip2.vp9.webm_WiFi"
+    },
+    {
+        "duration": "24.0",
+        "name": "media.desktop/video.html?src=tulip2.wav&type=audio"
+    },
+    {
+        "duration": "12.0",
+        "name": "media.desktop/video.html?src=tulip2.wav&type=audio&seek"
+    },
+    {
+        "duration": "18.0",
+        "name": "memory.desktop/TrivialAnimationPageSharedPageState"
+    },
+    {
+        "duration": "18.0",
+        "name": "memory.desktop/TrivialBlinkingCursorPageSharedPageState"
+    },
+    {
+        "duration": "19.0",
+        "name": "memory.desktop/TrivialBlurAnimationPageSharedPageState"
+    },
+    {
+        "duration": "18.0",
+        "name": "memory.desktop/TrivialCanvasPageSharedPageState"
+    },
+    {
+        "duration": "18.0",
+        "name": "memory.desktop/TrivialFullscreenVideoPageSharedPageState"
+    },
+    {
+        "duration": "18.0",
+        "name": "memory.desktop/TrivialGifPageSharedPageState"
+    },
+    {
+        "duration": "19.0",
         "name": "memory.desktop/TrivialScrollingPageSharedPageState"
     },
     {
-        "duration": "22.0",
+        "duration": "18.0",
         "name": "memory.desktop/TrivialWebGLPageSharedPageState"
     },
     {
-        "duration": "37.0",
+        "duration": "31.0",
         "name": "memory.desktop/WebWorker"
     },
     {
-        "duration": "162.0",
-        "name": "memory.long_running_idle_gmail_background_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "154.0",
-        "name": "memory.long_running_idle_gmail_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "46.0",
+        "duration": "43.0",
         "name": "octane/http://chromium.github.io/octane/index.html?auto=1"
     },
     {
-        "duration": "65.0",
-        "name": "oortonline_tbmv2/http://oortonline.gl/#run"
-    },
-    {
-        "duration": "47.0",
+        "duration": "37.0",
         "name": "power.desktop/TrivialAnimationPageSharedPageState"
     },
     {
-        "duration": "44.0",
+        "duration": "36.0",
         "name": "power.desktop/TrivialBlinkingCursorPageSharedPageState"
     },
     {
-        "duration": "46.0",
+        "duration": "37.0",
         "name": "power.desktop/TrivialBlurAnimationPageSharedPageState"
     },
     {
-        "duration": "46.0",
+        "duration": "37.0",
         "name": "power.desktop/TrivialCanvasPageSharedPageState"
     },
     {
-        "duration": "44.0",
+        "duration": "37.0",
         "name": "power.desktop/TrivialFullscreenVideoPageSharedPageState"
     },
     {
-        "duration": "44.0",
+        "duration": "39.0",
         "name": "power.desktop/TrivialGifPageSharedPageState"
     },
     {
-        "duration": "50.0",
+        "duration": "39.0",
         "name": "power.desktop/TrivialScrollingPageSharedPageState"
     },
     {
-        "duration": "46.0",
+        "duration": "37.0",
         "name": "power.desktop/TrivialWebGLPageSharedPageState"
     },
     {
-        "duration": "547.0",
+        "duration": "43.0",
         "name": "power.desktop/abcnews"
     },
     {
-        "duration": "43.0",
+        "duration": "37.0",
         "name": "power.desktop/indiatimes"
     },
     {
-        "duration": "55.0",
+        "duration": "37.0",
         "name": "power.desktop/instagram"
     },
     {
-        "duration": "43.0",
+        "duration": "37.0",
         "name": "power.desktop/microsoft"
     },
     {
-        "duration": "45.0",
+        "duration": "37.0",
         "name": "power.desktop/sina"
     },
     {
-        "duration": "45.0",
+        "duration": "37.0",
         "name": "power.desktop/slideshare"
     },
     {
-        "duration": "56.0",
+        "duration": "39.0",
         "name": "power.desktop/uol"
     },
     {
-        "duration": "15.0",
+        "duration": "13.0",
         "name": "rasterize_and_record_micro.partial_invalidation/800_relpos_divs.html"
     },
     {
-        "duration": "20.0",
+        "duration": "17.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html"
     },
     {
@@ -1880,19 +2056,19 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html"
     },
     {
-        "duration": "12.0",
+        "duration": "14.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/ebay.html"
     },
     {
-        "duration": "16.0",
+        "duration": "17.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html"
     },
     {
@@ -1900,7 +2076,7 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html"
     },
     {
@@ -1908,11 +2084,11 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/google.html"
     },
     {
-        "duration": "10.0",
+        "duration": "11.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googlecalendar.html"
     },
     {
-        "duration": "10.0",
+        "duration": "11.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googledocs.html"
     },
     {
@@ -1920,23 +2096,23 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html"
     },
     {
-        "duration": "18.0",
+        "duration": "19.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html"
     },
     {
-        "duration": "28.0",
+        "duration": "15.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html"
     },
     {
-        "duration": "14.0",
+        "duration": "15.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html"
     },
     {
@@ -1944,211 +2120,211 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html"
     },
     {
-        "duration": "10.0",
+        "duration": "11.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html"
     },
     {
-        "duration": "22.0",
+        "duration": "24.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html"
     },
     {
-        "duration": "99.0",
+        "duration": "102.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html"
     },
     {
-        "duration": "78.0",
+        "duration": "80.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html"
     },
     {
-        "duration": "23.0",
+        "duration": "19.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html"
     },
     {
-        "duration": "41.0",
+        "duration": "19.0",
         "name": "rendering.desktop/accu_weather_2018"
     },
     {
-        "duration": "10.0",
+        "duration": "17.0",
         "name": "rendering.desktop/accu_weather_pinch_2018"
     },
     {
-        "duration": "35.0",
+        "duration": "20.0",
         "name": "rendering.desktop/amazon_2018"
     },
     {
-        "duration": "10.0",
+        "duration": "13.0",
         "name": "rendering.desktop/amazon_pinch_2018"
     },
     {
-        "duration": "29.0",
+        "duration": "17.0",
         "name": "rendering.desktop/analog_clock_svg"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "rendering.desktop/animometer_webgl"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
+        "name": "rendering.desktop/animometer_webgl_attrib_arrays"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/animometer_webgl_multi_draw"
+    },
+    {
+        "duration": "15.0",
         "name": "rendering.desktop/aquarium"
     },
     {
-        "duration": "37.0",
+        "duration": "21.0",
         "name": "rendering.desktop/aquarium_20k"
     },
     {
-        "duration": "31.0",
+        "duration": "19.0",
         "name": "rendering.desktop/background_color_animation"
     },
     {
-        "duration": "40.0",
+        "duration": "18.0",
         "name": "rendering.desktop/background_color_animation_with_gradient"
     },
     {
-        "duration": "27.0",
+        "duration": "17.0",
         "name": "rendering.desktop/balls_css_key_frame_animations"
     },
     {
-        "duration": "28.0",
+        "duration": "17.0",
         "name": "rendering.desktop/balls_css_key_frame_animations_composited_transform"
     },
     {
-        "duration": "33.0",
+        "duration": "17.0",
         "name": "rendering.desktop/balls_css_transition_2_properties"
     },
     {
-        "duration": "33.0",
+        "duration": "17.0",
         "name": "rendering.desktop/balls_css_transition_40_properties"
     },
     {
-        "duration": "33.0",
+        "duration": "17.0",
         "name": "rendering.desktop/balls_css_transition_all_properties"
     },
     {
-        "duration": "29.0",
+        "duration": "17.0",
         "name": "rendering.desktop/balls_javascript_canvas"
     },
     {
-        "duration": "28.0",
+        "duration": "17.0",
         "name": "rendering.desktop/balls_javascript_css"
     },
     {
-        "duration": "31.0",
+        "duration": "17.0",
         "name": "rendering.desktop/balls_svg_animations"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "rendering.desktop/blob"
     },
     {
-        "duration": "38.0",
+        "duration": "16.0",
         "name": "rendering.desktop/blogspot_2018"
     },
     {
-        "duration": "10.0",
+        "duration": "13.0",
         "name": "rendering.desktop/blogspot_pinch_2018"
     },
     {
-        "duration": "32.0",
+        "duration": "12.0",
+        "name": "rendering.desktop/blur_rotating_background"
+    },
+    {
+        "duration": "13.0",
         "name": "rendering.desktop/booking.com_2018"
     },
     {
-        "duration": "10.0",
+        "duration": "13.0",
         "name": "rendering.desktop/booking_pinch_2018"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "rendering.desktop/bouncing_balls_15"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "rendering.desktop/bouncing_balls_shadow"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "rendering.desktop/bouncing_clipped_rectangles"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "rendering.desktop/bouncing_gradient_circles"
     },
     {
-        "duration": "16.0",
+        "duration": "13.0",
         "name": "rendering.desktop/bouncing_png_images"
     },
     {
-        "duration": "30.0",
+        "duration": "13.0",
         "name": "rendering.desktop/bouncing_svg_images"
     },
     {
-        "duration": "69.0",
+        "duration": "18.0",
         "name": "rendering.desktop/camera_to_webgl"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "rendering.desktop/canvas_05000_pixels_per_second"
     },
     {
-        "duration": "22.0",
+        "duration": "14.0",
         "name": "rendering.desktop/canvas_10000_pixels_per_second"
     },
     {
-        "duration": "18.0",
-        "name": "rendering.desktop/canvas_15000_pixels_per_second"
-    },
-    {
-        "duration": "17.0",
+        "duration": "12.0",
         "name": "rendering.desktop/canvas_20000_pixels_per_second"
     },
     {
-        "duration": "15.0",
-        "name": "rendering.desktop/canvas_30000_pixels_per_second"
-    },
-    {
-        "duration": "15.0",
+        "duration": "11.0",
         "name": "rendering.desktop/canvas_40000_pixels_per_second"
     },
     {
-        "duration": "14.0",
-        "name": "rendering.desktop/canvas_50000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
+        "duration": "11.0",
         "name": "rendering.desktop/canvas_60000_pixels_per_second"
     },
     {
-        "duration": "13.0",
+        "duration": "11.0",
         "name": "rendering.desktop/canvas_75000_pixels_per_second"
     },
     {
-        "duration": "13.0",
+        "duration": "11.0",
         "name": "rendering.desktop/canvas_90000_pixels_per_second"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "rendering.desktop/canvas_animation_no_clear"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "rendering.desktop/canvas_arcs"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "rendering.desktop/canvas_font_cycler"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "rendering.desktop/canvas_lines"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "rendering.desktop/canvas_to_blob"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "rendering.desktop/cats_unscaled"
     },
     {
@@ -2156,1323 +2332,1643 @@
         "name": "rendering.desktop/cats_viewport_width"
     },
     {
-        "duration": "29.0",
+        "duration": "20.0",
         "name": "rendering.desktop/cc_poster_circle"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.desktop/cc_scroll_200_layer_grid"
-    },
-    {
-        "duration": "20.0",
+        "duration": "14.0",
         "name": "rendering.desktop/cc_scroll_text_only"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "rendering.desktop/chip_tune"
     },
     {
-        "duration": "32.0",
+        "duration": "14.0",
         "name": "rendering.desktop/cnn_2018"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "rendering.desktop/cnn_pinch_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "16.0",
         "name": "rendering.desktop/compositor_heavy_animation"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "rendering.desktop/crafty_mind"
     },
     {
-        "duration": "26.0",
+        "duration": "17.0",
         "name": "rendering.desktop/css_animations_many_keyframes"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.desktop/css_animations_simultaneous_inline_style"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.desktop/css_animations_simultaneous_new_element"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.desktop/css_animations_simultaneous_style_element"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.desktop/css_animations_simultaneous_updating_class"
     },
     {
-        "duration": "25.0",
+        "duration": "16.0",
         "name": "rendering.desktop/css_animations_staggered_infinite_iterations"
     },
     {
-        "duration": "29.0",
+        "duration": "18.0",
         "name": "rendering.desktop/css_animations_staggered_inline_style"
     },
     {
-        "duration": "30.0",
+        "duration": "18.0",
         "name": "rendering.desktop/css_animations_staggered_new_element"
     },
     {
-        "duration": "30.0",
+        "duration": "18.0",
         "name": "rendering.desktop/css_animations_staggered_style_element"
     },
     {
-        "duration": "29.0",
+        "duration": "17.0",
         "name": "rendering.desktop/css_animations_staggered_updating_class"
     },
     {
-        "duration": "30.0",
+        "duration": "20.0",
         "name": "rendering.desktop/css_animations_triggered_inline_style"
     },
     {
-        "duration": "31.0",
+        "duration": "18.0",
         "name": "rendering.desktop/css_animations_triggered_new_element"
     },
     {
-        "duration": "30.0",
+        "duration": "17.0",
         "name": "rendering.desktop/css_animations_triggered_style_element"
     },
     {
-        "duration": "30.0",
+        "duration": "18.0",
         "name": "rendering.desktop/css_animations_triggered_updating_class"
     },
     {
-        "duration": "29.0",
+        "duration": "19.0",
         "name": "rendering.desktop/css_opacity_plus_n_layers_99"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.desktop/css_transitions_inline_style"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.desktop/css_transitions_new_element"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "rendering.desktop/css_transitions_staggered_inline_style"
     },
     {
-        "duration": "28.0",
+        "duration": "17.0",
         "name": "rendering.desktop/css_transitions_staggered_new_element"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "rendering.desktop/css_transitions_staggered_style_element"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "rendering.desktop/css_transitions_staggered_updating_class"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.desktop/css_transitions_style_element"
     },
     {
-        "duration": "29.0",
+        "duration": "17.0",
         "name": "rendering.desktop/css_transitions_triggered_inline_style"
     },
     {
-        "duration": "29.0",
+        "duration": "17.0",
         "name": "rendering.desktop/css_transitions_triggered_new_element"
     },
     {
-        "duration": "29.0",
+        "duration": "17.0",
         "name": "rendering.desktop/css_transitions_triggered_style_element"
     },
     {
-        "duration": "29.0",
+        "duration": "17.0",
         "name": "rendering.desktop/css_transitions_triggered_updating_class"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.desktop/css_transitions_updating_class"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.desktop/css_value_type_color"
     },
     {
-        "duration": "41.0",
+        "duration": "17.0",
         "name": "rendering.desktop/css_value_type_filter"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "rendering.desktop/css_value_type_length"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.desktop/css_value_type_length_complex"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.desktop/css_value_type_length_simple"
     },
     {
-        "duration": "27.0",
+        "duration": "17.0",
         "name": "rendering.desktop/css_value_type_path"
     },
     {
-        "duration": "28.0",
+        "duration": "17.0",
         "name": "rendering.desktop/css_value_type_shadow"
     },
     {
-        "duration": "27.0",
+        "duration": "17.0",
         "name": "rendering.desktop/css_value_type_transform_complex"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "rendering.desktop/css_value_type_transform_simple"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "rendering.desktop/dynamic_cube_map"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "rendering.desktop/earth"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.desktop/ebay_2018"
     },
     {
-        "duration": "10.0",
+        "duration": "15.0",
         "name": "rendering.desktop/ebay_pinch_2018"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "rendering.desktop/effect_games"
     },
     {
-        "duration": "41.0",
+        "duration": "18.0",
         "name": "rendering.desktop/espn_2018"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "rendering.desktop/espn_pinch_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "17.0",
         "name": "rendering.desktop/extra_large_texture_uploads"
     },
     {
-        "duration": "24.0",
+        "duration": "12.0",
         "name": "rendering.desktop/facebook_2018"
     },
     {
-        "duration": "10.0",
+        "duration": "12.0",
         "name": "rendering.desktop/facebook_pinch_2018"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "rendering.desktop/fill_shapes"
     },
     {
-        "duration": "33.0",
+        "duration": "17.0",
         "name": "rendering.desktop/filter_terrain_svg"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "rendering.desktop/geo_apis"
     },
     {
-        "duration": "23.0",
+        "duration": "11.0",
         "name": "rendering.desktop/gmail_2018"
     },
     {
-        "duration": "36.0",
+        "duration": "22.0",
         "name": "rendering.desktop/gmail_move_2018"
     },
     {
-        "duration": "10.0",
+        "duration": "13.0",
         "name": "rendering.desktop/gmail_pinch_2018"
     },
     {
-        "duration": "18.0",
+        "duration": "12.0",
         "name": "rendering.desktop/google_calendar_2018"
     },
     {
-        "duration": "10.0",
+        "duration": "13.0",
         "name": "rendering.desktop/google_calendar_pinch_2018"
     },
     {
-        "duration": "42.0",
+        "duration": "15.0",
         "name": "rendering.desktop/google_docs_2018"
     },
     {
-        "duration": "10.0",
+        "duration": "12.0",
         "name": "rendering.desktop/google_image_pinch_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "12.0",
         "name": "rendering.desktop/google_image_search_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.desktop/google_plus_2018"
     },
     {
-        "duration": "10.0",
+        "duration": "12.0",
         "name": "rendering.desktop/google_search_pinch_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "rendering.desktop/google_web_search_2018"
     },
     {
-        "duration": "29.0",
+        "duration": "17.0",
         "name": "rendering.desktop/guimark_vector_chart"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "rendering.desktop/hakim"
     },
     {
-        "duration": "38.0",
+        "duration": "27.0",
         "name": "rendering.desktop/ie_chalkboard"
     },
     {
-        "duration": "33.0",
+        "duration": "19.0",
         "name": "rendering.desktop/ie_pirate_mark"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "rendering.desktop/infinite_scroll_element_n_layers_99"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
+        "name": "rendering.desktop/infinite_scroll_root_fixed_n_layers_99"
+    },
+    {
+        "duration": "18.0",
         "name": "rendering.desktop/infinite_scroll_root_n_layers_99"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "rendering.desktop/jarro_doverson"
     },
     {
-        "duration": "36.0",
+        "duration": "21.0",
         "name": "rendering.desktop/js_full_screen_invalidation"
     },
     {
-        "duration": "32.0",
+        "duration": "20.0",
         "name": "rendering.desktop/js_opacity_plus_n_layers_99"
     },
     {
-        "duration": "33.0",
+        "duration": "20.0",
         "name": "rendering.desktop/js_paint_plus_n_layers_99"
     },
     {
-        "duration": "31.0",
+        "duration": "20.0",
         "name": "rendering.desktop/js_poster_circle"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.desktop/js_scroll_200_layer_grid"
-    },
-    {
-        "duration": "27.0",
+        "duration": "19.0",
         "name": "rendering.desktop/js_scroll_text_only"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "rendering.desktop/kevs_3d"
     },
     {
-        "duration": "25.0",
+        "duration": "19.0",
         "name": "rendering.desktop/keyframed_animations"
     },
     {
-        "duration": "28.0",
+        "duration": "17.0",
         "name": "rendering.desktop/large_texture_uploads"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "rendering.desktop/linkedin_2018"
     },
     {
-        "duration": "10.0",
+        "duration": "16.0",
         "name": "rendering.desktop/linkedin_pinch_2018"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "rendering.desktop/man_in_blue"
     },
     {
-        "duration": "28.0",
+        "duration": "15.0",
         "name": "rendering.desktop/many_images"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "rendering.desktop/many_planets_deep"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "rendering.desktop/maps_move_2018"
     },
     {
-        "duration": "29.0",
+        "duration": "17.0",
         "name": "rendering.desktop/maps_perf_test"
     },
     {
-        "duration": "27.0",
+        "duration": "17.0",
         "name": "rendering.desktop/medium_texture_uploads"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rendering.desktop/megi_dish"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "rendering.desktop/microsoft_asteroid_belt"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "rendering.desktop/microsoft_fireflies"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "rendering.desktop/microsoft_fish_ie_tank"
     },
     {
-        "duration": "20.0",
-        "name": "rendering.desktop/microsoft_snow"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.desktop/microsoft_speed_reading"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.desktop/microsoft_tweet_map"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.desktop/microsoft_video_city"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.desktop/microsoft_worker_fountains"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.desktop/mix_10k"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/mix_blend_mode_animation_difference"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/mix_blend_mode_animation_hue"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.desktop/mix_blend_mode_animation_propagating_isolation"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/mix_blend_mode_animation_screen"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.desktop/motion_mark_canvas_fill_shapes"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.desktop/motion_mark_canvas_stroke_shapes"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.desktop/motion_mark_focus"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.desktop/new_tilings"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.desktop/nvidia_vertex_buffer_object"
-    },
-    {
-        "duration": "48.0",
-        "name": "rendering.desktop/overlay_background_color_css_transitions_page"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.desktop/particles"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.desktop/pinterest_2018"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.desktop/put_get_image_data"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.desktop/raf"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.desktop/raf_animation"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.desktop/raf_canvas"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.desktop/raf_touch_animation"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.desktop/runway"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.desktop/san_angeles"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.desktop/second_batch_js_heavy"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.desktop/second_batch_js_light"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.desktop/second_batch_js_medium"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.desktop/simple_text_page"
-    },
-    {
-        "duration": "16.0",
-        "name": "rendering.desktop/simple_touch_drag"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.desktop/small_texture_uploads"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.desktop/smash_cat"
-    },
-    {
-        "duration": "18.0",
-        "name": "rendering.desktop/spielzeugz"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.desktop/stroke_shapes"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.desktop/sync_scroll_offset"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.desktop/techcrunch_2018"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.desktop/text_05000_pixels_per_second"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.desktop/text_10000_pixels_per_second"
-    },
-    {
-        "duration": "18.0",
-        "name": "rendering.desktop/text_15000_pixels_per_second"
-    },
-    {
-        "duration": "16.0",
-        "name": "rendering.desktop/text_20000_pixels_per_second"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.desktop/text_30000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.desktop/text_40000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.desktop/text_50000_pixels_per_second"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.desktop/text_60000_pixels_per_second"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.desktop/text_75000_pixels_per_second"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.desktop/text_90000_pixels_per_second"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_05000_pixels_per_second"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_10000_pixels_per_second"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_15000_pixels_per_second"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_20000_pixels_per_second"
-    },
-    {
         "duration": "17.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_30000_pixels_per_second"
-    },
-    {
-        "duration": "16.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_40000_pixels_per_second"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_50000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_60000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_75000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_90000_pixels_per_second"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.desktop/text_hover_05000_pixels_per_second"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.desktop/text_hover_10000_pixels_per_second"
-    },
-    {
-        "duration": "18.0",
-        "name": "rendering.desktop/text_hover_15000_pixels_per_second"
-    },
-    {
-        "duration": "16.0",
-        "name": "rendering.desktop/text_hover_20000_pixels_per_second"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.desktop/text_hover_30000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.desktop/text_hover_40000_pixels_per_second"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.desktop/text_hover_50000_pixels_per_second"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.desktop/text_hover_60000_pixels_per_second"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.desktop/text_hover_75000_pixels_per_second"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.desktop/text_hover_90000_pixels_per_second"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.desktop/touch_handler_scrolling"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.desktop/transform_transitions"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.desktop/transform_transitions_js_block"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.desktop/twitch_2018"
-    },
-    {
-        "duration": "10.0",
-        "name": "rendering.desktop/twitch_pinch_2018"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.desktop/twitter_2018"
-    },
-    {
-        "duration": "10.0",
-        "name": "rendering.desktop/twitter_pinch_2018"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/web_animation_value_type_color"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.desktop/web_animation_value_type_length_3d"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/web_animation_value_type_length_complex"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/web_animation_value_type_length_simple"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.desktop/web_animation_value_type_path"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.desktop/web_animation_value_type_shadow"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.desktop/web_animation_value_type_transform_complex"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.desktop/web_animation_value_type_transform_simple"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/web_animations_many_keyframes"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.desktop/web_animations_set_current_time"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.desktop/web_animations_simultaneous"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.desktop/web_animations_staggered_chaining"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.desktop/web_animations_staggered_infinite_iterations"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.desktop/web_animations_staggered_triggering_page"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.desktop/wikipedia_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.desktop/wordpress_2018"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.desktop/yahoo_answers_2018"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.desktop/yahoo_news_2018"
-    },
-    {
-        "duration": "10.0",
-        "name": "rendering.desktop/yahoo_news_pinch_2018"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.desktop/yahoo_sports_2018"
-    },
-    {
-        "duration": "10.0",
-        "name": "rendering.desktop/yahoo_sports_pinch_2018"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.desktop/youtube_2018"
-    },
-    {
-        "duration": "10.0",
-        "name": "rendering.desktop/youtube_pinch_2018"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.desktop/yuv_decoding"
-    },
-    {
-        "duration": "40.0",
-        "name": "speedometer-future/http://browserbench.org/Speedometer/"
-    },
-    {
-        "duration": "39.0",
-        "name": "speedometer/http://browserbench.org/Speedometer/"
-    },
-    {
-        "duration": "69.0",
-        "name": "speedometer2-future/Speedometer2"
-    },
-    {
-        "duration": "68.0",
-        "name": "speedometer2/Speedometer2"
-    },
-    {
-        "duration": "77.0",
-        "name": "system_health.common_desktop/browse:media:flickr_infinite_scroll"
-    },
-    {
-        "duration": "107.0",
-        "name": "system_health.common_desktop/browse:media:imgur"
-    },
-    {
-        "duration": "73.0",
-        "name": "system_health.common_desktop/browse:media:pinterest"
-    },
-    {
-        "duration": "116.0",
-        "name": "system_health.common_desktop/browse:media:tumblr"
-    },
-    {
-        "duration": "77.0",
-        "name": "system_health.common_desktop/browse:media:youtube"
-    },
-    {
-        "duration": "74.0",
-        "name": "system_health.common_desktop/browse:news:cnn"
-    },
-    {
-        "duration": "56.0",
-        "name": "system_health.common_desktop/browse:news:cnn:2018"
-    },
-    {
-        "duration": "59.0",
-        "name": "system_health.common_desktop/browse:news:flipboard"
-    },
-    {
-        "duration": "55.0",
-        "name": "system_health.common_desktop/browse:news:hackernews"
-    },
-    {
-        "duration": "84.0",
-        "name": "system_health.common_desktop/browse:news:nytimes"
-    },
-    {
-        "duration": "67.0",
-        "name": "system_health.common_desktop/browse:news:reddit"
-    },
-    {
-        "duration": "53.0",
-        "name": "system_health.common_desktop/browse:search:google"
-    },
-    {
-        "duration": "54.0",
-        "name": "system_health.common_desktop/browse:search:google:2018"
-    },
-    {
-        "duration": "41.0",
-        "name": "system_health.common_desktop/browse:search:google_india"
-    },
-    {
-        "duration": "76.0",
-        "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "90.0",
-        "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll:2018"
-    },
-    {
-        "duration": "88.0",
-        "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "53.0",
-        "name": "system_health.common_desktop/browse:social:twitter"
-    },
-    {
-        "duration": "78.0",
-        "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "75.0",
-        "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "84.0",
-        "name": "system_health.common_desktop/browse:tools:earth"
-    },
-    {
-        "duration": "61.0",
-        "name": "system_health.common_desktop/browse:tools:maps"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.common_desktop/browse_accessibility:media:youtube"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.common_desktop/browse_accessibility:tech:codesearch"
-    },
-    {
-        "duration": "42.0",
-        "name": "system_health.common_desktop/browse_accessibility:tech:codesearch:2018"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.common_desktop/load:chrome:blank"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.common_desktop/load:games:alphabetty"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:games:bubbles"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.common_desktop/load:games:lazors"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.common_desktop/load:games:miniclip"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.common_desktop/load:games:spychase"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.common_desktop/load:media:9gag"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:media:dailymotion"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.common_desktop/load:media:google_images"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.common_desktop/load:media:imgur"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_desktop/load:media:soundcloud"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.common_desktop/load:media:youtube"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:news:bbc"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_desktop/load:news:cnn"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_desktop/load:news:flipboard"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.common_desktop/load:news:hackernews"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.common_desktop/load:news:nytimes"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.common_desktop/load:news:qq"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.common_desktop/load:news:reddit"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.common_desktop/load:news:wikipedia"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:search:amazon"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.common_desktop/load:search:baidu"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.common_desktop/load:search:ebay"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.common_desktop/load:search:google"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:search:taobao"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.common_desktop/load:search:yahoo"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.common_desktop/load:search:yandex"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:social:instagram"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:social:pinterest"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:social:vk"
-    },
-    {
-        "duration": "41.0",
-        "name": "system_health.common_desktop/load:tools:docs"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:tools:drive"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.common_desktop/load:tools:dropbox"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.common_desktop/load:tools:gmail"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.common_desktop/load:tools:stackoverflow"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.common_desktop/load:tools:weather"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load_accessibility:media:wikipedia"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load_accessibility:media:wikipedia:2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.common_desktop/load_accessibility:shopping:amazon"
-    },
-    {
-        "duration": "137.0",
-        "name": "system_health.common_desktop/long_running:tools:gmail-background"
-    },
-    {
-        "duration": "147.0",
-        "name": "system_health.common_desktop/long_running:tools:gmail-foreground"
-    },
-    {
-        "duration": "130.0",
-        "name": "system_health.common_desktop/multitab:misc:typical24"
-    },
-    {
-        "duration": "55.0",
-        "name": "system_health.common_desktop/play:media:google_play_music"
-    },
-    {
-        "duration": "55.0",
-        "name": "system_health.common_desktop/play:media:soundcloud"
-    },
-    {
-        "duration": "65.0",
-        "name": "system_health.memory_desktop/browse:media:flickr_infinite_scroll"
-    },
-    {
-        "duration": "71.0",
-        "name": "system_health.memory_desktop/browse:media:imgur"
-    },
-    {
-        "duration": "64.0",
-        "name": "system_health.memory_desktop/browse:media:pinterest"
-    },
-    {
-        "duration": "65.0",
-        "name": "system_health.memory_desktop/browse:media:youtube"
-    },
-    {
-        "duration": "46.0",
-        "name": "system_health.memory_desktop/browse:news:cnn"
-    },
-    {
-        "duration": "40.0",
-        "name": "system_health.memory_desktop/browse:news:cnn:2018"
-    },
-    {
-        "duration": "50.0",
-        "name": "system_health.memory_desktop/browse:news:hackernews"
-    },
-    {
-        "duration": "51.0",
-        "name": "system_health.memory_desktop/browse:news:nytimes"
-    },
-    {
-        "duration": "50.0",
-        "name": "system_health.memory_desktop/browse:news:reddit"
-    },
-    {
-        "duration": "49.0",
-        "name": "system_health.memory_desktop/browse:search:google"
-    },
-    {
-        "duration": "48.0",
-        "name": "system_health.memory_desktop/browse:search:google:2018"
-    },
-    {
-        "duration": "38.0",
-        "name": "system_health.memory_desktop/browse:search:google_india"
-    },
-    {
-        "duration": "66.0",
-        "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "68.0",
-        "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll:2018"
-    },
-    {
-        "duration": "65.0",
-        "name": "system_health.memory_desktop/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "46.0",
-        "name": "system_health.memory_desktop/browse:social:twitter"
-    },
-    {
-        "duration": "64.0",
-        "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "62.0",
-        "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "57.0",
-        "name": "system_health.memory_desktop/browse:tools:earth"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.memory_desktop/browse_accessibility:media:youtube"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch:2018"
-    },
-    {
-        "duration": "20.0",
-        "name": "system_health.memory_desktop/load:chrome:blank"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:games:alphabetty"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:games:bubbles"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:games:lazors"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:games:miniclip"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.memory_desktop/load:games:spychase"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.memory_desktop/load:media:9gag"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:media:dailymotion"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:media:google_images"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.memory_desktop/load:media:imgur"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.memory_desktop/load:media:soundcloud"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:media:youtube"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.memory_desktop/load:news:bbc"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.memory_desktop/load:news:cnn"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:news:flipboard"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:news:hackernews"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:news:nytimes"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:news:qq"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:news:reddit"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:news:wikipedia"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:search:amazon"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:search:baidu"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:search:ebay"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:search:google"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:search:taobao"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:search:yahoo"
-    },
-    {
-        "duration": "20.0",
-        "name": "system_health.memory_desktop/load:search:yandex"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:social:instagram"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:social:pinterest"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:social:vk"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.memory_desktop/load:tools:docs"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:tools:drive"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:tools:dropbox"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:tools:gmail"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:tools:stackoverflow"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.memory_desktop/load:tools:weather"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load_accessibility:media:wikipedia"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load_accessibility:media:wikipedia:2018"
-    },
-    {
-        "duration": "155.0",
-        "name": "system_health.memory_desktop/long_running:tools:gmail-foreground"
-    },
-    {
-        "duration": "46.0",
-        "name": "system_health.memory_desktop/play:media:soundcloud"
-    },
-    {
-        "duration": "81.0",
-        "name": "tab_switching.typical_25/multitab:misc:typical24"
+        "name": "rendering.desktop/microsoft_performance"
     },
     {
         "duration": "12.0",
+        "name": "rendering.desktop/microsoft_snow"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/microsoft_speed_reading"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/microsoft_tweet_map"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/microsoft_video_city"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/microsoft_worker_fountains"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/mix_10k"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/mix_blend_mode_animation_difference"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/mix_blend_mode_animation_hue"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.desktop/mix_blend_mode_animation_propagating_isolation"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/mix_blend_mode_animation_screen"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.desktop/motion_mark_canvas_fill_shapes"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.desktop/motion_mark_canvas_stroke_shapes"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.desktop/new_tilings"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/nvidia_vertex_buffer_object"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.desktop/overlay_background_color_css_transitions_page"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/particles"
+    },
+    {
+        "duration": "21.0",
+        "name": "rendering.desktop/pinterest_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/put_get_image_data"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/raf"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/raf_animation"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/raf_canvas"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/raf_touch_animation"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/repaint_amazon_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/repaint_cnn_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/repaint_facebook_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/repaint_google_search_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/repaint_instagram_2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/repaint_reddit_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/repaint_theverge_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/repaint_twitter_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/repaint_wikipedia_2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/repaint_yahoo_homepage_2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/runway"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/san_angeles"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/second_batch_js_heavy"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/second_batch_js_light"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/second_batch_js_medium"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/simple_text_page"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/simple_touch_drag"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/small_texture_uploads"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.desktop/smash_cat"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/spielzeugz"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/stroke_shapes"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/sync_scroll_offset"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.desktop/techcrunch_2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.desktop/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/touch_handler_scrolling"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.desktop/transform_transitions"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.desktop/transform_transitions_js_block"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/twitch_2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/twitch_pinch_2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.desktop/twitter_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/twitter_pinch_2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/web_animation_value_type_color"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/web_animation_value_type_length_3d"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/web_animation_value_type_length_complex"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/web_animation_value_type_length_simple"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/web_animation_value_type_path"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.desktop/web_animation_value_type_shadow"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/web_animation_value_type_transform_complex"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/web_animation_value_type_transform_simple"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.desktop/web_animations_many_keyframes"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/web_animations_set_current_time"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/web_animations_simultaneous"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.desktop/web_animations_staggered_chaining"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/web_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.desktop/web_animations_staggered_triggering_page"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.desktop/wikipedia_2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.desktop/wordpress_2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/yahoo_answers_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/yahoo_news_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/yahoo_news_pinch_2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/yahoo_sports_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/yahoo_sports_pinch_2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/youtube_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/youtube_pinch_2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/yuv_decoding"
+    },
+    {
+        "duration": "35.0",
+        "name": "speedometer-future/http://browserbench.org/Speedometer/"
+    },
+    {
+        "duration": "35.0",
+        "name": "speedometer/http://browserbench.org/Speedometer/"
+    },
+    {
+        "duration": "64.0",
+        "name": "speedometer2-future/Speedometer2"
+    },
+    {
+        "duration": "63.0",
+        "name": "speedometer2/Speedometer2"
+    },
+    {
+        "duration": "61.0",
+        "name": "system_health.common_desktop/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "40.0",
+        "name": "system_health.common_desktop/browse:media:googleplaystore:2018"
+    },
+    {
+        "duration": "70.0",
+        "name": "system_health.common_desktop/browse:media:imgur"
+    },
+    {
+        "duration": "59.0",
+        "name": "system_health.common_desktop/browse:media:pinterest"
+    },
+    {
+        "duration": "86.0",
+        "name": "system_health.common_desktop/browse:media:pinterest:2018"
+    },
+    {
+        "duration": "57.0",
+        "name": "system_health.common_desktop/browse:media:tumblr:2018"
+    },
+    {
+        "duration": "63.0",
+        "name": "system_health.common_desktop/browse:media:youtube"
+    },
+    {
+        "duration": "63.0",
+        "name": "system_health.common_desktop/browse:media:youtube:2018"
+    },
+    {
+        "duration": "63.0",
+        "name": "system_health.common_desktop/browse:media:youtubetv:2019"
+    },
+    {
+        "duration": "47.0",
+        "name": "system_health.common_desktop/browse:news:cnn"
+    },
+    {
+        "duration": "39.0",
+        "name": "system_health.common_desktop/browse:news:cnn:2018"
+    },
+    {
+        "duration": "47.0",
+        "name": "system_health.common_desktop/browse:news:flipboard"
+    },
+    {
+        "duration": "46.0",
+        "name": "system_health.common_desktop/browse:news:flipboard:2018"
+    },
+    {
+        "duration": "48.0",
+        "name": "system_health.common_desktop/browse:news:hackernews"
+    },
+    {
+        "duration": "51.0",
+        "name": "system_health.common_desktop/browse:news:hackernews:2018"
+    },
+    {
+        "duration": "53.0",
+        "name": "system_health.common_desktop/browse:news:nytimes"
+    },
+    {
+        "duration": "59.0",
+        "name": "system_health.common_desktop/browse:news:nytimes:2018"
+    },
+    {
+        "duration": "50.0",
+        "name": "system_health.common_desktop/browse:news:reddit"
+    },
+    {
+        "duration": "47.0",
+        "name": "system_health.common_desktop/browse:news:reddit:2018"
+    },
+    {
+        "duration": "46.0",
+        "name": "system_health.common_desktop/browse:search:google"
+    },
+    {
+        "duration": "45.0",
+        "name": "system_health.common_desktop/browse:search:google:2018"
+    },
+    {
+        "duration": "34.0",
+        "name": "system_health.common_desktop/browse:search:google_india"
+    },
+    {
+        "duration": "32.0",
+        "name": "system_health.common_desktop/browse:search:google_india:2018"
+    },
+    {
+        "duration": "62.0",
+        "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "66.0",
+        "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "65.0",
+        "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "57.0",
+        "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "43.0",
+        "name": "system_health.common_desktop/browse:social:twitter"
+    },
+    {
+        "duration": "44.0",
+        "name": "system_health.common_desktop/browse:social:twitter:2018"
+    },
+    {
+        "duration": "62.0",
+        "name": "system_health.common_desktop/browse:social:twitter_infinite_scroll:2018"
+    },
+    {
+        "duration": "62.0",
+        "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "59.0",
+        "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "55.0",
+        "name": "system_health.common_desktop/browse:tools:earth"
+    },
+    {
+        "duration": "49.0",
+        "name": "system_health.common_desktop/browse:tools:maps"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.common_desktop/browse_accessibility:media:youtube"
+    },
+    {
+        "duration": "19.0",
+        "name": "system_health.common_desktop/browse_accessibility:tech:codesearch"
+    },
+    {
+        "duration": "27.0",
+        "name": "system_health.common_desktop/browse_accessibility:tech:codesearch:2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:chrome:blank"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:games:alphabetty:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:games:bubbles"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:games:lazors"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:games:miniclip"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:games:miniclip:2018"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.common_desktop/load:games:spychase"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.common_desktop/load:games:spychase:2018"
+    },
+    {
+        "duration": "19.0",
+        "name": "system_health.common_desktop/load:media:9gag"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:media:dailymotion"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:media:facebook_photos:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:media:flickr:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:media:google_images"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:media:google_images:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:media:imgur"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:media:imgur:2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:media:soundcloud"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:media:soundcloud:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:media:youtube"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:media:youtube:2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:news:bbc"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:news:bbc:2018"
+    },
+    {
+        "duration": "19.0",
+        "name": "system_health.common_desktop/load:news:cnn"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:news:cnn:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:news:flipboard"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:news:hackernews"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:news:hackernews:2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:news:nytimes"
+    },
+    {
+        "duration": "19.0",
+        "name": "system_health.common_desktop/load:news:nytimes:2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:news:qq"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:news:qq:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:news:reddit"
+    },
+    {
+        "duration": "19.0",
+        "name": "system_health.common_desktop/load:news:reddit:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:news:wikipedia"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:news:wikipedia:2018"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.common_desktop/load:search:amazon"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:search:amazon:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:search:baidu"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:search:baidu:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:search:ebay"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:search:ebay:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:search:flipkart:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:search:google"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:search:google:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:search:taobao"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:search:taobao:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:search:yahoo"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:search:yahoo:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:search:yandex"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:search:yandex:2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:social:instagram"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:social:instagram:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:social:pinterest"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:social:vk"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:social:vk:2018"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.common_desktop/load:tools:docs"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:tools:drive"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:tools:dropbox"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:tools:gmail"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:tools:stackoverflow"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:tools:stackoverflow:2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:tools:weather"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load_accessibility:media:wikipedia"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load_accessibility:media:wikipedia:2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load_accessibility:shopping:amazon"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load_accessibility:shopping:amazon:2018"
+    },
+    {
+        "duration": "119.0",
+        "name": "system_health.common_desktop/long_running:tools:gmail-background"
+    },
+    {
+        "duration": "119.0",
+        "name": "system_health.common_desktop/long_running:tools:gmail-foreground"
+    },
+    {
+        "duration": "66.0",
+        "name": "system_health.common_desktop/multitab:misc:typical24"
+    },
+    {
+        "duration": "61.0",
+        "name": "system_health.common_desktop/multitab:misc:typical24:2018"
+    },
+    {
+        "duration": "43.0",
+        "name": "system_health.common_desktop/play:media:google_play_music"
+    },
+    {
+        "duration": "43.0",
+        "name": "system_health.common_desktop/play:media:soundcloud"
+    },
+    {
+        "duration": "42.0",
+        "name": "system_health.common_desktop/play:media:soundcloud:2018"
+    },
+    {
+        "duration": "59.0",
+        "name": "system_health.memory_desktop/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "39.0",
+        "name": "system_health.memory_desktop/browse:media:googleplaystore:2018"
+    },
+    {
+        "duration": "65.0",
+        "name": "system_health.memory_desktop/browse:media:imgur"
+    },
+    {
+        "duration": "57.0",
+        "name": "system_health.memory_desktop/browse:media:pinterest"
+    },
+    {
+        "duration": "54.0",
+        "name": "system_health.memory_desktop/browse:media:tumblr:2018"
+    },
+    {
+        "duration": "58.0",
+        "name": "system_health.memory_desktop/browse:media:youtube"
+    },
+    {
+        "duration": "60.0",
+        "name": "system_health.memory_desktop/browse:media:youtube:2018"
+    },
+    {
+        "duration": "61.0",
+        "name": "system_health.memory_desktop/browse:media:youtubetv:2019"
+    },
+    {
+        "duration": "40.0",
+        "name": "system_health.memory_desktop/browse:news:cnn"
+    },
+    {
+        "duration": "34.0",
+        "name": "system_health.memory_desktop/browse:news:cnn:2018"
+    },
+    {
+        "duration": "43.0",
+        "name": "system_health.memory_desktop/browse:news:flipboard:2018"
+    },
+    {
+        "duration": "46.0",
+        "name": "system_health.memory_desktop/browse:news:hackernews"
+    },
+    {
+        "duration": "48.0",
+        "name": "system_health.memory_desktop/browse:news:hackernews:2018"
+    },
+    {
+        "duration": "48.0",
+        "name": "system_health.memory_desktop/browse:news:nytimes"
+    },
+    {
+        "duration": "57.0",
+        "name": "system_health.memory_desktop/browse:news:nytimes:2018"
+    },
+    {
+        "duration": "48.0",
+        "name": "system_health.memory_desktop/browse:news:reddit"
+    },
+    {
+        "duration": "45.0",
+        "name": "system_health.memory_desktop/browse:news:reddit:2018"
+    },
+    {
+        "duration": "45.0",
+        "name": "system_health.memory_desktop/browse:search:google"
+    },
+    {
+        "duration": "43.0",
+        "name": "system_health.memory_desktop/browse:search:google:2018"
+    },
+    {
+        "duration": "33.0",
+        "name": "system_health.memory_desktop/browse:search:google_india"
+    },
+    {
+        "duration": "31.0",
+        "name": "system_health.memory_desktop/browse:search:google_india:2018"
+    },
+    {
+        "duration": "59.0",
+        "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "60.0",
+        "name": "system_health.memory_desktop/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "52.0",
+        "name": "system_health.memory_desktop/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "43.0",
+        "name": "system_health.memory_desktop/browse:social:twitter"
+    },
+    {
+        "duration": "43.0",
+        "name": "system_health.memory_desktop/browse:social:twitter:2018"
+    },
+    {
+        "duration": "59.0",
+        "name": "system_health.memory_desktop/browse:social:twitter_infinite_scroll:2018"
+    },
+    {
+        "duration": "59.0",
+        "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "57.0",
+        "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "50.0",
+        "name": "system_health.memory_desktop/browse:tools:earth"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.memory_desktop/browse_accessibility:media:youtube"
+    },
+    {
+        "duration": "19.0",
+        "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch"
+    },
+    {
+        "duration": "26.0",
+        "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:chrome:blank"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:games:alphabetty:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:games:bubbles"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:games:lazors"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:games:miniclip"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:games:miniclip:2018"
+    },
+    {
+        "duration": "19.0",
+        "name": "system_health.memory_desktop/load:games:spychase"
+    },
+    {
+        "duration": "19.0",
+        "name": "system_health.memory_desktop/load:games:spychase:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:media:9gag"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:media:dailymotion"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:media:facebook_photos:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:media:flickr:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:media:google_images"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:media:google_images:2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.memory_desktop/load:media:imgur"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:media:imgur:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:media:soundcloud"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:media:soundcloud:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:media:youtube"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:media:youtube:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:news:bbc"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:news:bbc:2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.memory_desktop/load:news:cnn"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:news:cnn:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:news:flipboard"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:news:hackernews"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:news:hackernews:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:news:nytimes"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.memory_desktop/load:news:nytimes:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:news:qq"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:news:qq:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:news:reddit"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:news:reddit:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:news:wikipedia"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:news:wikipedia:2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.memory_desktop/load:search:amazon"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:search:amazon:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:search:baidu"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:search:baidu:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:search:ebay"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:search:ebay:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:search:flipkart:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:search:google"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:search:google:2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.memory_desktop/load:search:taobao"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:search:taobao:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:search:yahoo"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:search:yahoo:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:search:yandex"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:search:yandex:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:social:instagram"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:social:instagram:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:social:pinterest"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:social:vk"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:social:vk:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:tools:docs"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:tools:drive"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:tools:dropbox"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:tools:gmail"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:tools:stackoverflow"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:tools:stackoverflow:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:tools:weather"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load_accessibility:media:wikipedia"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load_accessibility:shopping:amazon:2018"
+    },
+    {
+        "duration": "127.0",
+        "name": "system_health.memory_desktop/long_running:tools:gmail-foreground"
+    },
+    {
+        "duration": "57.0",
+        "name": "system_health.memory_desktop/multitab:misc:typical24:2018"
+    },
+    {
+        "duration": "40.0",
+        "name": "system_health.memory_desktop/play:media:soundcloud"
+    },
+    {
+        "duration": "41.0",
+        "name": "system_health.memory_desktop/play:media:soundcloud:2018"
+    },
+    {
+        "duration": "65.0",
+        "name": "tab_switching.typical_25/multitab:misc:typical24"
+    },
+    {
+        "duration": "11.0",
         "name": "tracing.tracing_with_background_memory_infra/Facebook"
     },
     {
@@ -3496,407 +3992,463 @@
         "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
     },
     {
-        "duration": "13.0",
+        "duration": "11.0",
         "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
     },
     {
-        "duration": "17.0",
+        "duration": "12.0",
         "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
     },
     {
-        "duration": "13.0",
+        "duration": "11.0",
         "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
     },
     {
-        "duration": "97.0",
+        "duration": "63.0",
         "name": "v8.browsing_desktop-future/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "82.0",
-        "name": "v8.browsing_desktop-future/browse:media:pinterest"
+        "duration": "41.0",
+        "name": "v8.browsing_desktop-future/browse:media:googleplaystore:2018"
     },
     {
-        "duration": "101.0",
-        "name": "v8.browsing_desktop-future/browse:media:youtube"
+        "duration": "88.0",
+        "name": "v8.browsing_desktop-future/browse:media:pinterest:2018"
     },
     {
-        "duration": "121.0",
-        "name": "v8.browsing_desktop-future/browse:news:cnn"
-    },
-    {
-        "duration": "77.0",
-        "name": "v8.browsing_desktop-future/browse:news:cnn:2018"
-    },
-    {
-        "duration": "66.0",
-        "name": "v8.browsing_desktop-future/browse:news:flipboard"
-    },
-    {
-        "duration": "56.0",
-        "name": "v8.browsing_desktop-future/browse:news:hackernews"
-    },
-    {
-        "duration": "119.0",
-        "name": "v8.browsing_desktop-future/browse:news:nytimes"
+        "duration": "59.0",
+        "name": "v8.browsing_desktop-future/browse:media:tumblr:2018"
     },
     {
         "duration": "67.0",
-        "name": "v8.browsing_desktop-future/browse:news:reddit"
+        "name": "v8.browsing_desktop-future/browse:media:youtube:2018"
     },
     {
-        "duration": "61.0",
-        "name": "v8.browsing_desktop-future/browse:search:google"
+        "duration": "65.0",
+        "name": "v8.browsing_desktop-future/browse:media:youtubetv:2019"
     },
     {
-        "duration": "61.0",
-        "name": "v8.browsing_desktop-future/browse:search:google:2018"
+        "duration": "42.0",
+        "name": "v8.browsing_desktop-future/browse:news:cnn:2018"
+    },
+    {
+        "duration": "47.0",
+        "name": "v8.browsing_desktop-future/browse:news:flipboard:2018"
+    },
+    {
+        "duration": "53.0",
+        "name": "v8.browsing_desktop-future/browse:news:hackernews:2018"
+    },
+    {
+        "duration": "63.0",
+        "name": "v8.browsing_desktop-future/browse:news:nytimes:2018"
+    },
+    {
+        "duration": "49.0",
+        "name": "v8.browsing_desktop-future/browse:news:reddit:2018"
     },
     {
         "duration": "46.0",
-        "name": "v8.browsing_desktop-future/browse:search:google_india"
+        "name": "v8.browsing_desktop-future/browse:search:google:2018"
     },
     {
-        "duration": "104.0",
-        "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll"
+        "duration": "33.0",
+        "name": "v8.browsing_desktop-future/browse:search:google_india:2018"
     },
     {
-        "duration": "194.0",
+        "duration": "66.0",
         "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "124.0",
+        "duration": "65.0",
         "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll"
     },
     {
         "duration": "60.0",
-        "name": "v8.browsing_desktop-future/browse:social:twitter"
+        "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll:2018"
     },
     {
-        "duration": "120.0",
-        "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll"
+        "duration": "46.0",
+        "name": "v8.browsing_desktop-future/browse:social:twitter:2018"
     },
     {
-        "duration": "116.0",
-        "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "110.0",
-        "name": "v8.browsing_desktop-future/browse:tools:earth"
-    },
-    {
-        "duration": "77.0",
-        "name": "v8.browsing_desktop-future/browse:tools:maps"
-    },
-    {
-        "duration": "107.0",
-        "name": "v8.browsing_desktop/browse:media:flickr_infinite_scroll"
-    },
-    {
-        "duration": "82.0",
-        "name": "v8.browsing_desktop/browse:media:pinterest"
-    },
-    {
-        "duration": "100.0",
-        "name": "v8.browsing_desktop/browse:media:youtube"
-    },
-    {
-        "duration": "109.0",
-        "name": "v8.browsing_desktop/browse:news:cnn"
-    },
-    {
-        "duration": "73.0",
-        "name": "v8.browsing_desktop/browse:news:cnn:2018"
-    },
-    {
-        "duration": "71.0",
-        "name": "v8.browsing_desktop/browse:news:flipboard"
-    },
-    {
-        "duration": "59.0",
-        "name": "v8.browsing_desktop/browse:news:hackernews"
-    },
-    {
-        "duration": "129.0",
-        "name": "v8.browsing_desktop/browse:news:nytimes"
-    },
-    {
-        "duration": "72.0",
-        "name": "v8.browsing_desktop/browse:news:reddit"
-    },
-    {
-        "duration": "60.0",
-        "name": "v8.browsing_desktop/browse:search:google"
+        "duration": "64.0",
+        "name": "v8.browsing_desktop-future/browse:social:twitter_infinite_scroll:2018"
     },
     {
         "duration": "61.0",
-        "name": "v8.browsing_desktop/browse:search:google:2018"
+        "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "45.0",
-        "name": "v8.browsing_desktop/browse:search:google_india"
+        "duration": "55.0",
+        "name": "v8.browsing_desktop-future/browse:tools:earth"
     },
     {
-        "duration": "104.0",
-        "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll"
+        "duration": "50.0",
+        "name": "v8.browsing_desktop-future/browse:tools:maps"
     },
     {
-        "duration": "188.0",
-        "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll:2018"
+        "duration": "63.0",
+        "name": "v8.browsing_desktop/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "127.0",
-        "name": "v8.browsing_desktop/browse:social:tumblr_infinite_scroll"
+        "duration": "41.0",
+        "name": "v8.browsing_desktop/browse:media:googleplaystore:2018"
+    },
+    {
+        "duration": "60.0",
+        "name": "v8.browsing_desktop/browse:media:pinterest"
+    },
+    {
+        "duration": "88.0",
+        "name": "v8.browsing_desktop/browse:media:pinterest:2018"
+    },
+    {
+        "duration": "59.0",
+        "name": "v8.browsing_desktop/browse:media:tumblr:2018"
     },
     {
         "duration": "62.0",
-        "name": "v8.browsing_desktop/browse:social:twitter"
+        "name": "v8.browsing_desktop/browse:media:youtube"
     },
     {
-        "duration": "119.0",
-        "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll"
+        "duration": "64.0",
+        "name": "v8.browsing_desktop/browse:media:youtube:2018"
     },
     {
-        "duration": "111.0",
-        "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll:2018"
+        "duration": "65.0",
+        "name": "v8.browsing_desktop/browse:media:youtubetv:2019"
     },
     {
-        "duration": "132.0",
-        "name": "v8.browsing_desktop/browse:tools:earth"
-    },
-    {
-        "duration": "81.0",
-        "name": "v8.browsing_desktop/browse:tools:maps"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/AdsAMPAds_cold"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/AdsAMPAds_hot"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/AdsAMPAds_warm"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_cold"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_hot"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_warm"
-    },
-    {
-        "duration": "32.0",
-        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_cold"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_hot"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_warm"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_cold"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_hot"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_warm"
-    },
-    {
-        "duration": "32.0",
-        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_cold"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_hot"
+        "duration": "51.0",
+        "name": "v8.browsing_desktop/browse:news:cnn"
     },
     {
         "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_warm"
+        "name": "v8.browsing_desktop/browse:news:cnn:2018"
     },
     {
-        "duration": "32.0",
-        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_cold"
+        "duration": "48.0",
+        "name": "v8.browsing_desktop/browse:news:flipboard"
     },
     {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_hot"
+        "duration": "47.0",
+        "name": "v8.browsing_desktop/browse:news:flipboard:2018"
     },
     {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_warm"
+        "duration": "52.0",
+        "name": "v8.browsing_desktop/browse:news:hackernews"
     },
     {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_cold"
+        "duration": "53.0",
+        "name": "v8.browsing_desktop/browse:news:hackernews:2018"
     },
     {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_hot"
+        "duration": "52.0",
+        "name": "v8.browsing_desktop/browse:news:nytimes"
+    },
+    {
+        "duration": "63.0",
+        "name": "v8.browsing_desktop/browse:news:nytimes:2018"
+    },
+    {
+        "duration": "53.0",
+        "name": "v8.browsing_desktop/browse:news:reddit"
+    },
+    {
+        "duration": "49.0",
+        "name": "v8.browsing_desktop/browse:news:reddit:2018"
+    },
+    {
+        "duration": "47.0",
+        "name": "v8.browsing_desktop/browse:search:google"
+    },
+    {
+        "duration": "46.0",
+        "name": "v8.browsing_desktop/browse:search:google:2018"
     },
     {
         "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_warm"
+        "name": "v8.browsing_desktop/browse:search:google_india"
     },
     {
-        "duration": "32.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_cold"
+        "duration": "33.0",
+        "name": "v8.browsing_desktop/browse:search:google_india:2018"
     },
     {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_hot"
+        "duration": "64.0",
+        "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_warm"
+        "duration": "66.0",
+        "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "44.0",
-        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_cold"
+        "duration": "65.0",
+        "name": "v8.browsing_desktop/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "68.0",
-        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_hot"
-    },
-    {
-        "duration": "56.0",
-        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_warm"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://edition.cnn.com_cold"
+        "duration": "57.0",
+        "name": "v8.browsing_desktop/browse:social:tumblr_infinite_scroll:2018"
     },
     {
         "duration": "45.0",
+        "name": "v8.browsing_desktop/browse:social:twitter"
+    },
+    {
+        "duration": "46.0",
+        "name": "v8.browsing_desktop/browse:social:twitter:2018"
+    },
+    {
+        "duration": "64.0",
+        "name": "v8.browsing_desktop/browse:social:twitter_infinite_scroll:2018"
+    },
+    {
+        "duration": "63.0",
+        "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "61.0",
+        "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "55.0",
+        "name": "v8.browsing_desktop/browse:tools:earth"
+    },
+    {
+        "duration": "50.0",
+        "name": "v8.browsing_desktop/browse:tools:maps"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/AdsAMPAds_cold"
+    },
+    {
+        "duration": "33.0",
+        "name": "v8.runtime_stats.top_25/AdsAMPAds_hot"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.runtime_stats.top_25/AdsAMPAds_warm"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_cold"
+    },
+    {
+        "duration": "33.0",
+        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_hot"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_warm"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_cold"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_hot"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_warm"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_cold"
+    },
+    {
+        "duration": "34.0",
+        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_hot"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_warm"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_cold"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_hot"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_warm"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_cold"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_hot"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_warm"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_cold"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_hot"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_warm"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_cold"
+    },
+    {
+        "duration": "33.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_hot"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_warm"
+    },
+    {
+        "duration": "36.0",
+        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_cold"
+    },
+    {
+        "duration": "60.0",
+        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_hot"
+    },
+    {
+        "duration": "48.0",
+        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_warm"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://edition.cnn.com_cold"
+    },
+    {
+        "duration": "34.0",
         "name": "v8.runtime_stats.top_25/http://edition.cnn.com_hot"
     },
     {
-        "duration": "41.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://edition.cnn.com_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_cold"
     },
     {
-        "duration": "37.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_hot"
     },
     {
-        "duration": "35.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://inbox.google.com_cold"
     },
     {
-        "duration": "39.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://inbox.google.com_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://inbox.google.com_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_cold"
     },
     {
-        "duration": "39.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_hot"
     },
     {
-        "duration": "37.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://meta.discourse.org_cold"
     },
     {
-        "duration": "38.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://meta.discourse.org_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://meta.discourse.org_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "26.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_cold"
     },
     {
-        "duration": "36.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_hot"
     },
     {
-        "duration": "34.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "26.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_cold"
     },
     {
-        "duration": "36.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_hot"
     },
     {
-        "duration": "34.0",
+        "duration": "31.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "26.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_cold"
     },
     {
-        "duration": "36.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_hot"
     },
     {
-        "duration": "34.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "26.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_cold"
     },
     {
-        "duration": "36.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_hot"
     },
     {
-        "duration": "34.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_warm"
     },
     {
-        "duration": "31.0",
+        "duration": "26.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_cold"
     },
     {
-        "duration": "36.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_hot"
     },
     {
-        "duration": "34.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_warm"
     },
     {
-        "duration": "34.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_cold"
     },
     {
@@ -3904,339 +4456,339 @@
         "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_warm"
     },
     {
-        "duration": "34.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://weibo.com_cold"
     },
     {
-        "duration": "40.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://weibo.com_hot"
     },
     {
-        "duration": "37.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://weibo.com_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://world.taobao.com_cold"
     },
     {
-        "duration": "38.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://world.taobao.com_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://world.taobao.com_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "26.0",
         "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_cold"
     },
     {
-        "duration": "37.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_hot"
     },
     {
-        "duration": "35.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_warm"
     },
     {
-        "duration": "42.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_cold"
     },
     {
-        "duration": "37.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_hot"
     },
     {
-        "duration": "35.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "26.0",
         "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_cold"
     },
     {
-        "duration": "37.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_hot"
     },
     {
-        "duration": "34.0",
+        "duration": "31.0",
         "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_warm"
     },
     {
-        "duration": "36.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_cold"
     },
     {
-        "duration": "43.0",
+        "duration": "34.0",
         "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_hot"
     },
     {
-        "duration": "40.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_cold"
     },
     {
-        "duration": "38.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_hot"
     },
     {
-        "duration": "46.0",
+        "duration": "31.0",
         "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_warm"
     },
     {
-        "duration": "35.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_cold"
     },
     {
-        "duration": "42.0",
+        "duration": "34.0",
         "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_hot"
     },
     {
-        "duration": "39.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_cold"
     },
     {
-        "duration": "38.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_warm"
     },
     {
-        "duration": "67.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://www.qq.com_cold"
     },
     {
-        "duration": "77.0",
+        "duration": "39.0",
         "name": "v8.runtime_stats.top_25/http://www.qq.com_hot"
     },
     {
-        "duration": "72.0",
+        "duration": "38.0",
         "name": "v8.runtime_stats.top_25/http://www.qq.com_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://www.reddit.com_cold"
     },
     {
-        "duration": "38.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://www.reddit.com_hot"
     },
     {
-        "duration": "35.0",
+        "duration": "38.0",
         "name": "v8.runtime_stats.top_25/http://www.reddit.com_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_cold"
     },
     {
-        "duration": "40.0",
+        "duration": "34.0",
         "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_hot"
     },
     {
-        "duration": "37.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_cold"
     },
     {
-        "duration": "39.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_cold"
     },
     {
-        "duration": "38.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_hot"
     },
     {
-        "duration": "35.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_cold"
     },
     {
-        "duration": "37.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_hot"
     },
     {
-        "duration": "35.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_warm"
     },
     {
-        "duration": "52.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/https://adwords.google.com_cold"
     },
     {
-        "duration": "77.0",
+        "duration": "37.0",
         "name": "v8.runtime_stats.top_25/https://adwords.google.com_hot"
     },
     {
-        "duration": "67.0",
+        "duration": "35.0",
         "name": "v8.runtime_stats.top_25/https://adwords.google.com_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "26.0",
         "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_cold"
     },
     {
-        "duration": "36.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_hot"
     },
     {
-        "duration": "34.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_warm"
     },
     {
-        "duration": "35.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_cold"
     },
     {
-        "duration": "44.0",
+        "duration": "35.0",
         "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_hot"
     },
     {
-        "duration": "39.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_cold"
     },
     {
-        "duration": "38.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "31.0",
         "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_warm"
     },
     {
-        "duration": "41.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_cold"
     },
     {
-        "duration": "37.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_hot"
     },
     {
-        "duration": "34.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_warm"
     },
     {
-        "duration": "34.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_cold"
     },
     {
-        "duration": "39.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_warm"
     },
     {
-        "duration": "36.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_cold"
     },
     {
-        "duration": "42.0",
+        "duration": "34.0",
         "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_hot"
     },
     {
-        "duration": "40.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_warm"
     },
     {
-        "duration": "36.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/https://www.youtube.com_cold"
     },
     {
-        "duration": "42.0",
+        "duration": "34.0",
         "name": "v8.runtime_stats.top_25/https://www.youtube.com_hot"
     },
     {
-        "duration": "39.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/https://www.youtube.com_warm"
     },
     {
-        "duration": "67.0",
+        "duration": "43.0",
         "name": "wasm/AsmJsZenGarden"
     },
     {
-        "duration": "14.0",
+        "duration": "11.0",
         "name": "wasm/WasmSpaceBuggy"
     },
     {
-        "duration": "27.0",
+        "duration": "19.0",
         "name": "wasm/WasmStylizedRenderer"
     },
     {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "wasm/WasmSunTemple"
     },
     {
-        "duration": "21.0",
+        "duration": "16.0",
         "name": "wasm/WasmTanks"
     },
     {
-        "duration": "28.0",
+        "duration": "20.0",
         "name": "wasm/WasmZenGarden"
     },
     {
-        "duration": "41.0",
+        "duration": "20.0",
         "name": "webrtc/10s_datachannel_transfer"
     },
     {
-        "duration": "24.0",
+        "duration": "17.0",
         "name": "webrtc/canvas_capture_peer_connection"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "webrtc/codec_constraints_h264"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "webrtc/codec_constraints_vp8"
     },
     {
-        "duration": "33.0",
+        "duration": "26.0",
         "name": "webrtc/codec_constraints_vp9"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "webrtc/hd_local_stream_10s"
     },
     {
-        "duration": "55.0",
+        "duration": "31.0",
         "name": "webrtc/multiple_peerconnections"
     },
     {
-        "duration": "63.0",
+        "duration": "32.0",
         "name": "webrtc/pause_play_peerconnections"
     }
 ]
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/mac-10_12_laptop_low_end-perf_timing.json b/tools/perf/core/shard_maps/timing_data/mac-10_12_laptop_low_end-perf_timing.json
index ff302a8..1eb25d8 100644
--- a/tools/perf/core/shard_maps/timing_data/mac-10_12_laptop_low_end-perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/mac-10_12_laptop_low_end-perf_timing.json
@@ -1,6 +1,10 @@
 [
     {
         "duration": "26.0",
+        "name": "blink_perf.accessibility/line-breaks.html"
+    },
+    {
+        "duration": "21.0",
         "name": "blink_perf.accessibility/textarea-append.html"
     },
     {
@@ -32,7 +36,7 @@
         "name": "blink_perf.bindings/gc-mini-tree.html"
     },
     {
-        "duration": "21.0",
+        "duration": "15.0",
         "name": "blink_perf.bindings/gc-tree.html"
     },
     {
@@ -68,11 +72,11 @@
         "name": "blink_perf.bindings/insert-before.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/named-property-enumerator.html"
     },
     {
-        "duration": "28.0",
+        "duration": "16.0",
         "name": "blink_perf.bindings/node-list-access.html"
     },
     {
@@ -108,7 +112,7 @@
         "name": "blink_perf.bindings/serialize-nested-array.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.bindings/set-attribute-rare.html"
     },
     {
@@ -132,7 +136,7 @@
         "name": "blink_perf.bindings/structured-clone-long-string-serialize.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.bindings/typed-array-construct-from-array.html"
     },
     {
@@ -148,7 +152,7 @@
         "name": "blink_perf.bindings/typed-array-set-from-typed.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.bindings/undefined-first-child.html"
     },
     {
@@ -156,55 +160,155 @@
         "name": "blink_perf.bindings/undefined-get-element-by-id.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.bindings/undefined-id-getter.html"
     },
     {
-        "duration": "14.0",
+        "duration": "2.0",
+        "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html"
+    },
+    {
+        "duration": "16.0",
+        "name": "blink_perf.bindings/worker-structured-clone-json-from-worker.html"
+    },
+    {
+        "duration": "16.0",
         "name": "blink_perf.bindings/worker-structured-clone-json-roundtrip.html"
     },
     {
-        "duration": "15.0",
-        "name": "blink_perf.bindings/worker-structured-clone-json-serialize.html"
+        "duration": "16.0",
+        "name": "blink_perf.bindings/worker-structured-clone-json-to-worker.html"
+    },
+    {
+        "duration": "3.0",
+        "name": "blink_perf.bindings/worker-structured-clone-workerDOM-DBMon-from-worker.html"
+    },
+    {
+        "duration": "2.0",
+        "name": "blink_perf.bindings/worker-structured-clone-workerDOM-Map-from-worker.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-from-worker.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-roundtrip.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-to-worker.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.bindings/worker-transferable-from-worker.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.bindings/worker-transferable-roundtrip.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.bindings/worker-transferable-to-worker.html"
     },
     {
         "duration": "13.0",
         "name": "blink_perf.canvas/createImageBitmapFromImageData.html"
     },
     {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/createImageBitmapFromImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.canvas/docs-paper.html"
+    },
+    {
+        "duration": "4.0",
+        "name": "blink_perf.canvas/docs-paper_RAF.html?RAF"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.canvas/docs-resume.html"
+    },
+    {
+        "duration": "3.0",
+        "name": "blink_perf.canvas/docs-resume_RAF.html?RAF"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.canvas/docs-table.html"
+    },
+    {
+        "duration": "4.0",
+        "name": "blink_perf.canvas/docs-table_RAF.html?RAF"
+    },
+    {
         "duration": "5.0",
         "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d.html"
     },
     {
-        "duration": "11.0",
+        "duration": "3.0",
+        "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "12.0",
         "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d.html"
     },
     {
+        "duration": "4.0",
+        "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
         "duration": "3.0",
         "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d.html"
     },
     {
         "duration": "4.0",
+        "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "4.0",
         "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d.html"
     },
     {
         "duration": "3.0",
+        "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "3.0",
         "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d.html"
     },
     {
-        "duration": "6.0",
+        "duration": "4.0",
+        "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "7.0",
         "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d.html"
     },
     {
+        "duration": "4.0",
+        "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
         "duration": "9.0",
         "name": "blink_perf.canvas/drawimage-not-pixelaligned.html"
     },
     {
         "duration": "8.0",
+        "name": "blink_perf.canvas/drawimage-not-pixelaligned_RAF.html?RAF"
+    },
+    {
+        "duration": "8.0",
         "name": "blink_perf.canvas/drawimage.html"
     },
     {
         "duration": "8.0",
+        "name": "blink_perf.canvas/drawimage_RAF.html?RAF"
+    },
+    {
+        "duration": "8.0",
         "name": "blink_perf.canvas/getImageData.html"
     },
     {
@@ -212,39 +316,95 @@
         "name": "blink_perf.canvas/getImageDataColorManaged.html"
     },
     {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/getImageDataColorManaged_RAF.html?RAF"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/getImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/gpu-bound-shader.html"
+    },
+    {
+        "duration": "6.0",
+        "name": "blink_perf.canvas/gpu-bound-shader_RAF.html?RAF"
+    },
+    {
         "duration": "8.0",
         "name": "blink_perf.canvas/putImageData.html"
     },
     {
-        "duration": "27.0",
-        "name": "blink_perf.canvas/toBlob_duration.html"
+        "duration": "8.0",
+        "name": "blink_perf.canvas/putImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.canvas/sheets-render.html"
     },
     {
         "duration": "4.0",
-        "name": "blink_perf.canvas/toBlob_duration_jpeg.html"
+        "name": "blink_perf.canvas/sheets-render_RAF.html?RAF"
+    },
+    {
+        "duration": "28.0",
+        "name": "blink_perf.canvas/toBlob_duration.html"
+    },
+    {
+        "duration": "29.0",
+        "name": "blink_perf.canvas/toBlob_duration_RAF.html?RAF"
     },
     {
         "duration": "3.0",
+        "name": "blink_perf.canvas/toBlob_duration_jpeg.html"
+    },
+    {
+        "duration": "4.0",
+        "name": "blink_perf.canvas/toBlob_duration_jpeg_RAF.html?RAF"
+    },
+    {
+        "duration": "5.0",
         "name": "blink_perf.canvas/transferFromImageBitmap.html"
     },
     {
+        "duration": "4.0",
+        "name": "blink_perf.canvas/transferFromImageBitmap_RAF.html?RAF"
+    },
+    {
         "duration": "5.0",
         "name": "blink_perf.canvas/upload-canvas-2d-to-texture.html"
     },
     {
         "duration": "9.0",
+        "name": "blink_perf.canvas/upload-canvas-2d-to-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "9.0",
         "name": "blink_perf.canvas/upload-video-to-sub-texture.html"
     },
     {
-        "duration": "2.0",
+        "duration": "4.0",
+        "name": "blink_perf.canvas/upload-video-to-sub-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "7.0",
         "name": "blink_perf.canvas/upload-video-to-texture.html"
     },
     {
         "duration": "5.0",
+        "name": "blink_perf.canvas/upload-video-to-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "5.0",
         "name": "blink_perf.canvas/upload-webgl-to-texture.html"
     },
     {
-        "duration": "17.0",
+        "duration": "9.0",
+        "name": "blink_perf.canvas/upload-webgl-to-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "15.0",
         "name": "blink_perf.css/AttributeDescendantSelector.html"
     },
     {
@@ -260,83 +420,83 @@
         "name": "blink_perf.css/CSSPropertyUpdateValue.html"
     },
     {
-        "duration": "8.0",
+        "duration": "13.0",
         "name": "blink_perf.css/ChangeStyleChildClassSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "13.0",
         "name": "blink_perf.css/ChangeStyleChildElementSelectors.html"
     },
     {
-        "duration": "8.0",
+        "duration": "13.0",
         "name": "blink_perf.css/ChangeStyleElementSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "13.0",
         "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "13.0",
         "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "13.0",
         "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "13.0",
         "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "13.0",
         "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "blink_perf.css/ChangeStyleShallowTree.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStyleSingleClassSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "13.0",
         "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "13.0",
         "name": "blink_perf.css/ChangeStyleUniversalSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html"
     },
     {
-        "duration": "13.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ClassDescendantSelector.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.css/ClassInvalidation.html"
     },
     {
@@ -356,19 +516,19 @@
         "name": "blink_perf.css/CustomPropertiesVarAlias.html"
     },
     {
-        "duration": "11.0",
+        "duration": "9.0",
         "name": "blink_perf.css/FocusUpdate.html"
     },
     {
-        "duration": "9.0",
+        "duration": "12.0",
         "name": "blink_perf.css/LoadBootstrapBlog.html"
     },
     {
-        "duration": "9.0",
+        "duration": "14.0",
         "name": "blink_perf.css/LoadMaterializeStarterPage.html"
     },
     {
-        "duration": "9.0",
+        "duration": "13.0",
         "name": "blink_perf.css/LoadSemanticPageExample.html"
     },
     {
@@ -380,31 +540,15 @@
         "name": "blink_perf.css/SelectorCountScaling.html"
     },
     {
-        "duration": "14.0",
-        "name": "blink_perf.dom/addRange.html"
-    },
-    {
-        "duration": "26.0",
+        "duration": "32.0",
         "name": "blink_perf.dom/custom-element-default-style-with-shadow.html"
     },
     {
-        "duration": "26.0",
+        "duration": "25.0",
         "name": "blink_perf.dom/custom-element-default-style.html"
     },
     {
-        "duration": "2.0",
-        "name": "blink_perf.dom/delete-in-password-field.html"
-    },
-    {
-        "duration": "9.0",
-        "name": "blink_perf.dom/div-editable.html"
-    },
-    {
-        "duration": "2.0",
-        "name": "blink_perf.dom/inner_html_with_selection.html"
-    },
-    {
-        "duration": "17.0",
+        "duration": "11.0",
         "name": "blink_perf.dom/long-sibling-list.html"
     },
     {
@@ -420,18 +564,6 @@
         "name": "blink_perf.dom/modify-element-title.html"
     },
     {
-        "duration": "2.0",
-        "name": "blink_perf.dom/move-down-with-hidden-elements.html"
-    },
-    {
-        "duration": "2.0",
-        "name": "blink_perf.dom/move-up-with-hidden-elements.html"
-    },
-    {
-        "duration": "2.0",
-        "name": "blink_perf.dom/remove_child_with_selection.html"
-    },
-    {
         "duration": "8.0",
         "name": "blink_perf.dom/select-multiple-add.html"
     },
@@ -440,63 +572,71 @@
         "name": "blink_perf.dom/select-single-add.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.dom/select-single-remove.html"
     },
     {
-        "duration": "7.0",
-        "name": "blink_perf.dom/textarea-dom.html"
-    },
-    {
-        "duration": "7.0",
-        "name": "blink_perf.dom/textarea-edit.html"
-    },
-    {
-        "duration": "15.0",
+        "duration": "14.0",
         "name": "blink_perf.events/EventsDispatching.html"
     },
     {
         "duration": "9.0",
-        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedShadowTrees.html"
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV0ShadowTrees.html"
     },
     {
-        "duration": "17.0",
-        "name": "blink_perf.events/EventsDispatchingInShadowTrees.html"
+        "duration": "8.0",
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.events/EventsDispatchingInV0ShadowTrees.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html"
     },
     {
         "duration": "9.0",
         "name": "blink_perf.events/hit-test-lots-of-layers.html"
     },
     {
-        "duration": "24.0",
+        "duration": "8.0",
+        "name": "blink_perf.events/is-input-pending-all-events.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.events/is-input-pending-default-events.html"
+    },
+    {
+        "duration": "25.0",
         "name": "blink_perf.image_decoder/decode-gif.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.image_decoder/decode-jpeg.html"
     },
     {
-        "duration": "18.0",
+        "duration": "19.0",
         "name": "blink_perf.image_decoder/decode-lossless-webp.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.image_decoder/decode-lossy-webp.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
     },
     {
-        "duration": "13.0",
+        "duration": "15.0",
         "name": "blink_perf.image_decoder/decode-png-palette.html"
     },
     {
-        "duration": "19.0",
+        "duration": "21.0",
         "name": "blink_perf.image_decoder/decode-png.html"
     },
     {
-        "duration": "19.0",
+        "duration": "21.0",
         "name": "blink_perf.layout/ArabicLineLayout.html"
     },
     {
@@ -524,7 +664,7 @@
         "name": "blink_perf.layout/auto-grid-lots-of-data.html"
     },
     {
-        "duration": "13.0",
+        "duration": "9.0",
         "name": "blink_perf.layout/change-text-css-contain.html"
     },
     {
@@ -540,15 +680,15 @@
         "name": "blink_perf.layout/chapter-reflow-thrice.html"
     },
     {
-        "duration": "10.0",
+        "duration": "11.0",
         "name": "blink_perf.layout/chapter-reflow-twice.html"
     },
     {
-        "duration": "12.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/chapter-reflow.html"
     },
     {
-        "duration": "6.0",
+        "duration": "5.0",
         "name": "blink_perf.layout/character_fallback.html"
     },
     {
@@ -556,11 +696,23 @@
         "name": "blink_perf.layout/character_fallback_aat.html"
     },
     {
+        "duration": "8.0",
+        "name": "blink_perf.layout/contain-content-style-change.html"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-blocks.html"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-text.html"
+    },
+    {
         "duration": "9.0",
         "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/fixed-grid-lots-of-stretched-data.html"
     },
     {
@@ -576,7 +728,7 @@
         "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/flexbox-lots-of-data.html"
     },
     {
@@ -584,19 +736,23 @@
         "name": "blink_perf.layout/flexbox-row-nowrap.html"
     },
     {
+        "duration": "9.0",
+        "name": "blink_perf.layout/flexbox-row-stretch-height-definite.html"
+    },
+    {
         "duration": "8.0",
         "name": "blink_perf.layout/flexbox-row-wrap.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/flexbox-with-stretch-layout.html"
     },
     {
-        "duration": "9.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/floats_100_100.html"
     },
     {
-        "duration": "9.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/floats_100_100_nested.html"
     },
     {
@@ -604,7 +760,7 @@
         "name": "blink_perf.layout/floats_10_1000.html"
     },
     {
-        "duration": "4.0",
+        "duration": "3.0",
         "name": "blink_perf.layout/floats_20_100.html"
     },
     {
@@ -616,7 +772,7 @@
         "name": "blink_perf.layout/floats_2_100.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.layout/floats_2_100_nested.html"
     },
     {
@@ -624,7 +780,7 @@
         "name": "blink_perf.layout/floats_50_100.html"
     },
     {
-        "duration": "5.0",
+        "duration": "4.0",
         "name": "blink_perf.layout/floats_50_100_nested.html"
     },
     {
@@ -632,27 +788,35 @@
         "name": "blink_perf.layout/hindi-line-layout.html"
     },
     {
+        "duration": "3.0",
+        "name": "blink_perf.layout/japanese-kokoro-insert.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.layout/large-grid.html"
+    },
+    {
         "duration": "7.0",
         "name": "blink_perf.layout/large-spanning-grid-item.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html"
     },
     {
-        "duration": "99.0",
+        "duration": "24.0",
         "name": "blink_perf.layout/latin-ebook-resize.html"
     },
     {
-        "duration": "16.0",
+        "duration": "5.0",
         "name": "blink_perf.layout/latin-ebook.html"
     },
     {
@@ -664,7 +828,15 @@
         "name": "blink_perf.layout/layers_overlap_3d.html"
     },
     {
-        "duration": "7.0",
+        "duration": "2.0",
+        "name": "blink_perf.layout/line-layout-fit-content-break-word.html"
+    },
+    {
+        "duration": "4.0",
+        "name": "blink_perf.layout/line-layout-fit-content.html"
+    },
+    {
+        "duration": "6.0",
         "name": "blink_perf.layout/line-layout-line-height.html"
     },
     {
@@ -688,15 +860,23 @@
         "name": "blink_perf.layout/long-line-nowrap-spans-collapse.html"
     },
     {
-        "duration": "5.0",
+        "duration": "4.0",
         "name": "blink_perf.layout/long-line-nowrap.html"
     },
     {
-        "duration": "14.0",
-        "name": "blink_perf.layout/multicol/deeply-nested-tables.html"
+        "duration": "7.0",
+        "name": "blink_perf.layout/many-block-children-auto-inline-size.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.layout/many-block-children-fixed-inline-size.html"
     },
     {
         "duration": "8.0",
+        "name": "blink_perf.layout/multicol/deeply-nested-tables.html"
+    },
+    {
+        "duration": "7.0",
         "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html"
     },
     {
@@ -704,23 +884,23 @@
         "name": "blink_perf.layout/multicol/lots-of-text-autofill.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/multicol/lots-of-text-balanced-orphans-widows.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/multicol/lots-of-text-balanced.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html"
     },
     {
-        "duration": "9.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/multicol/tall-content-short-columns.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html"
     },
     {
@@ -732,7 +912,7 @@
         "name": "blink_perf.layout/nested-percent-height-tables.html"
     },
     {
-        "duration": "49.0",
+        "duration": "42.0",
         "name": "blink_perf.layout/subtree-detaching.html"
     },
     {
@@ -752,43 +932,51 @@
         "name": "blink_perf.layout/word-wrap-break-word.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "blink_perf.owp_storage/blob-perf-files.html"
     },
     {
-        "duration": "11.0",
+        "duration": "14.0",
         "name": "blink_perf.owp_storage/blob-perf-ipc.html"
     },
     {
-        "duration": "9.0",
+        "duration": "13.0",
         "name": "blink_perf.owp_storage/blob-perf-shm.html"
     },
     {
-        "duration": "11.0",
+        "duration": "16.0",
         "name": "blink_perf.owp_storage/blob-perf-tiny.html"
     },
     {
-        "duration": "11.0",
+        "duration": "15.0",
         "name": "blink_perf.owp_storage/idb-load-docs.html"
     },
     {
-        "duration": "15.0",
+        "duration": "16.0",
         "name": "blink_perf.paint/appending-text.html"
     },
     {
-        "duration": "15.0",
+        "duration": "19.0",
         "name": "blink_perf.paint/color-changes.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.paint/complex-content-slow-scroll.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
+        "name": "blink_perf.paint/complex-iframe-filtered.html"
+    },
+    {
+        "duration": "31.0",
+        "name": "blink_perf.paint/contain-update-layer-tree.html"
+    },
+    {
+        "duration": "14.0",
         "name": "blink_perf.paint/containment-resize.html"
     },
     {
-        "duration": "13.0",
+        "duration": "15.0",
         "name": "blink_perf.paint/fixed-and-many-layers-scroll.html"
     },
     {
@@ -796,7 +984,7 @@
         "name": "blink_perf.paint/large-table-background-change-with-invisible-collapsed-borders.html"
     },
     {
-        "duration": "11.0",
+        "duration": "14.0",
         "name": "blink_perf.paint/large-table-background-change-with-visible-collapsed-borders.html"
     },
     {
@@ -804,47 +992,51 @@
         "name": "blink_perf.paint/large-table-background-change-with-zero-width-collapsed-borders.html"
     },
     {
-        "duration": "12.0",
+        "duration": "14.0",
         "name": "blink_perf.paint/large-table-collapsed-border-change-with-backgrounds.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.paint/large-table-collapsed-border-change-with-text.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.paint/large-table-collapsed-border-change.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.paint/large-table-repaint.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.paint/move-text-with-mask.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.paint/paint-offset-changes.html"
     },
     {
-        "duration": "13.0",
+        "duration": "19.0",
+        "name": "blink_perf.paint/select-all-words.html"
+    },
+    {
+        "duration": "17.0",
         "name": "blink_perf.paint/transform-changes.html"
     },
     {
-        "duration": "14.0",
+        "duration": "13.0",
         "name": "blink_perf.parser/css-parser-yui.html"
     },
     {
-        "duration": "9.0",
+        "duration": "5.0",
         "name": "blink_perf.parser/html-parser-threaded.html"
     },
     {
-        "duration": "8.0",
+        "duration": "4.0",
         "name": "blink_perf.parser/html-parser.html"
     },
     {
-        "duration": "36.0",
+        "duration": "22.0",
         "name": "blink_perf.parser/html5-full-render.html"
     },
     {
@@ -860,11 +1052,11 @@
         "name": "blink_perf.parser/innerHTML-setter.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.parser/query-selector-all-attribute-complex.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.parser/query-selector-all-attribute.html"
     },
     {
@@ -892,7 +1084,7 @@
         "name": "blink_perf.parser/query-selector-all-first.html"
     },
     {
-        "duration": "10.0",
+        "duration": "9.0",
         "name": "blink_perf.parser/query-selector-all-id-deep.html"
     },
     {
@@ -900,7 +1092,7 @@
         "name": "blink_perf.parser/query-selector-all-id-first.html"
     },
     {
-        "duration": "10.0",
+        "duration": "9.0",
         "name": "blink_perf.parser/query-selector-all-id-last.html"
     },
     {
@@ -1048,7 +1240,7 @@
         "name": "blink_perf.shadow_dom/v0-small-distribution-with-layout.html"
     },
     {
-        "duration": "13.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html"
     },
     {
@@ -1060,11 +1252,11 @@
         "name": "blink_perf.shadow_dom/v1-host-child-append.html"
     },
     {
-        "duration": "13.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html"
     },
     {
-        "duration": "25.0",
+        "duration": "20.0",
         "name": "blink_perf.shadow_dom/v1-large-deep-layout.html"
     },
     {
@@ -1104,11 +1296,11 @@
         "name": "blink_perf.shadow_dom/v1-slot-append.html"
     },
     {
-        "duration": "3.0",
+        "duration": "2.0",
         "name": "blink_perf.shadow_dom/v1-small-deep-distribution.html"
     },
     {
-        "duration": "3.0",
+        "duration": "2.0",
         "name": "blink_perf.shadow_dom/v1-small-deep-layout.html"
     },
     {
@@ -1176,7 +1368,7 @@
         "name": "blink_perf.svg/HereGear.html"
     },
     {
-        "duration": "4.0",
+        "duration": "3.0",
         "name": "blink_perf.svg/MtSaintHelens.html"
     },
     {
@@ -1184,7 +1376,7 @@
         "name": "blink_perf.svg/Samurai.html"
     },
     {
-        "duration": "31.0",
+        "duration": "33.0",
         "name": "blink_perf.svg/SierpinskiCarpet.html"
     },
     {
@@ -1212,7 +1404,7 @@
         "name": "blink_perf.svg/Worldcup.html"
     },
     {
-        "duration": "36.0",
+        "duration": "37.0",
         "name": "dromaeo/http://dromaeo.com?dom-attr"
     },
     {
@@ -1228,647 +1420,631 @@
         "name": "dromaeo/http://dromaeo.com?dom-traverse"
     },
     {
-        "duration": "14.0",
-        "name": "dummy_benchmark.histogram_benchmark_1/dummy_page.html"
-    },
-    {
         "duration": "4.0",
         "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html"
     },
     {
-        "duration": "6.0",
+        "duration": "4.0",
         "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html"
     },
     {
-        "duration": "205.0",
+        "duration": "197.0",
         "name": "jetstream/http://browserbench.org/JetStream/"
     },
     {
-        "duration": "35.0",
+        "duration": "28.0",
         "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html"
     },
     {
-        "duration": "22.0",
+        "duration": "8.0",
         "name": "loading.desktop/24h_cold"
     },
     {
-        "duration": "29.0",
+        "duration": "11.0",
         "name": "loading.desktop/24h_warm"
     },
     {
-        "duration": "29.0",
+        "duration": "14.0",
         "name": "loading.desktop/AirBnB_cold"
     },
     {
-        "duration": "43.0",
+        "duration": "36.0",
         "name": "loading.desktop/AirBnB_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "loading.desktop/Aljayyash_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "loading.desktop/Aljayyash_warm"
     },
     {
-        "duration": "46.0",
+        "duration": "21.0",
         "name": "loading.desktop/AllRecipes_warm"
     },
     {
-        "duration": "30.0",
+        "duration": "14.0",
         "name": "loading.desktop/ArsTechnica_cold"
     },
     {
-        "duration": "45.0",
+        "duration": "27.0",
         "name": "loading.desktop/ArsTechnica_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "loading.desktop/Baidu_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "loading.desktop/Baidu_warm"
     },
     {
-        "duration": "26.0",
+        "duration": "10.0",
         "name": "loading.desktop/Bhaskar_cold"
     },
     {
-        "duration": "35.0",
+        "duration": "15.0",
         "name": "loading.desktop/Bhaskar_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "8.0",
         "name": "loading.desktop/Chosun_cold"
     },
     {
-        "duration": "28.0",
+        "duration": "11.0",
         "name": "loading.desktop/Chosun_warm"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "loading.desktop/Colorado.edu_cold"
     },
     {
-        "duration": "26.0",
+        "duration": "10.0",
         "name": "loading.desktop/Colorado.edu_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "8.0",
         "name": "loading.desktop/Danawa_cold"
     },
     {
-        "duration": "27.0",
+        "duration": "11.0",
         "name": "loading.desktop/Danawa_warm"
     },
     {
-        "duration": "35.0",
+        "duration": "8.0",
         "name": "loading.desktop/Daum_cold"
     },
     {
-        "duration": "24.0",
+        "duration": "9.0",
         "name": "loading.desktop/Daum_warm"
     },
     {
-        "duration": "23.0",
+        "duration": "8.0",
         "name": "loading.desktop/Donga_cold"
     },
     {
-        "duration": "29.0",
+        "duration": "12.0",
         "name": "loading.desktop/Donga_warm"
     },
     {
-        "duration": "27.0",
+        "duration": "12.0",
         "name": "loading.desktop/Economist_cold"
     },
     {
-        "duration": "39.0",
+        "duration": "22.0",
         "name": "loading.desktop/Economist_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "14.0",
         "name": "loading.desktop/Elmundo_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "7.0",
         "name": "loading.desktop/FC2Blog_cold"
     },
     {
-        "duration": "40.0",
+        "duration": "10.0",
         "name": "loading.desktop/FC2Blog_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "loading.desktop/FIFA_cold"
     },
     {
-        "duration": "28.0",
+        "duration": "26.0",
         "name": "loading.desktop/FIFA_warm"
     },
     {
-        "duration": "34.0",
+        "duration": "18.0",
         "name": "loading.desktop/FarsNews_cold"
     },
     {
-        "duration": "26.0",
+        "duration": "10.0",
         "name": "loading.desktop/FarsNews_warm"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "loading.desktop/Flickr_cold"
     },
     {
-        "duration": "26.0",
+        "duration": "11.0",
         "name": "loading.desktop/Flickr_warm"
     },
     {
-        "duration": "20.0",
+        "duration": "8.0",
         "name": "loading.desktop/FlipKart_cold"
     },
     {
-        "duration": "26.0",
+        "duration": "9.0",
         "name": "loading.desktop/FlipKart_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "loading.desktop/Free.fr_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "loading.desktop/Free.fr_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "7.0",
         "name": "loading.desktop/HTML5Rocks_cold"
     },
     {
-        "duration": "20.0",
+        "duration": "7.0",
         "name": "loading.desktop/HTML5Rocks_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "7.0",
         "name": "loading.desktop/Haraj_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "loading.desktop/Haraj_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "8.0",
         "name": "loading.desktop/HatenaBookmark_cold"
     },
     {
-        "duration": "28.0",
+        "duration": "11.0",
         "name": "loading.desktop/HatenaBookmark_warm"
     },
     {
-        "duration": "23.0",
+        "duration": "8.0",
         "name": "loading.desktop/IGN_cold"
     },
     {
-        "duration": "29.0",
+        "duration": "11.0",
         "name": "loading.desktop/IGN_warm"
     },
     {
-        "duration": "24.0",
+        "duration": "9.0",
         "name": "loading.desktop/IMDB_cold"
     },
     {
-        "duration": "31.0",
+        "duration": "13.0",
         "name": "loading.desktop/IMDB_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "8.0",
         "name": "loading.desktop/IndiaTimes_cold"
     },
     {
-        "duration": "27.0",
+        "duration": "12.0",
         "name": "loading.desktop/IndiaTimes_warm"
     },
     {
-        "duration": "23.0",
+        "duration": "9.0",
         "name": "loading.desktop/Kakaku_cold"
     },
     {
-        "duration": "30.0",
+        "duration": "13.0",
         "name": "loading.desktop/Kakaku_warm"
     },
     {
-        "duration": "36.0",
+        "duration": "13.0",
         "name": "loading.desktop/Kenh14_cold"
     },
     {
-        "duration": "55.0",
+        "duration": "24.0",
         "name": "loading.desktop/Kenh14_warm"
     },
     {
-        "duration": "21.0",
+        "duration": "7.0",
         "name": "loading.desktop/Mercadolivre_cold"
     },
     {
-        "duration": "24.0",
+        "duration": "9.0",
         "name": "loading.desktop/Mercadolivre_warm"
     },
     {
-        "duration": "20.0",
+        "duration": "7.0",
         "name": "loading.desktop/Naver_cold"
     },
     {
-        "duration": "23.0",
+        "duration": "9.0",
         "name": "loading.desktop/Naver_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "8.0",
         "name": "loading.desktop/Orange_cold"
     },
     {
-        "duration": "23.0",
+        "duration": "21.0",
         "name": "loading.desktop/Orange_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "8.0",
         "name": "loading.desktop/Pantip_cold"
     },
     {
-        "duration": "27.0",
+        "duration": "10.0",
         "name": "loading.desktop/Pantip_warm"
     },
     {
-        "duration": "23.0",
+        "duration": "8.0",
         "name": "loading.desktop/PremierLeague_cold"
     },
     {
-        "duration": "29.0",
+        "duration": "13.0",
         "name": "loading.desktop/PremierLeague_warm"
     },
     {
-        "duration": "24.0",
+        "duration": "9.0",
         "name": "loading.desktop/QQ_cold"
     },
     {
-        "duration": "30.0",
+        "duration": "14.0",
         "name": "loading.desktop/QQ_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "8.0",
         "name": "loading.desktop/REI_cold"
     },
     {
-        "duration": "27.0",
+        "duration": "11.0",
         "name": "loading.desktop/REI_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "7.0",
         "name": "loading.desktop/Ruten_cold"
     },
     {
-        "duration": "23.0",
+        "duration": "9.0",
         "name": "loading.desktop/Ruten_warm"
     },
     {
-        "duration": "25.0",
+        "duration": "10.0",
         "name": "loading.desktop/Sina_cold"
     },
     {
-        "duration": "32.0",
+        "duration": "16.0",
         "name": "loading.desktop/Sina_warm"
     },
     {
-        "duration": "23.0",
+        "duration": "9.0",
         "name": "loading.desktop/Taobao_cold"
     },
     {
-        "duration": "30.0",
+        "duration": "28.0",
         "name": "loading.desktop/Taobao_warm"
     },
     {
-        "duration": "26.0",
-        "name": "loading.desktop/TheOnion_cold"
-    },
-    {
-        "duration": "36.0",
-        "name": "loading.desktop/TheOnion_warm"
-    },
-    {
-        "duration": "28.0",
+        "duration": "11.0",
         "name": "loading.desktop/TheVerge_cold"
     },
     {
-        "duration": "36.0",
+        "duration": "18.0",
         "name": "loading.desktop/TheVerge_warm"
     },
     {
-        "duration": "27.0",
+        "duration": "10.0",
         "name": "loading.desktop/TicketMaster_cold"
     },
     {
-        "duration": "38.0",
+        "duration": "17.0",
         "name": "loading.desktop/TicketMaster_warm"
     },
     {
-        "duration": "37.0",
+        "duration": "12.0",
         "name": "loading.desktop/Vietnamnet_cold"
     },
     {
-        "duration": "51.0",
+        "duration": "21.0",
         "name": "loading.desktop/Vietnamnet_warm"
     },
     {
-        "duration": "30.0",
+        "duration": "11.0",
         "name": "loading.desktop/Vnexpress_cold"
     },
     {
-        "duration": "41.0",
+        "duration": "18.0",
         "name": "loading.desktop/Vnexpress_warm"
     },
     {
-        "duration": "28.0",
-        "name": "loading.desktop/Walgreens_cold"
-    },
-    {
-        "duration": "42.0",
-        "name": "loading.desktop/Walgreens_warm"
-    },
-    {
-        "duration": "19.0",
+        "duration": "7.0",
         "name": "loading.desktop/Yandex_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "loading.desktop/Yandex_warm"
     },
     {
-        "duration": "25.0",
+        "duration": "10.0",
         "name": "loading.desktop/amazon.co.jp_cold"
     },
     {
-        "duration": "33.0",
+        "duration": "16.0",
         "name": "loading.desktop/amazon.co.jp_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "8.0",
         "name": "loading.desktop/ja.wikipedia_cold"
     },
     {
-        "duration": "23.0",
+        "duration": "10.0",
         "name": "loading.desktop/ja.wikipedia_warm"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "loading.desktop/money.cnn_cold"
     },
     {
-        "duration": "55.0",
+        "duration": "21.0",
         "name": "loading.desktop/money.cnn_warm"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "loading.desktop/ru.wikipedia_cold"
     },
     {
-        "duration": "25.0",
+        "duration": "11.0",
         "name": "loading.desktop/ru.wikipedia_warm"
     },
     {
-        "duration": "27.0",
+        "duration": "11.0",
         "name": "loading.desktop/uol.com.br_cold"
     },
     {
-        "duration": "41.0",
+        "duration": "20.0",
         "name": "loading.desktop/uol.com.br_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "8.0",
         "name": "loading.desktop/yahoo.co.jp_cold"
     },
     {
-        "duration": "27.0",
+        "duration": "11.0",
         "name": "loading.desktop/yahoo.co.jp_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "8.0",
         "name": "media.desktop/mse.html?media=aac_audio.mp4"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "media.desktop/mse.html?media=aac_audio.mp4,h264_video.mp4"
     },
     {
-        "duration": "18.0",
+        "duration": "8.0",
         "name": "media.desktop/mse.html?media=aac_audio.mp4,h264_video.mp4&waitForPageLoaded=true"
     },
     {
-        "duration": "17.0",
+        "duration": "8.0",
         "name": "media.desktop/mse.html?media=h264_video.mp4"
     },
     {
-        "duration": "25.0",
-        "name": "media.desktop/video.html?src=crowd.ogg&type=audio"
-    },
-    {
-        "duration": "25.0",
-        "name": "media.desktop/video.html?src=crowd1080.mp4"
-    },
-    {
-        "duration": "25.0",
-        "name": "media.desktop/video.html?src=crowd1080.webm"
-    },
-    {
-        "duration": "23.0",
-        "name": "media.desktop/video.html?src=crowd1080_vp9.webm"
-    },
-    {
-        "duration": "14.0",
-        "name": "media.desktop/video.html?src=crowd1080_vp9.webm&seek"
-    },
-    {
-        "duration": "23.0",
-        "name": "media.desktop/video.html?src=crowd720_vp9.webm"
-    },
-    {
-        "duration": "28.0",
-        "name": "media.desktop/video.html?src=garden2_10s.mp4"
-    },
-    {
-        "duration": "18.0",
-        "name": "media.desktop/video.html?src=garden2_10s.mp4&seek"
-    },
-    {
-        "duration": "24.0",
-        "name": "media.desktop/video.html?src=garden2_10s.webm"
-    },
-    {
-        "duration": "15.0",
-        "name": "media.desktop/video.html?src=garden2_10s.webm&seek"
-    },
-    {
-        "duration": "19.0",
-        "name": "media.desktop/video.html?src=smpte_3840x2160_60fps_vp9.webm&seek"
-    },
-    {
-        "duration": "30.0",
-        "name": "media.desktop/video.html?src=tulip2.m4a&type=audio"
-    },
-    {
-        "duration": "30.0",
-        "name": "media.desktop/video.html?src=tulip2.mp3&type=audio"
-    },
-    {
-        "duration": "13.0",
-        "name": "media.desktop/video.html?src=tulip2.mp3&type=audio&seek"
-    },
-    {
-        "duration": "32.0",
-        "name": "media.desktop/video.html?src=tulip2.mp4"
-    },
-    {
-        "duration": "33.0",
-        "name": "media.desktop/video.html?src=tulip2.mp4&busyjs"
-    },
-    {
-        "duration": "14.0",
-        "name": "media.desktop/video.html?src=tulip2.mp4&seek"
-    },
-    {
-        "duration": "30.0",
-        "name": "media.desktop/video.html?src=tulip2.ogg&type=audio"
-    },
-    {
-        "duration": "13.0",
-        "name": "media.desktop/video.html?src=tulip2.ogg&type=audio&seek"
-    },
-    {
-        "duration": "31.0",
-        "name": "media.desktop/video.html?src=tulip2.vp9.webm"
-    },
-    {
-        "duration": "25.0",
-        "name": "media.desktop/video.html?src=tulip2.vp9.webm&background"
+        "duration": "8.0",
+        "name": "media.desktop/mse.html?media=tulip0.av1.mp4"
     },
     {
         "duration": "16.0",
-        "name": "media.desktop/video.html?src=tulip2.vp9.webm&seek"
+        "name": "media.desktop/video.html?src=crowd.ogg&type=audio"
     },
     {
-        "duration": "30.0",
-        "name": "media.desktop/video.html?src=tulip2.wav&type=audio"
+        "duration": "14.0",
+        "name": "media.desktop/video.html?src=crowd1080.mp4"
     },
     {
         "duration": "13.0",
+        "name": "media.desktop/video.html?src=crowd1080.webm"
+    },
+    {
+        "duration": "13.0",
+        "name": "media.desktop/video.html?src=crowd1080_vp9.webm"
+    },
+    {
+        "duration": "7.0",
+        "name": "media.desktop/video.html?src=crowd1080_vp9.webm&seek"
+    },
+    {
+        "duration": "13.0",
+        "name": "media.desktop/video.html?src=crowd720_vp9.webm"
+    },
+    {
+        "duration": "15.0",
+        "name": "media.desktop/video.html?src=garden2_10s.mp4"
+    },
+    {
+        "duration": "8.0",
+        "name": "media.desktop/video.html?src=garden2_10s.mp4&seek"
+    },
+    {
+        "duration": "13.0",
+        "name": "media.desktop/video.html?src=garden2_10s.webm"
+    },
+    {
+        "duration": "7.0",
+        "name": "media.desktop/video.html?src=garden2_10s.webm&seek"
+    },
+    {
+        "duration": "9.0",
+        "name": "media.desktop/video.html?src=smpte_3840x2160_60fps_vp9.webm&seek"
+    },
+    {
+        "duration": "14.0",
+        "name": "media.desktop/video.html?src=tulip0.av1.mp4"
+    },
+    {
+        "duration": "7.0",
+        "name": "media.desktop/video.html?src=tulip0.av1.mp4&seek"
+    },
+    {
+        "duration": "20.0",
+        "name": "media.desktop/video.html?src=tulip2.m4a&type=audio"
+    },
+    {
+        "duration": "20.0",
+        "name": "media.desktop/video.html?src=tulip2.mp3&type=audio"
+    },
+    {
+        "duration": "6.0",
+        "name": "media.desktop/video.html?src=tulip2.mp3&type=audio&seek"
+    },
+    {
+        "duration": "20.0",
+        "name": "media.desktop/video.html?src=tulip2.mp4"
+    },
+    {
+        "duration": "21.0",
+        "name": "media.desktop/video.html?src=tulip2.mp4&busyjs"
+    },
+    {
+        "duration": "7.0",
+        "name": "media.desktop/video.html?src=tulip2.mp4&seek"
+    },
+    {
+        "duration": "20.0",
+        "name": "media.desktop/video.html?src=tulip2.ogg&type=audio"
+    },
+    {
+        "duration": "6.0",
+        "name": "media.desktop/video.html?src=tulip2.ogg&type=audio&seek"
+    },
+    {
+        "duration": "22.0",
+        "name": "media.desktop/video.html?src=tulip2.vp9.webm"
+    },
+    {
+        "duration": "14.0",
+        "name": "media.desktop/video.html?src=tulip2.vp9.webm&background"
+    },
+    {
+        "duration": "8.0",
+        "name": "media.desktop/video.html?src=tulip2.vp9.webm&seek"
+    },
+    {
+        "duration": "22.0",
+        "name": "media.desktop/video.html?src=tulip2.vp9.webm_WiFi"
+    },
+    {
+        "duration": "20.0",
+        "name": "media.desktop/video.html?src=tulip2.wav&type=audio"
+    },
+    {
+        "duration": "6.0",
         "name": "media.desktop/video.html?src=tulip2.wav&type=audio&seek"
     },
     {
-        "duration": "20.0",
+        "duration": "11.0",
         "name": "memory.desktop/TrivialAnimationPageSharedPageState"
     },
     {
-        "duration": "20.0",
+        "duration": "11.0",
         "name": "memory.desktop/TrivialBlinkingCursorPageSharedPageState"
     },
     {
-        "duration": "20.0",
+        "duration": "11.0",
         "name": "memory.desktop/TrivialBlurAnimationPageSharedPageState"
     },
     {
-        "duration": "20.0",
+        "duration": "11.0",
         "name": "memory.desktop/TrivialCanvasPageSharedPageState"
     },
     {
-        "duration": "20.0",
+        "duration": "11.0",
         "name": "memory.desktop/TrivialFullscreenVideoPageSharedPageState"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "memory.desktop/TrivialGifPageSharedPageState"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "memory.desktop/TrivialScrollingPageSharedPageState"
     },
     {
-        "duration": "20.0",
+        "duration": "11.0",
         "name": "memory.desktop/TrivialWebGLPageSharedPageState"
     },
     {
-        "duration": "55.0",
+        "duration": "46.0",
         "name": "memory.desktop/WebWorker"
     },
     {
-        "duration": "183.0",
-        "name": "memory.long_running_idle_gmail_background_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "177.0",
-        "name": "memory.long_running_idle_gmail_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "47.0",
+        "duration": "46.0",
         "name": "octane/http://chromium.github.io/octane/index.html?auto=1"
     },
     {
-        "duration": "102.0",
-        "name": "oortonline_tbmv2/http://oortonline.gl/#run"
-    },
-    {
-        "duration": "43.0",
+        "duration": "32.0",
         "name": "power.desktop/TrivialAnimationPageSharedPageState"
     },
     {
-        "duration": "42.0",
+        "duration": "32.0",
         "name": "power.desktop/TrivialBlinkingCursorPageSharedPageState"
     },
     {
-        "duration": "44.0",
+        "duration": "33.0",
         "name": "power.desktop/TrivialBlurAnimationPageSharedPageState"
     },
     {
-        "duration": "43.0",
+        "duration": "32.0",
         "name": "power.desktop/TrivialCanvasPageSharedPageState"
     },
     {
-        "duration": "44.0",
+        "duration": "33.0",
         "name": "power.desktop/TrivialFullscreenVideoPageSharedPageState"
     },
     {
-        "duration": "43.0",
+        "duration": "32.0",
         "name": "power.desktop/TrivialGifPageSharedPageState"
     },
     {
-        "duration": "46.0",
+        "duration": "35.0",
         "name": "power.desktop/TrivialScrollingPageSharedPageState"
     },
     {
-        "duration": "43.0",
+        "duration": "32.0",
         "name": "power.desktop/TrivialWebGLPageSharedPageState"
     },
     {
-        "duration": "132.0",
+        "duration": "42.0",
         "name": "power.desktop/abcnews"
     },
     {
-        "duration": "49.0",
+        "duration": "33.0",
         "name": "power.desktop/indiatimes"
     },
     {
-        "duration": "51.0",
+        "duration": "41.0",
         "name": "power.desktop/instagram"
     },
     {
-        "duration": "49.0",
+        "duration": "33.0",
         "name": "power.desktop/microsoft"
     },
     {
-        "duration": "52.0",
+        "duration": "35.0",
         "name": "power.desktop/sina"
     },
     {
-        "duration": "51.0",
+        "duration": "34.0",
         "name": "power.desktop/slideshare"
     },
     {
-        "duration": "62.0",
+        "duration": "37.0",
         "name": "power.desktop/uol"
     },
     {
@@ -1876,7 +2052,7 @@
         "name": "rasterize_and_record_micro.partial_invalidation/800_relpos_divs.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html"
     },
     {
@@ -1888,7 +2064,7 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html"
     },
     {
-        "duration": "8.0",
+        "duration": "9.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html"
     },
     {
@@ -1896,7 +2072,7 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/ebay.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html"
     },
     {
@@ -1904,11 +2080,11 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html"
     },
     {
-        "duration": "7.0",
+        "duration": "6.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/google.html"
     },
     {
@@ -1924,7 +2100,7 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html"
     },
     {
@@ -1932,11 +2108,11 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html"
     },
     {
-        "duration": "5.0",
+        "duration": "7.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html"
     },
     {
-        "duration": "23.0",
+        "duration": "10.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html"
     },
     {
@@ -1944,7 +2120,7 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html"
     },
     {
-        "duration": "11.0",
+        "duration": "9.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html"
     },
     {
@@ -1956,7 +2132,7 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html"
     },
     {
-        "duration": "17.0",
+        "duration": "18.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html"
     },
     {
@@ -1968,2239 +2144,2635 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html"
     },
     {
-        "duration": "18.0",
+        "duration": "13.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html"
     },
     {
-        "duration": "56.0",
+        "duration": "21.0",
         "name": "rendering.desktop/accu_weather_2018"
     },
     {
-        "duration": "70.0",
+        "duration": "25.0",
         "name": "rendering.desktop/accu_weather_pinch_2018"
     },
     {
-        "duration": "43.0",
+        "duration": "13.0",
         "name": "rendering.desktop/amazon_2018"
     },
     {
-        "duration": "42.0",
+        "duration": "11.0",
         "name": "rendering.desktop/amazon_pinch_2018"
     },
     {
-        "duration": "37.0",
+        "duration": "14.0",
         "name": "rendering.desktop/analog_clock_svg"
     },
     {
-        "duration": "30.0",
+        "duration": "10.0",
         "name": "rendering.desktop/animometer_webgl"
     },
     {
-        "duration": "75.0",
+        "duration": "12.0",
+        "name": "rendering.desktop/animometer_webgl_attrib_arrays"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.desktop/animometer_webgl_multi_draw"
+    },
+    {
+        "duration": "15.0",
         "name": "rendering.desktop/aquarium"
     },
     {
-        "duration": "47.0",
+        "duration": "17.0",
         "name": "rendering.desktop/aquarium_20k"
     },
     {
-        "duration": "32.0",
+        "duration": "15.0",
         "name": "rendering.desktop/background_color_animation"
     },
     {
-        "duration": "33.0",
+        "duration": "13.0",
         "name": "rendering.desktop/background_color_animation_with_gradient"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rendering.desktop/balls_css_key_frame_animations"
     },
     {
-        "duration": "60.0",
+        "duration": "16.0",
         "name": "rendering.desktop/balls_css_key_frame_animations_composited_transform"
     },
     {
-        "duration": "41.0",
+        "duration": "14.0",
         "name": "rendering.desktop/balls_css_transition_2_properties"
     },
     {
-        "duration": "41.0",
+        "duration": "14.0",
         "name": "rendering.desktop/balls_css_transition_40_properties"
     },
     {
-        "duration": "41.0",
+        "duration": "14.0",
         "name": "rendering.desktop/balls_css_transition_all_properties"
     },
     {
-        "duration": "42.0",
+        "duration": "13.0",
         "name": "rendering.desktop/balls_javascript_canvas"
     },
     {
-        "duration": "27.0",
+        "duration": "12.0",
         "name": "rendering.desktop/balls_javascript_css"
     },
     {
-        "duration": "34.0",
+        "duration": "14.0",
         "name": "rendering.desktop/balls_svg_animations"
     },
     {
-        "duration": "29.0",
+        "duration": "11.0",
         "name": "rendering.desktop/blob"
     },
     {
-        "duration": "44.0",
+        "duration": "14.0",
         "name": "rendering.desktop/blogspot_2018"
     },
     {
-        "duration": "36.0",
+        "duration": "11.0",
         "name": "rendering.desktop/blogspot_pinch_2018"
     },
     {
-        "duration": "27.0",
-        "name": "rendering.desktop/booking.com_2018"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.desktop/booking_pinch_2018"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.desktop/bouncing_balls_15"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/bouncing_balls_shadow"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/bouncing_clipped_rectangles"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.desktop/bouncing_gradient_circles"
-    },
-    {
-        "duration": "16.0",
-        "name": "rendering.desktop/bouncing_png_images"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.desktop/bouncing_svg_images"
-    },
-    {
-        "duration": "131.0",
-        "name": "rendering.desktop/camera_to_webgl"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.desktop/canvas_05000_pixels_per_second"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.desktop/canvas_10000_pixels_per_second"
-    },
-    {
-        "duration": "18.0",
-        "name": "rendering.desktop/canvas_15000_pixels_per_second"
-    },
-    {
-        "duration": "16.0",
-        "name": "rendering.desktop/canvas_20000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.desktop/canvas_30000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.desktop/canvas_40000_pixels_per_second"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.desktop/canvas_50000_pixels_per_second"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.desktop/canvas_60000_pixels_per_second"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.desktop/canvas_75000_pixels_per_second"
-    },
-    {
-        "duration": "12.0",
-        "name": "rendering.desktop/canvas_90000_pixels_per_second"
-    },
-    {
-        "duration": "47.0",
-        "name": "rendering.desktop/canvas_animation_no_clear"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.desktop/canvas_arcs"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.desktop/canvas_font_cycler"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.desktop/canvas_lines"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.desktop/canvas_to_blob"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.desktop/cats_unscaled"
-    },
-    {
-        "duration": "11.0",
-        "name": "rendering.desktop/cats_viewport_width"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.desktop/cc_poster_circle"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.desktop/cc_scroll_200_layer_grid"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.desktop/cc_scroll_text_only"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.desktop/chip_tune"
-    },
-    {
-        "duration": "46.0",
-        "name": "rendering.desktop/cnn_2018"
-    },
-    {
-        "duration": "47.0",
-        "name": "rendering.desktop/cnn_pinch_2018"
-    },
-    {
-        "duration": "48.0",
-        "name": "rendering.desktop/compositor_heavy_animation"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.desktop/crafty_mind"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.desktop/css_animations_many_keyframes"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.desktop/css_animations_simultaneous_inline_style"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.desktop/css_animations_simultaneous_new_element"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.desktop/css_animations_simultaneous_style_element"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.desktop/css_animations_simultaneous_updating_class"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/css_animations_staggered_infinite_iterations"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.desktop/css_animations_staggered_inline_style"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.desktop/css_animations_staggered_new_element"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.desktop/css_animations_staggered_style_element"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.desktop/css_animations_staggered_updating_class"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.desktop/css_animations_triggered_inline_style"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.desktop/css_animations_triggered_new_element"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.desktop/css_animations_triggered_style_element"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.desktop/css_animations_triggered_updating_class"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.desktop/css_opacity_plus_n_layers_99"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.desktop/css_transitions_inline_style"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.desktop/css_transitions_new_element"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.desktop/css_transitions_staggered_inline_style"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.desktop/css_transitions_staggered_new_element"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.desktop/css_transitions_staggered_style_element"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.desktop/css_transitions_staggered_updating_class"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.desktop/css_transitions_style_element"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.desktop/css_transitions_triggered_inline_style"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.desktop/css_transitions_triggered_new_element"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.desktop/css_transitions_triggered_style_element"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.desktop/css_transitions_triggered_updating_class"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.desktop/css_transitions_updating_class"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.desktop/css_value_type_color"
-    },
-    {
-        "duration": "45.0",
-        "name": "rendering.desktop/css_value_type_filter"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.desktop/css_value_type_length"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/css_value_type_length_complex"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.desktop/css_value_type_length_simple"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.desktop/css_value_type_path"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.desktop/css_value_type_shadow"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.desktop/css_value_type_transform_complex"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.desktop/css_value_type_transform_simple"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.desktop/dynamic_cube_map"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.desktop/earth"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.desktop/ebay_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.desktop/ebay_pinch_2018"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/effect_games"
-    },
-    {
-        "duration": "46.0",
-        "name": "rendering.desktop/espn_2018"
-    },
-    {
-        "duration": "47.0",
-        "name": "rendering.desktop/espn_pinch_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.desktop/extra_large_texture_uploads"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.desktop/facebook_2018"
-    },
-    {
-        "duration": "37.0",
-        "name": "rendering.desktop/facebook_pinch_2018"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.desktop/fill_shapes"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.desktop/filter_terrain_svg"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.desktop/geo_apis"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.desktop/gmail_2018"
-    },
-    {
-        "duration": "52.0",
-        "name": "rendering.desktop/gmail_move_2018"
-    },
-    {
-        "duration": "50.0",
-        "name": "rendering.desktop/gmail_pinch_2018"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.desktop/google_calendar_2018"
-    },
-    {
-        "duration": "44.0",
-        "name": "rendering.desktop/google_calendar_pinch_2018"
-    },
-    {
-        "duration": "43.0",
-        "name": "rendering.desktop/google_docs_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.desktop/google_image_pinch_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.desktop/google_image_search_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.desktop/google_plus_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.desktop/google_search_pinch_2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.desktop/google_web_search_2018"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.desktop/guimark_vector_chart"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.desktop/hakim"
-    },
-    {
-        "duration": "46.0",
-        "name": "rendering.desktop/ie_chalkboard"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.desktop/ie_pirate_mark"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.desktop/infinite_scroll_element_n_layers_99"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.desktop/infinite_scroll_root_n_layers_99"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.desktop/jarro_doverson"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.desktop/js_full_screen_invalidation"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.desktop/js_opacity_plus_n_layers_99"
-    },
-    {
-        "duration": "31.0",
-        "name": "rendering.desktop/js_paint_plus_n_layers_99"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.desktop/js_poster_circle"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.desktop/js_scroll_200_layer_grid"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/js_scroll_text_only"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.desktop/kevs_3d"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.desktop/keyframed_animations"
-    },
-    {
-        "duration": "37.0",
-        "name": "rendering.desktop/large_texture_uploads"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.desktop/linkedin_2018"
-    },
-    {
-        "duration": "43.0",
-        "name": "rendering.desktop/linkedin_pinch_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.desktop/man_in_blue"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.desktop/many_images"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.desktop/many_planets_deep"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.desktop/maps_move_2018"
-    },
-    {
-        "duration": "45.0",
-        "name": "rendering.desktop/maps_perf_test"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/medium_texture_uploads"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.desktop/megi_dish"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.desktop/microsoft_asteroid_belt"
-    },
-    {
-        "duration": "40.0",
-        "name": "rendering.desktop/microsoft_fireflies"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.desktop/microsoft_fish_ie_tank"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.desktop/microsoft_snow"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.desktop/microsoft_speed_reading"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.desktop/microsoft_tweet_map"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.desktop/microsoft_video_city"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.desktop/microsoft_worker_fountains"
-    },
-    {
-        "duration": "18.0",
-        "name": "rendering.desktop/mix_10k"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.desktop/mix_blend_mode_animation_propagating_isolation"
-    },
-    {
-        "duration": "47.0",
-        "name": "rendering.desktop/mix_blend_mode_animation_screen"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.desktop/motion_mark_canvas_fill_shapes"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/motion_mark_canvas_stroke_shapes"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.desktop/motion_mark_focus"
-    },
-    {
-        "duration": "52.0",
-        "name": "rendering.desktop/new_tilings"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.desktop/nvidia_vertex_buffer_object"
-    },
-    {
-        "duration": "47.0",
-        "name": "rendering.desktop/overlay_background_color_css_transitions_page"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.desktop/particles"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.desktop/pinterest_2018"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.desktop/put_get_image_data"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.desktop/raf"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.desktop/raf_animation"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.desktop/raf_canvas"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.desktop/raf_touch_animation"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.desktop/runway"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.desktop/san_angeles"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.desktop/second_batch_js_heavy"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.desktop/second_batch_js_light"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.desktop/second_batch_js_medium"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.desktop/simple_text_page"
+        "duration": "7.0",
+        "name": "rendering.desktop/blur_rotating_background"
     },
     {
         "duration": "9.0",
-        "name": "rendering.desktop/simple_touch_drag"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.desktop/small_texture_uploads"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/smash_cat"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.desktop/spielzeugz"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.desktop/stroke_shapes"
-    },
-    {
-        "duration": "8.0",
-        "name": "rendering.desktop/sync_scroll_offset"
-    },
-    {
-        "duration": "40.0",
-        "name": "rendering.desktop/techcrunch_2018"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.desktop/text_05000_pixels_per_second"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.desktop/text_10000_pixels_per_second"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.desktop/text_15000_pixels_per_second"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.desktop/text_20000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.desktop/text_30000_pixels_per_second"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.desktop/text_40000_pixels_per_second"
-    },
-    {
-        "duration": "12.0",
-        "name": "rendering.desktop/text_50000_pixels_per_second"
-    },
-    {
-        "duration": "12.0",
-        "name": "rendering.desktop/text_60000_pixels_per_second"
-    },
-    {
-        "duration": "12.0",
-        "name": "rendering.desktop/text_75000_pixels_per_second"
+        "name": "rendering.desktop/booking.com_2018"
     },
     {
         "duration": "11.0",
-        "name": "rendering.desktop/text_90000_pixels_per_second"
+        "name": "rendering.desktop/booking_pinch_2018"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_05000_pixels_per_second"
+        "duration": "10.0",
+        "name": "rendering.desktop/bouncing_balls_15"
     },
     {
-        "duration": "24.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_10000_pixels_per_second"
+        "duration": "9.0",
+        "name": "rendering.desktop/bouncing_balls_shadow"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.desktop/bouncing_clipped_rectangles"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/bouncing_gradient_circles"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/bouncing_png_images"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.desktop/bouncing_svg_images"
     },
     {
         "duration": "20.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_15000_pixels_per_second"
+        "name": "rendering.desktop/camera_to_webgl"
     },
     {
-        "duration": "18.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_20000_pixels_per_second"
+        "duration": "9.0",
+        "name": "rendering.desktop/canvas_05000_pixels_per_second"
     },
     {
-        "duration": "17.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_30000_pixels_per_second"
+        "duration": "9.0",
+        "name": "rendering.desktop/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "7.0",
+        "name": "rendering.desktop/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "6.0",
+        "name": "rendering.desktop/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "6.0",
+        "name": "rendering.desktop/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "7.0",
+        "name": "rendering.desktop/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "7.0",
+        "name": "rendering.desktop/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.desktop/canvas_animation_no_clear"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/canvas_arcs"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/canvas_font_cycler"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/canvas_lines"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/canvas_to_blob"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.desktop/cats_unscaled"
+    },
+    {
+        "duration": "7.0",
+        "name": "rendering.desktop/cats_viewport_width"
     },
     {
         "duration": "16.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_40000_pixels_per_second"
+        "name": "rendering.desktop/cc_poster_circle"
     },
     {
-        "duration": "15.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_50000_pixels_per_second"
+        "duration": "10.0",
+        "name": "rendering.desktop/cc_scroll_text_only"
     },
     {
-        "duration": "15.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_60000_pixels_per_second"
+        "duration": "11.0",
+        "name": "rendering.desktop/chip_tune"
     },
     {
-        "duration": "15.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_75000_pixels_per_second"
+        "duration": "21.0",
+        "name": "rendering.desktop/cnn_2018"
     },
     {
-        "duration": "14.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_90000_pixels_per_second"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.desktop/text_hover_05000_pixels_per_second"
-    },
-    {
-        "duration": "19.0",
-        "name": "rendering.desktop/text_hover_10000_pixels_per_second"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.desktop/text_hover_15000_pixels_per_second"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.desktop/text_hover_20000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.desktop/text_hover_30000_pixels_per_second"
+        "duration": "25.0",
+        "name": "rendering.desktop/cnn_pinch_2018"
     },
     {
         "duration": "13.0",
-        "name": "rendering.desktop/text_hover_40000_pixels_per_second"
+        "name": "rendering.desktop/compositor_heavy_animation"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/crafty_mind"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/css_animations_many_keyframes"
     },
     {
         "duration": "12.0",
-        "name": "rendering.desktop/text_hover_50000_pixels_per_second"
+        "name": "rendering.desktop/css_animations_simultaneous_inline_style"
     },
     {
         "duration": "12.0",
-        "name": "rendering.desktop/text_hover_60000_pixels_per_second"
+        "name": "rendering.desktop/css_animations_simultaneous_new_element"
     },
     {
         "duration": "12.0",
-        "name": "rendering.desktop/text_hover_75000_pixels_per_second"
+        "name": "rendering.desktop/css_animations_simultaneous_style_element"
     },
     {
         "duration": "12.0",
-        "name": "rendering.desktop/text_hover_90000_pixels_per_second"
+        "name": "rendering.desktop/css_animations_simultaneous_updating_class"
     },
     {
-        "duration": "20.0",
-        "name": "rendering.desktop/touch_handler_scrolling"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.desktop/transform_transitions"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/transform_transitions_js_block"
-    },
-    {
-        "duration": "37.0",
-        "name": "rendering.desktop/twitch_2018"
-    },
-    {
-        "duration": "43.0",
-        "name": "rendering.desktop/twitch_pinch_2018"
-    },
-    {
-        "duration": "38.0",
-        "name": "rendering.desktop/twitter_2018"
-    },
-    {
-        "duration": "34.0",
-        "name": "rendering.desktop/twitter_pinch_2018"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.desktop/web_animation_value_type_color"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.desktop/web_animation_value_type_length_3d"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/web_animation_value_type_length_complex"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.desktop/web_animation_value_type_length_simple"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.desktop/web_animation_value_type_path"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.desktop/web_animation_value_type_shadow"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.desktop/web_animation_value_type_transform_complex"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.desktop/web_animation_value_type_transform_simple"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.desktop/web_animations_many_keyframes"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.desktop/web_animations_set_current_time"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.desktop/web_animations_simultaneous"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.desktop/web_animations_staggered_chaining"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/web_animations_staggered_infinite_iterations"
-    },
-    {
-        "duration": "35.0",
-        "name": "rendering.desktop/web_animations_staggered_triggering_page"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.desktop/wikipedia_2018"
-    },
-    {
-        "duration": "32.0",
-        "name": "rendering.desktop/wordpress_2018"
-    },
-    {
-        "duration": "25.0",
-        "name": "rendering.desktop/yahoo_answers_2018"
-    },
-    {
-        "duration": "40.0",
-        "name": "rendering.desktop/yahoo_news_2018"
-    },
-    {
-        "duration": "42.0",
-        "name": "rendering.desktop/yahoo_news_pinch_2018"
-    },
-    {
-        "duration": "43.0",
-        "name": "rendering.desktop/yahoo_sports_2018"
-    },
-    {
-        "duration": "45.0",
-        "name": "rendering.desktop/yahoo_sports_pinch_2018"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.desktop/youtube_2018"
-    },
-    {
-        "duration": "39.0",
-        "name": "rendering.desktop/youtube_pinch_2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "rendering.desktop/yuv_decoding"
-    },
-    {
-        "duration": "65.0",
-        "name": "speedometer-future/http://browserbench.org/Speedometer/"
-    },
-    {
-        "duration": "63.0",
-        "name": "speedometer/http://browserbench.org/Speedometer/"
-    },
-    {
-        "duration": "106.0",
-        "name": "speedometer2-future/Speedometer2"
-    },
-    {
-        "duration": "104.0",
-        "name": "speedometer2/Speedometer2"
-    },
-    {
-        "duration": "80.0",
-        "name": "system_health.common_desktop/browse:media:flickr_infinite_scroll"
-    },
-    {
-        "duration": "110.0",
-        "name": "system_health.common_desktop/browse:media:imgur"
-    },
-    {
-        "duration": "79.0",
-        "name": "system_health.common_desktop/browse:media:pinterest"
-    },
-    {
-        "duration": "124.0",
-        "name": "system_health.common_desktop/browse:media:tumblr"
-    },
-    {
-        "duration": "83.0",
-        "name": "system_health.common_desktop/browse:media:youtube"
-    },
-    {
-        "duration": "98.0",
-        "name": "system_health.common_desktop/browse:news:cnn"
-    },
-    {
-        "duration": "69.0",
-        "name": "system_health.common_desktop/browse:news:cnn:2018"
-    },
-    {
-        "duration": "64.0",
-        "name": "system_health.common_desktop/browse:news:flipboard"
-    },
-    {
-        "duration": "60.0",
-        "name": "system_health.common_desktop/browse:news:hackernews"
-    },
-    {
-        "duration": "91.0",
-        "name": "system_health.common_desktop/browse:news:nytimes"
-    },
-    {
-        "duration": "75.0",
-        "name": "system_health.common_desktop/browse:news:reddit"
-    },
-    {
-        "duration": "61.0",
-        "name": "system_health.common_desktop/browse:search:google"
-    },
-    {
-        "duration": "60.0",
-        "name": "system_health.common_desktop/browse:search:google:2018"
-    },
-    {
-        "duration": "42.0",
-        "name": "system_health.common_desktop/browse:search:google_india"
-    },
-    {
-        "duration": "74.0",
-        "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "94.0",
-        "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll:2018"
-    },
-    {
-        "duration": "88.0",
-        "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "58.0",
-        "name": "system_health.common_desktop/browse:social:twitter"
-    },
-    {
-        "duration": "85.0",
-        "name": "system_health.common_desktop/browse:social:twitter_infinite_scroll"
-    },
-    {
-        "duration": "80.0",
-        "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "75.0",
-        "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "70.0",
-        "name": "system_health.common_desktop/browse:tools:earth"
-    },
-    {
-        "duration": "40.0",
-        "name": "system_health.common_desktop/browse_accessibility:media:youtube"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.common_desktop/browse_accessibility:tech:codesearch"
-    },
-    {
-        "duration": "40.0",
-        "name": "system_health.common_desktop/browse_accessibility:tech:codesearch:2018"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.common_desktop/load:chrome:blank"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.common_desktop/load:games:alphabetty"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.common_desktop/load:games:bubbles"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.common_desktop/load:games:lazors"
-    },
-    {
-        "duration": "32.0",
-        "name": "system_health.common_desktop/load:games:miniclip"
-    },
-    {
-        "duration": "38.0",
-        "name": "system_health.common_desktop/load:games:spychase"
-    },
-    {
-        "duration": "38.0",
-        "name": "system_health.common_desktop/load:media:9gag"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.common_desktop/load:media:dailymotion"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.common_desktop/load:media:google_images"
-    },
-    {
-        "duration": "40.0",
-        "name": "system_health.common_desktop/load:media:imgur"
-    },
-    {
-        "duration": "35.0",
-        "name": "system_health.common_desktop/load:media:soundcloud"
-    },
-    {
-        "duration": "33.0",
-        "name": "system_health.common_desktop/load:media:youtube"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.common_desktop/load:news:bbc"
-    },
-    {
-        "duration": "36.0",
-        "name": "system_health.common_desktop/load:news:cnn"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.common_desktop/load:news:flipboard"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:news:hackernews"
-    },
-    {
-        "duration": "32.0",
-        "name": "system_health.common_desktop/load:news:nytimes"
-    },
-    {
-        "duration": "37.0",
-        "name": "system_health.common_desktop/load:news:qq"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.common_desktop/load:news:reddit"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.common_desktop/load:news:wikipedia"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.common_desktop/load:search:amazon"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_desktop/load:search:baidu"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.common_desktop/load:search:ebay"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_desktop/load:search:google"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.common_desktop/load:search:taobao"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.common_desktop/load:search:yahoo"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_desktop/load:search:yandex"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.common_desktop/load:social:instagram"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.common_desktop/load:social:pinterest"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.common_desktop/load:social:vk"
-    },
-    {
-        "duration": "48.0",
-        "name": "system_health.common_desktop/load:tools:docs"
-    },
-    {
-        "duration": "33.0",
-        "name": "system_health.common_desktop/load:tools:drive"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.common_desktop/load:tools:dropbox"
-    },
-    {
-        "duration": "33.0",
-        "name": "system_health.common_desktop/load:tools:gmail"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.common_desktop/load:tools:stackoverflow"
-    },
-    {
-        "duration": "34.0",
-        "name": "system_health.common_desktop/load:tools:weather"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.common_desktop/load_accessibility:media:wikipedia"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.common_desktop/load_accessibility:media:wikipedia:2018"
-    },
-    {
-        "duration": "33.0",
-        "name": "system_health.common_desktop/load_accessibility:shopping:amazon"
-    },
-    {
-        "duration": "143.0",
-        "name": "system_health.common_desktop/long_running:tools:gmail-background"
-    },
-    {
-        "duration": "202.0",
-        "name": "system_health.common_desktop/long_running:tools:gmail-foreground"
-    },
-    {
-        "duration": "63.0",
-        "name": "system_health.common_desktop/play:media:google_play_music"
-    },
-    {
-        "duration": "60.0",
-        "name": "system_health.common_desktop/play:media:soundcloud"
-    },
-    {
-        "duration": "68.0",
-        "name": "system_health.memory_desktop/browse:media:flickr_infinite_scroll"
-    },
-    {
-        "duration": "78.0",
-        "name": "system_health.memory_desktop/browse:media:imgur"
-    },
-    {
-        "duration": "71.0",
-        "name": "system_health.memory_desktop/browse:media:pinterest"
-    },
-    {
-        "duration": "112.0",
-        "name": "system_health.memory_desktop/browse:media:tumblr"
-    },
-    {
-        "duration": "72.0",
-        "name": "system_health.memory_desktop/browse:media:youtube"
-    },
-    {
-        "duration": "54.0",
-        "name": "system_health.memory_desktop/browse:news:cnn:2018"
-    },
-    {
-        "duration": "50.0",
-        "name": "system_health.memory_desktop/browse:news:flipboard"
-    },
-    {
-        "duration": "65.0",
-        "name": "system_health.memory_desktop/browse:news:nytimes"
-    },
-    {
-        "duration": "64.0",
-        "name": "system_health.memory_desktop/browse:news:reddit"
-    },
-    {
-        "duration": "52.0",
-        "name": "system_health.memory_desktop/browse:search:google"
-    },
-    {
-        "duration": "50.0",
-        "name": "system_health.memory_desktop/browse:search:google:2018"
-    },
-    {
-        "duration": "39.0",
-        "name": "system_health.memory_desktop/browse:search:google_india"
-    },
-    {
-        "duration": "66.0",
-        "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "76.0",
-        "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll:2018"
-    },
-    {
-        "duration": "73.0",
-        "name": "system_health.memory_desktop/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "54.0",
-        "name": "system_health.memory_desktop/browse:social:twitter"
-    },
-    {
-        "duration": "71.0",
-        "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "69.0",
-        "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "59.0",
-        "name": "system_health.memory_desktop/browse:tools:earth"
-    },
-    {
-        "duration": "34.0",
-        "name": "system_health.memory_desktop/browse_accessibility:media:youtube"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch"
-    },
-    {
-        "duration": "37.0",
-        "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch:2018"
-    },
-    {
-        "duration": "19.0",
-        "name": "system_health.memory_desktop/load:chrome:blank"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:games:alphabetty"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:games:bubbles"
-    },
-    {
-        "duration": "20.0",
-        "name": "system_health.memory_desktop/load:games:lazors"
-    },
-    {
-        "duration": "34.0",
-        "name": "system_health.memory_desktop/load:games:spychase"
-    },
-    {
-        "duration": "32.0",
-        "name": "system_health.memory_desktop/load:media:9gag"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_desktop/load:media:dailymotion"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_desktop/load:media:google_images"
-    },
-    {
-        "duration": "32.0",
-        "name": "system_health.memory_desktop/load:media:imgur"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_desktop/load:media:soundcloud"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_desktop/load:media:youtube"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:news:bbc"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_desktop/load:news:cnn"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_desktop/load:news:flipboard"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:news:hackernews"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_desktop/load:news:nytimes"
-    },
-    {
-        "duration": "32.0",
-        "name": "system_health.memory_desktop/load:news:qq"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_desktop/load:news:reddit"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_desktop/load:news:wikipedia"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:search:amazon"
-    },
-    {
-        "duration": "20.0",
-        "name": "system_health.memory_desktop/load:search:baidu"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_desktop/load:search:ebay"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_desktop/load:search:google"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_desktop/load:search:taobao"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_desktop/load:search:yahoo"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.memory_desktop/load:search:yandex"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_desktop/load:social:instagram"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_desktop/load:social:pinterest"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_desktop/load:social:vk"
-    },
-    {
-        "duration": "35.0",
-        "name": "system_health.memory_desktop/load:tools:docs"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_desktop/load:tools:drive"
-    },
-    {
-        "duration": "20.0",
-        "name": "system_health.memory_desktop/load:tools:dropbox"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.memory_desktop/load:tools:gmail"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_desktop/load:tools:stackoverflow"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_desktop/load:tools:weather"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_desktop/load_accessibility:media:wikipedia"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_desktop/load_accessibility:media:wikipedia:2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_desktop/load_accessibility:shopping:amazon"
-    },
-    {
-        "duration": "186.0",
-        "name": "system_health.memory_desktop/long_running:tools:gmail-background"
-    },
-    {
-        "duration": "189.0",
-        "name": "system_health.memory_desktop/long_running:tools:gmail-foreground"
-    },
-    {
-        "duration": "54.0",
-        "name": "system_health.memory_desktop/play:media:soundcloud"
-    },
-    {
-        "duration": "20.0",
-        "name": "tracing.tracing_with_background_memory_infra/Facebook"
-    },
-    {
-        "duration": "18.0",
-        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
-    },
-    {
-        "duration": "16.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
-    },
-    {
-        "duration": "16.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
-    },
-    {
-        "duration": "16.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
-    },
-    {
-        "duration": "16.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
-    },
-    {
-        "duration": "20.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
+        "duration": "12.0",
+        "name": "rendering.desktop/css_animations_staggered_infinite_iterations"
     },
     {
         "duration": "14.0",
-        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
+        "name": "rendering.desktop/css_animations_staggered_inline_style"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/css_animations_staggered_new_element"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/css_animations_staggered_style_element"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/css_animations_staggered_updating_class"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/css_animations_triggered_inline_style"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/css_animations_triggered_new_element"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/css_animations_triggered_style_element"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/css_animations_triggered_updating_class"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.desktop/css_opacity_plus_n_layers_99"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/css_transitions_inline_style"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/css_transitions_new_element"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/css_transitions_staggered_inline_style"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/css_transitions_staggered_new_element"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/css_transitions_staggered_style_element"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/css_transitions_staggered_updating_class"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/css_transitions_style_element"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/css_transitions_triggered_inline_style"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/css_transitions_triggered_new_element"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/css_transitions_triggered_style_element"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/css_transitions_triggered_updating_class"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/css_transitions_updating_class"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/css_value_type_color"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/css_value_type_filter"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/css_value_type_length"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/css_value_type_length_complex"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/css_value_type_length_simple"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/css_value_type_path"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/css_value_type_shadow"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/css_value_type_transform_complex"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/css_value_type_transform_simple"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/dynamic_cube_map"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.desktop/earth"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.desktop/ebay_2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/ebay_pinch_2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/effect_games"
+    },
+    {
+        "duration": "20.0",
+        "name": "rendering.desktop/espn_2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.desktop/espn_pinch_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/extra_large_texture_uploads"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.desktop/facebook_2018"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/facebook_pinch_2018"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/fill_shapes"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/filter_terrain_svg"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/geo_apis"
+    },
+    {
+        "duration": "7.0",
+        "name": "rendering.desktop/gmail_2018"
+    },
+    {
+        "duration": "33.0",
+        "name": "rendering.desktop/gmail_move_2018"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/gmail_pinch_2018"
+    },
+    {
+        "duration": "6.0",
+        "name": "rendering.desktop/google_calendar_2018"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.desktop/google_calendar_pinch_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/google_docs_2018"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.desktop/google_image_pinch_2018"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.desktop/google_image_search_2018"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.desktop/google_plus_2018"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.desktop/google_search_pinch_2018"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/google_web_search_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/guimark_vector_chart"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/hakim"
+    },
+    {
+        "duration": "24.0",
+        "name": "rendering.desktop/ie_chalkboard"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/ie_pirate_mark"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/infinite_scroll_element_n_layers_99"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/infinite_scroll_root_fixed_n_layers_99"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/infinite_scroll_root_n_layers_99"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.desktop/jarro_doverson"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.desktop/js_full_screen_invalidation"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/js_opacity_plus_n_layers_99"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/js_paint_plus_n_layers_99"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.desktop/js_poster_circle"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.desktop/js_scroll_text_only"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/kevs_3d"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/keyframed_animations"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/large_texture_uploads"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.desktop/linkedin_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/linkedin_pinch_2018"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/man_in_blue"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.desktop/many_images"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/many_planets_deep"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/maps_move_2018"
+    },
+    {
+        "duration": "32.0",
+        "name": "rendering.desktop/maps_perf_test"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/medium_texture_uploads"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/megi_dish"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.desktop/microsoft_asteroid_belt"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.desktop/microsoft_fireflies"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/microsoft_fish_ie_tank"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/microsoft_performance"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.desktop/microsoft_snow"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/microsoft_speed_reading"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/microsoft_tweet_map"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.desktop/microsoft_video_city"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/microsoft_worker_fountains"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/mix_10k"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/mix_blend_mode_animation_propagating_isolation"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/mix_blend_mode_animation_screen"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/motion_mark_canvas_fill_shapes"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/motion_mark_canvas_stroke_shapes"
     },
     {
         "duration": "18.0",
-        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
+        "name": "rendering.desktop/new_tilings"
     },
     {
-        "duration": "97.0",
-        "name": "v8.browsing_desktop-future/browse:media:flickr_infinite_scroll"
+        "duration": "10.0",
+        "name": "rendering.desktop/nvidia_vertex_buffer_object"
     },
     {
-        "duration": "220.0",
-        "name": "v8.browsing_desktop-future/browse:media:imgur"
+        "duration": "14.0",
+        "name": "rendering.desktop/overlay_background_color_css_transitions_page"
     },
     {
-        "duration": "90.0",
-        "name": "v8.browsing_desktop-future/browse:media:pinterest"
+        "duration": "10.0",
+        "name": "rendering.desktop/particles"
     },
     {
-        "duration": "163.0",
-        "name": "v8.browsing_desktop-future/browse:media:tumblr"
+        "duration": "17.0",
+        "name": "rendering.desktop/pinterest_2018"
     },
     {
-        "duration": "107.0",
-        "name": "v8.browsing_desktop-future/browse:media:youtube"
+        "duration": "9.0",
+        "name": "rendering.desktop/put_get_image_data"
     },
     {
-        "duration": "94.0",
-        "name": "v8.browsing_desktop-future/browse:news:cnn:2018"
+        "duration": "9.0",
+        "name": "rendering.desktop/raf"
     },
     {
-        "duration": "126.0",
-        "name": "v8.browsing_desktop-future/browse:news:nytimes"
+        "duration": "9.0",
+        "name": "rendering.desktop/raf_animation"
     },
     {
-        "duration": "84.0",
-        "name": "v8.browsing_desktop-future/browse:news:reddit"
+        "duration": "9.0",
+        "name": "rendering.desktop/raf_canvas"
     },
     {
-        "duration": "68.0",
-        "name": "v8.browsing_desktop-future/browse:search:google"
+        "duration": "10.0",
+        "name": "rendering.desktop/raf_touch_animation"
     },
     {
-        "duration": "68.0",
-        "name": "v8.browsing_desktop-future/browse:search:google:2018"
+        "duration": "11.0",
+        "name": "rendering.desktop/repaint_amazon_2018"
     },
     {
-        "duration": "46.0",
-        "name": "v8.browsing_desktop-future/browse:search:google_india"
+        "duration": "9.0",
+        "name": "rendering.desktop/repaint_cnn_2018"
     },
     {
-        "duration": "97.0",
-        "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll"
+        "duration": "9.0",
+        "name": "rendering.desktop/repaint_facebook_2018"
     },
     {
-        "duration": "169.0",
-        "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll:2018"
+        "duration": "8.0",
+        "name": "rendering.desktop/repaint_google_search_2018"
     },
     {
-        "duration": "109.0",
-        "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll"
+        "duration": "9.0",
+        "name": "rendering.desktop/repaint_instagram_2018"
     },
     {
-        "duration": "67.0",
-        "name": "v8.browsing_desktop-future/browse:social:twitter"
+        "duration": "9.0",
+        "name": "rendering.desktop/repaint_reddit_2018"
     },
     {
-        "duration": "109.0",
-        "name": "v8.browsing_desktop-future/browse:social:twitter_infinite_scroll"
+        "duration": "8.0",
+        "name": "rendering.desktop/repaint_theverge_2018"
     },
     {
-        "duration": "90.0",
-        "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll:2018"
+        "duration": "9.0",
+        "name": "rendering.desktop/repaint_twitter_2018"
     },
     {
-        "duration": "87.0",
-        "name": "v8.browsing_desktop-future/browse:tools:earth"
+        "duration": "9.0",
+        "name": "rendering.desktop/repaint_wikipedia_2018"
     },
     {
-        "duration": "97.0",
-        "name": "v8.browsing_desktop/browse:media:flickr_infinite_scroll"
+        "duration": "8.0",
+        "name": "rendering.desktop/repaint_yahoo_homepage_2018"
     },
     {
-        "duration": "221.0",
-        "name": "v8.browsing_desktop/browse:media:imgur"
+        "duration": "8.0",
+        "name": "rendering.desktop/runway"
     },
     {
-        "duration": "90.0",
-        "name": "v8.browsing_desktop/browse:media:pinterest"
+        "duration": "10.0",
+        "name": "rendering.desktop/san_angeles"
     },
     {
-        "duration": "165.0",
-        "name": "v8.browsing_desktop/browse:media:tumblr"
+        "duration": "7.0",
+        "name": "rendering.desktop/second_batch_js_heavy"
     },
     {
-        "duration": "107.0",
-        "name": "v8.browsing_desktop/browse:media:youtube"
+        "duration": "7.0",
+        "name": "rendering.desktop/second_batch_js_light"
     },
     {
-        "duration": "98.0",
-        "name": "v8.browsing_desktop/browse:news:cnn:2018"
+        "duration": "7.0",
+        "name": "rendering.desktop/second_batch_js_medium"
     },
     {
-        "duration": "126.0",
-        "name": "v8.browsing_desktop/browse:news:nytimes"
+        "duration": "9.0",
+        "name": "rendering.desktop/simple_text_page"
     },
     {
-        "duration": "84.0",
-        "name": "v8.browsing_desktop/browse:news:reddit"
+        "duration": "13.0",
+        "name": "rendering.desktop/simple_touch_drag"
     },
     {
-        "duration": "68.0",
-        "name": "v8.browsing_desktop/browse:search:google"
+        "duration": "12.0",
+        "name": "rendering.desktop/small_texture_uploads"
     },
     {
-        "duration": "68.0",
-        "name": "v8.browsing_desktop/browse:search:google:2018"
+        "duration": "8.0",
+        "name": "rendering.desktop/smash_cat"
     },
     {
-        "duration": "46.0",
-        "name": "v8.browsing_desktop/browse:search:google_india"
+        "duration": "8.0",
+        "name": "rendering.desktop/spielzeugz"
     },
     {
-        "duration": "97.0",
-        "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll"
+        "duration": "8.0",
+        "name": "rendering.desktop/stroke_shapes"
     },
     {
-        "duration": "169.0",
-        "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll:2018"
+        "duration": "12.0",
+        "name": "rendering.desktop/sync_scroll_offset"
     },
     {
-        "duration": "109.0",
-        "name": "v8.browsing_desktop/browse:social:tumblr_infinite_scroll"
+        "duration": "12.0",
+        "name": "rendering.desktop/techcrunch_2018"
     },
     {
-        "duration": "67.0",
-        "name": "v8.browsing_desktop/browse:social:twitter"
+        "duration": "9.0",
+        "name": "rendering.desktop/text_05000_pixels_per_second"
     },
     {
-        "duration": "110.0",
-        "name": "v8.browsing_desktop/browse:social:twitter_infinite_scroll"
+        "duration": "9.0",
+        "name": "rendering.desktop/text_10000_pixels_per_second"
     },
     {
-        "duration": "86.0",
-        "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll:2018"
+        "duration": "7.0",
+        "name": "rendering.desktop/text_20000_pixels_per_second"
     },
     {
-        "duration": "87.0",
-        "name": "v8.browsing_desktop/browse:tools:earth"
+        "duration": "7.0",
+        "name": "rendering.desktop/text_40000_pixels_per_second"
     },
     {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/AdsAMPAds_cold"
+        "duration": "6.0",
+        "name": "rendering.desktop/text_60000_pixels_per_second"
     },
     {
-        "duration": "44.0",
-        "name": "v8.runtime_stats.top_25/AdsAMPAds_hot"
+        "duration": "6.0",
+        "name": "rendering.desktop/text_75000_pixels_per_second"
     },
     {
-        "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/AdsAMPAds_warm"
+        "duration": "6.0",
+        "name": "rendering.desktop/text_90000_pixels_per_second"
     },
     {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_cold"
+        "duration": "10.0",
+        "name": "rendering.desktop/text_constant_full_page_raster_05000_pixels_per_second"
     },
     {
-        "duration": "44.0",
-        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_hot"
+        "duration": "9.0",
+        "name": "rendering.desktop/text_constant_full_page_raster_10000_pixels_per_second"
     },
     {
-        "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_warm"
+        "duration": "7.0",
+        "name": "rendering.desktop/text_constant_full_page_raster_20000_pixels_per_second"
     },
     {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_cold"
+        "duration": "7.0",
+        "name": "rendering.desktop/text_constant_full_page_raster_40000_pixels_per_second"
     },
     {
-        "duration": "42.0",
-        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_hot"
+        "duration": "6.0",
+        "name": "rendering.desktop/text_constant_full_page_raster_60000_pixels_per_second"
     },
     {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_warm"
+        "duration": "6.0",
+        "name": "rendering.desktop/text_constant_full_page_raster_75000_pixels_per_second"
     },
     {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_cold"
+        "duration": "6.0",
+        "name": "rendering.desktop/text_constant_full_page_raster_90000_pixels_per_second"
     },
     {
-        "duration": "44.0",
-        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_hot"
+        "duration": "9.0",
+        "name": "rendering.desktop/text_hover_05000_pixels_per_second"
     },
     {
-        "duration": "44.0",
-        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_warm"
+        "duration": "9.0",
+        "name": "rendering.desktop/text_hover_10000_pixels_per_second"
     },
     {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_cold"
+        "duration": "8.0",
+        "name": "rendering.desktop/text_hover_20000_pixels_per_second"
     },
     {
-        "duration": "42.0",
-        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_hot"
+        "duration": "7.0",
+        "name": "rendering.desktop/text_hover_40000_pixels_per_second"
     },
     {
-        "duration": "40.0",
-        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_warm"
+        "duration": "7.0",
+        "name": "rendering.desktop/text_hover_60000_pixels_per_second"
     },
     {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_cold"
+        "duration": "7.0",
+        "name": "rendering.desktop/text_hover_75000_pixels_per_second"
     },
     {
-        "duration": "42.0",
-        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_hot"
+        "duration": "6.0",
+        "name": "rendering.desktop/text_hover_90000_pixels_per_second"
     },
     {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_warm"
+        "duration": "9.0",
+        "name": "rendering.desktop/touch_handler_scrolling"
     },
     {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_cold"
+        "duration": "12.0",
+        "name": "rendering.desktop/transform_transitions"
     },
     {
-        "duration": "43.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_hot"
+        "duration": "12.0",
+        "name": "rendering.desktop/transform_transitions_js_block"
     },
     {
-        "duration": "40.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_warm"
+        "duration": "9.0",
+        "name": "rendering.desktop/twitch_2018"
     },
     {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_cold"
+        "duration": "18.0",
+        "name": "rendering.desktop/twitch_pinch_2018"
     },
     {
-        "duration": "42.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_hot"
+        "duration": "12.0",
+        "name": "rendering.desktop/twitter_2018"
     },
     {
-        "duration": "40.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_warm"
+        "duration": "11.0",
+        "name": "rendering.desktop/twitter_pinch_2018"
     },
     {
-        "duration": "47.0",
-        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_cold"
+        "duration": "12.0",
+        "name": "rendering.desktop/web_animation_value_type_color"
     },
     {
-        "duration": "69.0",
-        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_hot"
+        "duration": "13.0",
+        "name": "rendering.desktop/web_animation_value_type_length_3d"
     },
     {
-        "duration": "58.0",
-        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_warm"
+        "duration": "12.0",
+        "name": "rendering.desktop/web_animation_value_type_length_complex"
     },
     {
-        "duration": "43.0",
-        "name": "v8.runtime_stats.top_25/http://edition.cnn.com_cold"
+        "duration": "12.0",
+        "name": "rendering.desktop/web_animation_value_type_length_simple"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/web_animation_value_type_path"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/web_animation_value_type_shadow"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/web_animation_value_type_transform_complex"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/web_animation_value_type_transform_simple"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.desktop/web_animations_many_keyframes"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/web_animations_set_current_time"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/web_animations_simultaneous"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/web_animations_staggered_chaining"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.desktop/web_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/web_animations_staggered_triggering_page"
+    },
+    {
+        "duration": "18.0",
+        "name": "rendering.desktop/wikipedia_2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/wordpress_2018"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/yahoo_answers_2018"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/yahoo_news_2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/yahoo_news_pinch_2018"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/yahoo_sports_2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/yahoo_sports_pinch_2018"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/youtube_2018"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.desktop/youtube_pinch_2018"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/yuv_decoding"
+    },
+    {
+        "duration": "56.0",
+        "name": "speedometer-future/http://browserbench.org/Speedometer/"
     },
     {
         "duration": "54.0",
-        "name": "v8.runtime_stats.top_25/http://edition.cnn.com_hot"
+        "name": "speedometer/http://browserbench.org/Speedometer/"
     },
     {
-        "duration": "49.0",
-        "name": "v8.runtime_stats.top_25/http://edition.cnn.com_warm"
+        "duration": "96.0",
+        "name": "speedometer2-future/Speedometer2"
     },
     {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_cold"
+        "duration": "96.0",
+        "name": "speedometer2/Speedometer2"
     },
     {
-        "duration": "44.0",
-        "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_hot"
-    },
-    {
-        "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_warm"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://inbox.google.com_cold"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/http://inbox.google.com_hot"
+        "duration": "60.0",
+        "name": "system_health.common_desktop/browse:media:flickr_infinite_scroll"
     },
     {
         "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://inbox.google.com_warm"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_cold"
-    },
-    {
-        "duration": "40.0",
-        "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_hot"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_warm"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/http://meta.discourse.org_cold"
-    },
-    {
-        "duration": "46.0",
-        "name": "v8.runtime_stats.top_25/http://meta.discourse.org_hot"
-    },
-    {
-        "duration": "43.0",
-        "name": "v8.runtime_stats.top_25/http://meta.discourse.org_warm"
-    },
-    {
-        "duration": "31.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_cold"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_hot"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_warm"
-    },
-    {
-        "duration": "31.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_cold"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_hot"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_warm"
-    },
-    {
-        "duration": "31.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_cold"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_hot"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_warm"
-    },
-    {
-        "duration": "31.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_cold"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_hot"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_warm"
-    },
-    {
-        "duration": "31.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_cold"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_hot"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_warm"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_cold"
-    },
-    {
-        "duration": "45.0",
-        "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_hot"
-    },
-    {
-        "duration": "54.0",
-        "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_warm"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/http://weibo.com_cold"
-    },
-    {
-        "duration": "46.0",
-        "name": "v8.runtime_stats.top_25/http://weibo.com_hot"
-    },
-    {
-        "duration": "43.0",
-        "name": "v8.runtime_stats.top_25/http://weibo.com_warm"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/http://world.taobao.com_cold"
-    },
-    {
-        "duration": "45.0",
-        "name": "v8.runtime_stats.top_25/http://world.taobao.com_hot"
-    },
-    {
-        "duration": "42.0",
-        "name": "v8.runtime_stats.top_25/http://world.taobao.com_warm"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_cold"
-    },
-    {
-        "duration": "43.0",
-        "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_hot"
-    },
-    {
-        "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_warm"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_cold"
-    },
-    {
-        "duration": "43.0",
-        "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_hot"
-    },
-    {
-        "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_warm"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_cold"
-    },
-    {
-        "duration": "42.0",
-        "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_hot"
-    },
-    {
-        "duration": "40.0",
-        "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_warm"
-    },
-    {
-        "duration": "42.0",
-        "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_cold"
-    },
-    {
-        "duration": "51.0",
-        "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_hot"
-    },
-    {
-        "duration": "58.0",
-        "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_warm"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_cold"
-    },
-    {
-        "duration": "44.0",
-        "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_hot"
-    },
-    {
-        "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_warm"
-    },
-    {
-        "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_cold"
-    },
-    {
-        "duration": "48.0",
-        "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_hot"
-    },
-    {
-        "duration": "45.0",
-        "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_warm"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_cold"
-    },
-    {
-        "duration": "46.0",
-        "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_hot"
-    },
-    {
-        "duration": "42.0",
-        "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_warm"
-    },
-    {
-        "duration": "72.0",
-        "name": "v8.runtime_stats.top_25/http://www.qq.com_cold"
-    },
-    {
-        "duration": "85.0",
-        "name": "v8.runtime_stats.top_25/http://www.qq.com_hot"
+        "name": "system_health.common_desktop/browse:media:googleplaystore:2018"
     },
     {
         "duration": "79.0",
-        "name": "v8.runtime_stats.top_25/http://www.qq.com_warm"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/http://www.reddit.com_cold"
-    },
-    {
-        "duration": "45.0",
-        "name": "v8.runtime_stats.top_25/http://www.reddit.com_hot"
-    },
-    {
-        "duration": "42.0",
-        "name": "v8.runtime_stats.top_25/http://www.reddit.com_warm"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_cold"
-    },
-    {
-        "duration": "47.0",
-        "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_hot"
-    },
-    {
-        "duration": "43.0",
-        "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_warm"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_cold"
-    },
-    {
-        "duration": "45.0",
-        "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_hot"
-    },
-    {
-        "duration": "42.0",
-        "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_warm"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_cold"
-    },
-    {
-        "duration": "44.0",
-        "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_hot"
-    },
-    {
-        "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_warm"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_cold"
-    },
-    {
-        "duration": "44.0",
-        "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_hot"
-    },
-    {
-        "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_warm"
-    },
-    {
-        "duration": "48.0",
-        "name": "v8.runtime_stats.top_25/https://adwords.google.com_cold"
-    },
-    {
-        "duration": "59.0",
-        "name": "v8.runtime_stats.top_25/https://adwords.google.com_hot"
+        "name": "system_health.common_desktop/browse:media:imgur"
     },
     {
         "duration": "58.0",
-        "name": "v8.runtime_stats.top_25/https://adwords.google.com_warm"
+        "name": "system_health.common_desktop/browse:media:pinterest"
     },
     {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_cold"
+        "duration": "87.0",
+        "name": "system_health.common_desktop/browse:media:pinterest:2018"
     },
     {
-        "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_hot"
+        "duration": "101.0",
+        "name": "system_health.common_desktop/browse:media:tumblr"
     },
     {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_warm"
+        "duration": "59.0",
+        "name": "system_health.common_desktop/browse:media:tumblr:2018"
     },
     {
-        "duration": "42.0",
-        "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_cold"
+        "duration": "65.0",
+        "name": "system_health.common_desktop/browse:media:youtube"
     },
     {
-        "duration": "50.0",
-        "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_hot"
-    },
-    {
-        "duration": "46.0",
-        "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_warm"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_cold"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_hot"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_warm"
-    },
-    {
-        "duration": "45.0",
-        "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_cold"
-    },
-    {
-        "duration": "54.0",
-        "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_hot"
-    },
-    {
-        "duration": "40.0",
-        "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_warm"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_cold"
-    },
-    {
-        "duration": "45.0",
-        "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_hot"
-    },
-    {
-        "duration": "42.0",
-        "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_warm"
-    },
-    {
-        "duration": "44.0",
-        "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_cold"
-    },
-    {
-        "duration": "52.0",
-        "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_hot"
-    },
-    {
-        "duration": "48.0",
-        "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_warm"
-    },
-    {
-        "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/https://www.youtube.com_cold"
-    },
-    {
-        "duration": "49.0",
-        "name": "v8.runtime_stats.top_25/https://www.youtube.com_hot"
-    },
-    {
-        "duration": "45.0",
-        "name": "v8.runtime_stats.top_25/https://www.youtube.com_warm"
-    },
-    {
-        "duration": "27.0",
-        "name": "wasm/WasmSpaceBuggy"
-    },
-    {
-        "duration": "34.0",
-        "name": "wasm/WasmTanks"
+        "duration": "62.0",
+        "name": "system_health.common_desktop/browse:media:youtube:2018"
     },
     {
         "duration": "63.0",
-        "name": "wasm/WasmZenGarden"
+        "name": "system_health.common_desktop/browse:media:youtubetv:2019"
+    },
+    {
+        "duration": "73.0",
+        "name": "system_health.common_desktop/browse:news:cnn"
+    },
+    {
+        "duration": "48.0",
+        "name": "system_health.common_desktop/browse:news:cnn:2018"
+    },
+    {
+        "duration": "45.0",
+        "name": "system_health.common_desktop/browse:news:flipboard"
+    },
+    {
+        "duration": "43.0",
+        "name": "system_health.common_desktop/browse:news:flipboard:2018"
+    },
+    {
+        "duration": "46.0",
+        "name": "system_health.common_desktop/browse:news:hackernews"
+    },
+    {
+        "duration": "56.0",
+        "name": "system_health.common_desktop/browse:news:hackernews:2018"
+    },
+    {
+        "duration": "68.0",
+        "name": "system_health.common_desktop/browse:news:nytimes"
+    },
+    {
+        "duration": "79.0",
+        "name": "system_health.common_desktop/browse:news:nytimes:2018"
+    },
+    {
+        "duration": "59.0",
+        "name": "system_health.common_desktop/browse:news:reddit"
+    },
+    {
+        "duration": "51.0",
+        "name": "system_health.common_desktop/browse:news:reddit:2018"
+    },
+    {
+        "duration": "45.0",
+        "name": "system_health.common_desktop/browse:search:google"
+    },
+    {
+        "duration": "44.0",
+        "name": "system_health.common_desktop/browse:search:google:2018"
+    },
+    {
+        "duration": "32.0",
+        "name": "system_health.common_desktop/browse:search:google_india"
+    },
+    {
+        "duration": "30.0",
+        "name": "system_health.common_desktop/browse:search:google_india:2018"
+    },
+    {
+        "duration": "61.0",
+        "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "70.0",
+        "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "66.0",
+        "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "61.0",
+        "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018"
     },
     {
         "duration": "42.0",
-        "name": "webrtc/10s_datachannel_transfer"
+        "name": "system_health.common_desktop/browse:social:twitter"
     },
     {
-        "duration": "23.0",
-        "name": "webrtc/canvas_capture_peer_connection"
+        "duration": "42.0",
+        "name": "system_health.common_desktop/browse:social:twitter:2018"
     },
     {
-        "duration": "33.0",
-        "name": "webrtc/codec_constraints_h264"
+        "duration": "67.0",
+        "name": "system_health.common_desktop/browse:social:twitter_infinite_scroll"
     },
     {
-        "duration": "33.0",
-        "name": "webrtc/codec_constraints_vp8"
+        "duration": "60.0",
+        "name": "system_health.common_desktop/browse:social:twitter_infinite_scroll:2018"
     },
     {
-        "duration": "33.0",
-        "name": "webrtc/codec_constraints_vp9"
+        "duration": "61.0",
+        "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "22.0",
-        "name": "webrtc/hd_local_stream_10s"
+        "duration": "58.0",
+        "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "53.0",
+        "name": "system_health.common_desktop/browse:tools:earth"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.common_desktop/browse_accessibility:media:youtube"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/browse_accessibility:tech:codesearch"
+    },
+    {
+        "duration": "24.0",
+        "name": "system_health.common_desktop/browse_accessibility:tech:codesearch:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:chrome:blank"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:games:alphabetty:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:games:bubbles"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.common_desktop/load:games:lazors"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:games:miniclip"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:games:miniclip:2018"
+    },
+    {
+        "duration": "19.0",
+        "name": "system_health.common_desktop/load:games:spychase"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.common_desktop/load:games:spychase:2018"
+    },
+    {
+        "duration": "19.0",
+        "name": "system_health.common_desktop/load:media:9gag"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:media:dailymotion"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:media:facebook_photos:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:media:flickr:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:media:google_images"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:media:google_images:2018"
+    },
+    {
+        "duration": "19.0",
+        "name": "system_health.common_desktop/load:media:imgur"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:media:imgur:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:media:soundcloud"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:media:soundcloud:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:media:youtube"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:media:youtube:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:news:bbc"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:news:bbc:2018"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.common_desktop/load:news:cnn"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:news:cnn:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:news:flipboard"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:news:hackernews"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:news:hackernews:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:news:nytimes"
+    },
+    {
+        "duration": "19.0",
+        "name": "system_health.common_desktop/load:news:nytimes:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:news:qq"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:news:qq:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:news:reddit"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:news:reddit:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:news:wikipedia"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:news:wikipedia:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:search:amazon"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:search:amazon:2018"
+    },
+    {
+        "duration": "19.0",
+        "name": "system_health.common_desktop/load:search:baidu"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:search:baidu:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:search:ebay"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:search:ebay:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:search:flipkart:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:search:google"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:search:google:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:search:taobao"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:search:taobao:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.common_desktop/load:search:yahoo"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:search:yahoo:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.common_desktop/load:search:yandex"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:search:yandex:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:social:instagram"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:social:instagram:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:social:pinterest"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:social:vk"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:social:vk:2018"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.common_desktop/load:tools:docs"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:tools:drive"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:tools:dropbox"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:tools:gmail"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:tools:stackoverflow"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:tools:stackoverflow:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:tools:weather"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load_accessibility:media:wikipedia"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load_accessibility:media:wikipedia:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load_accessibility:shopping:amazon"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load_accessibility:shopping:amazon:2018"
+    },
+    {
+        "duration": "122.0",
+        "name": "system_health.common_desktop/long_running:tools:gmail-background"
+    },
+    {
+        "duration": "136.0",
+        "name": "system_health.common_desktop/multitab:misc:typical24"
+    },
+    {
+        "duration": "122.0",
+        "name": "system_health.common_desktop/multitab:misc:typical24:2018"
+    },
+    {
+        "duration": "43.0",
+        "name": "system_health.common_desktop/play:media:google_play_music"
+    },
+    {
+        "duration": "41.0",
+        "name": "system_health.common_desktop/play:media:soundcloud"
+    },
+    {
+        "duration": "41.0",
+        "name": "system_health.common_desktop/play:media:soundcloud:2018"
+    },
+    {
+        "duration": "57.0",
+        "name": "system_health.memory_desktop/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "34.0",
+        "name": "system_health.memory_desktop/browse:media:googleplaystore:2018"
+    },
+    {
+        "duration": "67.0",
+        "name": "system_health.memory_desktop/browse:media:imgur"
+    },
+    {
+        "duration": "56.0",
+        "name": "system_health.memory_desktop/browse:media:pinterest"
+    },
+    {
+        "duration": "84.0",
+        "name": "system_health.memory_desktop/browse:media:pinterest:2018"
+    },
+    {
+        "duration": "96.0",
+        "name": "system_health.memory_desktop/browse:media:tumblr"
+    },
+    {
+        "duration": "55.0",
+        "name": "system_health.memory_desktop/browse:media:tumblr:2018"
+    },
+    {
+        "duration": "57.0",
+        "name": "system_health.memory_desktop/browse:media:youtube"
+    },
+    {
+        "duration": "58.0",
+        "name": "system_health.memory_desktop/browse:media:youtube:2018"
+    },
+    {
+        "duration": "61.0",
+        "name": "system_health.memory_desktop/browse:media:youtubetv:2019"
+    },
+    {
+        "duration": "40.0",
+        "name": "system_health.memory_desktop/browse:news:cnn:2018"
+    },
+    {
+        "duration": "44.0",
+        "name": "system_health.memory_desktop/browse:news:flipboard"
+    },
+    {
+        "duration": "41.0",
+        "name": "system_health.memory_desktop/browse:news:flipboard:2018"
+    },
+    {
+        "duration": "49.0",
+        "name": "system_health.memory_desktop/browse:news:hackernews:2018"
+    },
+    {
+        "duration": "56.0",
+        "name": "system_health.memory_desktop/browse:news:nytimes"
+    },
+    {
+        "duration": "67.0",
+        "name": "system_health.memory_desktop/browse:news:nytimes:2018"
     },
     {
         "duration": "50.0",
+        "name": "system_health.memory_desktop/browse:news:reddit"
+    },
+    {
+        "duration": "44.0",
+        "name": "system_health.memory_desktop/browse:news:reddit:2018"
+    },
+    {
+        "duration": "43.0",
+        "name": "system_health.memory_desktop/browse:search:google"
+    },
+    {
+        "duration": "42.0",
+        "name": "system_health.memory_desktop/browse:search:google:2018"
+    },
+    {
+        "duration": "30.0",
+        "name": "system_health.memory_desktop/browse:search:google_india"
+    },
+    {
+        "duration": "28.0",
+        "name": "system_health.memory_desktop/browse:search:google_india:2018"
+    },
+    {
+        "duration": "58.0",
+        "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "63.0",
+        "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "59.0",
+        "name": "system_health.memory_desktop/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "51.0",
+        "name": "system_health.memory_desktop/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "40.0",
+        "name": "system_health.memory_desktop/browse:social:twitter"
+    },
+    {
+        "duration": "40.0",
+        "name": "system_health.memory_desktop/browse:social:twitter:2018"
+    },
+    {
+        "duration": "57.0",
+        "name": "system_health.memory_desktop/browse:social:twitter_infinite_scroll:2018"
+    },
+    {
+        "duration": "57.0",
+        "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "55.0",
+        "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "50.0",
+        "name": "system_health.memory_desktop/browse:tools:earth"
+    },
+    {
+        "duration": "19.0",
+        "name": "system_health.memory_desktop/browse_accessibility:media:youtube"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:chrome:blank"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:games:alphabetty:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:games:bubbles"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:games:lazors"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:games:miniclip:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:games:spychase"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.memory_desktop/load:games:spychase:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:media:9gag"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:media:dailymotion"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:media:facebook_photos:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:media:flickr:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:media:google_images"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:media:google_images:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:media:imgur"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:media:imgur:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:media:soundcloud"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:media:soundcloud:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:media:youtube"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:media:youtube:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:news:bbc"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:news:bbc:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:news:cnn"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:news:cnn:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:news:flipboard"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:news:hackernews"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:news:hackernews:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:news:nytimes"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:news:nytimes:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:news:qq"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:news:qq:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:news:reddit"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:news:reddit:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:news:wikipedia"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:news:wikipedia:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:search:amazon"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:search:amazon:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:search:baidu"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:search:baidu:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:search:ebay"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:search:ebay:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:search:flipkart:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:search:google"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:search:google:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:search:taobao"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:search:taobao:2018"
+    },
+    {
+        "duration": "11.0",
+        "name": "system_health.memory_desktop/load:search:yahoo"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:search:yahoo:2018"
+    },
+    {
+        "duration": "11.0",
+        "name": "system_health.memory_desktop/load:search:yandex"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:search:yandex:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:social:instagram"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:social:instagram:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:social:pinterest"
+    },
+    {
+        "duration": "11.0",
+        "name": "system_health.memory_desktop/load:social:vk"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:social:vk:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:tools:docs"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:tools:drive"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:tools:dropbox"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:tools:gmail"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:tools:stackoverflow"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:tools:stackoverflow:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:tools:weather"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load_accessibility:media:wikipedia"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load_accessibility:media:wikipedia:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load_accessibility:shopping:amazon"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load_accessibility:shopping:amazon:2018"
+    },
+    {
+        "duration": "138.0",
+        "name": "system_health.memory_desktop/long_running:tools:gmail-background"
+    },
+    {
+        "duration": "137.0",
+        "name": "system_health.memory_desktop/long_running:tools:gmail-foreground"
+    },
+    {
+        "duration": "39.0",
+        "name": "system_health.memory_desktop/play:media:soundcloud"
+    },
+    {
+        "duration": "39.0",
+        "name": "system_health.memory_desktop/play:media:soundcloud:2018"
+    },
+    {
+        "duration": "8.0",
+        "name": "tracing.tracing_with_background_memory_infra/Facebook"
+    },
+    {
+        "duration": "6.0",
+        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
+    },
+    {
+        "duration": "5.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
+    },
+    {
+        "duration": "7.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
+    },
+    {
+        "duration": "7.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
+    },
+    {
+        "duration": "6.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
+    },
+    {
+        "duration": "7.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
+    },
+    {
+        "duration": "9.0",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "7.0",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "64.0",
+        "name": "v8.browsing_desktop-future/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "38.0",
+        "name": "v8.browsing_desktop-future/browse:media:googleplaystore:2018"
+    },
+    {
+        "duration": "80.0",
+        "name": "v8.browsing_desktop-future/browse:media:imgur"
+    },
+    {
+        "duration": "91.0",
+        "name": "v8.browsing_desktop-future/browse:media:pinterest:2018"
+    },
+    {
+        "duration": "66.0",
+        "name": "v8.browsing_desktop-future/browse:media:tumblr:2018"
+    },
+    {
+        "duration": "67.0",
+        "name": "v8.browsing_desktop-future/browse:media:youtube:2018"
+    },
+    {
+        "duration": "66.0",
+        "name": "v8.browsing_desktop-future/browse:media:youtubetv:2019"
+    },
+    {
+        "duration": "54.0",
+        "name": "v8.browsing_desktop-future/browse:news:cnn:2018"
+    },
+    {
+        "duration": "46.0",
+        "name": "v8.browsing_desktop-future/browse:news:flipboard:2018"
+    },
+    {
+        "duration": "59.0",
+        "name": "v8.browsing_desktop-future/browse:news:hackernews:2018"
+    },
+    {
+        "duration": "84.0",
+        "name": "v8.browsing_desktop-future/browse:news:nytimes:2018"
+    },
+    {
+        "duration": "54.0",
+        "name": "v8.browsing_desktop-future/browse:news:reddit:2018"
+    },
+    {
+        "duration": "46.0",
+        "name": "v8.browsing_desktop-future/browse:search:google:2018"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.browsing_desktop-future/browse:search:google_india:2018"
+    },
+    {
+        "duration": "74.0",
+        "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "69.0",
+        "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "66.0",
+        "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "44.0",
+        "name": "v8.browsing_desktop-future/browse:social:twitter:2018"
+    },
+    {
+        "duration": "64.0",
+        "name": "v8.browsing_desktop-future/browse:social:twitter_infinite_scroll:2018"
+    },
+    {
+        "duration": "61.0",
+        "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "57.0",
+        "name": "v8.browsing_desktop-future/browse:tools:earth"
+    },
+    {
+        "duration": "64.0",
+        "name": "v8.browsing_desktop/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "38.0",
+        "name": "v8.browsing_desktop/browse:media:googleplaystore:2018"
+    },
+    {
+        "duration": "78.0",
+        "name": "v8.browsing_desktop/browse:media:imgur"
+    },
+    {
+        "duration": "61.0",
+        "name": "v8.browsing_desktop/browse:media:pinterest"
+    },
+    {
+        "duration": "91.0",
+        "name": "v8.browsing_desktop/browse:media:pinterest:2018"
+    },
+    {
+        "duration": "107.0",
+        "name": "v8.browsing_desktop/browse:media:tumblr"
+    },
+    {
+        "duration": "65.0",
+        "name": "v8.browsing_desktop/browse:media:tumblr:2018"
+    },
+    {
+        "duration": "68.0",
+        "name": "v8.browsing_desktop/browse:media:youtube"
+    },
+    {
+        "duration": "67.0",
+        "name": "v8.browsing_desktop/browse:media:youtube:2018"
+    },
+    {
+        "duration": "66.0",
+        "name": "v8.browsing_desktop/browse:media:youtubetv:2019"
+    },
+    {
+        "duration": "54.0",
+        "name": "v8.browsing_desktop/browse:news:cnn:2018"
+    },
+    {
+        "duration": "46.0",
+        "name": "v8.browsing_desktop/browse:news:flipboard:2018"
+    },
+    {
+        "duration": "59.0",
+        "name": "v8.browsing_desktop/browse:news:hackernews:2018"
+    },
+    {
+        "duration": "72.0",
+        "name": "v8.browsing_desktop/browse:news:nytimes"
+    },
+    {
+        "duration": "83.0",
+        "name": "v8.browsing_desktop/browse:news:nytimes:2018"
+    },
+    {
+        "duration": "63.0",
+        "name": "v8.browsing_desktop/browse:news:reddit"
+    },
+    {
+        "duration": "54.0",
+        "name": "v8.browsing_desktop/browse:news:reddit:2018"
+    },
+    {
+        "duration": "46.0",
+        "name": "v8.browsing_desktop/browse:search:google"
+    },
+    {
+        "duration": "46.0",
+        "name": "v8.browsing_desktop/browse:search:google:2018"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.browsing_desktop/browse:search:google_india"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.browsing_desktop/browse:search:google_india:2018"
+    },
+    {
+        "duration": "69.0",
+        "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "74.0",
+        "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "69.0",
+        "name": "v8.browsing_desktop/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "61.0",
+        "name": "v8.browsing_desktop/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "43.0",
+        "name": "v8.browsing_desktop/browse:social:twitter"
+    },
+    {
+        "duration": "44.0",
+        "name": "v8.browsing_desktop/browse:social:twitter:2018"
+    },
+    {
+        "duration": "71.0",
+        "name": "v8.browsing_desktop/browse:social:twitter_infinite_scroll"
+    },
+    {
+        "duration": "64.0",
+        "name": "v8.browsing_desktop/browse:social:twitter_infinite_scroll:2018"
+    },
+    {
+        "duration": "61.0",
+        "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "57.0",
+        "name": "v8.browsing_desktop/browse:tools:earth"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/AdsAMPAds_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/AdsAMPAds_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/AdsAMPAds_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_hot"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_warm"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_cold"
+    },
+    {
+        "duration": "53.0",
+        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_hot"
+    },
+    {
+        "duration": "42.0",
+        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_warm"
+    },
+    {
+        "duration": "25.0",
+        "name": "v8.runtime_stats.top_25/http://edition.cnn.com_cold"
+    },
+    {
+        "duration": "34.0",
+        "name": "v8.runtime_stats.top_25/http://edition.cnn.com_hot"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.runtime_stats.top_25/http://edition.cnn.com_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/http://inbox.google.com_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://inbox.google.com_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://inbox.google.com_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/http://meta.discourse.org_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://meta.discourse.org_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://meta.discourse.org_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_warm"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.runtime_stats.top_25/http://weibo.com_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://weibo.com_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://weibo.com_warm"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.runtime_stats.top_25/http://world.taobao.com_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://world.taobao.com_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://world.taobao.com_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_warm"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_cold"
+    },
+    {
+        "duration": "33.0",
+        "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_warm"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_cold"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_warm"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_cold"
+    },
+    {
+        "duration": "39.0",
+        "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_hot"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_warm"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://www.qq.com_cold"
+    },
+    {
+        "duration": "38.0",
+        "name": "v8.runtime_stats.top_25/http://www.qq.com_hot"
+    },
+    {
+        "duration": "45.0",
+        "name": "v8.runtime_stats.top_25/http://www.qq.com_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/http://www.reddit.com_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://www.reddit.com_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://www.reddit.com_warm"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_cold"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_cold"
+    },
+    {
+        "duration": "39.0",
+        "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_warm"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/https://adwords.google.com_cold"
+    },
+    {
+        "duration": "37.0",
+        "name": "v8.runtime_stats.top_25/https://adwords.google.com_hot"
+    },
+    {
+        "duration": "33.0",
+        "name": "v8.runtime_stats.top_25/https://adwords.google.com_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_warm"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_cold"
+    },
+    {
+        "duration": "35.0",
+        "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_hot"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_warm"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_warm"
+    },
+    {
+        "duration": "25.0",
+        "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_cold"
+    },
+    {
+        "duration": "34.0",
+        "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_hot"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_warm"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.runtime_stats.top_25/https://www.youtube.com_cold"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.runtime_stats.top_25/https://www.youtube.com_hot"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/https://www.youtube.com_warm"
+    },
+    {
+        "duration": "8.0",
+        "name": "wasm/WasmSpaceBuggy"
+    },
+    {
+        "duration": "16.0",
+        "name": "wasm/WasmTanks"
+    },
+    {
+        "duration": "26.0",
+        "name": "wasm/WasmZenGarden"
+    },
+    {
+        "duration": "19.0",
+        "name": "webrtc/10s_datachannel_transfer"
+    },
+    {
+        "duration": "12.0",
+        "name": "webrtc/canvas_capture_peer_connection"
+    },
+    {
+        "duration": "22.0",
+        "name": "webrtc/codec_constraints_h264"
+    },
+    {
+        "duration": "22.0",
+        "name": "webrtc/codec_constraints_vp8"
+    },
+    {
+        "duration": "22.0",
+        "name": "webrtc/codec_constraints_vp9"
+    },
+    {
+        "duration": "12.0",
+        "name": "webrtc/hd_local_stream_10s"
+    },
+    {
+        "duration": "27.0",
         "name": "webrtc/multiple_peerconnections"
     },
     {
-        "duration": "52.0",
+        "duration": "32.0",
         "name": "webrtc/pause_play_peerconnections"
     }
 ]
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/mac-10_13_laptop_high_end-perf_timing.json b/tools/perf/core/shard_maps/timing_data/mac-10_13_laptop_high_end-perf_timing.json
index 92b42d5..0b1c56ccc 100644
--- a/tools/perf/core/shard_maps/timing_data/mac-10_13_laptop_high_end-perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/mac-10_13_laptop_high_end-perf_timing.json
@@ -1,6 +1,10 @@
 [
     {
-        "duration": "23.0",
+        "duration": "24.0",
+        "name": "blink_perf.accessibility/line-breaks.html"
+    },
+    {
+        "duration": "18.0",
         "name": "blink_perf.accessibility/textarea-append.html"
     },
     {
@@ -32,7 +36,7 @@
         "name": "blink_perf.bindings/gc-mini-tree.html"
     },
     {
-        "duration": "16.0",
+        "duration": "12.0",
         "name": "blink_perf.bindings/gc-tree.html"
     },
     {
@@ -68,11 +72,11 @@
         "name": "blink_perf.bindings/insert-before.html"
     },
     {
-        "duration": "7.0",
+        "duration": "6.0",
         "name": "blink_perf.bindings/named-property-enumerator.html"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "blink_perf.bindings/node-list-access.html"
     },
     {
@@ -116,7 +120,7 @@
         "name": "blink_perf.bindings/set-attribute.html"
     },
     {
-        "duration": "6.0",
+        "duration": "7.0",
         "name": "blink_perf.bindings/structured-clone-json-deserialize.html"
     },
     {
@@ -160,51 +164,151 @@
         "name": "blink_perf.bindings/undefined-id-getter.html"
     },
     {
-        "duration": "12.0",
+        "duration": "1.0",
+        "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.bindings/worker-structured-clone-json-from-worker.html"
+    },
+    {
+        "duration": "13.0",
         "name": "blink_perf.bindings/worker-structured-clone-json-roundtrip.html"
     },
     {
-        "duration": "12.0",
-        "name": "blink_perf.bindings/worker-structured-clone-json-serialize.html"
+        "duration": "13.0",
+        "name": "blink_perf.bindings/worker-structured-clone-json-to-worker.html"
+    },
+    {
+        "duration": "3.0",
+        "name": "blink_perf.bindings/worker-structured-clone-workerDOM-DBMon-from-worker.html"
+    },
+    {
+        "duration": "1.0",
+        "name": "blink_perf.bindings/worker-structured-clone-workerDOM-Map-from-worker.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-from-worker.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-roundtrip.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-to-worker.html"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.bindings/worker-transferable-from-worker.html"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.bindings/worker-transferable-roundtrip.html"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.bindings/worker-transferable-to-worker.html"
     },
     {
         "duration": "12.0",
         "name": "blink_perf.canvas/createImageBitmapFromImageData.html"
     },
     {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/createImageBitmapFromImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.canvas/docs-paper.html"
+    },
+    {
+        "duration": "4.0",
+        "name": "blink_perf.canvas/docs-paper_RAF.html?RAF"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.canvas/docs-resume.html"
+    },
+    {
+        "duration": "4.0",
+        "name": "blink_perf.canvas/docs-resume_RAF.html?RAF"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/docs-table.html"
+    },
+    {
+        "duration": "3.0",
+        "name": "blink_perf.canvas/docs-table_RAF.html?RAF"
+    },
+    {
         "duration": "3.0",
         "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d.html"
     },
     {
+        "duration": "3.0",
+        "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
         "duration": "6.0",
         "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d.html"
     },
     {
+        "duration": "3.0",
+        "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
         "duration": "2.0",
         "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d.html"
     },
     {
+        "duration": "4.0",
+        "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d_RAF.html?RAF"
+    },
+    {
         "duration": "3.0",
         "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d.html"
     },
     {
+        "duration": "4.0",
+        "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
         "duration": "3.0",
         "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d.html"
     },
     {
         "duration": "3.0",
+        "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "3.0",
         "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d.html"
     },
     {
-        "duration": "8.0",
+        "duration": "4.0",
+        "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "7.0",
         "name": "blink_perf.canvas/drawimage-not-pixelaligned.html"
     },
     {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/drawimage-not-pixelaligned_RAF.html?RAF"
+    },
+    {
         "duration": "7.0",
         "name": "blink_perf.canvas/drawimage.html"
     },
     {
         "duration": "8.0",
+        "name": "blink_perf.canvas/drawimage_RAF.html?RAF"
+    },
+    {
+        "duration": "8.0",
         "name": "blink_perf.canvas/getImageData.html"
     },
     {
@@ -212,39 +316,95 @@
         "name": "blink_perf.canvas/getImageDataColorManaged.html"
     },
     {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/getImageDataColorManaged_RAF.html?RAF"
+    },
+    {
         "duration": "8.0",
+        "name": "blink_perf.canvas/getImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/gpu-bound-shader.html"
+    },
+    {
+        "duration": "5.0",
+        "name": "blink_perf.canvas/gpu-bound-shader_RAF.html?RAF"
+    },
+    {
+        "duration": "7.0",
         "name": "blink_perf.canvas/putImageData.html"
     },
     {
-        "duration": "17.0",
+        "duration": "8.0",
+        "name": "blink_perf.canvas/putImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.canvas/sheets-render.html"
+    },
+    {
+        "duration": "3.0",
+        "name": "blink_perf.canvas/sheets-render_RAF.html?RAF"
+    },
+    {
+        "duration": "18.0",
         "name": "blink_perf.canvas/toBlob_duration.html"
     },
     {
+        "duration": "18.0",
+        "name": "blink_perf.canvas/toBlob_duration_RAF.html?RAF"
+    },
+    {
         "duration": "3.0",
         "name": "blink_perf.canvas/toBlob_duration_jpeg.html"
     },
     {
+        "duration": "3.0",
+        "name": "blink_perf.canvas/toBlob_duration_jpeg_RAF.html?RAF"
+    },
+    {
         "duration": "2.0",
         "name": "blink_perf.canvas/transferFromImageBitmap.html"
     },
     {
+        "duration": "4.0",
+        "name": "blink_perf.canvas/transferFromImageBitmap_RAF.html?RAF"
+    },
+    {
         "duration": "3.0",
         "name": "blink_perf.canvas/upload-canvas-2d-to-texture.html"
     },
     {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/upload-canvas-2d-to-texture_RAF.html?RAF"
+    },
+    {
         "duration": "9.0",
         "name": "blink_perf.canvas/upload-video-to-sub-texture.html"
     },
     {
-        "duration": "2.0",
+        "duration": "4.0",
+        "name": "blink_perf.canvas/upload-video-to-sub-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "3.0",
         "name": "blink_perf.canvas/upload-video-to-texture.html"
     },
     {
+        "duration": "5.0",
+        "name": "blink_perf.canvas/upload-video-to-texture_RAF.html?RAF"
+    },
+    {
         "duration": "3.0",
         "name": "blink_perf.canvas/upload-webgl-to-texture.html"
     },
     {
-        "duration": "16.0",
+        "duration": "7.0",
+        "name": "blink_perf.canvas/upload-webgl-to-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "14.0",
         "name": "blink_perf.css/AttributeDescendantSelector.html"
     },
     {
@@ -260,83 +420,83 @@
         "name": "blink_perf.css/CSSPropertyUpdateValue.html"
     },
     {
-        "duration": "6.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleChildClassSelector.html"
     },
     {
-        "duration": "6.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleChildElementSelectors.html"
     },
     {
-        "duration": "6.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStyleElementSelector.html"
     },
     {
-        "duration": "6.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html"
     },
     {
-        "duration": "6.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html"
     },
     {
-        "duration": "6.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html"
     },
     {
-        "duration": "6.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html"
     },
     {
-        "duration": "6.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html"
     },
     {
-        "duration": "6.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html"
     },
     {
-        "duration": "6.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html"
     },
     {
-        "duration": "6.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html"
     },
     {
-        "duration": "9.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStyleShallowTree.html"
     },
     {
-        "duration": "6.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStyleSingleClassSelector.html"
     },
     {
-        "duration": "6.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html"
     },
     {
-        "duration": "6.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html"
     },
     {
-        "duration": "6.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleUniversalSelector.html"
     },
     {
-        "duration": "6.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html"
     },
     {
-        "duration": "6.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html"
     },
     {
-        "duration": "11.0",
+        "duration": "9.0",
         "name": "blink_perf.css/ClassDescendantSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.css/ClassInvalidation.html"
     },
     {
@@ -356,19 +516,19 @@
         "name": "blink_perf.css/CustomPropertiesVarAlias.html"
     },
     {
-        "duration": "10.0",
+        "duration": "8.0",
         "name": "blink_perf.css/FocusUpdate.html"
     },
     {
-        "duration": "7.0",
+        "duration": "12.0",
         "name": "blink_perf.css/LoadBootstrapBlog.html"
     },
     {
-        "duration": "7.0",
+        "duration": "10.0",
         "name": "blink_perf.css/LoadMaterializeStarterPage.html"
     },
     {
-        "duration": "7.0",
+        "duration": "11.0",
         "name": "blink_perf.css/LoadSemanticPageExample.html"
     },
     {
@@ -380,11 +540,7 @@
         "name": "blink_perf.css/SelectorCountScaling.html"
     },
     {
-        "duration": "13.0",
-        "name": "blink_perf.dom/addRange.html"
-    },
-    {
-        "duration": "21.0",
+        "duration": "27.0",
         "name": "blink_perf.dom/custom-element-default-style-with-shadow.html"
     },
     {
@@ -392,19 +548,7 @@
         "name": "blink_perf.dom/custom-element-default-style.html"
     },
     {
-        "duration": "2.0",
-        "name": "blink_perf.dom/delete-in-password-field.html"
-    },
-    {
-        "duration": "7.0",
-        "name": "blink_perf.dom/div-editable.html"
-    },
-    {
-        "duration": "1.0",
-        "name": "blink_perf.dom/inner_html_with_selection.html"
-    },
-    {
-        "duration": "16.0",
+        "duration": "12.0",
         "name": "blink_perf.dom/long-sibling-list.html"
     },
     {
@@ -420,18 +564,6 @@
         "name": "blink_perf.dom/modify-element-title.html"
     },
     {
-        "duration": "2.0",
-        "name": "blink_perf.dom/move-down-with-hidden-elements.html"
-    },
-    {
-        "duration": "2.0",
-        "name": "blink_perf.dom/move-up-with-hidden-elements.html"
-    },
-    {
-        "duration": "1.0",
-        "name": "blink_perf.dom/remove_child_with_selection.html"
-    },
-    {
         "duration": "7.0",
         "name": "blink_perf.dom/select-multiple-add.html"
     },
@@ -444,59 +576,67 @@
         "name": "blink_perf.dom/select-single-remove.html"
     },
     {
-        "duration": "7.0",
-        "name": "blink_perf.dom/textarea-dom.html"
-    },
-    {
-        "duration": "8.0",
-        "name": "blink_perf.dom/textarea-edit.html"
-    },
-    {
         "duration": "12.0",
         "name": "blink_perf.events/EventsDispatching.html"
     },
     {
         "duration": "8.0",
-        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedShadowTrees.html"
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV0ShadowTrees.html"
     },
     {
-        "duration": "18.0",
-        "name": "blink_perf.events/EventsDispatchingInShadowTrees.html"
+        "duration": "8.0",
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.events/EventsDispatchingInV0ShadowTrees.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html"
     },
     {
         "duration": "7.0",
         "name": "blink_perf.events/hit-test-lots-of-layers.html"
     },
     {
-        "duration": "17.0",
+        "duration": "7.0",
+        "name": "blink_perf.events/is-input-pending-all-events.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.events/is-input-pending-default-events.html"
+    },
+    {
+        "duration": "18.0",
         "name": "blink_perf.image_decoder/decode-gif.html"
     },
     {
-        "duration": "10.0",
+        "duration": "12.0",
         "name": "blink_perf.image_decoder/decode-jpeg.html"
     },
     {
-        "duration": "11.0",
+        "duration": "14.0",
         "name": "blink_perf.image_decoder/decode-lossless-webp.html"
     },
     {
-        "duration": "9.0",
+        "duration": "12.0",
         "name": "blink_perf.image_decoder/decode-lossy-webp.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
     },
     {
-        "duration": "10.0",
+        "duration": "11.0",
         "name": "blink_perf.image_decoder/decode-png-palette.html"
     },
     {
-        "duration": "12.0",
+        "duration": "14.0",
         "name": "blink_perf.image_decoder/decode-png.html"
     },
     {
-        "duration": "16.0",
+        "duration": "19.0",
         "name": "blink_perf.layout/ArabicLineLayout.html"
     },
     {
@@ -528,11 +668,11 @@
         "name": "blink_perf.layout/change-text-css-contain.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/chapter-reflow-once-random.html"
     },
     {
-        "duration": "12.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/chapter-reflow-once.html"
     },
     {
@@ -540,11 +680,11 @@
         "name": "blink_perf.layout/chapter-reflow-thrice.html"
     },
     {
-        "duration": "9.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/chapter-reflow-twice.html"
     },
     {
-        "duration": "10.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/chapter-reflow.html"
     },
     {
@@ -556,6 +696,18 @@
         "name": "blink_perf.layout/character_fallback_aat.html"
     },
     {
+        "duration": "6.0",
+        "name": "blink_perf.layout/contain-content-style-change.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-blocks.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-text.html"
+    },
+    {
         "duration": "8.0",
         "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
     },
@@ -584,23 +736,27 @@
         "name": "blink_perf.layout/flexbox-row-nowrap.html"
     },
     {
+        "duration": "8.0",
+        "name": "blink_perf.layout/flexbox-row-stretch-height-definite.html"
+    },
+    {
         "duration": "7.0",
         "name": "blink_perf.layout/flexbox-row-wrap.html"
     },
     {
-        "duration": "7.0",
+        "duration": "6.0",
         "name": "blink_perf.layout/flexbox-with-stretch-layout.html"
     },
     {
-        "duration": "7.0",
+        "duration": "5.0",
         "name": "blink_perf.layout/floats_100_100.html"
     },
     {
-        "duration": "7.0",
+        "duration": "5.0",
         "name": "blink_perf.layout/floats_100_100_nested.html"
     },
     {
-        "duration": "5.0",
+        "duration": "4.0",
         "name": "blink_perf.layout/floats_10_1000.html"
     },
     {
@@ -624,7 +780,7 @@
         "name": "blink_perf.layout/floats_50_100.html"
     },
     {
-        "duration": "4.0",
+        "duration": "3.0",
         "name": "blink_perf.layout/floats_50_100_nested.html"
     },
     {
@@ -632,27 +788,35 @@
         "name": "blink_perf.layout/hindi-line-layout.html"
     },
     {
+        "duration": "2.0",
+        "name": "blink_perf.layout/japanese-kokoro-insert.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.layout/large-grid.html"
+    },
+    {
         "duration": "7.0",
         "name": "blink_perf.layout/large-spanning-grid-item.html"
     },
     {
-        "duration": "7.0",
+        "duration": "6.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html"
     },
     {
-        "duration": "7.0",
+        "duration": "6.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html"
     },
     {
-        "duration": "7.0",
+        "duration": "6.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html"
     },
     {
-        "duration": "114.0",
+        "duration": "19.0",
         "name": "blink_perf.layout/latin-ebook-resize.html"
     },
     {
-        "duration": "18.0",
+        "duration": "4.0",
         "name": "blink_perf.layout/latin-ebook.html"
     },
     {
@@ -664,6 +828,14 @@
         "name": "blink_perf.layout/layers_overlap_3d.html"
     },
     {
+        "duration": "2.0",
+        "name": "blink_perf.layout/line-layout-fit-content-break-word.html"
+    },
+    {
+        "duration": "3.0",
+        "name": "blink_perf.layout/line-layout-fit-content.html"
+    },
+    {
         "duration": "5.0",
         "name": "blink_perf.layout/line-layout-line-height.html"
     },
@@ -688,11 +860,19 @@
         "name": "blink_perf.layout/long-line-nowrap-spans-collapse.html"
     },
     {
-        "duration": "4.0",
+        "duration": "3.0",
         "name": "blink_perf.layout/long-line-nowrap.html"
     },
     {
         "duration": "7.0",
+        "name": "blink_perf.layout/many-block-children-auto-inline-size.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.layout/many-block-children-fixed-inline-size.html"
+    },
+    {
+        "duration": "7.0",
         "name": "blink_perf.layout/multicol/deeply-nested-tables.html"
     },
     {
@@ -700,7 +880,7 @@
         "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html"
     },
     {
-        "duration": "12.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/multicol/lots-of-text-autofill.html"
     },
     {
@@ -732,7 +912,7 @@
         "name": "blink_perf.layout/nested-percent-height-tables.html"
     },
     {
-        "duration": "44.0",
+        "duration": "37.0",
         "name": "blink_perf.layout/subtree-detaching.html"
     },
     {
@@ -752,83 +932,95 @@
         "name": "blink_perf.layout/word-wrap-break-word.html"
     },
     {
-        "duration": "12.0",
+        "duration": "14.0",
         "name": "blink_perf.owp_storage/blob-perf-files.html"
     },
     {
-        "duration": "8.0",
+        "duration": "13.0",
         "name": "blink_perf.owp_storage/blob-perf-ipc.html"
     },
     {
-        "duration": "7.0",
+        "duration": "12.0",
         "name": "blink_perf.owp_storage/blob-perf-shm.html"
     },
     {
-        "duration": "8.0",
+        "duration": "14.0",
         "name": "blink_perf.owp_storage/blob-perf-tiny.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.owp_storage/idb-load-docs.html"
     },
     {
-        "duration": "12.0",
+        "duration": "14.0",
         "name": "blink_perf.paint/appending-text.html"
     },
     {
-        "duration": "12.0",
+        "duration": "16.0",
         "name": "blink_perf.paint/color-changes.html"
     },
     {
-        "duration": "10.0",
+        "duration": "12.0",
         "name": "blink_perf.paint/complex-content-slow-scroll.html"
     },
     {
-        "duration": "10.0",
+        "duration": "12.0",
+        "name": "blink_perf.paint/complex-iframe-filtered.html"
+    },
+    {
+        "duration": "26.0",
+        "name": "blink_perf.paint/contain-update-layer-tree.html"
+    },
+    {
+        "duration": "11.0",
         "name": "blink_perf.paint/containment-resize.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.paint/fixed-and-many-layers-scroll.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.paint/large-table-background-change-with-invisible-collapsed-borders.html"
     },
     {
-        "duration": "9.0",
+        "duration": "11.0",
         "name": "blink_perf.paint/large-table-background-change-with-visible-collapsed-borders.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.paint/large-table-background-change-with-zero-width-collapsed-borders.html"
     },
     {
-        "duration": "10.0",
+        "duration": "12.0",
         "name": "blink_perf.paint/large-table-collapsed-border-change-with-backgrounds.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.paint/large-table-collapsed-border-change-with-text.html"
     },
     {
-        "duration": "9.0",
+        "duration": "12.0",
         "name": "blink_perf.paint/large-table-collapsed-border-change.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.paint/large-table-repaint.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.paint/move-text-with-mask.html"
     },
     {
-        "duration": "10.0",
+        "duration": "12.0",
         "name": "blink_perf.paint/paint-offset-changes.html"
     },
     {
-        "duration": "11.0",
+        "duration": "16.0",
+        "name": "blink_perf.paint/select-all-words.html"
+    },
+    {
+        "duration": "17.0",
         "name": "blink_perf.paint/transform-changes.html"
     },
     {
@@ -836,19 +1028,19 @@
         "name": "blink_perf.parser/css-parser-yui.html"
     },
     {
-        "duration": "7.0",
+        "duration": "4.0",
         "name": "blink_perf.parser/html-parser-threaded.html"
     },
     {
-        "duration": "6.0",
+        "duration": "4.0",
         "name": "blink_perf.parser/html-parser.html"
     },
     {
-        "duration": "32.0",
+        "duration": "18.0",
         "name": "blink_perf.parser/html5-full-render.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.parser/iframe-append-remove.html"
     },
     {
@@ -872,7 +1064,7 @@
         "name": "blink_perf.parser/query-selector-all-class-deep.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/query-selector-all-class-first.html"
     },
     {
@@ -880,7 +1072,7 @@
         "name": "blink_perf.parser/query-selector-all-class-last.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.parser/query-selector-all-class.html"
     },
     {
@@ -888,15 +1080,15 @@
         "name": "blink_perf.parser/query-selector-all-deep.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/query-selector-all-first.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/query-selector-all-id-deep.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/query-selector-all-id-first.html"
     },
     {
@@ -932,15 +1124,15 @@
         "name": "blink_perf.parser/simple-url.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/textarea-parsing.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/tiny-innerHTML.html"
     },
     {
-        "duration": "8.0",
+        "duration": "9.0",
         "name": "blink_perf.parser/url-parser.html"
     },
     {
@@ -976,7 +1168,7 @@
         "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary.html"
     },
     {
-        "duration": "2.0",
+        "duration": "1.0",
         "name": "blink_perf.shadow_dom/imperative-api-detail-summary-large.html"
     },
     {
@@ -1032,7 +1224,7 @@
         "name": "blink_perf.shadow_dom/v0-content-reprojection.html"
     },
     {
-        "duration": "2.0",
+        "duration": "1.0",
         "name": "blink_perf.shadow_dom/v0-large-distribution-without-layout.html"
     },
     {
@@ -1048,7 +1240,7 @@
         "name": "blink_perf.shadow_dom/v0-small-distribution-with-layout.html"
     },
     {
-        "duration": "12.0",
+        "duration": "5.0",
         "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html"
     },
     {
@@ -1060,11 +1252,11 @@
         "name": "blink_perf.shadow_dom/v1-host-child-append.html"
     },
     {
-        "duration": "12.0",
+        "duration": "5.0",
         "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "blink_perf.shadow_dom/v1-large-deep-layout.html"
     },
     {
@@ -1124,7 +1316,7 @@
         "name": "blink_perf.svg/AzLizardBenjiPark.html"
     },
     {
-        "duration": "3.0",
+        "duration": "2.0",
         "name": "blink_perf.svg/Bamboo.html"
     },
     {
@@ -1168,7 +1360,7 @@
         "name": "blink_perf.svg/GearFlowers.html"
     },
     {
-        "duration": "2.0",
+        "duration": "1.0",
         "name": "blink_perf.svg/HarveyRayner.html"
     },
     {
@@ -1184,7 +1376,7 @@
         "name": "blink_perf.svg/Samurai.html"
     },
     {
-        "duration": "33.0",
+        "duration": "28.0",
         "name": "blink_perf.svg/SierpinskiCarpet.html"
     },
     {
@@ -1196,7 +1388,7 @@
         "name": "blink_perf.svg/SvgHitTesting.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.svg/SvgNestedUse.html"
     },
     {
@@ -1208,7 +1400,7 @@
         "name": "blink_perf.svg/WorldIso.html"
     },
     {
-        "duration": "3.0",
+        "duration": "2.0",
         "name": "blink_perf.svg/Worldcup.html"
     },
     {
@@ -1228,10 +1420,6 @@
         "name": "dromaeo/http://dromaeo.com?dom-traverse"
     },
     {
-        "duration": "11.0",
-        "name": "dummy_benchmark.histogram_benchmark_1/dummy_page.html"
-    },
-    {
         "duration": "4.0",
         "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html"
     },
@@ -1240,639 +1428,627 @@
         "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html"
     },
     {
-        "duration": "190.0",
+        "duration": "181.0",
         "name": "jetstream/http://browserbench.org/JetStream/"
     },
     {
-        "duration": "31.0",
+        "duration": "24.0",
         "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html"
     },
     {
-        "duration": "17.0",
+        "duration": "7.0",
         "name": "loading.desktop/24h_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "loading.desktop/24h_warm"
     },
     {
-        "duration": "24.0",
+        "duration": "11.0",
         "name": "loading.desktop/AirBnB_cold"
     },
     {
-        "duration": "34.0",
+        "duration": "20.0",
         "name": "loading.desktop/AirBnB_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "6.0",
         "name": "loading.desktop/Aljayyash_cold"
     },
     {
-        "duration": "18.0",
+        "duration": "8.0",
         "name": "loading.desktop/Aljayyash_warm"
     },
     {
-        "duration": "23.0",
+        "duration": "9.0",
         "name": "loading.desktop/AllRecipes_cold"
     },
     {
-        "duration": "33.0",
+        "duration": "15.0",
         "name": "loading.desktop/AllRecipes_warm"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "loading.desktop/ArsTechnica_cold"
     },
     {
-        "duration": "40.0",
+        "duration": "34.0",
         "name": "loading.desktop/ArsTechnica_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "6.0",
         "name": "loading.desktop/Baidu_cold"
     },
     {
-        "duration": "18.0",
+        "duration": "8.0",
         "name": "loading.desktop/Baidu_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "8.0",
         "name": "loading.desktop/Bhaskar_cold"
     },
     {
-        "duration": "26.0",
+        "duration": "11.0",
         "name": "loading.desktop/Bhaskar_warm"
     },
     {
-        "duration": "30.0",
+        "duration": "7.0",
         "name": "loading.desktop/Chosun_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "loading.desktop/Chosun_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "7.0",
         "name": "loading.desktop/Colorado.edu_cold"
     },
     {
-        "duration": "32.0",
+        "duration": "9.0",
         "name": "loading.desktop/Colorado.edu_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "loading.desktop/Danawa_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "loading.desktop/Danawa_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "7.0",
         "name": "loading.desktop/Daum_cold"
     },
     {
-        "duration": "20.0",
+        "duration": "8.0",
         "name": "loading.desktop/Daum_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "loading.desktop/Donga_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "loading.desktop/Donga_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "10.0",
         "name": "loading.desktop/Economist_cold"
     },
     {
-        "duration": "33.0",
+        "duration": "17.0",
         "name": "loading.desktop/Economist_warm"
     },
     {
-        "duration": "25.0",
+        "duration": "10.0",
         "name": "loading.desktop/Elmundo_cold"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "loading.desktop/FC2Blog_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "loading.desktop/FC2Blog_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "8.0",
         "name": "loading.desktop/FIFA_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "11.0",
         "name": "loading.desktop/FIFA_warm"
     },
     {
-        "duration": "28.0",
+        "duration": "15.0",
         "name": "loading.desktop/FarsNews_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "loading.desktop/FarsNews_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "loading.desktop/Flickr_cold"
     },
     {
-        "duration": "23.0",
+        "duration": "10.0",
         "name": "loading.desktop/Flickr_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "7.0",
         "name": "loading.desktop/FlipKart_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "8.0",
         "name": "loading.desktop/FlipKart_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "7.0",
         "name": "loading.desktop/Free.fr_cold"
     },
     {
-        "duration": "19.0",
+        "duration": "7.0",
         "name": "loading.desktop/Free.fr_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "6.0",
         "name": "loading.desktop/HTML5Rocks_cold"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "loading.desktop/HTML5Rocks_warm"
     },
     {
-        "duration": "28.0",
+        "duration": "6.0",
         "name": "loading.desktop/Haraj_cold"
     },
     {
-        "duration": "18.0",
+        "duration": "8.0",
         "name": "loading.desktop/Haraj_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "loading.desktop/HatenaBookmark_cold"
     },
     {
-        "duration": "23.0",
+        "duration": "9.0",
         "name": "loading.desktop/HatenaBookmark_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "loading.desktop/IGN_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "loading.desktop/IGN_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "7.0",
         "name": "loading.desktop/IMDB_cold"
     },
     {
-        "duration": "25.0",
+        "duration": "10.0",
         "name": "loading.desktop/IMDB_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "loading.desktop/IndiaTimes_cold"
     },
     {
-        "duration": "23.0",
+        "duration": "10.0",
         "name": "loading.desktop/IndiaTimes_warm"
     },
     {
-        "duration": "29.0",
+        "duration": "7.0",
         "name": "loading.desktop/Kakaku_cold"
     },
     {
-        "duration": "23.0",
+        "duration": "10.0",
         "name": "loading.desktop/Kakaku_warm"
     },
     {
-        "duration": "27.0",
+        "duration": "10.0",
         "name": "loading.desktop/Kenh14_cold"
     },
     {
-        "duration": "37.0",
+        "duration": "16.0",
         "name": "loading.desktop/Kenh14_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "loading.desktop/Mercadolivre_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "loading.desktop/Mercadolivre_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "7.0",
         "name": "loading.desktop/Naver_cold"
     },
     {
-        "duration": "19.0",
+        "duration": "8.0",
         "name": "loading.desktop/Naver_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "7.0",
         "name": "loading.desktop/Orange_cold"
     },
     {
-        "duration": "19.0",
+        "duration": "8.0",
         "name": "loading.desktop/Orange_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "loading.desktop/Pantip_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "loading.desktop/Pantip_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "7.0",
         "name": "loading.desktop/PremierLeague_cold"
     },
     {
-        "duration": "23.0",
+        "duration": "10.0",
         "name": "loading.desktop/PremierLeague_warm"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "loading.desktop/QQ_cold"
     },
     {
-        "duration": "26.0",
+        "duration": "12.0",
         "name": "loading.desktop/QQ_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "loading.desktop/REI_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "loading.desktop/REI_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "16.0",
         "name": "loading.desktop/Ruten_cold"
     },
     {
-        "duration": "20.0",
+        "duration": "8.0",
         "name": "loading.desktop/Ruten_warm"
     },
     {
-        "duration": "20.0",
+        "duration": "8.0",
         "name": "loading.desktop/Sina_cold"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "loading.desktop/Sina_warm"
     },
     {
-        "duration": "20.0",
+        "duration": "8.0",
         "name": "loading.desktop/Taobao_cold"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "loading.desktop/Taobao_warm"
     },
     {
-        "duration": "19.0",
-        "name": "loading.desktop/TheOnion_cold"
-    },
-    {
-        "duration": "28.0",
-        "name": "loading.desktop/TheOnion_warm"
-    },
-    {
-        "duration": "18.0",
+        "duration": "8.0",
         "name": "loading.desktop/TheVerge_cold"
     },
     {
-        "duration": "25.0",
+        "duration": "10.0",
         "name": "loading.desktop/TheVerge_warm"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "loading.desktop/TicketMaster_cold"
     },
     {
-        "duration": "27.0",
+        "duration": "12.0",
         "name": "loading.desktop/TicketMaster_warm"
     },
     {
-        "duration": "24.0",
+        "duration": "9.0",
         "name": "loading.desktop/Vietnamnet_cold"
     },
     {
-        "duration": "34.0",
+        "duration": "16.0",
         "name": "loading.desktop/Vietnamnet_warm"
     },
     {
-        "duration": "23.0",
+        "duration": "8.0",
         "name": "loading.desktop/Vnexpress_cold"
     },
     {
-        "duration": "31.0",
+        "duration": "12.0",
         "name": "loading.desktop/Vnexpress_warm"
     },
     {
-        "duration": "23.0",
-        "name": "loading.desktop/Walgreens_cold"
-    },
-    {
-        "duration": "33.0",
-        "name": "loading.desktop/Walgreens_warm"
-    },
-    {
-        "duration": "17.0",
+        "duration": "7.0",
         "name": "loading.desktop/Yandex_cold"
     },
     {
-        "duration": "20.0",
+        "duration": "7.0",
         "name": "loading.desktop/Yandex_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "loading.desktop/amazon.co.jp_cold"
     },
     {
-        "duration": "30.0",
+        "duration": "14.0",
         "name": "loading.desktop/amazon.co.jp_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "7.0",
         "name": "loading.desktop/ja.wikipedia_cold"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "loading.desktop/ja.wikipedia_warm"
     },
     {
-        "duration": "21.0",
+        "duration": "9.0",
         "name": "loading.desktop/money.cnn_cold"
     },
     {
-        "duration": "30.0",
+        "duration": "15.0",
         "name": "loading.desktop/money.cnn_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "6.0",
         "name": "loading.desktop/ru.wikipedia_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "loading.desktop/ru.wikipedia_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "19.0",
         "name": "loading.desktop/uol.com.br_cold"
     },
     {
-        "duration": "31.0",
+        "duration": "14.0",
         "name": "loading.desktop/uol.com.br_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "7.0",
         "name": "loading.desktop/yahoo.co.jp_cold"
     },
     {
-        "duration": "23.0",
+        "duration": "9.0",
         "name": "loading.desktop/yahoo.co.jp_warm"
     },
     {
-        "duration": "14.0",
+        "duration": "8.0",
         "name": "media.desktop/mse.html?media=aac_audio.mp4"
     },
     {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "media.desktop/mse.html?media=aac_audio.mp4,h264_video.mp4"
     },
     {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "media.desktop/mse.html?media=aac_audio.mp4,h264_video.mp4&waitForPageLoaded=true"
     },
     {
-        "duration": "13.0",
+        "duration": "7.0",
         "name": "media.desktop/mse.html?media=h264_video.mp4"
     },
     {
-        "duration": "22.0",
+        "duration": "7.0",
+        "name": "media.desktop/mse.html?media=tulip0.av1.mp4"
+    },
+    {
+        "duration": "15.0",
         "name": "media.desktop/video.html?src=crowd.ogg&type=audio"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "media.desktop/video.html?src=crowd1080.mp4"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "media.desktop/video.html?src=crowd1080.webm"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "media.desktop/video.html?src=crowd1080_vp9.webm"
     },
     {
-        "duration": "11.0",
+        "duration": "6.0",
         "name": "media.desktop/video.html?src=crowd1080_vp9.webm&seek"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "media.desktop/video.html?src=crowd720_vp9.webm"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "media.desktop/video.html?src=garden2_10s.mp4"
     },
     {
-        "duration": "13.0",
+        "duration": "6.0",
         "name": "media.desktop/video.html?src=garden2_10s.mp4&seek"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "media.desktop/video.html?src=garden2_10s.webm"
     },
     {
-        "duration": "11.0",
+        "duration": "6.0",
         "name": "media.desktop/video.html?src=garden2_10s.webm&seek"
     },
     {
-        "duration": "12.0",
+        "duration": "6.0",
         "name": "media.desktop/video.html?src=smpte_3840x2160_60fps_vp9.webm&seek"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
+        "name": "media.desktop/video.html?src=tulip0.av1.mp4"
+    },
+    {
+        "duration": "6.0",
+        "name": "media.desktop/video.html?src=tulip0.av1.mp4&seek"
+    },
+    {
+        "duration": "20.0",
         "name": "media.desktop/video.html?src=tulip2.m4a&type=audio"
     },
     {
-        "duration": "27.0",
+        "duration": "20.0",
         "name": "media.desktop/video.html?src=tulip2.mp3&type=audio"
     },
     {
-        "duration": "10.0",
+        "duration": "6.0",
         "name": "media.desktop/video.html?src=tulip2.mp3&type=audio&seek"
     },
     {
-        "duration": "28.0",
+        "duration": "20.0",
         "name": "media.desktop/video.html?src=tulip2.mp4"
     },
     {
-        "duration": "29.0",
+        "duration": "20.0",
         "name": "media.desktop/video.html?src=tulip2.mp4&busyjs"
     },
     {
-        "duration": "11.0",
+        "duration": "7.0",
         "name": "media.desktop/video.html?src=tulip2.mp4&seek"
     },
     {
-        "duration": "27.0",
+        "duration": "22.0",
         "name": "media.desktop/video.html?src=tulip2.ogg&type=audio"
     },
     {
-        "duration": "10.0",
+        "duration": "6.0",
         "name": "media.desktop/video.html?src=tulip2.ogg&type=audio&seek"
     },
     {
-        "duration": "29.0",
+        "duration": "22.0",
         "name": "media.desktop/video.html?src=tulip2.vp9.webm"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "media.desktop/video.html?src=tulip2.vp9.webm&background"
     },
     {
-        "duration": "12.0",
+        "duration": "7.0",
         "name": "media.desktop/video.html?src=tulip2.vp9.webm&seek"
     },
     {
-        "duration": "27.0",
+        "duration": "23.0",
+        "name": "media.desktop/video.html?src=tulip2.vp9.webm_WiFi"
+    },
+    {
+        "duration": "20.0",
         "name": "media.desktop/video.html?src=tulip2.wav&type=audio"
     },
     {
-        "duration": "10.0",
+        "duration": "7.0",
         "name": "media.desktop/video.html?src=tulip2.wav&type=audio&seek"
     },
     {
-        "duration": "17.0",
+        "duration": "11.0",
         "name": "memory.desktop/TrivialAnimationPageSharedPageState"
     },
     {
-        "duration": "17.0",
+        "duration": "11.0",
         "name": "memory.desktop/TrivialBlinkingCursorPageSharedPageState"
     },
     {
-        "duration": "18.0",
+        "duration": "11.0",
         "name": "memory.desktop/TrivialBlurAnimationPageSharedPageState"
     },
     {
-        "duration": "17.0",
+        "duration": "11.0",
         "name": "memory.desktop/TrivialCanvasPageSharedPageState"
     },
     {
-        "duration": "18.0",
+        "duration": "11.0",
         "name": "memory.desktop/TrivialFullscreenVideoPageSharedPageState"
     },
     {
-        "duration": "17.0",
+        "duration": "11.0",
         "name": "memory.desktop/TrivialGifPageSharedPageState"
     },
     {
-        "duration": "18.0",
+        "duration": "11.0",
         "name": "memory.desktop/TrivialScrollingPageSharedPageState"
     },
     {
-        "duration": "18.0",
+        "duration": "11.0",
         "name": "memory.desktop/TrivialWebGLPageSharedPageState"
     },
     {
-        "duration": "45.0",
+        "duration": "39.0",
         "name": "memory.desktop/WebWorker"
     },
     {
-        "duration": "166.0",
-        "name": "memory.long_running_idle_gmail_background_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "161.0",
-        "name": "memory.long_running_idle_gmail_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "44.0",
+        "duration": "41.0",
         "name": "octane/http://chromium.github.io/octane/index.html?auto=1"
     },
     {
-        "duration": "61.0",
-        "name": "oortonline_tbmv2/http://oortonline.gl/#run"
-    },
-    {
-        "duration": "40.0",
+        "duration": "32.0",
         "name": "power.desktop/TrivialAnimationPageSharedPageState"
     },
     {
-        "duration": "40.0",
+        "duration": "32.0",
         "name": "power.desktop/TrivialBlinkingCursorPageSharedPageState"
     },
     {
-        "duration": "40.0",
+        "duration": "32.0",
         "name": "power.desktop/TrivialBlurAnimationPageSharedPageState"
     },
     {
-        "duration": "40.0",
+        "duration": "32.0",
         "name": "power.desktop/TrivialCanvasPageSharedPageState"
     },
     {
-        "duration": "41.0",
+        "duration": "32.0",
         "name": "power.desktop/TrivialFullscreenVideoPageSharedPageState"
     },
     {
-        "duration": "42.0",
+        "duration": "32.0",
         "name": "power.desktop/TrivialGifPageSharedPageState"
     },
     {
-        "duration": "42.0",
+        "duration": "34.0",
         "name": "power.desktop/TrivialScrollingPageSharedPageState"
     },
     {
-        "duration": "40.0",
+        "duration": "32.0",
         "name": "power.desktop/TrivialWebGLPageSharedPageState"
     },
     {
-        "duration": "133.0",
+        "duration": "38.0",
         "name": "power.desktop/abcnews"
     },
     {
-        "duration": "46.0",
+        "duration": "32.0",
         "name": "power.desktop/indiatimes"
     },
     {
-        "duration": "47.0",
+        "duration": "32.0",
         "name": "power.desktop/instagram"
     },
     {
-        "duration": "46.0",
+        "duration": "32.0",
         "name": "power.desktop/microsoft"
     },
     {
-        "duration": "48.0",
+        "duration": "33.0",
         "name": "power.desktop/sina"
     },
     {
-        "duration": "46.0",
+        "duration": "32.0",
         "name": "power.desktop/slideshare"
     },
     {
-        "duration": "53.0",
+        "duration": "34.0",
         "name": "power.desktop/uol"
     },
     {
@@ -1900,7 +2076,7 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/ebay.html"
     },
     {
-        "duration": "10.0",
+        "duration": "11.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html"
     },
     {
@@ -1936,11 +2112,11 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html"
     },
     {
-        "duration": "9.0",
+        "duration": "7.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html"
     },
     {
-        "duration": "21.0",
+        "duration": "9.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html"
     },
     {
@@ -1948,7 +2124,7 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html"
     },
     {
-        "duration": "10.0",
+        "duration": "14.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html"
     },
     {
@@ -1964,7 +2140,7 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html"
     },
     {
-        "duration": "95.0",
+        "duration": "94.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html"
     },
     {
@@ -1972,2247 +2148,2639 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html"
     },
     {
-        "duration": "17.0",
+        "duration": "12.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html"
     },
     {
-        "duration": "45.0",
+        "duration": "17.0",
         "name": "rendering.desktop/accu_weather_2018"
     },
     {
-        "duration": "49.0",
+        "duration": "18.0",
         "name": "rendering.desktop/accu_weather_pinch_2018"
     },
     {
-        "duration": "36.0",
+        "duration": "11.0",
         "name": "rendering.desktop/amazon_2018"
     },
     {
-        "duration": "32.0",
+        "duration": "9.0",
         "name": "rendering.desktop/amazon_pinch_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.desktop/analog_clock_svg"
     },
     {
-        "duration": "23.0",
+        "duration": "11.0",
         "name": "rendering.desktop/animometer_webgl"
     },
     {
-        "duration": "26.0",
+        "duration": "11.0",
+        "name": "rendering.desktop/animometer_webgl_attrib_arrays"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/animometer_webgl_multi_draw"
+    },
+    {
+        "duration": "10.0",
         "name": "rendering.desktop/aquarium"
     },
     {
-        "duration": "37.0",
+        "duration": "14.0",
         "name": "rendering.desktop/aquarium_20k"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "rendering.desktop/background_color_animation"
     },
     {
-        "duration": "33.0",
+        "duration": "12.0",
         "name": "rendering.desktop/background_color_animation_with_gradient"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "rendering.desktop/balls_css_key_frame_animations"
     },
     {
-        "duration": "38.0",
+        "duration": "13.0",
         "name": "rendering.desktop/balls_css_key_frame_animations_composited_transform"
     },
     {
-        "duration": "33.0",
+        "duration": "13.0",
         "name": "rendering.desktop/balls_css_transition_2_properties"
     },
     {
-        "duration": "34.0",
+        "duration": "13.0",
         "name": "rendering.desktop/balls_css_transition_40_properties"
     },
     {
-        "duration": "32.0",
+        "duration": "13.0",
         "name": "rendering.desktop/balls_css_transition_all_properties"
     },
     {
-        "duration": "28.0",
+        "duration": "12.0",
         "name": "rendering.desktop/balls_javascript_canvas"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "rendering.desktop/balls_javascript_css"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rendering.desktop/balls_svg_animations"
     },
     {
-        "duration": "28.0",
+        "duration": "10.0",
         "name": "rendering.desktop/blob"
     },
     {
-        "duration": "37.0",
+        "duration": "12.0",
         "name": "rendering.desktop/blogspot_2018"
     },
     {
-        "duration": "30.0",
+        "duration": "9.0",
         "name": "rendering.desktop/blogspot_pinch_2018"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.desktop/booking.com_2018"
-    },
-    {
-        "duration": "30.0",
-        "name": "rendering.desktop/booking_pinch_2018"
-    },
-    {
-        "duration": "16.0",
-        "name": "rendering.desktop/bouncing_balls_15"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.desktop/bouncing_balls_shadow"
-    },
-    {
-        "duration": "18.0",
-        "name": "rendering.desktop/bouncing_clipped_rectangles"
-    },
-    {
-        "duration": "18.0",
-        "name": "rendering.desktop/bouncing_gradient_circles"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.desktop/bouncing_png_images"
-    },
-    {
-        "duration": "24.0",
-        "name": "rendering.desktop/bouncing_svg_images"
-    },
-    {
-        "duration": "95.0",
-        "name": "rendering.desktop/camera_to_webgl"
-    },
-    {
-        "duration": "18.0",
-        "name": "rendering.desktop/canvas_05000_pixels_per_second"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.desktop/canvas_10000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
-        "name": "rendering.desktop/canvas_15000_pixels_per_second"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.desktop/canvas_20000_pixels_per_second"
-    },
-    {
-        "duration": "12.0",
-        "name": "rendering.desktop/canvas_30000_pixels_per_second"
-    },
-    {
-        "duration": "11.0",
-        "name": "rendering.desktop/canvas_40000_pixels_per_second"
-    },
-    {
-        "duration": "10.0",
-        "name": "rendering.desktop/canvas_50000_pixels_per_second"
-    },
-    {
-        "duration": "10.0",
-        "name": "rendering.desktop/canvas_60000_pixels_per_second"
-    },
-    {
-        "duration": "10.0",
-        "name": "rendering.desktop/canvas_75000_pixels_per_second"
-    },
-    {
-        "duration": "10.0",
-        "name": "rendering.desktop/canvas_90000_pixels_per_second"
-    },
-    {
-        "duration": "18.0",
-        "name": "rendering.desktop/canvas_animation_no_clear"
-    },
-    {
-        "duration": "17.0",
-        "name": "rendering.desktop/canvas_arcs"
-    },
-    {
-        "duration": "16.0",
-        "name": "rendering.desktop/canvas_font_cycler"
-    },
-    {
-        "duration": "16.0",
-        "name": "rendering.desktop/canvas_lines"
-    },
-    {
-        "duration": "15.0",
-        "name": "rendering.desktop/canvas_to_blob"
-    },
-    {
-        "duration": "10.0",
-        "name": "rendering.desktop/cats_unscaled"
+        "duration": "7.0",
+        "name": "rendering.desktop/blur_rotating_background"
     },
     {
         "duration": "8.0",
+        "name": "rendering.desktop/booking.com_2018"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.desktop/booking_pinch_2018"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/bouncing_balls_15"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/bouncing_balls_shadow"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/bouncing_clipped_rectangles"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/bouncing_gradient_circles"
+    },
+    {
+        "duration": "7.0",
+        "name": "rendering.desktop/bouncing_png_images"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/bouncing_svg_images"
+    },
+    {
+        "duration": "16.0",
+        "name": "rendering.desktop/camera_to_webgl"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.desktop/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "6.0",
+        "name": "rendering.desktop/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "6.0",
+        "name": "rendering.desktop/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "6.0",
+        "name": "rendering.desktop/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "7.0",
+        "name": "rendering.desktop/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "6.0",
+        "name": "rendering.desktop/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/canvas_animation_no_clear"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/canvas_arcs"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/canvas_font_cycler"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/canvas_lines"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/canvas_to_blob"
+    },
+    {
+        "duration": "7.0",
+        "name": "rendering.desktop/cats_unscaled"
+    },
+    {
+        "duration": "6.0",
         "name": "rendering.desktop/cats_viewport_width"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.desktop/cc_poster_circle"
     },
     {
-        "duration": "22.0",
-        "name": "rendering.desktop/cc_scroll_200_layer_grid"
-    },
-    {
-        "duration": "17.0",
+        "duration": "10.0",
         "name": "rendering.desktop/cc_scroll_text_only"
     },
     {
-        "duration": "25.0",
+        "duration": "10.0",
         "name": "rendering.desktop/chip_tune"
     },
     {
-        "duration": "36.0",
+        "duration": "10.0",
         "name": "rendering.desktop/cnn_2018"
     },
     {
-        "duration": "35.0",
+        "duration": "16.0",
         "name": "rendering.desktop/cnn_pinch_2018"
     },
     {
-        "duration": "29.0",
+        "duration": "15.0",
         "name": "rendering.desktop/compositor_heavy_animation"
     },
     {
-        "duration": "28.0",
+        "duration": "7.0",
         "name": "rendering.desktop/crafty_mind"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_animations_many_keyframes"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_animations_simultaneous_inline_style"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_animations_simultaneous_new_element"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_animations_simultaneous_style_element"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_animations_simultaneous_updating_class"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_animations_staggered_infinite_iterations"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_animations_staggered_inline_style"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_animations_staggered_new_element"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_animations_staggered_style_element"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_animations_staggered_updating_class"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_animations_triggered_inline_style"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_animations_triggered_new_element"
     },
     {
-        "duration": "25.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_animations_triggered_style_element"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_animations_triggered_updating_class"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "rendering.desktop/css_opacity_plus_n_layers_99"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_transitions_inline_style"
     },
     {
-        "duration": "24.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_transitions_new_element"
     },
     {
-        "duration": "24.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_transitions_staggered_inline_style"
     },
     {
-        "duration": "27.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_transitions_staggered_new_element"
     },
     {
-        "duration": "24.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_transitions_staggered_style_element"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_transitions_staggered_updating_class"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_transitions_style_element"
     },
     {
-        "duration": "25.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_transitions_triggered_inline_style"
     },
     {
-        "duration": "25.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_transitions_triggered_new_element"
     },
     {
-        "duration": "25.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_transitions_triggered_style_element"
     },
     {
-        "duration": "25.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_transitions_triggered_updating_class"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_transitions_updating_class"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_value_type_color"
     },
     {
-        "duration": "37.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_value_type_filter"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_value_type_length"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_value_type_length_complex"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_value_type_length_simple"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_value_type_path"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_value_type_shadow"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_value_type_transform_complex"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "rendering.desktop/css_value_type_transform_simple"
     },
     {
-        "duration": "25.0",
+        "duration": "11.0",
         "name": "rendering.desktop/dynamic_cube_map"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/earth"
     },
     {
-        "duration": "26.0",
+        "duration": "9.0",
         "name": "rendering.desktop/ebay_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "10.0",
         "name": "rendering.desktop/ebay_pinch_2018"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "rendering.desktop/effect_games"
     },
     {
-        "duration": "36.0",
+        "duration": "16.0",
         "name": "rendering.desktop/espn_2018"
     },
     {
-        "duration": "36.0",
+        "duration": "12.0",
         "name": "rendering.desktop/espn_pinch_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "rendering.desktop/extra_large_texture_uploads"
     },
     {
-        "duration": "26.0",
+        "duration": "8.0",
         "name": "rendering.desktop/facebook_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "9.0",
         "name": "rendering.desktop/facebook_pinch_2018"
     },
     {
-        "duration": "18.0",
+        "duration": "8.0",
         "name": "rendering.desktop/fill_shapes"
     },
     {
-        "duration": "29.0",
+        "duration": "13.0",
         "name": "rendering.desktop/filter_terrain_svg"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "rendering.desktop/geo_apis"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "rendering.desktop/gmail_2018"
     },
     {
-        "duration": "40.0",
+        "duration": "21.0",
         "name": "rendering.desktop/gmail_move_2018"
     },
     {
-        "duration": "39.0",
+        "duration": "10.0",
         "name": "rendering.desktop/gmail_pinch_2018"
     },
     {
-        "duration": "19.0",
+        "duration": "7.0",
         "name": "rendering.desktop/google_calendar_2018"
     },
     {
-        "duration": "31.0",
+        "duration": "13.0",
         "name": "rendering.desktop/google_calendar_pinch_2018"
     },
     {
-        "duration": "36.0",
+        "duration": "17.0",
         "name": "rendering.desktop/google_docs_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "8.0",
         "name": "rendering.desktop/google_image_pinch_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "8.0",
         "name": "rendering.desktop/google_image_search_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "9.0",
         "name": "rendering.desktop/google_plus_2018"
     },
     {
-        "duration": "24.0",
+        "duration": "8.0",
         "name": "rendering.desktop/google_search_pinch_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "7.0",
         "name": "rendering.desktop/google_web_search_2018"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "rendering.desktop/guimark_vector_chart"
     },
     {
-        "duration": "21.0",
+        "duration": "11.0",
         "name": "rendering.desktop/hakim"
     },
     {
-        "duration": "43.0",
+        "duration": "23.0",
         "name": "rendering.desktop/ie_chalkboard"
     },
     {
-        "duration": "31.0",
+        "duration": "15.0",
         "name": "rendering.desktop/ie_pirate_mark"
     },
     {
-        "duration": "24.0",
+        "duration": "17.0",
         "name": "rendering.desktop/infinite_scroll_element_n_layers_99"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
+        "name": "rendering.desktop/infinite_scroll_root_fixed_n_layers_99"
+    },
+    {
+        "duration": "14.0",
         "name": "rendering.desktop/infinite_scroll_root_n_layers_99"
     },
     {
-        "duration": "26.0",
+        "duration": "8.0",
         "name": "rendering.desktop/jarro_doverson"
     },
     {
-        "duration": "32.0",
+        "duration": "16.0",
         "name": "rendering.desktop/js_full_screen_invalidation"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "rendering.desktop/js_opacity_plus_n_layers_99"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "rendering.desktop/js_paint_plus_n_layers_99"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "rendering.desktop/js_poster_circle"
     },
     {
-        "duration": "22.0",
-        "name": "rendering.desktop/js_scroll_200_layer_grid"
-    },
-    {
-        "duration": "22.0",
+        "duration": "14.0",
         "name": "rendering.desktop/js_scroll_text_only"
     },
     {
-        "duration": "25.0",
+        "duration": "8.0",
         "name": "rendering.desktop/kevs_3d"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "rendering.desktop/keyframed_animations"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "rendering.desktop/large_texture_uploads"
     },
     {
-        "duration": "28.0",
+        "duration": "9.0",
         "name": "rendering.desktop/linkedin_2018"
     },
     {
-        "duration": "36.0",
+        "duration": "11.0",
         "name": "rendering.desktop/linkedin_pinch_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "7.0",
         "name": "rendering.desktop/man_in_blue"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/many_images"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/many_planets_deep"
     },
     {
-        "duration": "24.0",
+        "duration": "12.0",
         "name": "rendering.desktop/maps_move_2018"
     },
     {
-        "duration": "45.0",
+        "duration": "29.0",
         "name": "rendering.desktop/maps_perf_test"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "rendering.desktop/medium_texture_uploads"
     },
     {
-        "duration": "24.0",
+        "duration": "8.0",
         "name": "rendering.desktop/megi_dish"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "rendering.desktop/microsoft_asteroid_belt"
     },
     {
-        "duration": "24.0",
+        "duration": "8.0",
         "name": "rendering.desktop/microsoft_fireflies"
     },
     {
-        "duration": "21.0",
+        "duration": "9.0",
         "name": "rendering.desktop/microsoft_fish_ie_tank"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
+        "name": "rendering.desktop/microsoft_performance"
+    },
+    {
+        "duration": "8.0",
         "name": "rendering.desktop/microsoft_snow"
     },
     {
-        "duration": "21.0",
+        "duration": "7.0",
         "name": "rendering.desktop/microsoft_speed_reading"
     },
     {
-        "duration": "22.0",
+        "duration": "8.0",
         "name": "rendering.desktop/microsoft_tweet_map"
     },
     {
-        "duration": "25.0",
+        "duration": "8.0",
         "name": "rendering.desktop/microsoft_video_city"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "rendering.desktop/microsoft_worker_fountains"
     },
     {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "rendering.desktop/mix_10k"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "rendering.desktop/mix_blend_mode_animation_propagating_isolation"
     },
     {
-        "duration": "34.0",
+        "duration": "12.0",
         "name": "rendering.desktop/mix_blend_mode_animation_screen"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "rendering.desktop/motion_mark_canvas_fill_shapes"
     },
     {
-        "duration": "24.0",
+        "duration": "12.0",
         "name": "rendering.desktop/motion_mark_canvas_stroke_shapes"
     },
     {
-        "duration": "31.0",
-        "name": "rendering.desktop/motion_mark_focus"
-    },
-    {
-        "duration": "39.0",
+        "duration": "16.0",
         "name": "rendering.desktop/new_tilings"
     },
     {
-        "duration": "23.0",
+        "duration": "9.0",
         "name": "rendering.desktop/nvidia_vertex_buffer_object"
     },
     {
-        "duration": "32.0",
+        "duration": "13.0",
         "name": "rendering.desktop/overlay_background_color_css_transitions_page"
     },
     {
-        "duration": "21.0",
+        "duration": "9.0",
         "name": "rendering.desktop/particles"
     },
     {
-        "duration": "30.0",
+        "duration": "8.0",
         "name": "rendering.desktop/pinterest_2018"
     },
     {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "rendering.desktop/put_get_image_data"
     },
     {
-        "duration": "18.0",
+        "duration": "9.0",
         "name": "rendering.desktop/raf"
     },
     {
-        "duration": "18.0",
+        "duration": "9.0",
         "name": "rendering.desktop/raf_animation"
     },
     {
-        "duration": "18.0",
+        "duration": "9.0",
         "name": "rendering.desktop/raf_canvas"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/raf_touch_animation"
     },
     {
-        "duration": "17.0",
+        "duration": "10.0",
+        "name": "rendering.desktop/repaint_amazon_2018"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/repaint_cnn_2018"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/repaint_facebook_2018"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/repaint_google_search_2018"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/repaint_instagram_2018"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/repaint_reddit_2018"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/repaint_theverge_2018"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/repaint_twitter_2018"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/repaint_wikipedia_2018"
+    },
+    {
+        "duration": "8.0",
+        "name": "rendering.desktop/repaint_yahoo_homepage_2018"
+    },
+    {
+        "duration": "8.0",
         "name": "rendering.desktop/runway"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/san_angeles"
     },
     {
-        "duration": "10.0",
+        "duration": "6.0",
         "name": "rendering.desktop/second_batch_js_heavy"
     },
     {
-        "duration": "10.0",
+        "duration": "7.0",
         "name": "rendering.desktop/second_batch_js_light"
     },
     {
-        "duration": "10.0",
+        "duration": "7.0",
         "name": "rendering.desktop/second_batch_js_medium"
     },
     {
-        "duration": "17.0",
+        "duration": "9.0",
         "name": "rendering.desktop/simple_text_page"
     },
     {
-        "duration": "7.0",
+        "duration": "11.0",
         "name": "rendering.desktop/simple_touch_drag"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "rendering.desktop/small_texture_uploads"
     },
     {
-        "duration": "21.0",
+        "duration": "11.0",
         "name": "rendering.desktop/smash_cat"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "rendering.desktop/spielzeugz"
     },
     {
-        "duration": "16.0",
+        "duration": "8.0",
         "name": "rendering.desktop/stroke_shapes"
     },
     {
-        "duration": "7.0",
+        "duration": "11.0",
         "name": "rendering.desktop/sync_scroll_offset"
     },
     {
-        "duration": "34.0",
+        "duration": "18.0",
         "name": "rendering.desktop/techcrunch_2018"
     },
     {
-        "duration": "17.0",
+        "duration": "9.0",
         "name": "rendering.desktop/text_05000_pixels_per_second"
     },
     {
-        "duration": "16.0",
+        "duration": "8.0",
         "name": "rendering.desktop/text_10000_pixels_per_second"
     },
     {
-        "duration": "14.0",
-        "name": "rendering.desktop/text_15000_pixels_per_second"
-    },
-    {
-        "duration": "12.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_20000_pixels_per_second"
     },
     {
-        "duration": "11.0",
-        "name": "rendering.desktop/text_30000_pixels_per_second"
-    },
-    {
-        "duration": "10.0",
+        "duration": "8.0",
         "name": "rendering.desktop/text_40000_pixels_per_second"
     },
     {
-        "duration": "13.0",
-        "name": "rendering.desktop/text_50000_pixels_per_second"
-    },
-    {
-        "duration": "9.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_60000_pixels_per_second"
     },
     {
-        "duration": "9.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_75000_pixels_per_second"
     },
     {
-        "duration": "9.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_90000_pixels_per_second"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/text_constant_full_page_raster_05000_pixels_per_second"
     },
     {
-        "duration": "18.0",
+        "duration": "9.0",
         "name": "rendering.desktop/text_constant_full_page_raster_10000_pixels_per_second"
     },
     {
-        "duration": "15.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_15000_pixels_per_second"
-    },
-    {
-        "duration": "13.0",
+        "duration": "8.0",
         "name": "rendering.desktop/text_constant_full_page_raster_20000_pixels_per_second"
     },
     {
-        "duration": "12.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_30000_pixels_per_second"
-    },
-    {
-        "duration": "11.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_constant_full_page_raster_40000_pixels_per_second"
     },
     {
-        "duration": "10.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_50000_pixels_per_second"
-    },
-    {
-        "duration": "10.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_constant_full_page_raster_60000_pixels_per_second"
     },
     {
-        "duration": "10.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_constant_full_page_raster_75000_pixels_per_second"
     },
     {
-        "duration": "10.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_constant_full_page_raster_90000_pixels_per_second"
     },
     {
-        "duration": "17.0",
+        "duration": "9.0",
         "name": "rendering.desktop/text_hover_05000_pixels_per_second"
     },
     {
-        "duration": "16.0",
+        "duration": "9.0",
         "name": "rendering.desktop/text_hover_10000_pixels_per_second"
     },
     {
-        "duration": "14.0",
-        "name": "rendering.desktop/text_hover_15000_pixels_per_second"
-    },
-    {
-        "duration": "12.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_hover_20000_pixels_per_second"
     },
     {
-        "duration": "11.0",
-        "name": "rendering.desktop/text_hover_30000_pixels_per_second"
-    },
-    {
-        "duration": "10.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_hover_40000_pixels_per_second"
     },
     {
-        "duration": "10.0",
-        "name": "rendering.desktop/text_hover_50000_pixels_per_second"
-    },
-    {
-        "duration": "9.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_hover_60000_pixels_per_second"
     },
     {
-        "duration": "9.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_hover_75000_pixels_per_second"
     },
     {
-        "duration": "9.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_hover_90000_pixels_per_second"
     },
     {
-        "duration": "17.0",
+        "duration": "9.0",
         "name": "rendering.desktop/touch_handler_scrolling"
     },
     {
-        "duration": "24.0",
+        "duration": "12.0",
         "name": "rendering.desktop/transform_transitions"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "rendering.desktop/transform_transitions_js_block"
     },
     {
-        "duration": "26.0",
+        "duration": "8.0",
         "name": "rendering.desktop/twitch_2018"
     },
     {
-        "duration": "36.0",
+        "duration": "16.0",
         "name": "rendering.desktop/twitch_pinch_2018"
     },
     {
-        "duration": "33.0",
+        "duration": "11.0",
         "name": "rendering.desktop/twitter_2018"
     },
     {
-        "duration": "29.0",
+        "duration": "10.0",
         "name": "rendering.desktop/twitter_pinch_2018"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "rendering.desktop/web_animation_value_type_color"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "rendering.desktop/web_animation_value_type_length_3d"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "rendering.desktop/web_animation_value_type_length_complex"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "rendering.desktop/web_animation_value_type_length_simple"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "rendering.desktop/web_animation_value_type_path"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "rendering.desktop/web_animation_value_type_shadow"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "rendering.desktop/web_animation_value_type_transform_complex"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "rendering.desktop/web_animation_value_type_transform_simple"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animations_many_keyframes"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "rendering.desktop/web_animations_set_current_time"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "rendering.desktop/web_animations_simultaneous"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animations_staggered_chaining"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "rendering.desktop/web_animations_staggered_infinite_iterations"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animations_staggered_triggering_page"
     },
     {
-        "duration": "32.0",
+        "duration": "11.0",
         "name": "rendering.desktop/wikipedia_2018"
     },
     {
-        "duration": "28.0",
+        "duration": "11.0",
         "name": "rendering.desktop/wordpress_2018"
     },
     {
-        "duration": "20.0",
+        "duration": "7.0",
         "name": "rendering.desktop/yahoo_answers_2018"
     },
     {
-        "duration": "61.0",
+        "duration": "10.0",
         "name": "rendering.desktop/yahoo_news_2018"
     },
     {
-        "duration": "57.0",
+        "duration": "12.0",
         "name": "rendering.desktop/yahoo_news_pinch_2018"
     },
     {
-        "duration": "71.0",
+        "duration": "12.0",
         "name": "rendering.desktop/yahoo_sports_2018"
     },
     {
-        "duration": "75.0",
+        "duration": "14.0",
         "name": "rendering.desktop/yahoo_sports_pinch_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "8.0",
         "name": "rendering.desktop/youtube_2018"
     },
     {
-        "duration": "32.0",
+        "duration": "10.0",
         "name": "rendering.desktop/youtube_pinch_2018"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/yuv_decoding"
     },
     {
-        "duration": "49.0",
+        "duration": "40.0",
         "name": "speedometer-future/http://browserbench.org/Speedometer/"
     },
     {
-        "duration": "46.0",
+        "duration": "39.0",
         "name": "speedometer/http://browserbench.org/Speedometer/"
     },
     {
-        "duration": "80.0",
+        "duration": "74.0",
         "name": "speedometer2-future/Speedometer2"
     },
     {
-        "duration": "78.0",
+        "duration": "72.0",
         "name": "speedometer2/Speedometer2"
     },
     {
-        "duration": "74.0",
+        "duration": "58.0",
         "name": "system_health.common_desktop/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "100.0",
-        "name": "system_health.common_desktop/browse:media:imgur"
-    },
-    {
-        "duration": "72.0",
-        "name": "system_health.common_desktop/browse:media:pinterest"
-    },
-    {
-        "duration": "114.0",
-        "name": "system_health.common_desktop/browse:media:tumblr"
-    },
-    {
-        "duration": "78.0",
-        "name": "system_health.common_desktop/browse:media:youtube"
-    },
-    {
-        "duration": "72.0",
-        "name": "system_health.common_desktop/browse:news:cnn"
-    },
-    {
-        "duration": "56.0",
-        "name": "system_health.common_desktop/browse:news:cnn:2018"
-    },
-    {
-        "duration": "58.0",
-        "name": "system_health.common_desktop/browse:news:flipboard"
-    },
-    {
-        "duration": "55.0",
-        "name": "system_health.common_desktop/browse:news:hackernews"
-    },
-    {
-        "duration": "76.0",
-        "name": "system_health.common_desktop/browse:news:nytimes"
-    },
-    {
-        "duration": "64.0",
-        "name": "system_health.common_desktop/browse:news:reddit"
-    },
-    {
-        "duration": "57.0",
-        "name": "system_health.common_desktop/browse:search:google"
-    },
-    {
-        "duration": "57.0",
-        "name": "system_health.common_desktop/browse:search:google:2018"
-    },
-    {
-        "duration": "41.0",
-        "name": "system_health.common_desktop/browse:search:google_india"
-    },
-    {
-        "duration": "68.0",
-        "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "82.0",
-        "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll:2018"
-    },
-    {
-        "duration": "79.0",
-        "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "54.0",
-        "name": "system_health.common_desktop/browse:social:twitter"
-    },
-    {
-        "duration": "78.0",
-        "name": "system_health.common_desktop/browse:social:twitter_infinite_scroll"
-    },
-    {
-        "duration": "74.0",
-        "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll"
+        "duration": "34.0",
+        "name": "system_health.common_desktop/browse:media:googleplaystore:2018"
     },
     {
         "duration": "71.0",
-        "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "62.0",
-        "name": "system_health.common_desktop/browse:tools:earth"
-    },
-    {
-        "duration": "33.0",
-        "name": "system_health.common_desktop/browse_accessibility:media:youtube"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_desktop/browse_accessibility:tech:codesearch"
-    },
-    {
-        "duration": "36.0",
-        "name": "system_health.common_desktop/browse_accessibility:tech:codesearch:2018"
-    },
-    {
-        "duration": "18.0",
-        "name": "system_health.common_desktop/load:chrome:blank"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.common_desktop/load:games:alphabetty"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.common_desktop/load:games:bubbles"
-    },
-    {
-        "duration": "19.0",
-        "name": "system_health.common_desktop/load:games:lazors"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_desktop/load:games:miniclip"
-    },
-    {
-        "duration": "34.0",
-        "name": "system_health.common_desktop/load:games:spychase"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.common_desktop/load:media:9gag"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_desktop/load:media:dailymotion"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.common_desktop/load:media:google_images"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.common_desktop/load:media:imgur"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.common_desktop/load:media:soundcloud"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.common_desktop/load:media:youtube"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.common_desktop/load:news:bbc"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.common_desktop/load:news:cnn"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.common_desktop/load:news:flipboard"
-    },
-    {
-        "duration": "19.0",
-        "name": "system_health.common_desktop/load:news:hackernews"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.common_desktop/load:news:nytimes"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.common_desktop/load:news:qq"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.common_desktop/load:news:reddit"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_desktop/load:news:wikipedia"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.common_desktop/load:search:amazon"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:search:baidu"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_desktop/load:search:ebay"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.common_desktop/load:search:google"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_desktop/load:search:taobao"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.common_desktop/load:search:yahoo"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:search:yandex"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_desktop/load:social:instagram"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_desktop/load:social:pinterest"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_desktop/load:social:vk"
-    },
-    {
-        "duration": "34.0",
-        "name": "system_health.common_desktop/load:tools:docs"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.common_desktop/load:tools:drive"
-    },
-    {
-        "duration": "20.0",
-        "name": "system_health.common_desktop/load:tools:dropbox"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.common_desktop/load:tools:gmail"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.common_desktop/load:tools:stackoverflow"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.common_desktop/load:tools:weather"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_desktop/load_accessibility:media:wikipedia"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.common_desktop/load_accessibility:media:wikipedia:2018"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.common_desktop/load_accessibility:shopping:amazon"
-    },
-    {
-        "duration": "140.0",
-        "name": "system_health.common_desktop/long_running:tools:gmail-background"
-    },
-    {
-        "duration": "138.0",
-        "name": "system_health.common_desktop/long_running:tools:gmail-foreground"
-    },
-    {
-        "duration": "60.0",
-        "name": "system_health.common_desktop/play:media:google_play_music"
-    },
-    {
-        "duration": "55.0",
-        "name": "system_health.common_desktop/play:media:soundcloud"
-    },
-    {
-        "duration": "68.0",
-        "name": "system_health.memory_desktop/browse:media:flickr_infinite_scroll"
-    },
-    {
-        "duration": "79.0",
-        "name": "system_health.memory_desktop/browse:media:imgur"
-    },
-    {
-        "duration": "68.0",
-        "name": "system_health.memory_desktop/browse:media:pinterest"
-    },
-    {
-        "duration": "105.0",
-        "name": "system_health.memory_desktop/browse:media:tumblr"
-    },
-    {
-        "duration": "68.0",
-        "name": "system_health.memory_desktop/browse:media:youtube"
-    },
-    {
-        "duration": "46.0",
-        "name": "system_health.memory_desktop/browse:news:cnn:2018"
-    },
-    {
-        "duration": "52.0",
-        "name": "system_health.memory_desktop/browse:news:flipboard"
+        "name": "system_health.common_desktop/browse:media:imgur"
     },
     {
         "duration": "57.0",
-        "name": "system_health.memory_desktop/browse:news:nytimes"
+        "name": "system_health.common_desktop/browse:media:pinterest"
     },
     {
-        "duration": "56.0",
-        "name": "system_health.memory_desktop/browse:news:reddit"
-    },
-    {
-        "duration": "54.0",
-        "name": "system_health.memory_desktop/browse:search:google"
-    },
-    {
-        "duration": "53.0",
-        "name": "system_health.memory_desktop/browse:search:google:2018"
-    },
-    {
-        "duration": "37.0",
-        "name": "system_health.memory_desktop/browse:search:google_india"
-    },
-    {
-        "duration": "62.0",
-        "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "72.0",
-        "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll:2018"
-    },
-    {
-        "duration": "69.0",
-        "name": "system_health.memory_desktop/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "50.0",
-        "name": "system_health.memory_desktop/browse:social:twitter"
-    },
-    {
-        "duration": "68.0",
-        "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "65.0",
-        "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "54.0",
-        "name": "system_health.memory_desktop/browse:tools:earth"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_desktop/browse_accessibility:media:youtube"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch"
-    },
-    {
-        "duration": "34.0",
-        "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch:2018"
-    },
-    {
-        "duration": "17.0",
-        "name": "system_health.memory_desktop/load:chrome:blank"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.memory_desktop/load:games:alphabetty"
-    },
-    {
-        "duration": "18.0",
-        "name": "system_health.memory_desktop/load:games:bubbles"
-    },
-    {
-        "duration": "18.0",
-        "name": "system_health.memory_desktop/load:games:lazors"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.memory_desktop/load:games:spychase"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_desktop/load:media:9gag"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.memory_desktop/load:media:dailymotion"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.memory_desktop/load:media:google_images"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.memory_desktop/load:media:imgur"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_desktop/load:media:soundcloud"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_desktop/load:media:youtube"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.memory_desktop/load:news:bbc"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_desktop/load:news:cnn"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.memory_desktop/load:news:flipboard"
-    },
-    {
-        "duration": "18.0",
-        "name": "system_health.memory_desktop/load:news:hackernews"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.memory_desktop/load:news:nytimes"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.memory_desktop/load:news:qq"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.memory_desktop/load:news:reddit"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.memory_desktop/load:news:wikipedia"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.memory_desktop/load:search:amazon"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.memory_desktop/load:search:baidu"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.memory_desktop/load:search:ebay"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.memory_desktop/load:search:google"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.memory_desktop/load:search:taobao"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.memory_desktop/load:search:yahoo"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.memory_desktop/load:search:yandex"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.memory_desktop/load:social:instagram"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.memory_desktop/load:social:pinterest"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.memory_desktop/load:social:vk"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.memory_desktop/load:tools:docs"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.memory_desktop/load:tools:drive"
-    },
-    {
-        "duration": "18.0",
-        "name": "system_health.memory_desktop/load:tools:dropbox"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.memory_desktop/load:tools:gmail"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.memory_desktop/load:tools:stackoverflow"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.memory_desktop/load:tools:weather"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.memory_desktop/load_accessibility:media:wikipedia"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.memory_desktop/load_accessibility:media:wikipedia:2018"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.memory_desktop/load_accessibility:shopping:amazon"
-    },
-    {
-        "duration": "168.0",
-        "name": "system_health.memory_desktop/long_running:tools:gmail-background"
-    },
-    {
-        "duration": "164.0",
-        "name": "system_health.memory_desktop/long_running:tools:gmail-foreground"
-    },
-    {
-        "duration": "50.0",
-        "name": "system_health.memory_desktop/play:media:soundcloud"
-    },
-    {
-        "duration": "15.0",
-        "name": "tracing.tracing_with_background_memory_infra/Facebook"
-    },
-    {
-        "duration": "16.0",
-        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
-    },
-    {
-        "duration": "13.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
-    },
-    {
-        "duration": "13.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
-    },
-    {
-        "duration": "13.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
-    },
-    {
-        "duration": "14.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
-    },
-    {
-        "duration": "16.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
-    },
-    {
-        "duration": "12.0",
-        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
-    },
-    {
-        "duration": "16.0",
-        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
-    },
-    {
-        "duration": "86.0",
-        "name": "v8.browsing_desktop-future/browse:media:flickr_infinite_scroll"
-    },
-    {
-        "duration": "286.0",
-        "name": "v8.browsing_desktop-future/browse:media:imgur"
-    },
-    {
-        "duration": "81.0",
-        "name": "v8.browsing_desktop-future/browse:media:pinterest"
-    },
-    {
-        "duration": "140.0",
-        "name": "v8.browsing_desktop-future/browse:media:tumblr"
-    },
-    {
-        "duration": "96.0",
-        "name": "v8.browsing_desktop-future/browse:media:youtube"
-    },
-    {
-        "duration": "77.0",
-        "name": "v8.browsing_desktop-future/browse:news:cnn:2018"
-    },
-    {
-        "duration": "107.0",
-        "name": "v8.browsing_desktop-future/browse:news:nytimes"
-    },
-    {
-        "duration": "70.0",
-        "name": "v8.browsing_desktop-future/browse:news:reddit"
-    },
-    {
-        "duration": "62.0",
-        "name": "v8.browsing_desktop-future/browse:search:google"
-    },
-    {
-        "duration": "62.0",
-        "name": "v8.browsing_desktop-future/browse:search:google:2018"
-    },
-    {
-        "duration": "42.0",
-        "name": "v8.browsing_desktop-future/browse:search:google_india"
-    },
-    {
-        "duration": "86.0",
-        "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "142.0",
-        "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll:2018"
-    },
-    {
-        "duration": "94.0",
-        "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "60.0",
-        "name": "v8.browsing_desktop-future/browse:social:twitter"
-    },
-    {
-        "duration": "96.0",
-        "name": "v8.browsing_desktop-future/browse:social:twitter_infinite_scroll"
-    },
-    {
-        "duration": "91.0",
-        "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "83.0",
-        "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "78.0",
-        "name": "v8.browsing_desktop-future/browse:tools:earth"
-    },
-    {
-        "duration": "86.0",
-        "name": "v8.browsing_desktop/browse:media:flickr_infinite_scroll"
-    },
-    {
-        "duration": "324.0",
-        "name": "v8.browsing_desktop/browse:media:imgur"
-    },
-    {
-        "duration": "81.0",
-        "name": "v8.browsing_desktop/browse:media:pinterest"
-    },
-    {
-        "duration": "142.0",
-        "name": "v8.browsing_desktop/browse:media:tumblr"
-    },
-    {
-        "duration": "98.0",
-        "name": "v8.browsing_desktop/browse:media:youtube"
-    },
-    {
-        "duration": "75.0",
-        "name": "v8.browsing_desktop/browse:news:cnn:2018"
-    },
-    {
-        "duration": "113.0",
-        "name": "v8.browsing_desktop/browse:news:nytimes"
-    },
-    {
-        "duration": "70.0",
-        "name": "v8.browsing_desktop/browse:news:reddit"
-    },
-    {
-        "duration": "67.0",
-        "name": "v8.browsing_desktop/browse:search:google"
-    },
-    {
-        "duration": "62.0",
-        "name": "v8.browsing_desktop/browse:search:google:2018"
-    },
-    {
-        "duration": "42.0",
-        "name": "v8.browsing_desktop/browse:search:google_india"
-    },
-    {
-        "duration": "85.0",
-        "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "142.0",
-        "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll:2018"
+        "duration": "84.0",
+        "name": "system_health.common_desktop/browse:media:pinterest:2018"
     },
     {
         "duration": "95.0",
-        "name": "v8.browsing_desktop/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "60.0",
-        "name": "v8.browsing_desktop/browse:social:twitter"
-    },
-    {
-        "duration": "97.0",
-        "name": "v8.browsing_desktop/browse:social:twitter_infinite_scroll"
-    },
-    {
-        "duration": "90.0",
-        "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "83.0",
-        "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "79.0",
-        "name": "v8.browsing_desktop/browse:tools:earth"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/AdsAMPAds_cold"
-    },
-    {
-        "duration": "40.0",
-        "name": "v8.runtime_stats.top_25/AdsAMPAds_hot"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/AdsAMPAds_warm"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_cold"
-    },
-    {
-        "duration": "40.0",
-        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_hot"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_warm"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_cold"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_hot"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_warm"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_cold"
-    },
-    {
-        "duration": "40.0",
-        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_hot"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_warm"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_cold"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_hot"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_warm"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_cold"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_hot"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_warm"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_cold"
-    },
-    {
-        "duration": "40.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_hot"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_warm"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_cold"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_hot"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_warm"
-    },
-    {
-        "duration": "44.0",
-        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_cold"
-    },
-    {
-        "duration": "65.0",
-        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_hot"
+        "name": "system_health.common_desktop/browse:media:tumblr"
     },
     {
         "duration": "54.0",
-        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_warm"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/http://edition.cnn.com_cold"
-    },
-    {
-        "duration": "48.0",
-        "name": "v8.runtime_stats.top_25/http://edition.cnn.com_hot"
-    },
-    {
-        "duration": "43.0",
-        "name": "v8.runtime_stats.top_25/http://edition.cnn.com_warm"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_cold"
-    },
-    {
-        "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_hot"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_warm"
-    },
-    {
-        "duration": "30.0",
-        "name": "v8.runtime_stats.top_25/http://inbox.google.com_cold"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://inbox.google.com_hot"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://inbox.google.com_warm"
-    },
-    {
-        "duration": "30.0",
-        "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_cold"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_hot"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_warm"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://meta.discourse.org_cold"
-    },
-    {
-        "duration": "42.0",
-        "name": "v8.runtime_stats.top_25/http://meta.discourse.org_hot"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/http://meta.discourse.org_warm"
-    },
-    {
-        "duration": "29.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_cold"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_hot"
-    },
-    {
-        "duration": "31.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_warm"
-    },
-    {
-        "duration": "28.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_cold"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_hot"
-    },
-    {
-        "duration": "31.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_warm"
-    },
-    {
-        "duration": "29.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_cold"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_hot"
-    },
-    {
-        "duration": "31.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_warm"
-    },
-    {
-        "duration": "28.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_cold"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_hot"
-    },
-    {
-        "duration": "31.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_warm"
-    },
-    {
-        "duration": "28.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_cold"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_hot"
-    },
-    {
-        "duration": "31.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_warm"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_cold"
-    },
-    {
-        "duration": "51.0",
-        "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_hot"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_warm"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://weibo.com_cold"
-    },
-    {
-        "duration": "42.0",
-        "name": "v8.runtime_stats.top_25/http://weibo.com_hot"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/http://weibo.com_warm"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://world.taobao.com_cold"
-    },
-    {
-        "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/http://world.taobao.com_hot"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/http://world.taobao.com_warm"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_cold"
-    },
-    {
-        "duration": "40.0",
-        "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_hot"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_warm"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_cold"
-    },
-    {
-        "duration": "40.0",
-        "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_hot"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_warm"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_cold"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_hot"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_warm"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_cold"
-    },
-    {
-        "duration": "56.0",
-        "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_hot"
-    },
-    {
-        "duration": "42.0",
-        "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_warm"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_cold"
-    },
-    {
-        "duration": "40.0",
-        "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_hot"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_warm"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_cold"
-    },
-    {
-        "duration": "43.0",
-        "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_hot"
-    },
-    {
-        "duration": "40.0",
-        "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_warm"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_cold"
-    },
-    {
-        "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_hot"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_warm"
+        "name": "system_health.common_desktop/browse:media:tumblr:2018"
     },
     {
         "duration": "58.0",
-        "name": "v8.runtime_stats.top_25/http://www.qq.com_cold"
+        "name": "system_health.common_desktop/browse:media:youtube"
     },
     {
-        "duration": "70.0",
-        "name": "v8.runtime_stats.top_25/http://www.qq.com_hot"
+        "duration": "60.0",
+        "name": "system_health.common_desktop/browse:media:youtube:2018"
     },
     {
-        "duration": "65.0",
-        "name": "v8.runtime_stats.top_25/http://www.qq.com_warm"
+        "duration": "62.0",
+        "name": "system_health.common_desktop/browse:media:youtubetv:2019"
     },
     {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/http://www.reddit.com_cold"
-    },
-    {
-        "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/http://www.reddit.com_hot"
+        "duration": "52.0",
+        "name": "system_health.common_desktop/browse:news:cnn"
     },
     {
         "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/http://www.reddit.com_warm"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_cold"
+        "name": "system_health.common_desktop/browse:news:cnn:2018"
     },
     {
         "duration": "42.0",
-        "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_hot"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_warm"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_cold"
+        "name": "system_health.common_desktop/browse:news:flipboard"
     },
     {
         "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_hot"
+        "name": "system_health.common_desktop/browse:news:flipboard:2018"
     },
     {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_warm"
+        "duration": "43.0",
+        "name": "system_health.common_desktop/browse:news:hackernews"
     },
     {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_cold"
-    },
-    {
-        "duration": "40.0",
-        "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_hot"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_warm"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_cold"
-    },
-    {
-        "duration": "40.0",
-        "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_hot"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_warm"
-    },
-    {
-        "duration": "56.0",
-        "name": "v8.runtime_stats.top_25/https://adwords.google.com_cold"
-    },
-    {
-        "duration": "56.0",
-        "name": "v8.runtime_stats.top_25/https://adwords.google.com_hot"
+        "duration": "49.0",
+        "name": "system_health.common_desktop/browse:news:hackernews:2018"
     },
     {
         "duration": "54.0",
-        "name": "v8.runtime_stats.top_25/https://adwords.google.com_warm"
+        "name": "system_health.common_desktop/browse:news:nytimes"
     },
     {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_cold"
+        "duration": "62.0",
+        "name": "system_health.common_desktop/browse:news:nytimes:2018"
     },
     {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_hot"
+        "duration": "49.0",
+        "name": "system_health.common_desktop/browse:news:reddit"
     },
     {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_warm"
+        "duration": "44.0",
+        "name": "system_health.common_desktop/browse:news:reddit:2018"
     },
     {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_cold"
+        "duration": "43.0",
+        "name": "system_health.common_desktop/browse:search:google"
     },
     {
-        "duration": "50.0",
-        "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_hot"
+        "duration": "43.0",
+        "name": "system_health.common_desktop/browse:search:google:2018"
     },
     {
-        "duration": "45.0",
-        "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_warm"
+        "duration": "31.0",
+        "name": "system_health.common_desktop/browse:search:google_india"
     },
     {
-        "duration": "30.0",
-        "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_cold"
+        "duration": "29.0",
+        "name": "system_health.common_desktop/browse:search:google_india:2018"
     },
     {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_hot"
+        "duration": "59.0",
+        "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_warm"
+        "duration": "64.0",
+        "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_cold"
+        "duration": "62.0",
+        "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "55.0",
+        "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018"
     },
     {
         "duration": "40.0",
-        "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_hot"
+        "name": "system_health.common_desktop/browse:social:twitter"
     },
     {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_warm"
+        "duration": "40.0",
+        "name": "system_health.common_desktop/browse:social:twitter:2018"
     },
     {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_cold"
+        "duration": "64.0",
+        "name": "system_health.common_desktop/browse:social:twitter_infinite_scroll"
     },
     {
-        "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_hot"
+        "duration": "58.0",
+        "name": "system_health.common_desktop/browse:social:twitter_infinite_scroll:2018"
     },
     {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_warm"
+        "duration": "59.0",
+        "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_cold"
+        "duration": "56.0",
+        "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "46.0",
-        "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_hot"
-    },
-    {
-        "duration": "42.0",
-        "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_warm"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/https://www.youtube.com_cold"
-    },
-    {
-        "duration": "43.0",
-        "name": "v8.runtime_stats.top_25/https://www.youtube.com_hot"
-    },
-    {
-        "duration": "50.0",
-        "name": "v8.runtime_stats.top_25/https://www.youtube.com_warm"
+        "duration": "49.0",
+        "name": "system_health.common_desktop/browse:tools:earth"
     },
     {
         "duration": "19.0",
-        "name": "wasm/WasmSpaceBuggy"
+        "name": "system_health.common_desktop/browse_accessibility:media:youtube"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/browse_accessibility:tech:codesearch"
     },
     {
         "duration": "23.0",
-        "name": "wasm/WasmTanks"
+        "name": "system_health.common_desktop/browse_accessibility:tech:codesearch:2018"
     },
     {
-        "duration": "47.0",
-        "name": "wasm/WasmZenGarden"
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:chrome:blank"
     },
     {
-        "duration": "34.0",
-        "name": "webrtc/10s_datachannel_transfer"
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:games:alphabetty:2018"
     },
     {
-        "duration": "20.0",
-        "name": "webrtc/canvas_capture_peer_connection"
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:games:bubbles"
     },
     {
-        "duration": "30.0",
-        "name": "webrtc/codec_constraints_h264"
+        "duration": "12.0",
+        "name": "system_health.common_desktop/load:games:lazors"
     },
     {
-        "duration": "30.0",
-        "name": "webrtc/codec_constraints_vp8"
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:games:miniclip"
     },
     {
-        "duration": "30.0",
-        "name": "webrtc/codec_constraints_vp9"
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:games:miniclip:2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:games:spychase"
     },
     {
         "duration": "19.0",
-        "name": "webrtc/hd_local_stream_10s"
+        "name": "system_health.common_desktop/load:games:spychase:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:media:9gag"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.common_desktop/load:media:dailymotion"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:media:facebook_photos:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:media:flickr:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.common_desktop/load:media:google_images"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:media:google_images:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:media:imgur"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:media:imgur:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:media:soundcloud"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:media:soundcloud:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:media:youtube"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:media:youtube:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:news:bbc"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:news:bbc:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:news:cnn"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:news:cnn:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:news:flipboard"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.common_desktop/load:news:hackernews"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.common_desktop/load:news:hackernews:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:news:nytimes"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:news:nytimes:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:news:qq"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:news:qq:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:news:reddit"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:news:reddit:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.common_desktop/load:news:wikipedia"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:news:wikipedia:2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:search:amazon"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:search:amazon:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.common_desktop/load:search:baidu"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:search:baidu:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.common_desktop/load:search:ebay"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:search:ebay:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:search:flipkart:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:search:google"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:search:google:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:search:taobao"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:search:taobao:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.common_desktop/load:search:yahoo"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.common_desktop/load:search:yahoo:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.common_desktop/load:search:yandex"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:search:yandex:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:social:instagram"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:social:instagram:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:social:pinterest"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.common_desktop/load:social:vk"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:social:vk:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:tools:docs"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:tools:drive"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.common_desktop/load:tools:dropbox"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:tools:gmail"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.common_desktop/load:tools:stackoverflow"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load:tools:stackoverflow:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:tools:weather"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load_accessibility:media:wikipedia"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load_accessibility:media:wikipedia:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load_accessibility:shopping:amazon"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.common_desktop/load_accessibility:shopping:amazon:2018"
+    },
+    {
+        "duration": "121.0",
+        "name": "system_health.common_desktop/long_running:tools:gmail-background"
+    },
+    {
+        "duration": "95.0",
+        "name": "system_health.common_desktop/multitab:misc:typical24"
+    },
+    {
+        "duration": "78.0",
+        "name": "system_health.common_desktop/multitab:misc:typical24:2018"
+    },
+    {
+        "duration": "41.0",
+        "name": "system_health.common_desktop/play:media:google_play_music"
     },
     {
         "duration": "39.0",
-        "name": "webrtc/multiple_peerconnections"
+        "name": "system_health.common_desktop/play:media:soundcloud"
+    },
+    {
+        "duration": "39.0",
+        "name": "system_health.common_desktop/play:media:soundcloud:2018"
+    },
+    {
+        "duration": "56.0",
+        "name": "system_health.memory_desktop/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "32.0",
+        "name": "system_health.memory_desktop/browse:media:googleplaystore:2018"
+    },
+    {
+        "duration": "63.0",
+        "name": "system_health.memory_desktop/browse:media:imgur"
+    },
+    {
+        "duration": "55.0",
+        "name": "system_health.memory_desktop/browse:media:pinterest"
+    },
+    {
+        "duration": "82.0",
+        "name": "system_health.memory_desktop/browse:media:pinterest:2018"
+    },
+    {
+        "duration": "93.0",
+        "name": "system_health.memory_desktop/browse:media:tumblr"
+    },
+    {
+        "duration": "53.0",
+        "name": "system_health.memory_desktop/browse:media:tumblr:2018"
+    },
+    {
+        "duration": "55.0",
+        "name": "system_health.memory_desktop/browse:media:youtube"
+    },
+    {
+        "duration": "56.0",
+        "name": "system_health.memory_desktop/browse:media:youtube:2018"
+    },
+    {
+        "duration": "60.0",
+        "name": "system_health.memory_desktop/browse:media:youtubetv:2019"
+    },
+    {
+        "duration": "33.0",
+        "name": "system_health.memory_desktop/browse:news:cnn:2018"
+    },
+    {
+        "duration": "41.0",
+        "name": "system_health.memory_desktop/browse:news:flipboard"
+    },
+    {
+        "duration": "39.0",
+        "name": "system_health.memory_desktop/browse:news:flipboard:2018"
+    },
+    {
+        "duration": "44.0",
+        "name": "system_health.memory_desktop/browse:news:hackernews:2018"
+    },
+    {
+        "duration": "45.0",
+        "name": "system_health.memory_desktop/browse:news:nytimes"
+    },
+    {
+        "duration": "55.0",
+        "name": "system_health.memory_desktop/browse:news:nytimes:2018"
+    },
+    {
+        "duration": "44.0",
+        "name": "system_health.memory_desktop/browse:news:reddit"
+    },
+    {
+        "duration": "39.0",
+        "name": "system_health.memory_desktop/browse:news:reddit:2018"
+    },
+    {
+        "duration": "41.0",
+        "name": "system_health.memory_desktop/browse:search:google"
+    },
+    {
+        "duration": "41.0",
+        "name": "system_health.memory_desktop/browse:search:google:2018"
+    },
+    {
+        "duration": "30.0",
+        "name": "system_health.memory_desktop/browse:search:google_india"
+    },
+    {
+        "duration": "27.0",
+        "name": "system_health.memory_desktop/browse:search:google_india:2018"
+    },
+    {
+        "duration": "56.0",
+        "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "59.0",
+        "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "57.0",
+        "name": "system_health.memory_desktop/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "48.0",
+        "name": "system_health.memory_desktop/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "38.0",
+        "name": "system_health.memory_desktop/browse:social:twitter"
+    },
+    {
+        "duration": "38.0",
+        "name": "system_health.memory_desktop/browse:social:twitter:2018"
+    },
+    {
+        "duration": "56.0",
+        "name": "system_health.memory_desktop/browse:social:twitter_infinite_scroll:2018"
+    },
+    {
+        "duration": "56.0",
+        "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "54.0",
+        "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "46.0",
+        "name": "system_health.memory_desktop/browse:tools:earth"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.memory_desktop/browse_accessibility:media:youtube"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch"
+    },
+    {
+        "duration": "22.0",
+        "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch:2018"
+    },
+    {
+        "duration": "11.0",
+        "name": "system_health.memory_desktop/load:chrome:blank"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:games:alphabetty:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:games:bubbles"
+    },
+    {
+        "duration": "11.0",
+        "name": "system_health.memory_desktop/load:games:lazors"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:games:miniclip:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:games:spychase"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.memory_desktop/load:games:spychase:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:media:9gag"
+    },
+    {
+        "duration": "11.0",
+        "name": "system_health.memory_desktop/load:media:dailymotion"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:media:facebook_photos:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:media:flickr:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:media:google_images"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:media:google_images:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:media:imgur"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:media:imgur:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:media:soundcloud"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:media:soundcloud:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:media:youtube"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:media:youtube:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:news:bbc"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:news:bbc:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:news:cnn"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:news:cnn:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:news:flipboard"
+    },
+    {
+        "duration": "11.0",
+        "name": "system_health.memory_desktop/load:news:hackernews"
+    },
+    {
+        "duration": "11.0",
+        "name": "system_health.memory_desktop/load:news:hackernews:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:news:nytimes"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:news:nytimes:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:news:qq"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:news:qq:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:news:reddit"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:news:reddit:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:news:wikipedia"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:news:wikipedia:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:search:amazon"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:search:amazon:2018"
+    },
+    {
+        "duration": "11.0",
+        "name": "system_health.memory_desktop/load:search:baidu"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:search:baidu:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:search:ebay"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:search:ebay:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:search:flipkart:2018"
+    },
+    {
+        "duration": "11.0",
+        "name": "system_health.memory_desktop/load:search:google"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:search:google:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:search:taobao"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:search:taobao:2018"
+    },
+    {
+        "duration": "11.0",
+        "name": "system_health.memory_desktop/load:search:yahoo"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:search:yahoo:2018"
+    },
+    {
+        "duration": "11.0",
+        "name": "system_health.memory_desktop/load:search:yandex"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:search:yandex:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:social:instagram"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:social:instagram:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:social:pinterest"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:social:vk"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:social:vk:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:tools:docs"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:tools:drive"
+    },
+    {
+        "duration": "11.0",
+        "name": "system_health.memory_desktop/load:tools:dropbox"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:tools:gmail"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:tools:stackoverflow"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:tools:stackoverflow:2018"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load:tools:weather"
+    },
+    {
+        "duration": "11.0",
+        "name": "system_health.memory_desktop/load_accessibility:media:wikipedia"
+    },
+    {
+        "duration": "12.0",
+        "name": "system_health.memory_desktop/load_accessibility:media:wikipedia:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load_accessibility:shopping:amazon"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load_accessibility:shopping:amazon:2018"
+    },
+    {
+        "duration": "132.0",
+        "name": "system_health.memory_desktop/long_running:tools:gmail-background"
+    },
+    {
+        "duration": "129.0",
+        "name": "system_health.memory_desktop/long_running:tools:gmail-foreground"
+    },
+    {
+        "duration": "37.0",
+        "name": "system_health.memory_desktop/play:media:soundcloud"
+    },
+    {
+        "duration": "38.0",
+        "name": "system_health.memory_desktop/play:media:soundcloud:2018"
+    },
+    {
+        "duration": "8.0",
+        "name": "tracing.tracing_with_background_memory_infra/Facebook"
+    },
+    {
+        "duration": "6.0",
+        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
+    },
+    {
+        "duration": "6.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
+    },
+    {
+        "duration": "6.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
+    },
+    {
+        "duration": "6.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
+    },
+    {
+        "duration": "7.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
+    },
+    {
+        "duration": "7.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
+    },
+    {
+        "duration": "8.0",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "6.0",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "61.0",
+        "name": "v8.browsing_desktop-future/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "36.0",
+        "name": "v8.browsing_desktop-future/browse:media:googleplaystore:2018"
+    },
+    {
+        "duration": "73.0",
+        "name": "v8.browsing_desktop-future/browse:media:imgur"
+    },
+    {
+        "duration": "87.0",
+        "name": "v8.browsing_desktop-future/browse:media:pinterest:2018"
+    },
+    {
+        "duration": "58.0",
+        "name": "v8.browsing_desktop-future/browse:media:tumblr:2018"
+    },
+    {
+        "duration": "67.0",
+        "name": "v8.browsing_desktop-future/browse:media:youtube:2018"
+    },
+    {
+        "duration": "64.0",
+        "name": "v8.browsing_desktop-future/browse:media:youtubetv:2019"
     },
     {
         "duration": "43.0",
+        "name": "v8.browsing_desktop-future/browse:news:cnn:2018"
+    },
+    {
+        "duration": "42.0",
+        "name": "v8.browsing_desktop-future/browse:news:flipboard:2018"
+    },
+    {
+        "duration": "51.0",
+        "name": "v8.browsing_desktop-future/browse:news:hackernews:2018"
+    },
+    {
+        "duration": "65.0",
+        "name": "v8.browsing_desktop-future/browse:news:nytimes:2018"
+    },
+    {
+        "duration": "47.0",
+        "name": "v8.browsing_desktop-future/browse:news:reddit:2018"
+    },
+    {
+        "duration": "44.0",
+        "name": "v8.browsing_desktop-future/browse:search:google:2018"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.browsing_desktop-future/browse:search:google_india:2018"
+    },
+    {
+        "duration": "66.0",
+        "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "64.0",
+        "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "55.0",
+        "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "41.0",
+        "name": "v8.browsing_desktop-future/browse:social:twitter:2018"
+    },
+    {
+        "duration": "60.0",
+        "name": "v8.browsing_desktop-future/browse:social:twitter_infinite_scroll:2018"
+    },
+    {
+        "duration": "58.0",
+        "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "52.0",
+        "name": "v8.browsing_desktop-future/browse:tools:earth"
+    },
+    {
+        "duration": "61.0",
+        "name": "v8.browsing_desktop/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "36.0",
+        "name": "v8.browsing_desktop/browse:media:googleplaystore:2018"
+    },
+    {
+        "duration": "70.0",
+        "name": "v8.browsing_desktop/browse:media:imgur"
+    },
+    {
+        "duration": "59.0",
+        "name": "v8.browsing_desktop/browse:media:pinterest"
+    },
+    {
+        "duration": "87.0",
+        "name": "v8.browsing_desktop/browse:media:pinterest:2018"
+    },
+    {
+        "duration": "99.0",
+        "name": "v8.browsing_desktop/browse:media:tumblr"
+    },
+    {
+        "duration": "58.0",
+        "name": "v8.browsing_desktop/browse:media:tumblr:2018"
+    },
+    {
+        "duration": "61.0",
+        "name": "v8.browsing_desktop/browse:media:youtube"
+    },
+    {
+        "duration": "63.0",
+        "name": "v8.browsing_desktop/browse:media:youtube:2018"
+    },
+    {
+        "duration": "64.0",
+        "name": "v8.browsing_desktop/browse:media:youtubetv:2019"
+    },
+    {
+        "duration": "41.0",
+        "name": "v8.browsing_desktop/browse:news:cnn:2018"
+    },
+    {
+        "duration": "42.0",
+        "name": "v8.browsing_desktop/browse:news:flipboard:2018"
+    },
+    {
+        "duration": "51.0",
+        "name": "v8.browsing_desktop/browse:news:hackernews:2018"
+    },
+    {
+        "duration": "57.0",
+        "name": "v8.browsing_desktop/browse:news:nytimes"
+    },
+    {
+        "duration": "65.0",
+        "name": "v8.browsing_desktop/browse:news:nytimes:2018"
+    },
+    {
+        "duration": "52.0",
+        "name": "v8.browsing_desktop/browse:news:reddit"
+    },
+    {
+        "duration": "47.0",
+        "name": "v8.browsing_desktop/browse:news:reddit:2018"
+    },
+    {
+        "duration": "48.0",
+        "name": "v8.browsing_desktop/browse:search:google"
+    },
+    {
+        "duration": "44.0",
+        "name": "v8.browsing_desktop/browse:search:google:2018"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.browsing_desktop/browse:search:google_india"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.browsing_desktop/browse:search:google_india:2018"
+    },
+    {
+        "duration": "61.0",
+        "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "67.0",
+        "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "64.0",
+        "name": "v8.browsing_desktop/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "55.0",
+        "name": "v8.browsing_desktop/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "41.0",
+        "name": "v8.browsing_desktop/browse:social:twitter"
+    },
+    {
+        "duration": "41.0",
+        "name": "v8.browsing_desktop/browse:social:twitter:2018"
+    },
+    {
+        "duration": "67.0",
+        "name": "v8.browsing_desktop/browse:social:twitter_infinite_scroll"
+    },
+    {
+        "duration": "60.0",
+        "name": "v8.browsing_desktop/browse:social:twitter_infinite_scroll:2018"
+    },
+    {
+        "duration": "61.0",
+        "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "58.0",
+        "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "52.0",
+        "name": "v8.browsing_desktop/browse:tools:earth"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/AdsAMPAds_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/AdsAMPAds_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/AdsAMPAds_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_warm"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_cold"
+    },
+    {
+        "duration": "51.0",
+        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_hot"
+    },
+    {
+        "duration": "40.0",
+        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_warm"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.runtime_stats.top_25/http://edition.cnn.com_cold"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.runtime_stats.top_25/http://edition.cnn.com_hot"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://edition.cnn.com_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://inbox.google.com_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://inbox.google.com_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/http://inbox.google.com_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/http://meta.discourse.org_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://meta.discourse.org_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://meta.discourse.org_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_cold"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_hot"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_hot"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/http://weibo.com_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://weibo.com_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://weibo.com_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/http://world.taobao.com_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://world.taobao.com_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://world.taobao.com_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_warm"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/http://www.qq.com_cold"
+    },
+    {
+        "duration": "35.0",
+        "name": "v8.runtime_stats.top_25/http://www.qq.com_hot"
+    },
+    {
+        "duration": "33.0",
+        "name": "v8.runtime_stats.top_25/http://www.qq.com_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://www.reddit.com_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://www.reddit.com_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.reddit.com_warm"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_warm"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_warm"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/https://adwords.google.com_cold"
+    },
+    {
+        "duration": "33.0",
+        "name": "v8.runtime_stats.top_25/https://adwords.google.com_hot"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.runtime_stats.top_25/https://adwords.google.com_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_hot"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_cold"
+    },
+    {
+        "duration": "34.0",
+        "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_hot"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_warm"
+    },
+    {
+        "duration": "22.0",
+        "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_warm"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_cold"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_cold"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_warm"
+    },
+    {
+        "duration": "23.0",
+        "name": "v8.runtime_stats.top_25/https://www.youtube.com_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/https://www.youtube.com_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/https://www.youtube.com_warm"
+    },
+    {
+        "duration": "7.0",
+        "name": "wasm/WasmSpaceBuggy"
+    },
+    {
+        "duration": "13.0",
+        "name": "wasm/WasmTanks"
+    },
+    {
+        "duration": "16.0",
+        "name": "wasm/WasmZenGarden"
+    },
+    {
+        "duration": "17.0",
+        "name": "webrtc/10s_datachannel_transfer"
+    },
+    {
+        "duration": "12.0",
+        "name": "webrtc/canvas_capture_peer_connection"
+    },
+    {
+        "duration": "22.0",
+        "name": "webrtc/codec_constraints_h264"
+    },
+    {
+        "duration": "22.0",
+        "name": "webrtc/codec_constraints_vp8"
+    },
+    {
+        "duration": "22.0",
+        "name": "webrtc/codec_constraints_vp9"
+    },
+    {
+        "duration": "12.0",
+        "name": "webrtc/hd_local_stream_10s"
+    },
+    {
+        "duration": "25.0",
+        "name": "webrtc/multiple_peerconnections"
+    },
+    {
+        "duration": "29.0",
         "name": "webrtc/pause_play_peerconnections"
     }
 ]
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/win-10-perf_timing.json b/tools/perf/core/shard_maps/timing_data/win-10-perf_timing.json
index 323807d..03bdc24 100644
--- a/tools/perf/core/shard_maps/timing_data/win-10-perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/win-10-perf_timing.json
@@ -1,10 +1,14 @@
 [
     {
-        "duration": "20.0",
+        "duration": "21.0",
+        "name": "blink_perf.accessibility/line-breaks.html"
+    },
+    {
+        "duration": "19.0",
         "name": "blink_perf.accessibility/textarea-append.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "blink_perf.bindings/append-child.html"
     },
     {
@@ -12,15 +16,15 @@
         "name": "blink_perf.bindings/create-element.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/document-implementation.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/dom-attribute-on-prototoype.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/first-child.html"
     },
     {
@@ -32,7 +36,7 @@
         "name": "blink_perf.bindings/gc-mini-tree.html"
     },
     {
-        "duration": "15.0",
+        "duration": "16.0",
         "name": "blink_perf.bindings/gc-tree.html"
     },
     {
@@ -40,15 +44,15 @@
         "name": "blink_perf.bindings/get-attribute-rare.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/get-attribute.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/get-element-by-id.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/get-elements-by-tag-name.html"
     },
     {
@@ -56,7 +60,7 @@
         "name": "blink_perf.bindings/id-getter.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/id-setter.html"
     },
     {
@@ -68,15 +72,15 @@
         "name": "blink_perf.bindings/insert-before.html"
     },
     {
-        "duration": "8.0",
+        "duration": "9.0",
         "name": "blink_perf.bindings/named-property-enumerator.html"
     },
     {
-        "duration": "28.0",
+        "duration": "19.0",
         "name": "blink_perf.bindings/node-list-access.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/node-type.html"
     },
     {
@@ -96,7 +100,7 @@
         "name": "blink_perf.bindings/serialize-array.html"
     },
     {
-        "duration": "4.0",
+        "duration": "3.0",
         "name": "blink_perf.bindings/serialize-long-string.html"
     },
     {
@@ -120,7 +124,7 @@
         "name": "blink_perf.bindings/structured-clone-json-deserialize.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/structured-clone-json-serialize.html"
     },
     {
@@ -144,7 +148,7 @@
         "name": "blink_perf.bindings/typed-array-construct-from-typed.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/typed-array-set-from-typed.html"
     },
     {
@@ -152,107 +156,263 @@
         "name": "blink_perf.bindings/undefined-first-child.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/undefined-get-element-by-id.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/undefined-id-getter.html"
     },
     {
-        "duration": "12.0",
+        "duration": "3.0",
+        "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.bindings/worker-structured-clone-json-from-worker.html"
+    },
+    {
+        "duration": "13.0",
         "name": "blink_perf.bindings/worker-structured-clone-json-roundtrip.html"
     },
     {
-        "duration": "12.0",
-        "name": "blink_perf.bindings/worker-structured-clone-json-serialize.html"
+        "duration": "13.0",
+        "name": "blink_perf.bindings/worker-structured-clone-json-to-worker.html"
+    },
+    {
+        "duration": "5.0",
+        "name": "blink_perf.bindings/worker-structured-clone-workerDOM-DBMon-from-worker.html"
+    },
+    {
+        "duration": "3.0",
+        "name": "blink_perf.bindings/worker-structured-clone-workerDOM-Map-from-worker.html"
     },
     {
         "duration": "9.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-from-worker.html"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-roundtrip.html"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.bindings/worker-text-encoded-transferable-to-worker.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.bindings/worker-transferable-from-worker.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.bindings/worker-transferable-roundtrip.html"
+    },
+    {
+        "duration": "7.0",
+        "name": "blink_perf.bindings/worker-transferable-to-worker.html"
+    },
+    {
+        "duration": "10.0",
         "name": "blink_perf.canvas/createImageBitmapFromImageData.html"
     },
     {
+        "duration": "9.0",
+        "name": "blink_perf.canvas/createImageBitmapFromImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.canvas/docs-paper.html"
+    },
+    {
+        "duration": "5.0",
+        "name": "blink_perf.canvas/docs-paper_RAF.html?RAF"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.canvas/docs-resume.html"
+    },
+    {
+        "duration": "5.0",
+        "name": "blink_perf.canvas/docs-resume_RAF.html?RAF"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.canvas/docs-table.html"
+    },
+    {
+        "duration": "5.0",
+        "name": "blink_perf.canvas/docs-table_RAF.html?RAF"
+    },
+    {
         "duration": "5.0",
         "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d.html"
     },
     {
+        "duration": "5.0",
+        "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
         "duration": "10.0",
         "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d.html"
     },
     {
         "duration": "4.0",
+        "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "4.0",
         "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d.html"
     },
     {
+        "duration": "6.0",
+        "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d_RAF.html?RAF"
+    },
+    {
         "duration": "4.0",
         "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d.html"
     },
     {
         "duration": "4.0",
+        "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "4.0",
         "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d.html"
     },
     {
-        "duration": "6.0",
+        "duration": "5.0",
+        "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
+        "duration": "5.0",
         "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d.html"
     },
     {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d_RAF.html?RAF"
+    },
+    {
         "duration": "9.0",
         "name": "blink_perf.canvas/drawimage-not-pixelaligned.html"
     },
     {
         "duration": "9.0",
+        "name": "blink_perf.canvas/drawimage-not-pixelaligned_RAF.html?RAF"
+    },
+    {
+        "duration": "9.0",
         "name": "blink_perf.canvas/drawimage.html"
     },
     {
         "duration": "10.0",
+        "name": "blink_perf.canvas/drawimage_RAF.html?RAF"
+    },
+    {
+        "duration": "10.0",
         "name": "blink_perf.canvas/getImageData.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.canvas/getImageDataColorManaged.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
+        "name": "blink_perf.canvas/getImageDataColorManaged_RAF.html?RAF"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.canvas/getImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "4.0",
+        "name": "blink_perf.canvas/gpu-bound-shader.html"
+    },
+    {
+        "duration": "5.0",
+        "name": "blink_perf.canvas/gpu-bound-shader_RAF.html?RAF"
+    },
+    {
+        "duration": "8.0",
         "name": "blink_perf.canvas/putImageData.html"
     },
     {
+        "duration": "9.0",
+        "name": "blink_perf.canvas/putImageData_RAF.html?RAF"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.canvas/sheets-render.html"
+    },
+    {
+        "duration": "5.0",
+        "name": "blink_perf.canvas/sheets-render_RAF.html?RAF"
+    },
+    {
         "duration": "5.0",
         "name": "blink_perf.canvas/toBlob_duration.html"
     },
     {
         "duration": "5.0",
+        "name": "blink_perf.canvas/toBlob_duration_RAF.html?RAF"
+    },
+    {
+        "duration": "5.0",
         "name": "blink_perf.canvas/toBlob_duration_jpeg.html"
     },
     {
-        "duration": "4.0",
+        "duration": "5.0",
+        "name": "blink_perf.canvas/toBlob_duration_jpeg_RAF.html?RAF"
+    },
+    {
+        "duration": "5.0",
         "name": "blink_perf.canvas/transferFromImageBitmap.html"
     },
     {
+        "duration": "6.0",
+        "name": "blink_perf.canvas/transferFromImageBitmap_RAF.html?RAF"
+    },
+    {
         "duration": "5.0",
         "name": "blink_perf.canvas/upload-canvas-2d-to-texture.html"
     },
     {
+        "duration": "8.0",
+        "name": "blink_perf.canvas/upload-canvas-2d-to-texture_RAF.html?RAF"
+    },
+    {
         "duration": "11.0",
         "name": "blink_perf.canvas/upload-video-to-sub-texture.html"
     },
     {
-        "duration": "4.0",
+        "duration": "6.0",
+        "name": "blink_perf.canvas/upload-video-to-sub-texture_RAF.html?RAF"
+    },
+    {
+        "duration": "5.0",
         "name": "blink_perf.canvas/upload-video-to-texture.html"
     },
     {
+        "duration": "6.0",
+        "name": "blink_perf.canvas/upload-video-to-texture_RAF.html?RAF"
+    },
+    {
         "duration": "5.0",
         "name": "blink_perf.canvas/upload-webgl-to-texture.html"
     },
     {
+        "duration": "7.0",
+        "name": "blink_perf.canvas/upload-webgl-to-texture_RAF.html?RAF"
+    },
+    {
         "duration": "12.0",
         "name": "blink_perf.css/AttributeDescendantSelector.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.css/CSSPropertySetterGetter.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.css/CSSPropertySetterGetterMethods.html"
     },
     {
@@ -260,79 +420,79 @@
         "name": "blink_perf.css/CSSPropertyUpdateValue.html"
     },
     {
-        "duration": "8.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleChildClassSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleChildElementSelectors.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleElementSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html"
     },
     {
-        "duration": "9.0",
+        "duration": "13.0",
         "name": "blink_perf.css/ChangeStyleShallowTree.html"
     },
     {
-        "duration": "8.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleSingleClassSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleUniversalSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html"
     },
     {
-        "duration": "8.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ClassDescendantSelector.html"
     },
     {
@@ -340,11 +500,11 @@
         "name": "blink_perf.css/ClassInvalidation.html"
     },
     {
-        "duration": "5.0",
+        "duration": "4.0",
         "name": "blink_perf.css/CustomPropertiesCascade.html"
     },
     {
-        "duration": "4.0",
+        "duration": "3.0",
         "name": "blink_perf.css/CustomPropertiesNonRootInheritance.html"
     },
     {
@@ -356,19 +516,19 @@
         "name": "blink_perf.css/CustomPropertiesVarAlias.html"
     },
     {
-        "duration": "11.0",
+        "duration": "10.0",
         "name": "blink_perf.css/FocusUpdate.html"
     },
     {
-        "duration": "8.0",
+        "duration": "12.0",
         "name": "blink_perf.css/LoadBootstrapBlog.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.css/LoadMaterializeStarterPage.html"
     },
     {
-        "duration": "8.0",
+        "duration": "11.0",
         "name": "blink_perf.css/LoadSemanticPageExample.html"
     },
     {
@@ -376,35 +536,19 @@
         "name": "blink_perf.css/PseudoClassSelectors.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "blink_perf.css/SelectorCountScaling.html"
     },
     {
-        "duration": "6.0",
-        "name": "blink_perf.dom/addRange.html"
-    },
-    {
-        "duration": "14.0",
+        "duration": "15.0",
         "name": "blink_perf.dom/custom-element-default-style-with-shadow.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.dom/custom-element-default-style.html"
     },
     {
-        "duration": "4.0",
-        "name": "blink_perf.dom/delete-in-password-field.html"
-    },
-    {
-        "duration": "10.0",
-        "name": "blink_perf.dom/div-editable.html"
-    },
-    {
-        "duration": "4.0",
-        "name": "blink_perf.dom/inner_html_with_selection.html"
-    },
-    {
-        "duration": "15.0",
+        "duration": "16.0",
         "name": "blink_perf.dom/long-sibling-list.html"
     },
     {
@@ -420,18 +564,6 @@
         "name": "blink_perf.dom/modify-element-title.html"
     },
     {
-        "duration": "4.0",
-        "name": "blink_perf.dom/move-down-with-hidden-elements.html"
-    },
-    {
-        "duration": "4.0",
-        "name": "blink_perf.dom/move-up-with-hidden-elements.html"
-    },
-    {
-        "duration": "4.0",
-        "name": "blink_perf.dom/remove_child_with_selection.html"
-    },
-    {
         "duration": "9.0",
         "name": "blink_perf.dom/select-multiple-add.html"
     },
@@ -444,67 +576,75 @@
         "name": "blink_perf.dom/select-single-remove.html"
     },
     {
-        "duration": "9.0",
-        "name": "blink_perf.dom/textarea-dom.html"
-    },
-    {
-        "duration": "9.0",
-        "name": "blink_perf.dom/textarea-edit.html"
-    },
-    {
-        "duration": "28.0",
+        "duration": "38.0",
         "name": "blink_perf.events/EventsDispatching.html"
     },
     {
-        "duration": "10.0",
-        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedShadowTrees.html"
-    },
-    {
-        "duration": "17.0",
-        "name": "blink_perf.events/EventsDispatchingInShadowTrees.html"
-    },
-    {
-        "duration": "9.0",
-        "name": "blink_perf.events/hit-test-lots-of-layers.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "blink_perf.image_decoder/decode-gif.html"
+        "duration": "11.0",
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV0ShadowTrees.html"
     },
     {
         "duration": "11.0",
-        "name": "blink_perf.image_decoder/decode-jpeg.html"
-    },
-    {
-        "duration": "13.0",
-        "name": "blink_perf.image_decoder/decode-lossless-webp.html"
-    },
-    {
-        "duration": "10.0",
-        "name": "blink_perf.image_decoder/decode-lossy-webp.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
-    },
-    {
-        "duration": "11.0",
-        "name": "blink_perf.image_decoder/decode-png-palette.html"
-    },
-    {
-        "duration": "14.0",
-        "name": "blink_perf.image_decoder/decode-png.html"
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html"
     },
     {
         "duration": "15.0",
-        "name": "blink_perf.layout/ArabicLineLayout.html"
+        "name": "blink_perf.events/EventsDispatchingInV0ShadowTrees.html"
     },
     {
-        "duration": "6.0",
-        "name": "blink_perf.layout/Shapes/MultipleShapes.html"
+        "duration": "16.0",
+        "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.events/hit-test-lots-of-layers.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.events/is-input-pending-all-events.html"
     },
     {
         "duration": "11.0",
+        "name": "blink_perf.events/is-input-pending-default-events.html"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.image_decoder/decode-gif.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.image_decoder/decode-jpeg.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.image_decoder/decode-lossless-webp.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.image_decoder/decode-lossy-webp.html"
+    },
+    {
+        "duration": "13.0",
+        "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.image_decoder/decode-png-palette.html"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.image_decoder/decode-png.html"
+    },
+    {
+        "duration": "16.0",
+        "name": "blink_perf.layout/ArabicLineLayout.html"
+    },
+    {
+        "duration": "5.0",
+        "name": "blink_perf.layout/Shapes/MultipleShapes.html"
+    },
+    {
+        "duration": "10.0",
         "name": "blink_perf.layout/SimpleTextPathLineLayout.html"
     },
     {
@@ -512,23 +652,23 @@
         "name": "blink_perf.layout/add-remove-inline-floats.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "blink_perf.layout/attach-inlines-2.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "blink_perf.layout/attach-inlines.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "blink_perf.layout/auto-grid-lots-of-data.html"
     },
     {
-        "duration": "11.0",
+        "duration": "10.0",
         "name": "blink_perf.layout/change-text-css-contain.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/chapter-reflow-once-random.html"
     },
     {
@@ -536,7 +676,7 @@
         "name": "blink_perf.layout/chapter-reflow-once.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/chapter-reflow-thrice.html"
     },
     {
@@ -544,11 +684,11 @@
         "name": "blink_perf.layout/chapter-reflow-twice.html"
     },
     {
-        "duration": "8.0",
+        "duration": "9.0",
         "name": "blink_perf.layout/chapter-reflow.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "blink_perf.layout/character_fallback.html"
     },
     {
@@ -556,6 +696,18 @@
         "name": "blink_perf.layout/character_fallback_aat.html"
     },
     {
+        "duration": "7.0",
+        "name": "blink_perf.layout/contain-content-style-change.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-blocks.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-text.html"
+    },
+    {
         "duration": "10.0",
         "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
     },
@@ -580,23 +732,27 @@
         "name": "blink_perf.layout/flexbox-lots-of-data.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/flexbox-row-nowrap.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
+        "name": "blink_perf.layout/flexbox-row-stretch-height-definite.html"
+    },
+    {
+        "duration": "8.0",
         "name": "blink_perf.layout/flexbox-row-wrap.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "blink_perf.layout/flexbox-with-stretch-layout.html"
     },
     {
-        "duration": "8.0",
+        "duration": "6.0",
         "name": "blink_perf.layout/floats_100_100.html"
     },
     {
-        "duration": "8.0",
+        "duration": "6.0",
         "name": "blink_perf.layout/floats_100_100_nested.html"
     },
     {
@@ -616,22 +772,30 @@
         "name": "blink_perf.layout/floats_2_100.html"
     },
     {
-        "duration": "16.0",
+        "duration": "4.0",
         "name": "blink_perf.layout/floats_2_100_nested.html"
     },
     {
-        "duration": "6.0",
+        "duration": "5.0",
         "name": "blink_perf.layout/floats_50_100.html"
     },
     {
-        "duration": "6.0",
+        "duration": "5.0",
         "name": "blink_perf.layout/floats_50_100_nested.html"
     },
     {
-        "duration": "15.0",
+        "duration": "10.0",
         "name": "blink_perf.layout/hindi-line-layout.html"
     },
     {
+        "duration": "5.0",
+        "name": "blink_perf.layout/japanese-kokoro-insert.html"
+    },
+    {
+        "duration": "12.0",
+        "name": "blink_perf.layout/large-grid.html"
+    },
+    {
         "duration": "9.0",
         "name": "blink_perf.layout/large-spanning-grid-item.html"
     },
@@ -640,15 +804,15 @@
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html"
     },
     {
-        "duration": "9.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html"
     },
     {
-        "duration": "37.0",
+        "duration": "35.0",
         "name": "blink_perf.layout/latin-ebook-resize.html"
     },
     {
@@ -660,10 +824,18 @@
         "name": "blink_perf.layout/layers_overlap_2d.html"
     },
     {
-        "duration": "4.0",
+        "duration": "14.0",
         "name": "blink_perf.layout/layers_overlap_3d.html"
     },
     {
+        "duration": "4.0",
+        "name": "blink_perf.layout/line-layout-fit-content-break-word.html"
+    },
+    {
+        "duration": "5.0",
+        "name": "blink_perf.layout/line-layout-fit-content.html"
+    },
+    {
         "duration": "7.0",
         "name": "blink_perf.layout/line-layout-line-height.html"
     },
@@ -672,7 +844,7 @@
         "name": "blink_perf.layout/line-layout-repeat-append-select.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/line-layout-repeat-append.html"
     },
     {
@@ -680,7 +852,7 @@
         "name": "blink_perf.layout/line-layout.html"
     },
     {
-        "duration": "4.0",
+        "duration": "3.0",
         "name": "blink_perf.layout/long-line-nowrap-collapse.html"
     },
     {
@@ -693,14 +865,22 @@
     },
     {
         "duration": "9.0",
+        "name": "blink_perf.layout/many-block-children-auto-inline-size.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.layout/many-block-children-fixed-inline-size.html"
+    },
+    {
+        "duration": "9.0",
         "name": "blink_perf.layout/multicol/deeply-nested-tables.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/multicol/lots-of-text-autofill.html"
     },
     {
@@ -708,11 +888,11 @@
         "name": "blink_perf.layout/multicol/lots-of-text-balanced-orphans-widows.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/multicol/lots-of-text-balanced.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html"
     },
     {
@@ -724,7 +904,7 @@
         "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/nested-grid.html"
     },
     {
@@ -736,7 +916,7 @@
         "name": "blink_perf.layout/subtree-detaching.html"
     },
     {
-        "duration": "5.0",
+        "duration": "4.0",
         "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html"
     },
     {
@@ -752,103 +932,115 @@
         "name": "blink_perf.layout/word-wrap-break-word.html"
     },
     {
-        "duration": "20.0",
+        "duration": "18.0",
         "name": "blink_perf.owp_storage/blob-perf-files.html"
     },
     {
-        "duration": "9.0",
+        "duration": "12.0",
         "name": "blink_perf.owp_storage/blob-perf-ipc.html"
     },
     {
-        "duration": "9.0",
+        "duration": "12.0",
         "name": "blink_perf.owp_storage/blob-perf-shm.html"
     },
     {
-        "duration": "9.0",
+        "duration": "12.0",
         "name": "blink_perf.owp_storage/blob-perf-tiny.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.owp_storage/idb-load-docs.html"
     },
     {
-        "duration": "9.0",
+        "duration": "12.0",
         "name": "blink_perf.paint/appending-text.html"
     },
     {
-        "duration": "13.0",
+        "duration": "18.0",
         "name": "blink_perf.paint/color-changes.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.paint/complex-content-slow-scroll.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
+        "name": "blink_perf.paint/complex-iframe-filtered.html"
+    },
+    {
+        "duration": "25.0",
+        "name": "blink_perf.paint/contain-update-layer-tree.html"
+    },
+    {
+        "duration": "12.0",
         "name": "blink_perf.paint/containment-resize.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.paint/fixed-and-many-layers-scroll.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.paint/large-table-background-change-with-invisible-collapsed-borders.html"
     },
     {
-        "duration": "10.0",
+        "duration": "12.0",
         "name": "blink_perf.paint/large-table-background-change-with-visible-collapsed-borders.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.paint/large-table-background-change-with-zero-width-collapsed-borders.html"
     },
     {
-        "duration": "10.0",
+        "duration": "12.0",
         "name": "blink_perf.paint/large-table-collapsed-border-change-with-backgrounds.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.paint/large-table-collapsed-border-change-with-text.html"
     },
     {
-        "duration": "9.0",
+        "duration": "11.0",
         "name": "blink_perf.paint/large-table-collapsed-border-change.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.paint/large-table-repaint.html"
     },
     {
-        "duration": "9.0",
+        "duration": "11.0",
         "name": "blink_perf.paint/move-text-with-mask.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.paint/paint-offset-changes.html"
     },
     {
         "duration": "14.0",
+        "name": "blink_perf.paint/select-all-words.html"
+    },
+    {
+        "duration": "15.0",
         "name": "blink_perf.paint/transform-changes.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "blink_perf.parser/css-parser-yui.html"
     },
     {
-        "duration": "8.0",
+        "duration": "6.0",
         "name": "blink_perf.parser/html-parser-threaded.html"
     },
     {
-        "duration": "7.0",
+        "duration": "5.0",
         "name": "blink_perf.parser/html-parser.html"
     },
     {
-        "duration": "24.0",
+        "duration": "21.0",
         "name": "blink_perf.parser/html5-full-render.html"
     },
     {
-        "duration": "10.0",
+        "duration": "9.0",
         "name": "blink_perf.parser/iframe-append-remove.html"
     },
     {
@@ -872,7 +1064,7 @@
         "name": "blink_perf.parser/query-selector-all-class-deep.html"
     },
     {
-        "duration": "10.0",
+        "duration": "9.0",
         "name": "blink_perf.parser/query-selector-all-class-first.html"
     },
     {
@@ -888,19 +1080,19 @@
         "name": "blink_perf.parser/query-selector-all-deep.html"
     },
     {
-        "duration": "10.0",
+        "duration": "9.0",
         "name": "blink_perf.parser/query-selector-all-first.html"
     },
     {
-        "duration": "10.0",
+        "duration": "9.0",
         "name": "blink_perf.parser/query-selector-all-id-deep.html"
     },
     {
-        "duration": "10.0",
+        "duration": "9.0",
         "name": "blink_perf.parser/query-selector-all-id-first.html"
     },
     {
-        "duration": "10.0",
+        "duration": "9.0",
         "name": "blink_perf.parser/query-selector-all-id-last.html"
     },
     {
@@ -908,15 +1100,15 @@
         "name": "blink_perf.parser/query-selector-all-last.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/query-selector-deep.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/query-selector-first.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/query-selector-id-deep.html"
     },
     {
@@ -928,7 +1120,7 @@
         "name": "blink_perf.parser/query-selector-last.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/simple-url.html"
     },
     {
@@ -960,7 +1152,7 @@
         "name": "blink_perf.shadow_dom/imperative-api-assign.html"
     },
     {
-        "duration": "4.0",
+        "duration": "3.0",
         "name": "blink_perf.shadow_dom/imperative-api-assigned-elements.html"
     },
     {
@@ -976,11 +1168,11 @@
         "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary.html"
     },
     {
-        "duration": "4.0",
+        "duration": "3.0",
         "name": "blink_perf.shadow_dom/imperative-api-detail-summary-large.html"
     },
     {
-        "duration": "4.0",
+        "duration": "3.0",
         "name": "blink_perf.shadow_dom/imperative-api-detail-summary.html"
     },
     {
@@ -1048,7 +1240,7 @@
         "name": "blink_perf.shadow_dom/v0-small-distribution-with-layout.html"
     },
     {
-        "duration": "11.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html"
     },
     {
@@ -1060,19 +1252,19 @@
         "name": "blink_perf.shadow_dom/v1-host-child-append.html"
     },
     {
-        "duration": "11.0",
+        "duration": "7.0",
         "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html"
     },
     {
-        "duration": "19.0",
+        "duration": "17.0",
         "name": "blink_perf.shadow_dom/v1-large-deep-layout.html"
     },
     {
-        "duration": "4.0",
+        "duration": "3.0",
         "name": "blink_perf.shadow_dom/v1-large-shallow-distribution.html"
     },
     {
-        "duration": "4.0",
+        "duration": "3.0",
         "name": "blink_perf.shadow_dom/v1-large-shallow-layout.html"
     },
     {
@@ -1108,7 +1300,7 @@
         "name": "blink_perf.shadow_dom/v1-small-deep-distribution.html"
     },
     {
-        "duration": "5.0",
+        "duration": "4.0",
         "name": "blink_perf.shadow_dom/v1-small-deep-layout.html"
     },
     {
@@ -1120,7 +1312,7 @@
         "name": "blink_perf.shadow_dom/v1-small-shallow-layout.html"
     },
     {
-        "duration": "4.0",
+        "duration": "5.0",
         "name": "blink_perf.svg/AzLizardBenjiPark.html"
     },
     {
@@ -1128,7 +1320,7 @@
         "name": "blink_perf.svg/Bamboo.html"
     },
     {
-        "duration": "4.0",
+        "duration": "3.0",
         "name": "blink_perf.svg/Cactus.html"
     },
     {
@@ -1144,7 +1336,7 @@
         "name": "blink_perf.svg/Debian.html"
     },
     {
-        "duration": "4.0",
+        "duration": "3.0",
         "name": "blink_perf.svg/DropsOnABlade.html"
     },
     {
@@ -1156,7 +1348,7 @@
         "name": "blink_perf.svg/FoodLeifLodahl.html"
     },
     {
-        "duration": "5.0",
+        "duration": "4.0",
         "name": "blink_perf.svg/France.html"
     },
     {
@@ -1200,7 +1392,7 @@
         "name": "blink_perf.svg/SvgNestedUse.html"
     },
     {
-        "duration": "4.0",
+        "duration": "3.0",
         "name": "blink_perf.svg/UnderTheSee.html"
     },
     {
@@ -1212,7 +1404,7 @@
         "name": "blink_perf.svg/Worldcup.html"
     },
     {
-        "duration": "36.0",
+        "duration": "34.0",
         "name": "dromaeo/http://dromaeo.com?dom-attr"
     },
     {
@@ -1228,631 +1420,627 @@
         "name": "dromaeo/http://dromaeo.com?dom-traverse"
     },
     {
-        "duration": "9.0",
+        "duration": "3.0",
         "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html"
     },
     {
-        "duration": "169.0",
+        "duration": "171.0",
         "name": "jetstream/http://browserbench.org/JetStream/"
     },
     {
-        "duration": "23.0",
+        "duration": "21.0",
         "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html"
     },
     {
-        "duration": "19.0",
+        "duration": "11.0",
         "name": "loading.desktop/24h_cold"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "loading.desktop/24h_warm"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "loading.desktop/AirBnB_cold"
     },
     {
-        "duration": "35.0",
+        "duration": "23.0",
         "name": "loading.desktop/AirBnB_warm"
     },
     {
-        "duration": "14.0",
+        "duration": "20.0",
         "name": "loading.desktop/Aljayyash_cold"
     },
     {
-        "duration": "16.0",
+        "duration": "10.0",
         "name": "loading.desktop/Aljayyash_warm"
     },
     {
-        "duration": "55.0",
+        "duration": "25.0",
         "name": "loading.desktop/AllRecipes_warm"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "loading.desktop/ArsTechnica_cold"
     },
     {
-        "duration": "39.0",
+        "duration": "25.0",
         "name": "loading.desktop/ArsTechnica_warm"
     },
     {
-        "duration": "15.0",
+        "duration": "20.0",
         "name": "loading.desktop/Baidu_cold"
     },
     {
-        "duration": "17.0",
+        "duration": "10.0",
         "name": "loading.desktop/Baidu_warm"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "loading.desktop/Bhaskar_cold"
     },
     {
-        "duration": "29.0",
+        "duration": "18.0",
         "name": "loading.desktop/Bhaskar_warm"
     },
     {
-        "duration": "20.0",
+        "duration": "11.0",
         "name": "loading.desktop/Chosun_cold"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "loading.desktop/Chosun_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "11.0",
         "name": "loading.desktop/Colorado.edu_cold"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "loading.desktop/Colorado.edu_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "10.0",
         "name": "loading.desktop/Danawa_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "loading.desktop/Danawa_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "10.0",
         "name": "loading.desktop/Daum_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "loading.desktop/Daum_warm"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "loading.desktop/Donga_cold"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "loading.desktop/Donga_warm"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "loading.desktop/Economist_cold"
     },
     {
-        "duration": "32.0",
+        "duration": "23.0",
         "name": "loading.desktop/Economist_warm"
     },
     {
-        "duration": "30.0",
+        "duration": "18.0",
         "name": "loading.desktop/Elmundo_cold"
     },
     {
-        "duration": "17.0",
+        "duration": "9.0",
         "name": "loading.desktop/FC2Blog_cold"
     },
     {
-        "duration": "20.0",
+        "duration": "11.0",
         "name": "loading.desktop/FC2Blog_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "10.0",
         "name": "loading.desktop/FIFA_cold"
     },
     {
-        "duration": "24.0",
+        "duration": "15.0",
         "name": "loading.desktop/FIFA_warm"
     },
     {
-        "duration": "26.0",
+        "duration": "18.0",
         "name": "loading.desktop/FarsNews_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "loading.desktop/FarsNews_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "10.0",
         "name": "loading.desktop/Flickr_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "loading.desktop/Flickr_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "10.0",
         "name": "loading.desktop/FlipKart_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "loading.desktop/FlipKart_warm"
     },
     {
-        "duration": "14.0",
+        "duration": "8.0",
         "name": "loading.desktop/Free.fr_cold"
     },
     {
-        "duration": "17.0",
+        "duration": "10.0",
         "name": "loading.desktop/Free.fr_warm"
     },
     {
-        "duration": "15.0",
+        "duration": "9.0",
         "name": "loading.desktop/HTML5Rocks_cold"
     },
     {
-        "duration": "16.0",
+        "duration": "10.0",
         "name": "loading.desktop/HTML5Rocks_warm"
     },
     {
-        "duration": "15.0",
+        "duration": "9.0",
         "name": "loading.desktop/Haraj_cold"
     },
     {
-        "duration": "17.0",
+        "duration": "11.0",
         "name": "loading.desktop/Haraj_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "loading.desktop/HatenaBookmark_cold"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "loading.desktop/HatenaBookmark_warm"
     },
     {
-        "duration": "20.0",
+        "duration": "11.0",
         "name": "loading.desktop/IGN_cold"
     },
     {
-        "duration": "34.0",
+        "duration": "13.0",
         "name": "loading.desktop/IGN_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "10.0",
         "name": "loading.desktop/IMDB_cold"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "loading.desktop/IMDB_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "10.0",
         "name": "loading.desktop/IndiaTimes_cold"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "loading.desktop/IndiaTimes_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "10.0",
         "name": "loading.desktop/Kakaku_cold"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "loading.desktop/Kakaku_warm"
     },
     {
-        "duration": "29.0",
+        "duration": "14.0",
         "name": "loading.desktop/Kenh14_cold"
     },
     {
-        "duration": "46.0",
+        "duration": "22.0",
         "name": "loading.desktop/Kenh14_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "9.0",
         "name": "loading.desktop/Mercadolivre_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "loading.desktop/Mercadolivre_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "10.0",
         "name": "loading.desktop/Naver_cold"
     },
     {
-        "duration": "20.0",
+        "duration": "11.0",
         "name": "loading.desktop/Naver_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "10.0",
         "name": "loading.desktop/Pantip_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "23.0",
         "name": "loading.desktop/Pantip_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "loading.desktop/PremierLeague_cold"
     },
     {
-        "duration": "29.0",
+        "duration": "19.0",
         "name": "loading.desktop/PremierLeague_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "loading.desktop/QQ_cold"
     },
     {
-        "duration": "28.0",
+        "duration": "17.0",
         "name": "loading.desktop/QQ_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "loading.desktop/REI_cold"
     },
     {
-        "duration": "24.0",
+        "duration": "15.0",
         "name": "loading.desktop/REI_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "9.0",
         "name": "loading.desktop/Ruten_cold"
     },
     {
-        "duration": "19.0",
+        "duration": "11.0",
         "name": "loading.desktop/Ruten_warm"
     },
     {
-        "duration": "25.0",
+        "duration": "16.0",
         "name": "loading.desktop/Sina_cold"
     },
     {
-        "duration": "32.0",
+        "duration": "21.0",
         "name": "loading.desktop/Sina_warm"
     },
     {
-        "duration": "24.0",
+        "duration": "17.0",
         "name": "loading.desktop/Taobao_cold"
     },
     {
-        "duration": "31.0",
+        "duration": "23.0",
         "name": "loading.desktop/Taobao_warm"
     },
     {
-        "duration": "24.0",
-        "name": "loading.desktop/TheOnion_cold"
-    },
-    {
-        "duration": "24.0",
+        "duration": "21.0",
         "name": "loading.desktop/TheVerge_cold"
     },
     {
-        "duration": "32.0",
+        "duration": "21.0",
         "name": "loading.desktop/TheVerge_warm"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "loading.desktop/TicketMaster_cold"
     },
     {
-        "duration": "31.0",
+        "duration": "18.0",
         "name": "loading.desktop/TicketMaster_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "16.0",
         "name": "loading.desktop/Vietnamnet_cold"
     },
     {
-        "duration": "57.0",
+        "duration": "24.0",
         "name": "loading.desktop/Vietnamnet_warm"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "loading.desktop/Vnexpress_cold"
     },
     {
-        "duration": "36.0",
+        "duration": "21.0",
         "name": "loading.desktop/Vnexpress_warm"
     },
     {
-        "duration": "26.0",
-        "name": "loading.desktop/Walgreens_cold"
-    },
-    {
-        "duration": "36.0",
-        "name": "loading.desktop/Walgreens_warm"
-    },
-    {
-        "duration": "14.0",
+        "duration": "9.0",
         "name": "loading.desktop/Yandex_cold"
     },
     {
-        "duration": "17.0",
+        "duration": "10.0",
         "name": "loading.desktop/Yandex_warm"
     },
     {
-        "duration": "39.0",
+        "duration": "13.0",
         "name": "loading.desktop/amazon.co.jp_cold"
     },
     {
-        "duration": "29.0",
+        "duration": "18.0",
         "name": "loading.desktop/amazon.co.jp_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "10.0",
         "name": "loading.desktop/ja.wikipedia_cold"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "loading.desktop/ja.wikipedia_warm"
     },
     {
-        "duration": "27.0",
+        "duration": "15.0",
         "name": "loading.desktop/money.cnn_cold"
     },
     {
-        "duration": "36.0",
+        "duration": "23.0",
         "name": "loading.desktop/money.cnn_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "10.0",
         "name": "loading.desktop/ru.wikipedia_cold"
     },
     {
-        "duration": "18.0",
+        "duration": "11.0",
         "name": "loading.desktop/ru.wikipedia_warm"
     },
     {
-        "duration": "29.0",
+        "duration": "16.0",
         "name": "loading.desktop/uol.com.br_cold"
     },
     {
-        "duration": "39.0",
+        "duration": "23.0",
         "name": "loading.desktop/uol.com.br_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "10.0",
         "name": "loading.desktop/yahoo.co.jp_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "14.0",
         "name": "loading.desktop/yahoo.co.jp_warm"
     },
     {
-        "duration": "15.0",
+        "duration": "9.0",
         "name": "media.desktop/mse.html?media=aac_audio.mp4"
     },
     {
-        "duration": "16.0",
+        "duration": "8.0",
         "name": "media.desktop/mse.html?media=aac_audio.mp4,h264_video.mp4"
     },
     {
-        "duration": "16.0",
+        "duration": "9.0",
         "name": "media.desktop/mse.html?media=aac_audio.mp4,h264_video.mp4&waitForPageLoaded=true"
     },
     {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "media.desktop/mse.html?media=h264_video.mp4"
     },
     {
-        "duration": "22.0",
-        "name": "media.desktop/video.html?src=crowd.ogg&type=audio"
-    },
-    {
-        "duration": "24.0",
-        "name": "media.desktop/video.html?src=crowd1080.mp4"
-    },
-    {
-        "duration": "24.0",
-        "name": "media.desktop/video.html?src=crowd1080.webm"
-    },
-    {
-        "duration": "22.0",
-        "name": "media.desktop/video.html?src=crowd1080_vp9.webm"
-    },
-    {
-        "duration": "12.0",
-        "name": "media.desktop/video.html?src=crowd1080_vp9.webm&seek"
-    },
-    {
-        "duration": "21.0",
-        "name": "media.desktop/video.html?src=crowd720_vp9.webm"
-    },
-    {
-        "duration": "24.0",
-        "name": "media.desktop/video.html?src=garden2_10s.mp4"
-    },
-    {
-        "duration": "14.0",
-        "name": "media.desktop/video.html?src=garden2_10s.mp4&seek"
-    },
-    {
-        "duration": "23.0",
-        "name": "media.desktop/video.html?src=garden2_10s.webm"
-    },
-    {
-        "duration": "13.0",
-        "name": "media.desktop/video.html?src=garden2_10s.webm&seek"
+        "duration": "8.0",
+        "name": "media.desktop/mse.html?media=tulip0.av1.mp4"
     },
     {
         "duration": "15.0",
-        "name": "media.desktop/video.html?src=smpte_3840x2160_60fps_vp9.webm&seek"
+        "name": "media.desktop/video.html?src=crowd.ogg&type=audio"
     },
     {
-        "duration": "29.0",
-        "name": "media.desktop/video.html?src=tulip2.m4a&type=audio"
+        "duration": "15.0",
+        "name": "media.desktop/video.html?src=crowd1080.mp4"
     },
     {
-        "duration": "29.0",
-        "name": "media.desktop/video.html?src=tulip2.mp3&type=audio"
-    },
-    {
-        "duration": "12.0",
-        "name": "media.desktop/video.html?src=tulip2.mp3&type=audio&seek"
-    },
-    {
-        "duration": "31.0",
-        "name": "media.desktop/video.html?src=tulip2.mp4"
-    },
-    {
-        "duration": "32.0",
-        "name": "media.desktop/video.html?src=tulip2.mp4&busyjs"
-    },
-    {
-        "duration": "13.0",
-        "name": "media.desktop/video.html?src=tulip2.mp4&seek"
-    },
-    {
-        "duration": "29.0",
-        "name": "media.desktop/video.html?src=tulip2.ogg&type=audio"
-    },
-    {
-        "duration": "12.0",
-        "name": "media.desktop/video.html?src=tulip2.ogg&type=audio&seek"
-    },
-    {
-        "duration": "31.0",
-        "name": "media.desktop/video.html?src=tulip2.vp9.webm"
-    },
-    {
-        "duration": "24.0",
-        "name": "media.desktop/video.html?src=tulip2.vp9.webm&background"
+        "duration": "15.0",
+        "name": "media.desktop/video.html?src=crowd1080.webm"
     },
     {
         "duration": "14.0",
-        "name": "media.desktop/video.html?src=tulip2.vp9.webm&seek"
-    },
-    {
-        "duration": "29.0",
-        "name": "media.desktop/video.html?src=tulip2.wav&type=audio"
-    },
-    {
-        "duration": "12.0",
-        "name": "media.desktop/video.html?src=tulip2.wav&type=audio&seek"
-    },
-    {
-        "duration": "28.0",
-        "name": "memory.desktop/TrivialAnimationPageSharedPageState"
-    },
-    {
-        "duration": "28.0",
-        "name": "memory.desktop/TrivialBlinkingCursorPageSharedPageState"
-    },
-    {
-        "duration": "28.0",
-        "name": "memory.desktop/TrivialBlurAnimationPageSharedPageState"
-    },
-    {
-        "duration": "28.0",
-        "name": "memory.desktop/TrivialCanvasPageSharedPageState"
-    },
-    {
-        "duration": "28.0",
-        "name": "memory.desktop/TrivialFullscreenVideoPageSharedPageState"
-    },
-    {
-        "duration": "27.0",
-        "name": "memory.desktop/TrivialGifPageSharedPageState"
-    },
-    {
-        "duration": "29.0",
-        "name": "memory.desktop/TrivialScrollingPageSharedPageState"
-    },
-    {
-        "duration": "28.0",
-        "name": "memory.desktop/TrivialWebGLPageSharedPageState"
-    },
-    {
-        "duration": "48.0",
-        "name": "memory.desktop/WebWorker"
-    },
-    {
-        "duration": "164.0",
-        "name": "memory.long_running_idle_gmail_background_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "146.0",
-        "name": "memory.long_running_idle_gmail_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "40.0",
-        "name": "octane/http://chromium.github.io/octane/index.html?auto=1"
-    },
-    {
-        "duration": "46.0",
-        "name": "power.desktop/TrivialAnimationPageSharedPageState"
-    },
-    {
-        "duration": "43.0",
-        "name": "power.desktop/TrivialBlinkingCursorPageSharedPageState"
-    },
-    {
-        "duration": "45.0",
-        "name": "power.desktop/TrivialBlurAnimationPageSharedPageState"
-    },
-    {
-        "duration": "45.0",
-        "name": "power.desktop/TrivialCanvasPageSharedPageState"
-    },
-    {
-        "duration": "44.0",
-        "name": "power.desktop/TrivialFullscreenVideoPageSharedPageState"
-    },
-    {
-        "duration": "43.0",
-        "name": "power.desktop/TrivialGifPageSharedPageState"
-    },
-    {
-        "duration": "49.0",
-        "name": "power.desktop/TrivialScrollingPageSharedPageState"
-    },
-    {
-        "duration": "46.0",
-        "name": "power.desktop/TrivialWebGLPageSharedPageState"
-    },
-    {
-        "duration": "52.0",
-        "name": "power.desktop/abcnews"
-    },
-    {
-        "duration": "44.0",
-        "name": "power.desktop/indiatimes"
-    },
-    {
-        "duration": "48.0",
-        "name": "power.desktop/instagram"
-    },
-    {
-        "duration": "44.0",
-        "name": "power.desktop/microsoft"
-    },
-    {
-        "duration": "48.0",
-        "name": "power.desktop/sina"
-    },
-    {
-        "duration": "46.0",
-        "name": "power.desktop/slideshare"
-    },
-    {
-        "duration": "55.0",
-        "name": "power.desktop/uol"
+        "name": "media.desktop/video.html?src=crowd1080_vp9.webm"
     },
     {
         "duration": "7.0",
+        "name": "media.desktop/video.html?src=crowd1080_vp9.webm&seek"
+    },
+    {
+        "duration": "14.0",
+        "name": "media.desktop/video.html?src=crowd720_vp9.webm"
+    },
+    {
+        "duration": "16.0",
+        "name": "media.desktop/video.html?src=garden2_10s.mp4"
+    },
+    {
+        "duration": "7.0",
+        "name": "media.desktop/video.html?src=garden2_10s.mp4&seek"
+    },
+    {
+        "duration": "14.0",
+        "name": "media.desktop/video.html?src=garden2_10s.webm"
+    },
+    {
+        "duration": "7.0",
+        "name": "media.desktop/video.html?src=garden2_10s.webm&seek"
+    },
+    {
+        "duration": "9.0",
+        "name": "media.desktop/video.html?src=smpte_3840x2160_60fps_vp9.webm&seek"
+    },
+    {
+        "duration": "16.0",
+        "name": "media.desktop/video.html?src=tulip0.av1.mp4"
+    },
+    {
+        "duration": "8.0",
+        "name": "media.desktop/video.html?src=tulip0.av1.mp4&seek"
+    },
+    {
+        "duration": "22.0",
+        "name": "media.desktop/video.html?src=tulip2.m4a&type=audio"
+    },
+    {
+        "duration": "22.0",
+        "name": "media.desktop/video.html?src=tulip2.mp3&type=audio"
+    },
+    {
+        "duration": "7.0",
+        "name": "media.desktop/video.html?src=tulip2.mp3&type=audio&seek"
+    },
+    {
+        "duration": "22.0",
+        "name": "media.desktop/video.html?src=tulip2.mp4"
+    },
+    {
+        "duration": "22.0",
+        "name": "media.desktop/video.html?src=tulip2.mp4&busyjs"
+    },
+    {
+        "duration": "7.0",
+        "name": "media.desktop/video.html?src=tulip2.mp4&seek"
+    },
+    {
+        "duration": "22.0",
+        "name": "media.desktop/video.html?src=tulip2.ogg&type=audio"
+    },
+    {
+        "duration": "7.0",
+        "name": "media.desktop/video.html?src=tulip2.ogg&type=audio&seek"
+    },
+    {
+        "duration": "22.0",
+        "name": "media.desktop/video.html?src=tulip2.vp9.webm"
+    },
+    {
+        "duration": "15.0",
+        "name": "media.desktop/video.html?src=tulip2.vp9.webm&background"
+    },
+    {
+        "duration": "8.0",
+        "name": "media.desktop/video.html?src=tulip2.vp9.webm&seek"
+    },
+    {
+        "duration": "23.0",
+        "name": "media.desktop/video.html?src=tulip2.vp9.webm_WiFi"
+    },
+    {
+        "duration": "22.0",
+        "name": "media.desktop/video.html?src=tulip2.wav&type=audio"
+    },
+    {
+        "duration": "7.0",
+        "name": "media.desktop/video.html?src=tulip2.wav&type=audio&seek"
+    },
+    {
+        "duration": "21.0",
+        "name": "memory.desktop/TrivialAnimationPageSharedPageState"
+    },
+    {
+        "duration": "21.0",
+        "name": "memory.desktop/TrivialBlinkingCursorPageSharedPageState"
+    },
+    {
+        "duration": "21.0",
+        "name": "memory.desktop/TrivialBlurAnimationPageSharedPageState"
+    },
+    {
+        "duration": "22.0",
+        "name": "memory.desktop/TrivialCanvasPageSharedPageState"
+    },
+    {
+        "duration": "22.0",
+        "name": "memory.desktop/TrivialFullscreenVideoPageSharedPageState"
+    },
+    {
+        "duration": "21.0",
+        "name": "memory.desktop/TrivialGifPageSharedPageState"
+    },
+    {
+        "duration": "22.0",
+        "name": "memory.desktop/TrivialScrollingPageSharedPageState"
+    },
+    {
+        "duration": "21.0",
+        "name": "memory.desktop/TrivialWebGLPageSharedPageState"
+    },
+    {
+        "duration": "40.0",
+        "name": "memory.desktop/WebWorker"
+    },
+    {
+        "duration": "38.0",
+        "name": "octane/http://chromium.github.io/octane/index.html?auto=1"
+    },
+    {
+        "duration": "35.0",
+        "name": "power.desktop/TrivialAnimationPageSharedPageState"
+    },
+    {
+        "duration": "34.0",
+        "name": "power.desktop/TrivialBlinkingCursorPageSharedPageState"
+    },
+    {
+        "duration": "35.0",
+        "name": "power.desktop/TrivialBlurAnimationPageSharedPageState"
+    },
+    {
+        "duration": "35.0",
+        "name": "power.desktop/TrivialCanvasPageSharedPageState"
+    },
+    {
+        "duration": "35.0",
+        "name": "power.desktop/TrivialFullscreenVideoPageSharedPageState"
+    },
+    {
+        "duration": "34.0",
+        "name": "power.desktop/TrivialGifPageSharedPageState"
+    },
+    {
+        "duration": "35.0",
+        "name": "power.desktop/TrivialScrollingPageSharedPageState"
+    },
+    {
+        "duration": "35.0",
+        "name": "power.desktop/TrivialWebGLPageSharedPageState"
+    },
+    {
+        "duration": "42.0",
+        "name": "power.desktop/abcnews"
+    },
+    {
+        "duration": "36.0",
+        "name": "power.desktop/indiatimes"
+    },
+    {
+        "duration": "36.0",
+        "name": "power.desktop/instagram"
+    },
+    {
+        "duration": "35.0",
+        "name": "power.desktop/microsoft"
+    },
+    {
+        "duration": "39.0",
+        "name": "power.desktop/sina"
+    },
+    {
+        "duration": "36.0",
+        "name": "power.desktop/slideshare"
+    },
+    {
+        "duration": "38.0",
+        "name": "power.desktop/uol"
+    },
+    {
+        "duration": "6.0",
         "name": "rasterize_and_record_micro.partial_invalidation/800_relpos_divs.html"
     },
     {
-        "duration": "26.0",
+        "duration": "25.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html"
     },
     {
@@ -1864,7 +2052,7 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html"
     },
     {
-        "duration": "13.0",
+        "duration": "15.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html"
     },
     {
@@ -1908,23 +2096,23 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html"
     },
     {
-        "duration": "8.0",
+        "duration": "10.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html"
     },
     {
-        "duration": "16.0",
+        "duration": "17.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html"
     },
     {
-        "duration": "14.0",
+        "duration": "13.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html"
     },
     {
-        "duration": "20.0",
+        "duration": "18.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html"
     },
     {
@@ -1932,7 +2120,7 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html"
     },
     {
-        "duration": "24.0",
+        "duration": "25.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html"
     },
     {
@@ -1944,2227 +2132,2623 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html"
     },
     {
-        "duration": "26.0",
+        "duration": "20.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html"
     },
     {
-        "duration": "39.0",
+        "duration": "16.0",
         "name": "rendering.desktop/accu_weather_2018"
     },
     {
-        "duration": "6.0",
+        "duration": "17.0",
         "name": "rendering.desktop/accu_weather_pinch_2018"
     },
     {
-        "duration": "34.0",
+        "duration": "13.0",
         "name": "rendering.desktop/amazon_2018"
     },
     {
-        "duration": "6.0",
+        "duration": "10.0",
         "name": "rendering.desktop/amazon_pinch_2018"
     },
     {
-        "duration": "28.0",
+        "duration": "15.0",
         "name": "rendering.desktop/analog_clock_svg"
     },
     {
-        "duration": "27.0",
+        "duration": "12.0",
         "name": "rendering.desktop/animometer_webgl"
     },
     {
-        "duration": "30.0",
+        "duration": "11.0",
+        "name": "rendering.desktop/animometer_webgl_attrib_arrays"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/animometer_webgl_multi_draw"
+    },
+    {
+        "duration": "13.0",
         "name": "rendering.desktop/aquarium"
     },
     {
-        "duration": "47.0",
+        "duration": "22.0",
         "name": "rendering.desktop/aquarium_20k"
     },
     {
-        "duration": "31.0",
+        "duration": "21.0",
         "name": "rendering.desktop/background_color_animation"
     },
     {
-        "duration": "33.0",
+        "duration": "15.0",
         "name": "rendering.desktop/background_color_animation_with_gradient"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/balls_css_key_frame_animations"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.desktop/balls_css_key_frame_animations_composited_transform"
     },
     {
-        "duration": "32.0",
+        "duration": "14.0",
         "name": "rendering.desktop/balls_css_transition_2_properties"
     },
     {
-        "duration": "33.0",
+        "duration": "14.0",
         "name": "rendering.desktop/balls_css_transition_40_properties"
     },
     {
-        "duration": "32.0",
+        "duration": "14.0",
         "name": "rendering.desktop/balls_css_transition_all_properties"
     },
     {
-        "duration": "29.0",
+        "duration": "14.0",
         "name": "rendering.desktop/balls_javascript_canvas"
     },
     {
-        "duration": "35.0",
+        "duration": "14.0",
         "name": "rendering.desktop/balls_javascript_css"
     },
     {
-        "duration": "30.0",
+        "duration": "15.0",
         "name": "rendering.desktop/balls_svg_animations"
     },
     {
-        "duration": "27.0",
+        "duration": "12.0",
         "name": "rendering.desktop/blob"
     },
     {
-        "duration": "39.0",
+        "duration": "22.0",
         "name": "rendering.desktop/blogspot_2018"
     },
     {
-        "duration": "6.0",
+        "duration": "15.0",
         "name": "rendering.desktop/blogspot_pinch_2018"
     },
     {
-        "duration": "23.0",
+        "duration": "8.0",
+        "name": "rendering.desktop/blur_rotating_background"
+    },
+    {
+        "duration": "11.0",
         "name": "rendering.desktop/booking.com_2018"
     },
     {
-        "duration": "6.0",
+        "duration": "11.0",
         "name": "rendering.desktop/booking_pinch_2018"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/bouncing_balls_15"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/bouncing_balls_shadow"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/bouncing_clipped_rectangles"
     },
     {
-        "duration": "21.0",
+        "duration": "9.0",
         "name": "rendering.desktop/bouncing_gradient_circles"
     },
     {
-        "duration": "15.0",
+        "duration": "9.0",
         "name": "rendering.desktop/bouncing_png_images"
     },
     {
-        "duration": "30.0",
+        "duration": "10.0",
         "name": "rendering.desktop/bouncing_svg_images"
     },
     {
-        "duration": "43.0",
+        "duration": "13.0",
         "name": "rendering.desktop/camera_to_webgl"
     },
     {
-        "duration": "22.0",
+        "duration": "11.0",
         "name": "rendering.desktop/canvas_05000_pixels_per_second"
     },
     {
-        "duration": "21.0",
+        "duration": "10.0",
         "name": "rendering.desktop/canvas_10000_pixels_per_second"
     },
     {
-        "duration": "18.0",
-        "name": "rendering.desktop/canvas_15000_pixels_per_second"
-    },
-    {
-        "duration": "17.0",
+        "duration": "8.0",
         "name": "rendering.desktop/canvas_20000_pixels_per_second"
     },
     {
-        "duration": "15.0",
-        "name": "rendering.desktop/canvas_30000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
+        "duration": "7.0",
         "name": "rendering.desktop/canvas_40000_pixels_per_second"
     },
     {
-        "duration": "13.0",
-        "name": "rendering.desktop/canvas_50000_pixels_per_second"
-    },
-    {
-        "duration": "13.0",
+        "duration": "6.0",
         "name": "rendering.desktop/canvas_60000_pixels_per_second"
     },
     {
-        "duration": "13.0",
+        "duration": "6.0",
         "name": "rendering.desktop/canvas_75000_pixels_per_second"
     },
     {
-        "duration": "13.0",
+        "duration": "7.0",
         "name": "rendering.desktop/canvas_90000_pixels_per_second"
     },
     {
-        "duration": "23.0",
+        "duration": "9.0",
         "name": "rendering.desktop/canvas_animation_no_clear"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/canvas_arcs"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/canvas_font_cycler"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/canvas_lines"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/canvas_to_blob"
     },
     {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "rendering.desktop/cats_unscaled"
     },
     {
-        "duration": "14.0",
+        "duration": "7.0",
         "name": "rendering.desktop/cats_viewport_width"
     },
     {
-        "duration": "28.0",
+        "duration": "17.0",
         "name": "rendering.desktop/cc_poster_circle"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.desktop/cc_scroll_200_layer_grid"
-    },
-    {
-        "duration": "19.0",
+        "duration": "10.0",
         "name": "rendering.desktop/cc_scroll_text_only"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "rendering.desktop/chip_tune"
     },
     {
-        "duration": "32.0",
+        "duration": "13.0",
         "name": "rendering.desktop/cnn_2018"
     },
     {
-        "duration": "6.0",
+        "duration": "13.0",
         "name": "rendering.desktop/cnn_pinch_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "rendering.desktop/compositor_heavy_animation"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "rendering.desktop/crafty_mind"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_animations_many_keyframes"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_animations_simultaneous_inline_style"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_animations_simultaneous_new_element"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_animations_simultaneous_style_element"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_animations_simultaneous_updating_class"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_animations_staggered_infinite_iterations"
     },
     {
-        "duration": "29.0",
+        "duration": "15.0",
         "name": "rendering.desktop/css_animations_staggered_inline_style"
     },
     {
-        "duration": "30.0",
+        "duration": "15.0",
         "name": "rendering.desktop/css_animations_staggered_new_element"
     },
     {
-        "duration": "30.0",
+        "duration": "15.0",
         "name": "rendering.desktop/css_animations_staggered_style_element"
     },
     {
-        "duration": "29.0",
+        "duration": "15.0",
         "name": "rendering.desktop/css_animations_staggered_updating_class"
     },
     {
-        "duration": "29.0",
+        "duration": "15.0",
         "name": "rendering.desktop/css_animations_triggered_inline_style"
     },
     {
-        "duration": "30.0",
+        "duration": "15.0",
         "name": "rendering.desktop/css_animations_triggered_new_element"
     },
     {
-        "duration": "30.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_animations_triggered_style_element"
     },
     {
-        "duration": "29.0",
+        "duration": "20.0",
         "name": "rendering.desktop/css_animations_triggered_updating_class"
     },
     {
-        "duration": "28.0",
+        "duration": "17.0",
         "name": "rendering.desktop/css_opacity_plus_n_layers_99"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_inline_style"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_new_element"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_staggered_inline_style"
     },
     {
-        "duration": "28.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_staggered_new_element"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_staggered_style_element"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_staggered_updating_class"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_style_element"
     },
     {
-        "duration": "29.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_triggered_inline_style"
     },
     {
-        "duration": "29.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_triggered_new_element"
     },
     {
-        "duration": "35.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_triggered_style_element"
     },
     {
-        "duration": "29.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_triggered_updating_class"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_updating_class"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_value_type_color"
     },
     {
-        "duration": "34.0",
+        "duration": "15.0",
         "name": "rendering.desktop/css_value_type_filter"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_value_type_length"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_value_type_length_complex"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_value_type_length_simple"
     },
     {
-        "duration": "28.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_value_type_path"
     },
     {
-        "duration": "30.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_value_type_shadow"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_value_type_transform_complex"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_value_type_transform_simple"
     },
     {
-        "duration": "28.0",
+        "duration": "12.0",
         "name": "rendering.desktop/dynamic_cube_map"
     },
     {
-        "duration": "23.0",
+        "duration": "11.0",
         "name": "rendering.desktop/earth"
     },
     {
-        "duration": "26.0",
+        "duration": "11.0",
         "name": "rendering.desktop/ebay_2018"
     },
     {
-        "duration": "6.0",
+        "duration": "19.0",
         "name": "rendering.desktop/ebay_pinch_2018"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "rendering.desktop/effect_games"
     },
     {
-        "duration": "35.0",
+        "duration": "18.0",
         "name": "rendering.desktop/espn_2018"
     },
     {
-        "duration": "6.0",
+        "duration": "12.0",
         "name": "rendering.desktop/espn_pinch_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.desktop/extra_large_texture_uploads"
     },
     {
-        "duration": "23.0",
+        "duration": "10.0",
         "name": "rendering.desktop/facebook_2018"
     },
     {
-        "duration": "6.0",
+        "duration": "11.0",
         "name": "rendering.desktop/facebook_pinch_2018"
     },
     {
-        "duration": "21.0",
+        "duration": "9.0",
         "name": "rendering.desktop/fill_shapes"
     },
     {
-        "duration": "28.0",
+        "duration": "16.0",
         "name": "rendering.desktop/filter_terrain_svg"
     },
     {
-        "duration": "18.0",
+        "duration": "9.0",
         "name": "rendering.desktop/geo_apis"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "rendering.desktop/gmail_2018"
     },
     {
-        "duration": "55.0",
+        "duration": "41.0",
         "name": "rendering.desktop/gmail_move_2018"
     },
     {
-        "duration": "6.0",
+        "duration": "11.0",
         "name": "rendering.desktop/gmail_pinch_2018"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "rendering.desktop/google_calendar_2018"
     },
     {
-        "duration": "6.0",
+        "duration": "10.0",
         "name": "rendering.desktop/google_calendar_pinch_2018"
     },
     {
-        "duration": "30.0",
+        "duration": "12.0",
         "name": "rendering.desktop/google_docs_2018"
     },
     {
-        "duration": "6.0",
+        "duration": "9.0",
         "name": "rendering.desktop/google_image_pinch_2018"
     },
     {
-        "duration": "24.0",
+        "duration": "10.0",
         "name": "rendering.desktop/google_image_search_2018"
     },
     {
-        "duration": "23.0",
+        "duration": "11.0",
         "name": "rendering.desktop/google_plus_2018"
     },
     {
-        "duration": "6.0",
+        "duration": "9.0",
         "name": "rendering.desktop/google_search_pinch_2018"
     },
     {
-        "duration": "21.0",
+        "duration": "9.0",
         "name": "rendering.desktop/google_web_search_2018"
     },
     {
-        "duration": "29.0",
+        "duration": "15.0",
         "name": "rendering.desktop/guimark_vector_chart"
     },
     {
-        "duration": "22.0",
+        "duration": "10.0",
         "name": "rendering.desktop/hakim"
     },
     {
-        "duration": "36.0",
+        "duration": "25.0",
         "name": "rendering.desktop/ie_chalkboard"
     },
     {
-        "duration": "33.0",
+        "duration": "18.0",
         "name": "rendering.desktop/ie_pirate_mark"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.desktop/infinite_scroll_element_n_layers_99"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
+        "name": "rendering.desktop/infinite_scroll_root_fixed_n_layers_99"
+    },
+    {
+        "duration": "15.0",
         "name": "rendering.desktop/infinite_scroll_root_n_layers_99"
     },
     {
-        "duration": "25.0",
+        "duration": "11.0",
         "name": "rendering.desktop/jarro_doverson"
     },
     {
-        "duration": "36.0",
+        "duration": "18.0",
         "name": "rendering.desktop/js_full_screen_invalidation"
     },
     {
-        "duration": "31.0",
+        "duration": "17.0",
         "name": "rendering.desktop/js_opacity_plus_n_layers_99"
     },
     {
-        "duration": "32.0",
+        "duration": "17.0",
         "name": "rendering.desktop/js_paint_plus_n_layers_99"
     },
     {
-        "duration": "31.0",
+        "duration": "17.0",
         "name": "rendering.desktop/js_poster_circle"
     },
     {
-        "duration": "26.0",
-        "name": "rendering.desktop/js_scroll_200_layer_grid"
-    },
-    {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.desktop/js_scroll_text_only"
     },
     {
-        "duration": "22.0",
+        "duration": "11.0",
         "name": "rendering.desktop/kevs_3d"
     },
     {
-        "duration": "24.0",
+        "duration": "21.0",
         "name": "rendering.desktop/keyframed_animations"
     },
     {
-        "duration": "29.0",
+        "duration": "15.0",
         "name": "rendering.desktop/large_texture_uploads"
     },
     {
-        "duration": "26.0",
+        "duration": "11.0",
         "name": "rendering.desktop/linkedin_2018"
     },
     {
-        "duration": "6.0",
+        "duration": "15.0",
         "name": "rendering.desktop/linkedin_pinch_2018"
     },
     {
-        "duration": "35.0",
+        "duration": "10.0",
         "name": "rendering.desktop/man_in_blue"
     },
     {
-        "duration": "26.0",
+        "duration": "11.0",
         "name": "rendering.desktop/many_images"
     },
     {
-        "duration": "24.0",
+        "duration": "12.0",
         "name": "rendering.desktop/many_planets_deep"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "rendering.desktop/maps_move_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "15.0",
         "name": "rendering.desktop/maps_perf_test"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/medium_texture_uploads"
     },
     {
-        "duration": "20.0",
+        "duration": "10.0",
         "name": "rendering.desktop/megi_dish"
     },
     {
-        "duration": "21.0",
+        "duration": "10.0",
         "name": "rendering.desktop/microsoft_asteroid_belt"
     },
     {
-        "duration": "31.0",
+        "duration": "10.0",
         "name": "rendering.desktop/microsoft_fireflies"
     },
     {
-        "duration": "20.0",
+        "duration": "10.0",
         "name": "rendering.desktop/microsoft_fish_ie_tank"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
+        "name": "rendering.desktop/microsoft_performance"
+    },
+    {
+        "duration": "10.0",
         "name": "rendering.desktop/microsoft_snow"
     },
     {
-        "duration": "19.0",
+        "duration": "10.0",
         "name": "rendering.desktop/microsoft_speed_reading"
     },
     {
-        "duration": "20.0",
+        "duration": "10.0",
         "name": "rendering.desktop/microsoft_tweet_map"
     },
     {
-        "duration": "26.0",
+        "duration": "11.0",
         "name": "rendering.desktop/microsoft_video_city"
     },
     {
-        "duration": "22.0",
+        "duration": "10.0",
         "name": "rendering.desktop/microsoft_worker_fountains"
     },
     {
-        "duration": "19.0",
+        "duration": "10.0",
         "name": "rendering.desktop/mix_10k"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "rendering.desktop/mix_blend_mode_animation_difference"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "rendering.desktop/mix_blend_mode_animation_hue"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/mix_blend_mode_animation_propagating_isolation"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "rendering.desktop/mix_blend_mode_animation_screen"
     },
     {
-        "duration": "29.0",
+        "duration": "15.0",
         "name": "rendering.desktop/motion_mark_canvas_fill_shapes"
     },
     {
-        "duration": "27.0",
+        "duration": "15.0",
         "name": "rendering.desktop/motion_mark_canvas_stroke_shapes"
     },
     {
-        "duration": "28.0",
-        "name": "rendering.desktop/motion_mark_focus"
-    },
-    {
-        "duration": "33.0",
+        "duration": "17.0",
         "name": "rendering.desktop/new_tilings"
     },
     {
-        "duration": "24.0",
+        "duration": "11.0",
         "name": "rendering.desktop/nvidia_vertex_buffer_object"
     },
     {
-        "duration": "48.0",
+        "duration": "15.0",
         "name": "rendering.desktop/overlay_background_color_css_transitions_page"
     },
     {
-        "duration": "23.0",
+        "duration": "11.0",
         "name": "rendering.desktop/particles"
     },
     {
-        "duration": "33.0",
+        "duration": "21.0",
         "name": "rendering.desktop/pinterest_2018"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/put_get_image_data"
     },
     {
-        "duration": "23.0",
+        "duration": "11.0",
         "name": "rendering.desktop/raf"
     },
     {
-        "duration": "23.0",
+        "duration": "11.0",
         "name": "rendering.desktop/raf_animation"
     },
     {
-        "duration": "22.0",
+        "duration": "11.0",
         "name": "rendering.desktop/raf_canvas"
     },
     {
-        "duration": "23.0",
+        "duration": "11.0",
         "name": "rendering.desktop/raf_touch_animation"
     },
     {
-        "duration": "19.0",
+        "duration": "11.0",
+        "name": "rendering.desktop/repaint_amazon_2018"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.desktop/repaint_cnn_2018"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.desktop/repaint_facebook_2018"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.desktop/repaint_google_search_2018"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.desktop/repaint_instagram_2018"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.desktop/repaint_reddit_2018"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.desktop/repaint_theverge_2018"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.desktop/repaint_twitter_2018"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.desktop/repaint_wikipedia_2018"
+    },
+    {
+        "duration": "10.0",
+        "name": "rendering.desktop/repaint_yahoo_homepage_2018"
+    },
+    {
+        "duration": "9.0",
         "name": "rendering.desktop/runway"
     },
     {
-        "duration": "23.0",
+        "duration": "11.0",
         "name": "rendering.desktop/san_angeles"
     },
     {
-        "duration": "13.0",
+        "duration": "7.0",
         "name": "rendering.desktop/second_batch_js_heavy"
     },
     {
-        "duration": "13.0",
+        "duration": "7.0",
         "name": "rendering.desktop/second_batch_js_light"
     },
     {
-        "duration": "13.0",
+        "duration": "7.0",
         "name": "rendering.desktop/second_batch_js_medium"
     },
     {
-        "duration": "21.0",
+        "duration": "19.0",
         "name": "rendering.desktop/simple_text_page"
     },
     {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "rendering.desktop/simple_touch_drag"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "rendering.desktop/small_texture_uploads"
     },
     {
-        "duration": "24.0",
+        "duration": "12.0",
         "name": "rendering.desktop/smash_cat"
     },
     {
-        "duration": "18.0",
+        "duration": "10.0",
         "name": "rendering.desktop/spielzeugz"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/stroke_shapes"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/sync_scroll_offset"
     },
     {
-        "duration": "33.0",
+        "duration": "20.0",
         "name": "rendering.desktop/techcrunch_2018"
     },
     {
-        "duration": "21.0",
+        "duration": "11.0",
         "name": "rendering.desktop/text_05000_pixels_per_second"
     },
     {
-        "duration": "20.0",
+        "duration": "10.0",
         "name": "rendering.desktop/text_10000_pixels_per_second"
     },
     {
-        "duration": "17.0",
-        "name": "rendering.desktop/text_15000_pixels_per_second"
-    },
-    {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "rendering.desktop/text_20000_pixels_per_second"
     },
     {
-        "duration": "14.0",
-        "name": "rendering.desktop/text_30000_pixels_per_second"
-    },
-    {
-        "duration": "13.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_40000_pixels_per_second"
     },
     {
-        "duration": "13.0",
-        "name": "rendering.desktop/text_50000_pixels_per_second"
-    },
-    {
-        "duration": "12.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_60000_pixels_per_second"
     },
     {
-        "duration": "12.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_75000_pixels_per_second"
     },
     {
-        "duration": "12.0",
+        "duration": "8.0",
         "name": "rendering.desktop/text_90000_pixels_per_second"
     },
     {
-        "duration": "24.0",
+        "duration": "11.0",
         "name": "rendering.desktop/text_constant_full_page_raster_05000_pixels_per_second"
     },
     {
-        "duration": "23.0",
+        "duration": "11.0",
         "name": "rendering.desktop/text_constant_full_page_raster_10000_pixels_per_second"
     },
     {
-        "duration": "19.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_15000_pixels_per_second"
-    },
-    {
-        "duration": "17.0",
+        "duration": "8.0",
         "name": "rendering.desktop/text_constant_full_page_raster_20000_pixels_per_second"
     },
     {
-        "duration": "15.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_30000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
+        "duration": "8.0",
         "name": "rendering.desktop/text_constant_full_page_raster_40000_pixels_per_second"
     },
     {
-        "duration": "14.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_50000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_constant_full_page_raster_60000_pixels_per_second"
     },
     {
-        "duration": "13.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_constant_full_page_raster_75000_pixels_per_second"
     },
     {
-        "duration": "13.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_constant_full_page_raster_90000_pixels_per_second"
     },
     {
-        "duration": "21.0",
+        "duration": "11.0",
         "name": "rendering.desktop/text_hover_05000_pixels_per_second"
     },
     {
-        "duration": "20.0",
+        "duration": "10.0",
         "name": "rendering.desktop/text_hover_10000_pixels_per_second"
     },
     {
-        "duration": "17.0",
-        "name": "rendering.desktop/text_hover_15000_pixels_per_second"
-    },
-    {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "rendering.desktop/text_hover_20000_pixels_per_second"
     },
     {
-        "duration": "14.0",
-        "name": "rendering.desktop/text_hover_30000_pixels_per_second"
-    },
-    {
-        "duration": "13.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_hover_40000_pixels_per_second"
     },
     {
-        "duration": "12.0",
-        "name": "rendering.desktop/text_hover_50000_pixels_per_second"
-    },
-    {
-        "duration": "12.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_hover_60000_pixels_per_second"
     },
     {
-        "duration": "13.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_hover_75000_pixels_per_second"
     },
     {
-        "duration": "11.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_hover_90000_pixels_per_second"
     },
     {
-        "duration": "21.0",
+        "duration": "11.0",
         "name": "rendering.desktop/touch_handler_scrolling"
     },
     {
-        "duration": "29.0",
+        "duration": "14.0",
         "name": "rendering.desktop/transform_transitions"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "rendering.desktop/transform_transitions_js_block"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/twitch_2018"
     },
     {
-        "duration": "6.0",
+        "duration": "14.0",
         "name": "rendering.desktop/twitch_pinch_2018"
     },
     {
-        "duration": "31.0",
+        "duration": "14.0",
         "name": "rendering.desktop/twitter_2018"
     },
     {
-        "duration": "6.0",
+        "duration": "11.0",
         "name": "rendering.desktop/twitter_pinch_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "rendering.desktop/web_animation_value_type_color"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.desktop/web_animation_value_type_length_3d"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "rendering.desktop/web_animation_value_type_length_complex"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "rendering.desktop/web_animation_value_type_length_simple"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/web_animation_value_type_path"
     },
     {
-        "duration": "30.0",
+        "duration": "14.0",
         "name": "rendering.desktop/web_animation_value_type_shadow"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/web_animation_value_type_transform_complex"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.desktop/web_animation_value_type_transform_simple"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "rendering.desktop/web_animations_many_keyframes"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.desktop/web_animations_set_current_time"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.desktop/web_animations_simultaneous"
     },
     {
-        "duration": "29.0",
+        "duration": "15.0",
         "name": "rendering.desktop/web_animations_staggered_chaining"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "rendering.desktop/web_animations_staggered_infinite_iterations"
     },
     {
-        "duration": "29.0",
+        "duration": "15.0",
         "name": "rendering.desktop/web_animations_staggered_triggering_page"
     },
     {
-        "duration": "30.0",
+        "duration": "15.0",
         "name": "rendering.desktop/wikipedia_2018"
     },
     {
-        "duration": "29.0",
+        "duration": "15.0",
         "name": "rendering.desktop/wordpress_2018"
     },
     {
-        "duration": "18.0",
+        "duration": "9.0",
         "name": "rendering.desktop/yahoo_answers_2018"
     },
     {
-        "duration": "30.0",
+        "duration": "12.0",
         "name": "rendering.desktop/yahoo_news_2018"
     },
     {
-        "duration": "6.0",
+        "duration": "11.0",
         "name": "rendering.desktop/yahoo_news_pinch_2018"
     },
     {
-        "duration": "33.0",
+        "duration": "12.0",
         "name": "rendering.desktop/yahoo_sports_2018"
     },
     {
-        "duration": "6.0",
+        "duration": "12.0",
         "name": "rendering.desktop/yahoo_sports_pinch_2018"
     },
     {
-        "duration": "23.0",
+        "duration": "9.0",
         "name": "rendering.desktop/youtube_2018"
     },
     {
-        "duration": "6.0",
+        "duration": "11.0",
         "name": "rendering.desktop/youtube_pinch_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "12.0",
         "name": "rendering.desktop/yuv_decoding"
     },
     {
-        "duration": "53.0",
+        "duration": "36.0",
         "name": "speedometer-future/http://browserbench.org/Speedometer/"
     },
     {
-        "duration": "36.0",
+        "duration": "35.0",
         "name": "speedometer/http://browserbench.org/Speedometer/"
     },
     {
-        "duration": "72.0",
+        "duration": "66.0",
         "name": "speedometer2-future/Speedometer2"
     },
     {
-        "duration": "72.0",
+        "duration": "65.0",
         "name": "speedometer2/Speedometer2"
     },
     {
-        "duration": "76.0",
+        "duration": "62.0",
         "name": "system_health.common_desktop/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "98.0",
+        "duration": "40.0",
+        "name": "system_health.common_desktop/browse:media:googleplaystore:2018"
+    },
+    {
+        "duration": "73.0",
         "name": "system_health.common_desktop/browse:media:imgur"
     },
     {
-        "duration": "70.0",
+        "duration": "58.0",
         "name": "system_health.common_desktop/browse:media:pinterest"
     },
     {
-        "duration": "114.0",
-        "name": "system_health.common_desktop/browse:media:tumblr"
+        "duration": "84.0",
+        "name": "system_health.common_desktop/browse:media:pinterest:2018"
     },
     {
-        "duration": "79.0",
+        "duration": "55.0",
+        "name": "system_health.common_desktop/browse:media:tumblr:2018"
+    },
+    {
+        "duration": "59.0",
         "name": "system_health.common_desktop/browse:media:youtube"
     },
     {
-        "duration": "95.0",
-        "name": "system_health.common_desktop/browse:news:cnn"
-    },
-    {
-        "duration": "65.0",
-        "name": "system_health.common_desktop/browse:news:cnn:2018"
-    },
-    {
-        "duration": "62.0",
-        "name": "system_health.common_desktop/browse:news:flipboard"
-    },
-    {
-        "duration": "58.0",
-        "name": "system_health.common_desktop/browse:news:hackernews"
-    },
-    {
-        "duration": "122.0",
-        "name": "system_health.common_desktop/browse:news:nytimes"
-    },
-    {
-        "duration": "75.0",
-        "name": "system_health.common_desktop/browse:news:reddit"
-    },
-    {
-        "duration": "55.0",
-        "name": "system_health.common_desktop/browse:search:google"
-    },
-    {
-        "duration": "55.0",
-        "name": "system_health.common_desktop/browse:search:google:2018"
-    },
-    {
-        "duration": "41.0",
-        "name": "system_health.common_desktop/browse:search:google_india"
-    },
-    {
-        "duration": "76.0",
-        "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "91.0",
-        "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll:2018"
-    },
-    {
-        "duration": "89.0",
-        "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "52.0",
-        "name": "system_health.common_desktop/browse:social:twitter"
-    },
-    {
-        "duration": "78.0",
-        "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "74.0",
-        "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "77.0",
-        "name": "system_health.common_desktop/browse:tools:earth"
-    },
-    {
-        "duration": "63.0",
-        "name": "system_health.common_desktop/browse:tools:maps"
-    },
-    {
-        "duration": "33.0",
-        "name": "system_health.common_desktop/browse_accessibility:media:youtube"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.common_desktop/browse_accessibility:tech:codesearch"
-    },
-    {
-        "duration": "35.0",
-        "name": "system_health.common_desktop/browse_accessibility:tech:codesearch:2018"
-    },
-    {
-        "duration": "18.0",
-        "name": "system_health.common_desktop/load:chrome:blank"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.common_desktop/load:games:alphabetty"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.common_desktop/load:games:bubbles"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.common_desktop/load:games:lazors"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_desktop/load:games:miniclip"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.common_desktop/load:games:spychase"
-    },
-    {
-        "duration": "39.0",
-        "name": "system_health.common_desktop/load:media:9gag"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.common_desktop/load:media:dailymotion"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.common_desktop/load:media:google_images"
-    },
-    {
-        "duration": "29.0",
-        "name": "system_health.common_desktop/load:media:imgur"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.common_desktop/load:media:soundcloud"
-    },
-    {
-        "duration": "26.0",
-        "name": "system_health.common_desktop/load:media:youtube"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.common_desktop/load:news:bbc"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.common_desktop/load:news:cnn"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:news:flipboard"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.common_desktop/load:news:hackernews"
-    },
-    {
-        "duration": "28.0",
-        "name": "system_health.common_desktop/load:news:nytimes"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.common_desktop/load:news:qq"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.common_desktop/load:news:reddit"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:news:wikipedia"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:search:amazon"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.common_desktop/load:search:baidu"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.common_desktop/load:search:ebay"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.common_desktop/load:search:google"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:search:taobao"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.common_desktop/load:search:yahoo"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.common_desktop/load:search:yandex"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:social:instagram"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.common_desktop/load:social:pinterest"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:social:vk"
-    },
-    {
-        "duration": "38.0",
-        "name": "system_health.common_desktop/load:tools:docs"
-    },
-    {
-        "duration": "34.0",
-        "name": "system_health.common_desktop/load:tools:drive"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:tools:dropbox"
-    },
-    {
-        "duration": "27.0",
-        "name": "system_health.common_desktop/load:tools:gmail"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:tools:stackoverflow"
-    },
-    {
-        "duration": "31.0",
-        "name": "system_health.common_desktop/load:tools:weather"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.common_desktop/load_accessibility:media:wikipedia"
-    },
-    {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load_accessibility:media:wikipedia:2018"
-    },
-    {
-        "duration": "44.0",
-        "name": "system_health.common_desktop/load_accessibility:shopping:amazon"
-    },
-    {
-        "duration": "130.0",
-        "name": "system_health.common_desktop/long_running:tools:gmail-background"
-    },
-    {
-        "duration": "137.0",
-        "name": "system_health.common_desktop/long_running:tools:gmail-foreground"
-    },
-    {
-        "duration": "57.0",
-        "name": "system_health.common_desktop/play:media:google_play_music"
-    },
-    {
-        "duration": "57.0",
-        "name": "system_health.common_desktop/play:media:soundcloud"
-    },
-    {
-        "duration": "71.0",
-        "name": "system_health.memory_desktop/browse:media:imgur"
-    },
-    {
-        "duration": "62.0",
-        "name": "system_health.memory_desktop/browse:media:pinterest"
+        "duration": "61.0",
+        "name": "system_health.common_desktop/browse:media:youtube:2018"
     },
     {
         "duration": "61.0",
-        "name": "system_health.memory_desktop/browse:media:youtube"
+        "name": "system_health.common_desktop/browse:media:youtubetv:2019"
     },
     {
-        "duration": "62.0",
-        "name": "system_health.memory_desktop/browse:news:cnn"
+        "duration": "70.0",
+        "name": "system_health.common_desktop/browse:news:cnn"
     },
     {
-        "duration": "47.0",
-        "name": "system_health.memory_desktop/browse:news:cnn:2018"
-    },
-    {
-        "duration": "51.0",
-        "name": "system_health.memory_desktop/browse:news:flipboard"
-    },
-    {
-        "duration": "68.0",
-        "name": "system_health.memory_desktop/browse:news:nytimes"
-    },
-    {
-        "duration": "62.0",
-        "name": "system_health.memory_desktop/browse:news:reddit"
+        "duration": "46.0",
+        "name": "system_health.common_desktop/browse:news:cnn:2018"
     },
     {
         "duration": "49.0",
-        "name": "system_health.memory_desktop/browse:search:google"
+        "name": "system_health.common_desktop/browse:news:flipboard"
     },
     {
-        "duration": "48.0",
-        "name": "system_health.memory_desktop/browse:search:google:2018"
+        "duration": "49.0",
+        "name": "system_health.common_desktop/browse:news:flipboard:2018"
     },
     {
-        "duration": "37.0",
-        "name": "system_health.memory_desktop/browse:search:google_india"
+        "duration": "50.0",
+        "name": "system_health.common_desktop/browse:news:hackernews"
     },
     {
-        "duration": "67.0",
-        "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll"
+        "duration": "62.0",
+        "name": "system_health.common_desktop/browse:news:hackernews:2018"
     },
     {
-        "duration": "69.0",
-        "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll:2018"
+        "duration": "97.0",
+        "name": "system_health.common_desktop/browse:news:nytimes"
     },
     {
-        "duration": "65.0",
-        "name": "system_health.memory_desktop/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "47.0",
-        "name": "system_health.memory_desktop/browse:social:twitter"
-    },
-    {
-        "duration": "64.0",
-        "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll"
+        "duration": "72.0",
+        "name": "system_health.common_desktop/browse:news:nytimes:2018"
     },
     {
         "duration": "63.0",
-        "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll:2018"
+        "name": "system_health.common_desktop/browse:news:reddit"
     },
     {
-        "duration": "56.0",
-        "name": "system_health.memory_desktop/browse:tools:earth"
+        "duration": "49.0",
+        "name": "system_health.common_desktop/browse:news:reddit:2018"
     },
     {
-        "duration": "52.0",
-        "name": "system_health.memory_desktop/browse:tools:maps"
+        "duration": "47.0",
+        "name": "system_health.common_desktop/browse:search:google"
     },
     {
-        "duration": "27.0",
-        "name": "system_health.memory_desktop/browse_accessibility:media:youtube"
+        "duration": "45.0",
+        "name": "system_health.common_desktop/browse:search:google:2018"
     },
     {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch"
-    },
-    {
-        "duration": "30.0",
-        "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch:2018"
-    },
-    {
-        "duration": "16.0",
-        "name": "system_health.memory_desktop/load:chrome:blank"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:games:alphabetty"
-    },
-    {
-        "duration": "20.0",
-        "name": "system_health.memory_desktop/load:games:bubbles"
-    },
-    {
-        "duration": "19.0",
-        "name": "system_health.memory_desktop/load:games:lazors"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.memory_desktop/load:games:miniclip"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.memory_desktop/load:games:spychase"
+        "duration": "33.0",
+        "name": "system_health.common_desktop/browse:search:google_india"
     },
     {
         "duration": "32.0",
-        "name": "system_health.memory_desktop/load:media:9gag"
+        "name": "system_health.common_desktop/browse:search:google_india:2018"
     },
     {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:media:dailymotion"
+        "duration": "62.0",
+        "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:media:google_images"
+        "duration": "70.0",
+        "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "24.0",
-        "name": "system_health.memory_desktop/load:media:imgur"
+        "duration": "65.0",
+        "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "24.0",
-        "name": "system_health.memory_desktop/load:media:soundcloud"
+        "duration": "58.0",
+        "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018"
     },
     {
-        "duration": "23.0",
-        "name": "system_health.memory_desktop/load:media:youtube"
+        "duration": "43.0",
+        "name": "system_health.common_desktop/browse:social:twitter"
+    },
+    {
+        "duration": "44.0",
+        "name": "system_health.common_desktop/browse:social:twitter:2018"
+    },
+    {
+        "duration": "61.0",
+        "name": "system_health.common_desktop/browse:social:twitter_infinite_scroll:2018"
+    },
+    {
+        "duration": "61.0",
+        "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "59.0",
+        "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "56.0",
+        "name": "system_health.common_desktop/browse:tools:earth"
+    },
+    {
+        "duration": "49.0",
+        "name": "system_health.common_desktop/browse:tools:maps"
     },
     {
         "duration": "22.0",
-        "name": "system_health.memory_desktop/load:news:bbc"
+        "name": "system_health.common_desktop/browse_accessibility:media:youtube"
     },
     {
-        "duration": "25.0",
-        "name": "system_health.memory_desktop/load:news:cnn"
+        "duration": "17.0",
+        "name": "system_health.common_desktop/browse_accessibility:tech:codesearch"
+    },
+    {
+        "duration": "26.0",
+        "name": "system_health.common_desktop/browse_accessibility:tech:codesearch:2018"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.common_desktop/load:chrome:blank"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:games:alphabetty:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:games:bubbles"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:games:lazors"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:games:miniclip"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.common_desktop/load:games:miniclip:2018"
     },
     {
         "duration": "20.0",
-        "name": "system_health.memory_desktop/load:news:flipboard"
+        "name": "system_health.common_desktop/load:games:spychase"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.common_desktop/load:games:spychase:2018"
+    },
+    {
+        "duration": "26.0",
+        "name": "system_health.common_desktop/load:media:9gag"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:media:dailymotion"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:media:facebook_photos:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:media:flickr:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:media:google_images"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:media:google_images:2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:media:imgur"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:media:imgur:2018"
     },
     {
         "duration": "19.0",
-        "name": "system_health.memory_desktop/load:news:hackernews"
+        "name": "system_health.common_desktop/load:media:soundcloud"
     },
     {
-        "duration": "25.0",
-        "name": "system_health.memory_desktop/load:news:nytimes"
+        "duration": "19.0",
+        "name": "system_health.common_desktop/load:media:soundcloud:2018"
     },
     {
-        "duration": "24.0",
-        "name": "system_health.memory_desktop/load:news:qq"
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:media:youtube"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:media:youtube:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:news:bbc"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:news:bbc:2018"
+    },
+    {
+        "duration": "21.0",
+        "name": "system_health.common_desktop/load:news:cnn"
+    },
+    {
+        "duration": "19.0",
+        "name": "system_health.common_desktop/load:news:cnn:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:news:flipboard"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:news:hackernews"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.common_desktop/load:news:hackernews:2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:news:nytimes"
+    },
+    {
+        "duration": "19.0",
+        "name": "system_health.common_desktop/load:news:nytimes:2018"
     },
     {
         "duration": "20.0",
-        "name": "system_health.memory_desktop/load:news:reddit"
+        "name": "system_health.common_desktop/load:news:qq"
     },
     {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:news:wikipedia"
+        "duration": "19.0",
+        "name": "system_health.common_desktop/load:news:qq:2018"
     },
     {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:search:amazon"
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:news:reddit"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:news:reddit:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:news:wikipedia"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:news:wikipedia:2018"
+    },
+    {
+        "duration": "32.0",
+        "name": "system_health.common_desktop/load:search:amazon"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:search:amazon:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:search:baidu"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:search:baidu:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:search:ebay"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:search:ebay:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:search:flipkart:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:search:google"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:search:google:2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.common_desktop/load:search:taobao"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:search:taobao:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:search:yahoo"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:search:yahoo:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load:search:yandex"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:search:yandex:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:social:instagram"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:social:instagram:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:social:pinterest"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:social:vk"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:social:vk:2018"
     },
     {
         "duration": "20.0",
-        "name": "system_health.memory_desktop/load:search:baidu"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:search:ebay"
+        "name": "system_health.common_desktop/load:tools:docs"
     },
     {
         "duration": "20.0",
-        "name": "system_health.memory_desktop/load:search:google"
+        "name": "system_health.common_desktop/load:tools:drive"
     },
     {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:search:taobao"
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:tools:dropbox"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.common_desktop/load:tools:gmail"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:tools:stackoverflow"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load:tools:stackoverflow:2018"
     },
     {
         "duration": "20.0",
-        "name": "system_health.memory_desktop/load:search:yahoo"
+        "name": "system_health.common_desktop/load:tools:weather"
     },
     {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:search:yandex"
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load_accessibility:media:wikipedia"
     },
     {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:social:instagram"
+        "duration": "15.0",
+        "name": "system_health.common_desktop/load_accessibility:media:wikipedia:2018"
     },
     {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:social:pinterest"
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load_accessibility:shopping:amazon"
     },
     {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:social:vk"
+        "duration": "16.0",
+        "name": "system_health.common_desktop/load_accessibility:shopping:amazon:2018"
+    },
+    {
+        "duration": "118.0",
+        "name": "system_health.common_desktop/long_running:tools:gmail-background"
+    },
+    {
+        "duration": "43.0",
+        "name": "system_health.common_desktop/play:media:google_play_music"
+    },
+    {
+        "duration": "43.0",
+        "name": "system_health.common_desktop/play:media:soundcloud"
+    },
+    {
+        "duration": "41.0",
+        "name": "system_health.common_desktop/play:media:soundcloud:2018"
+    },
+    {
+        "duration": "37.0",
+        "name": "system_health.memory_desktop/browse:media:googleplaystore:2018"
+    },
+    {
+        "duration": "64.0",
+        "name": "system_health.memory_desktop/browse:media:imgur"
+    },
+    {
+        "duration": "55.0",
+        "name": "system_health.memory_desktop/browse:media:pinterest"
+    },
+    {
+        "duration": "81.0",
+        "name": "system_health.memory_desktop/browse:media:pinterest:2018"
+    },
+    {
+        "duration": "52.0",
+        "name": "system_health.memory_desktop/browse:media:tumblr:2018"
+    },
+    {
+        "duration": "54.0",
+        "name": "system_health.memory_desktop/browse:media:youtube"
+    },
+    {
+        "duration": "57.0",
+        "name": "system_health.memory_desktop/browse:media:youtube:2018"
+    },
+    {
+        "duration": "58.0",
+        "name": "system_health.memory_desktop/browse:media:youtubetv:2019"
+    },
+    {
+        "duration": "54.0",
+        "name": "system_health.memory_desktop/browse:news:cnn"
+    },
+    {
+        "duration": "39.0",
+        "name": "system_health.memory_desktop/browse:news:cnn:2018"
+    },
+    {
+        "duration": "50.0",
+        "name": "system_health.memory_desktop/browse:news:flipboard"
+    },
+    {
+        "duration": "45.0",
+        "name": "system_health.memory_desktop/browse:news:flipboard:2018"
+    },
+    {
+        "duration": "56.0",
+        "name": "system_health.memory_desktop/browse:news:hackernews:2018"
+    },
+    {
+        "duration": "66.0",
+        "name": "system_health.memory_desktop/browse:news:nytimes"
+    },
+    {
+        "duration": "66.0",
+        "name": "system_health.memory_desktop/browse:news:nytimes:2018"
+    },
+    {
+        "duration": "55.0",
+        "name": "system_health.memory_desktop/browse:news:reddit"
+    },
+    {
+        "duration": "43.0",
+        "name": "system_health.memory_desktop/browse:news:reddit:2018"
+    },
+    {
+        "duration": "43.0",
+        "name": "system_health.memory_desktop/browse:search:google"
+    },
+    {
+        "duration": "41.0",
+        "name": "system_health.memory_desktop/browse:search:google:2018"
+    },
+    {
+        "duration": "30.0",
+        "name": "system_health.memory_desktop/browse:search:google_india"
+    },
+    {
+        "duration": "29.0",
+        "name": "system_health.memory_desktop/browse:search:google_india:2018"
+    },
+    {
+        "duration": "57.0",
+        "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "63.0",
+        "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll:2018"
+    },
+    {
+        "duration": "58.0",
+        "name": "system_health.memory_desktop/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "51.0",
+        "name": "system_health.memory_desktop/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "41.0",
+        "name": "system_health.memory_desktop/browse:social:twitter"
+    },
+    {
+        "duration": "41.0",
+        "name": "system_health.memory_desktop/browse:social:twitter:2018"
+    },
+    {
+        "duration": "57.0",
+        "name": "system_health.memory_desktop/browse:social:twitter_infinite_scroll:2018"
+    },
+    {
+        "duration": "56.0",
+        "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "54.0",
+        "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "49.0",
+        "name": "system_health.memory_desktop/browse:tools:earth"
+    },
+    {
+        "duration": "45.0",
+        "name": "system_health.memory_desktop/browse:tools:maps"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.memory_desktop/browse_accessibility:media:youtube"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch"
     },
     {
         "duration": "23.0",
-        "name": "system_health.memory_desktop/load:tools:docs"
-    },
-    {
-        "duration": "23.0",
-        "name": "system_health.memory_desktop/load:tools:drive"
-    },
-    {
-        "duration": "20.0",
-        "name": "system_health.memory_desktop/load:tools:dropbox"
-    },
-    {
-        "duration": "22.0",
-        "name": "system_health.memory_desktop/load:tools:gmail"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:tools:stackoverflow"
-    },
-    {
-        "duration": "25.0",
-        "name": "system_health.memory_desktop/load:tools:weather"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load_accessibility:media:wikipedia"
-    },
-    {
-        "duration": "20.0",
-        "name": "system_health.memory_desktop/load_accessibility:media:wikipedia:2018"
-    },
-    {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load_accessibility:shopping:amazon"
-    },
-    {
-        "duration": "144.0",
-        "name": "system_health.memory_desktop/long_running:tools:gmail-background"
-    },
-    {
-        "duration": "141.0",
-        "name": "system_health.memory_desktop/long_running:tools:gmail-foreground"
-    },
-    {
-        "duration": "11.0",
-        "name": "tracing.tracing_with_background_memory_infra/Facebook"
-    },
-    {
-        "duration": "12.0",
-        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
-    },
-    {
-        "duration": "10.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
-    },
-    {
-        "duration": "11.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
-    },
-    {
-        "duration": "10.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
-    },
-    {
-        "duration": "11.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
-    },
-    {
-        "duration": "12.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
-    },
-    {
-        "duration": "11.0",
-        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
+        "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch:2018"
     },
     {
         "duration": "13.0",
+        "name": "system_health.memory_desktop/load:chrome:blank"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:games:alphabetty:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:games:bubbles"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:games:lazors"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:games:miniclip"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.memory_desktop/load:games:miniclip:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:games:spychase"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.memory_desktop/load:games:spychase:2018"
+    },
+    {
+        "duration": "23.0",
+        "name": "system_health.memory_desktop/load:media:9gag"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:media:dailymotion"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:media:facebook_photos:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:media:flickr:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:media:google_images"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:media:google_images:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:media:imgur"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:media:imgur:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:media:soundcloud"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:media:soundcloud:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:media:youtube"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:media:youtube:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:news:bbc"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:news:bbc:2018"
+    },
+    {
+        "duration": "18.0",
+        "name": "system_health.memory_desktop/load:news:cnn"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:news:cnn:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:news:flipboard"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:news:hackernews"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:news:hackernews:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:news:nytimes"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:news:nytimes:2018"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:news:qq"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:news:qq:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:news:reddit"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:news:reddit:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:news:wikipedia"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:news:wikipedia:2018"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.memory_desktop/load:search:amazon"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:search:amazon:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:search:baidu"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:search:baidu:2018"
+    },
+    {
+        "duration": "20.0",
+        "name": "system_health.memory_desktop/load:search:ebay"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:search:ebay:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:search:flipkart:2018"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:search:google"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:search:google:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:search:taobao"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:search:taobao:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:search:yahoo"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:search:yahoo:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:search:yandex"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:search:yandex:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:social:instagram"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load:social:instagram:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:social:pinterest"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:social:vk"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:social:vk:2018"
+    },
+    {
+        "duration": "15.0",
+        "name": "system_health.memory_desktop/load:tools:docs"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:tools:drive"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:tools:dropbox"
+    },
+    {
+        "duration": "16.0",
+        "name": "system_health.memory_desktop/load:tools:gmail"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:tools:stackoverflow"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load:tools:stackoverflow:2018"
+    },
+    {
+        "duration": "17.0",
+        "name": "system_health.memory_desktop/load:tools:weather"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load_accessibility:media:wikipedia"
+    },
+    {
+        "duration": "13.0",
+        "name": "system_health.memory_desktop/load_accessibility:media:wikipedia:2018"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load_accessibility:shopping:amazon"
+    },
+    {
+        "duration": "14.0",
+        "name": "system_health.memory_desktop/load_accessibility:shopping:amazon:2018"
+    },
+    {
+        "duration": "125.0",
+        "name": "system_health.memory_desktop/long_running:tools:gmail-background"
+    },
+    {
+        "duration": "124.0",
+        "name": "system_health.memory_desktop/long_running:tools:gmail-foreground"
+    },
+    {
+        "duration": "39.0",
+        "name": "system_health.memory_desktop/play:media:soundcloud:2018"
+    },
+    {
+        "duration": "8.0",
+        "name": "tracing.tracing_with_background_memory_infra/Facebook"
+    },
+    {
+        "duration": "8.0",
+        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
+    },
+    {
+        "duration": "6.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
+    },
+    {
+        "duration": "6.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
+    },
+    {
+        "duration": "8.0",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
+    },
+    {
+        "duration": "7.0",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "8.0",
         "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
     },
     {
-        "duration": "275.0",
+        "duration": "65.0",
+        "name": "v8.browsing_desktop-future/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "41.0",
+        "name": "v8.browsing_desktop-future/browse:media:googleplaystore:2018"
+    },
+    {
+        "duration": "86.0",
         "name": "v8.browsing_desktop-future/browse:media:imgur"
     },
     {
-        "duration": "81.0",
-        "name": "v8.browsing_desktop-future/browse:media:pinterest"
+        "duration": "87.0",
+        "name": "v8.browsing_desktop-future/browse:media:pinterest:2018"
     },
     {
-        "duration": "104.0",
-        "name": "v8.browsing_desktop-future/browse:media:youtube"
+        "duration": "59.0",
+        "name": "v8.browsing_desktop-future/browse:media:tumblr:2018"
     },
     {
-        "duration": "160.0",
-        "name": "v8.browsing_desktop-future/browse:news:cnn"
+        "duration": "65.0",
+        "name": "v8.browsing_desktop-future/browse:media:youtube:2018"
     },
     {
-        "duration": "89.0",
+        "duration": "62.0",
+        "name": "v8.browsing_desktop-future/browse:media:youtubetv:2019"
+    },
+    {
+        "duration": "48.0",
         "name": "v8.browsing_desktop-future/browse:news:cnn:2018"
     },
     {
-        "duration": "62.0",
-        "name": "v8.browsing_desktop-future/browse:search:google"
+        "duration": "51.0",
+        "name": "v8.browsing_desktop-future/browse:news:flipboard:2018"
     },
     {
-        "duration": "62.0",
+        "duration": "64.0",
+        "name": "v8.browsing_desktop-future/browse:news:hackernews:2018"
+    },
+    {
+        "duration": "75.0",
+        "name": "v8.browsing_desktop-future/browse:news:nytimes:2018"
+    },
+    {
+        "duration": "50.0",
+        "name": "v8.browsing_desktop-future/browse:news:reddit:2018"
+    },
+    {
+        "duration": "48.0",
         "name": "v8.browsing_desktop-future/browse:search:google:2018"
     },
     {
-        "duration": "45.0",
-        "name": "v8.browsing_desktop-future/browse:search:google_india"
+        "duration": "32.0",
+        "name": "v8.browsing_desktop-future/browse:search:google_india:2018"
     },
     {
-        "duration": "206.0",
+        "duration": "70.0",
         "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "127.0",
+        "duration": "66.0",
         "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "60.0",
-        "name": "v8.browsing_desktop-future/browse:social:twitter"
-    },
-    {
-        "duration": "121.0",
-        "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "114.0",
-        "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "112.0",
-        "name": "v8.browsing_desktop-future/browse:tools:earth"
-    },
-    {
-        "duration": "85.0",
-        "name": "v8.browsing_desktop-future/browse:tools:maps"
-    },
-    {
-        "duration": "81.0",
-        "name": "v8.browsing_desktop/browse:media:pinterest"
-    },
-    {
-        "duration": "105.0",
-        "name": "v8.browsing_desktop/browse:media:youtube"
-    },
-    {
-        "duration": "165.0",
-        "name": "v8.browsing_desktop/browse:news:cnn"
-    },
-    {
-        "duration": "89.0",
-        "name": "v8.browsing_desktop/browse:news:cnn:2018"
-    },
-    {
-        "duration": "148.0",
-        "name": "v8.browsing_desktop/browse:news:nytimes"
-    },
-    {
-        "duration": "83.0",
-        "name": "v8.browsing_desktop/browse:news:reddit"
-    },
-    {
-        "duration": "62.0",
-        "name": "v8.browsing_desktop/browse:search:google"
-    },
-    {
-        "duration": "62.0",
-        "name": "v8.browsing_desktop/browse:search:google:2018"
+        "duration": "69.0",
+        "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll:2018"
     },
     {
         "duration": "45.0",
+        "name": "v8.browsing_desktop-future/browse:social:twitter:2018"
+    },
+    {
+        "duration": "64.0",
+        "name": "v8.browsing_desktop-future/browse:social:twitter_infinite_scroll:2018"
+    },
+    {
+        "duration": "61.0",
+        "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "57.0",
+        "name": "v8.browsing_desktop-future/browse:tools:earth"
+    },
+    {
+        "duration": "51.0",
+        "name": "v8.browsing_desktop-future/browse:tools:maps"
+    },
+    {
+        "duration": "64.0",
+        "name": "v8.browsing_desktop/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "41.0",
+        "name": "v8.browsing_desktop/browse:media:googleplaystore:2018"
+    },
+    {
+        "duration": "59.0",
+        "name": "v8.browsing_desktop/browse:media:pinterest"
+    },
+    {
+        "duration": "86.0",
+        "name": "v8.browsing_desktop/browse:media:pinterest:2018"
+    },
+    {
+        "duration": "58.0",
+        "name": "v8.browsing_desktop/browse:media:tumblr:2018"
+    },
+    {
+        "duration": "62.0",
+        "name": "v8.browsing_desktop/browse:media:youtube"
+    },
+    {
+        "duration": "65.0",
+        "name": "v8.browsing_desktop/browse:media:youtube:2018"
+    },
+    {
+        "duration": "62.0",
+        "name": "v8.browsing_desktop/browse:media:youtubetv:2019"
+    },
+    {
+        "duration": "81.0",
+        "name": "v8.browsing_desktop/browse:news:cnn"
+    },
+    {
+        "duration": "48.0",
+        "name": "v8.browsing_desktop/browse:news:cnn:2018"
+    },
+    {
+        "duration": "51.0",
+        "name": "v8.browsing_desktop/browse:news:flipboard:2018"
+    },
+    {
+        "duration": "64.0",
+        "name": "v8.browsing_desktop/browse:news:hackernews:2018"
+    },
+    {
+        "duration": "91.0",
+        "name": "v8.browsing_desktop/browse:news:nytimes"
+    },
+    {
+        "duration": "75.0",
+        "name": "v8.browsing_desktop/browse:news:nytimes:2018"
+    },
+    {
+        "duration": "64.0",
+        "name": "v8.browsing_desktop/browse:news:reddit"
+    },
+    {
+        "duration": "50.0",
+        "name": "v8.browsing_desktop/browse:news:reddit:2018"
+    },
+    {
+        "duration": "47.0",
+        "name": "v8.browsing_desktop/browse:search:google"
+    },
+    {
+        "duration": "46.0",
+        "name": "v8.browsing_desktop/browse:search:google:2018"
+    },
+    {
+        "duration": "32.0",
         "name": "v8.browsing_desktop/browse:search:google_india"
     },
     {
-        "duration": "207.0",
+        "duration": "32.0",
+        "name": "v8.browsing_desktop/browse:search:google_india:2018"
+    },
+    {
+        "duration": "70.0",
         "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "127.0",
+        "duration": "65.0",
         "name": "v8.browsing_desktop/browse:social:tumblr_infinite_scroll"
     },
     {
         "duration": "59.0",
-        "name": "v8.browsing_desktop/browse:social:twitter"
-    },
-    {
-        "duration": "121.0",
-        "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "114.0",
-        "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll:2018"
-    },
-    {
-        "duration": "112.0",
-        "name": "v8.browsing_desktop/browse:tools:earth"
-    },
-    {
-        "duration": "85.0",
-        "name": "v8.browsing_desktop/browse:tools:maps"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/AdsAMPAds_cold"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/AdsAMPAds_hot"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/AdsAMPAds_warm"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_cold"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_hot"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_warm"
-    },
-    {
-        "duration": "31.0",
-        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_cold"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_hot"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_warm"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_cold"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_hot"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_warm"
-    },
-    {
-        "duration": "32.0",
-        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_cold"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_hot"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_warm"
-    },
-    {
-        "duration": "32.0",
-        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_cold"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_hot"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_warm"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_cold"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_hot"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_warm"
-    },
-    {
-        "duration": "32.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_cold"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_hot"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_warm"
-    },
-    {
-        "duration": "46.0",
-        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_cold"
-    },
-    {
-        "duration": "73.0",
-        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_hot"
-    },
-    {
-        "duration": "59.0",
-        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_warm"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/http://edition.cnn.com_cold"
-    },
-    {
-        "duration": "46.0",
-        "name": "v8.runtime_stats.top_25/http://edition.cnn.com_hot"
-    },
-    {
-        "duration": "42.0",
-        "name": "v8.runtime_stats.top_25/http://edition.cnn.com_warm"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_cold"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_hot"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_warm"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/http://inbox.google.com_cold"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/http://inbox.google.com_hot"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://inbox.google.com_warm"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_cold"
-    },
-    {
-        "duration": "40.0",
-        "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_hot"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_warm"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/http://meta.discourse.org_cold"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/http://meta.discourse.org_hot"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://meta.discourse.org_warm"
-    },
-    {
-        "duration": "31.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_cold"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_hot"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_warm"
-    },
-    {
-        "duration": "31.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_cold"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_hot"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_warm"
-    },
-    {
-        "duration": "31.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_cold"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_hot"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_warm"
-    },
-    {
-        "duration": "31.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_cold"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_hot"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_warm"
-    },
-    {
-        "duration": "31.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_cold"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_hot"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_warm"
-    },
-    {
-        "duration": "53.0",
-        "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_cold"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_hot"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_warm"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://weibo.com_cold"
-    },
-    {
-        "duration": "40.0",
-        "name": "v8.runtime_stats.top_25/http://weibo.com_hot"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/http://weibo.com_warm"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/http://world.taobao.com_cold"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/http://world.taobao.com_hot"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://world.taobao.com_warm"
-    },
-    {
-        "duration": "32.0",
-        "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_cold"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_hot"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_warm"
-    },
-    {
-        "duration": "32.0",
-        "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_cold"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_hot"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_warm"
-    },
-    {
-        "duration": "31.0",
-        "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_cold"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_hot"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_warm"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_cold"
-    },
-    {
-        "duration": "42.0",
-        "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_hot"
-    },
-    {
-        "duration": "58.0",
-        "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_warm"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_cold"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_hot"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_warm"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_cold"
-    },
-    {
-        "duration": "42.0",
-        "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_hot"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_warm"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_cold"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_hot"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_warm"
-    },
-    {
-        "duration": "65.0",
-        "name": "v8.runtime_stats.top_25/http://www.qq.com_cold"
-    },
-    {
-        "duration": "73.0",
-        "name": "v8.runtime_stats.top_25/http://www.qq.com_hot"
-    },
-    {
-        "duration": "69.0",
-        "name": "v8.runtime_stats.top_25/http://www.qq.com_warm"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://www.reddit.com_cold"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/http://www.reddit.com_hot"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/http://www.reddit.com_warm"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_cold"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_hot"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_warm"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_cold"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_hot"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_warm"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_cold"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_hot"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_warm"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_cold"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_hot"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_warm"
-    },
-    {
-        "duration": "40.0",
-        "name": "v8.runtime_stats.top_25/https://adwords.google.com_cold"
-    },
-    {
-        "duration": "50.0",
-        "name": "v8.runtime_stats.top_25/https://adwords.google.com_hot"
-    },
-    {
-        "duration": "45.0",
-        "name": "v8.runtime_stats.top_25/https://adwords.google.com_warm"
-    },
-    {
-        "duration": "31.0",
-        "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_cold"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_hot"
-    },
-    {
-        "duration": "33.0",
-        "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_warm"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_cold"
-    },
-    {
-        "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_hot"
-    },
-    {
-        "duration": "37.0",
-        "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_warm"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_cold"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_hot"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_warm"
-    },
-    {
-        "duration": "35.0",
-        "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_cold"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_hot"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_warm"
-    },
-    {
-        "duration": "34.0",
-        "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_cold"
-    },
-    {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_hot"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_warm"
-    },
-    {
-        "duration": "38.0",
-        "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_cold"
+        "name": "v8.browsing_desktop/browse:social:tumblr_infinite_scroll:2018"
     },
     {
         "duration": "44.0",
-        "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_hot"
+        "name": "v8.browsing_desktop/browse:social:twitter"
     },
     {
-        "duration": "41.0",
-        "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_warm"
-    },
-    {
-        "duration": "36.0",
-        "name": "v8.runtime_stats.top_25/https://www.youtube.com_cold"
+        "duration": "45.0",
+        "name": "v8.browsing_desktop/browse:social:twitter:2018"
     },
     {
         "duration": "64.0",
-        "name": "v8.runtime_stats.top_25/https://www.youtube.com_hot"
+        "name": "v8.browsing_desktop/browse:social:twitter_infinite_scroll:2018"
     },
     {
-        "duration": "39.0",
-        "name": "v8.runtime_stats.top_25/https://www.youtube.com_warm"
+        "duration": "64.0",
+        "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "17.0",
-        "name": "wasm/WasmSpaceBuggy"
+        "duration": "61.0",
+        "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll:2018"
+    },
+    {
+        "duration": "57.0",
+        "name": "v8.browsing_desktop/browse:tools:earth"
+    },
+    {
+        "duration": "51.0",
+        "name": "v8.browsing_desktop/browse:tools:maps"
+    },
+    {
+        "duration": "25.0",
+        "name": "v8.runtime_stats.top_25/AdsAMPAds_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/AdsAMPAds_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/AdsAMPAds_warm"
     },
     {
         "duration": "24.0",
-        "name": "wasm/WasmTanks"
+        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_warm"
+    },
+    {
+        "duration": "25.0",
+        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_warm"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_warm"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_warm"
+    },
+    {
+        "duration": "25.0",
+        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_warm"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_warm"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_warm"
+    },
+    {
+        "duration": "35.0",
+        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_cold"
+    },
+    {
+        "duration": "63.0",
+        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_hot"
+    },
+    {
+        "duration": "48.0",
+        "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_warm"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/http://edition.cnn.com_cold"
+    },
+    {
+        "duration": "34.0",
+        "name": "v8.runtime_stats.top_25/http://edition.cnn.com_hot"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.runtime_stats.top_25/http://edition.cnn.com_warm"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_cold"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_warm"
+    },
+    {
+        "duration": "25.0",
+        "name": "v8.runtime_stats.top_25/http://inbox.google.com_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://inbox.google.com_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://inbox.google.com_warm"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_cold"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_warm"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/http://meta.discourse.org_cold"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.runtime_stats.top_25/http://meta.discourse.org_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://meta.discourse.org_warm"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_warm"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_warm"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_warm"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_warm"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_warm"
+    },
+    {
+        "duration": "25.0",
+        "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_cold"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_warm"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/http://weibo.com_cold"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.runtime_stats.top_25/http://weibo.com_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://weibo.com_warm"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/http://world.taobao.com_cold"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.runtime_stats.top_25/http://world.taobao.com_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://world.taobao.com_warm"
+    },
+    {
+        "duration": "25.0",
+        "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_warm"
+    },
+    {
+        "duration": "25.0",
+        "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_warm"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_warm"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_cold"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_hot"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_warm"
+    },
+    {
+        "duration": "25.0",
+        "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_warm"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_cold"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_hot"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_warm"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_cold"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_warm"
+    },
+    {
+        "duration": "34.0",
+        "name": "v8.runtime_stats.top_25/http://www.qq.com_cold"
+    },
+    {
+        "duration": "62.0",
+        "name": "v8.runtime_stats.top_25/http://www.qq.com_hot"
     },
     {
         "duration": "38.0",
+        "name": "v8.runtime_stats.top_25/http://www.qq.com_warm"
+    },
+    {
+        "duration": "25.0",
+        "name": "v8.runtime_stats.top_25/http://www.reddit.com_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://www.reddit.com_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://www.reddit.com_warm"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_cold"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_warm"
+    },
+    {
+        "duration": "41.0",
+        "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_cold"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_warm"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_warm"
+    },
+    {
+        "duration": "25.0",
+        "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_warm"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/https://adwords.google.com_cold"
+    },
+    {
+        "duration": "35.0",
+        "name": "v8.runtime_stats.top_25/https://adwords.google.com_hot"
+    },
+    {
+        "duration": "33.0",
+        "name": "v8.runtime_stats.top_25/https://adwords.google.com_warm"
+    },
+    {
+        "duration": "24.0",
+        "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_hot"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_warm"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_cold"
+    },
+    {
+        "duration": "35.0",
+        "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_hot"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_warm"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_cold"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_warm"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_cold"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_hot"
+    },
+    {
+        "duration": "28.0",
+        "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_warm"
+    },
+    {
+        "duration": "25.0",
+        "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_cold"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_hot"
+    },
+    {
+        "duration": "29.0",
+        "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_warm"
+    },
+    {
+        "duration": "27.0",
+        "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_cold"
+    },
+    {
+        "duration": "33.0",
+        "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_hot"
+    },
+    {
+        "duration": "31.0",
+        "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_warm"
+    },
+    {
+        "duration": "26.0",
+        "name": "v8.runtime_stats.top_25/https://www.youtube.com_cold"
+    },
+    {
+        "duration": "32.0",
+        "name": "v8.runtime_stats.top_25/https://www.youtube.com_hot"
+    },
+    {
+        "duration": "30.0",
+        "name": "v8.runtime_stats.top_25/https://www.youtube.com_warm"
+    },
+    {
+        "duration": "8.0",
+        "name": "wasm/WasmSpaceBuggy"
+    },
+    {
+        "duration": "17.0",
+        "name": "wasm/WasmTanks"
+    },
+    {
+        "duration": "18.0",
         "name": "wasm/WasmZenGarden"
     },
     {
-        "duration": "36.0",
+        "duration": "21.0",
         "name": "webrtc/10s_datachannel_transfer"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "webrtc/canvas_capture_peer_connection"
     },
     {
-        "duration": "32.0",
+        "duration": "24.0",
         "name": "webrtc/codec_constraints_h264"
     },
     {
-        "duration": "32.0",
+        "duration": "23.0",
         "name": "webrtc/codec_constraints_vp8"
     },
     {
-        "duration": "32.0",
+        "duration": "23.0",
         "name": "webrtc/codec_constraints_vp9"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "webrtc/hd_local_stream_10s"
     },
     {
-        "duration": "55.0",
+        "duration": "31.0",
         "name": "webrtc/multiple_peerconnections"
     },
     {
-        "duration": "58.0",
+        "duration": "32.0",
         "name": "webrtc/pause_play_peerconnections"
     }
 ]
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/win_7_nvidia_gpu_perf_timing.json b/tools/perf/core/shard_maps/timing_data/win_7_nvidia_gpu_perf_timing.json
index 9327540..c82f1a8 100644
--- a/tools/perf/core/shard_maps/timing_data/win_7_nvidia_gpu_perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/win_7_nvidia_gpu_perf_timing.json
@@ -1,6 +1,10 @@
 [
     {
-        "duration": "21.0",
+        "duration": "22.0",
+        "name": "blink_perf.accessibility/line-breaks.html"
+    },
+    {
+        "duration": "19.0",
         "name": "blink_perf.accessibility/textarea-append.html"
     },
     {
@@ -12,19 +16,19 @@
         "name": "blink_perf.bindings/create-element.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/document-implementation.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/dom-attribute-on-prototoype.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/first-child.html"
     },
     {
-        "duration": "4.0",
+        "duration": "5.0",
         "name": "blink_perf.bindings/gc-forest.html"
     },
     {
@@ -32,11 +36,11 @@
         "name": "blink_perf.bindings/gc-mini-tree.html"
     },
     {
-        "duration": "15.0",
+        "duration": "16.0",
         "name": "blink_perf.bindings/gc-tree.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/get-attribute-rare.html"
     },
     {
@@ -44,15 +48,15 @@
         "name": "blink_perf.bindings/get-attribute.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/get-element-by-id.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/get-elements-by-tag-name.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/id-getter.html"
     },
     {
@@ -64,7 +68,7 @@
         "name": "blink_perf.bindings/indexed-getter.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/insert-before.html"
     },
     {
@@ -72,7 +76,7 @@
         "name": "blink_perf.bindings/named-property-enumerator.html"
     },
     {
-        "duration": "24.0",
+        "duration": "17.0",
         "name": "blink_perf.bindings/node-list-access.html"
     },
     {
@@ -80,11 +84,11 @@
         "name": "blink_perf.bindings/node-type.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.bindings/post-message.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/sequence-conversion-array.html"
     },
     {
@@ -92,7 +96,7 @@
         "name": "blink_perf.bindings/sequence-conversion-custom-iterator.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.bindings/serialize-array.html"
     },
     {
@@ -108,11 +112,11 @@
         "name": "blink_perf.bindings/serialize-nested-array.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/set-attribute-rare.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/set-attribute.html"
     },
     {
@@ -136,7 +140,7 @@
         "name": "blink_perf.bindings/typed-array-construct-from-array.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/typed-array-construct-from-same-type.html"
     },
     {
@@ -156,7 +160,7 @@
         "name": "blink_perf.bindings/undefined-get-element-by-id.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/undefined-id-getter.html"
     },
     {
@@ -168,11 +172,11 @@
         "name": "blink_perf.bindings/worker-structured-clone-json-from-worker.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.bindings/worker-structured-clone-json-roundtrip.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.bindings/worker-structured-clone-json-to-worker.html"
     },
     {
@@ -196,19 +200,19 @@
         "name": "blink_perf.bindings/worker-text-encoded-transferable-to-worker.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/worker-transferable-from-worker.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/worker-transferable-roundtrip.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/worker-transferable-to-worker.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "blink_perf.canvas/createImageBitmapFromImageData.html"
     },
     {
@@ -220,7 +224,7 @@
         "name": "blink_perf.canvas/docs-paper.html"
     },
     {
-        "duration": "4.0",
+        "duration": "5.0",
         "name": "blink_perf.canvas/docs-paper_RAF.html?RAF"
     },
     {
@@ -240,11 +244,11 @@
         "name": "blink_perf.canvas/docs-table_RAF.html?RAF"
     },
     {
-        "duration": "3.0",
+        "duration": "4.0",
         "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d.html"
     },
     {
-        "duration": "4.0",
+        "duration": "5.0",
         "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
     },
     {
@@ -268,7 +272,7 @@
         "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d.html"
     },
     {
-        "duration": "4.0",
+        "duration": "3.0",
         "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF"
     },
     {
@@ -280,7 +284,7 @@
         "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF"
     },
     {
-        "duration": "3.0",
+        "duration": "4.0",
         "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d.html"
     },
     {
@@ -292,7 +296,7 @@
         "name": "blink_perf.canvas/drawimage-not-pixelaligned.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.canvas/drawimage-not-pixelaligned_RAF.html?RAF"
     },
     {
@@ -300,7 +304,7 @@
         "name": "blink_perf.canvas/drawimage.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.canvas/drawimage_RAF.html?RAF"
     },
     {
@@ -308,15 +312,15 @@
         "name": "blink_perf.canvas/getImageData.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.canvas/getImageDataColorManaged.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.canvas/getImageDataColorManaged_RAF.html?RAF"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.canvas/getImageData_RAF.html?RAF"
     },
     {
@@ -336,7 +340,7 @@
         "name": "blink_perf.canvas/putImageData_RAF.html?RAF"
     },
     {
-        "duration": "10.0",
+        "duration": "9.0",
         "name": "blink_perf.canvas/sheets-render.html"
     },
     {
@@ -352,11 +356,11 @@
         "name": "blink_perf.canvas/toBlob_duration_RAF.html?RAF"
     },
     {
-        "duration": "3.0",
+        "duration": "4.0",
         "name": "blink_perf.canvas/toBlob_duration_jpeg.html"
     },
     {
-        "duration": "3.0",
+        "duration": "4.0",
         "name": "blink_perf.canvas/toBlob_duration_jpeg_RAF.html?RAF"
     },
     {
@@ -364,19 +368,19 @@
         "name": "blink_perf.canvas/transferFromImageBitmap.html"
     },
     {
-        "duration": "4.0",
+        "duration": "5.0",
         "name": "blink_perf.canvas/transferFromImageBitmap_RAF.html?RAF"
     },
     {
-        "duration": "3.0",
+        "duration": "4.0",
         "name": "blink_perf.canvas/upload-canvas-2d-to-texture.html"
     },
     {
-        "duration": "4.0",
+        "duration": "5.0",
         "name": "blink_perf.canvas/upload-canvas-2d-to-texture_RAF.html?RAF"
     },
     {
-        "duration": "10.0",
+        "duration": "11.0",
         "name": "blink_perf.canvas/upload-video-to-sub-texture.html"
     },
     {
@@ -384,7 +388,7 @@
         "name": "blink_perf.canvas/upload-video-to-sub-texture_RAF.html?RAF"
     },
     {
-        "duration": "4.0",
+        "duration": "5.0",
         "name": "blink_perf.canvas/upload-video-to-texture.html"
     },
     {
@@ -416,7 +420,7 @@
         "name": "blink_perf.css/CSSPropertyUpdateValue.html"
     },
     {
-        "duration": "12.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleChildClassSelector.html"
     },
     {
@@ -428,23 +432,23 @@
         "name": "blink_perf.css/ChangeStyleElementSelector.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html"
     },
     {
-        "duration": "10.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html"
     },
     {
-        "duration": "10.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html"
     },
     {
-        "duration": "10.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html"
     },
     {
@@ -452,23 +456,23 @@
         "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html"
     },
     {
-        "duration": "13.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleShallowTree.html"
     },
     {
-        "duration": "13.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleSingleClassSelector.html"
     },
     {
-        "duration": "10.0",
+        "duration": "13.0",
         "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html"
     },
     {
@@ -476,19 +480,19 @@
         "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStyleUniversalSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html"
     },
     {
-        "duration": "11.0",
+        "duration": "10.0",
         "name": "blink_perf.css/ClassDescendantSelector.html"
     },
     {
@@ -496,11 +500,11 @@
         "name": "blink_perf.css/ClassInvalidation.html"
     },
     {
-        "duration": "3.0",
+        "duration": "4.0",
         "name": "blink_perf.css/CustomPropertiesCascade.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.css/CustomPropertiesNonRootInheritance.html"
     },
     {
@@ -508,27 +512,27 @@
         "name": "blink_perf.css/CustomPropertiesRootInheritance.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.css/CustomPropertiesVarAlias.html"
     },
     {
-        "duration": "10.0",
+        "duration": "9.0",
         "name": "blink_perf.css/FocusUpdate.html"
     },
     {
-        "duration": "10.0",
+        "duration": "11.0",
         "name": "blink_perf.css/LoadBootstrapBlog.html"
     },
     {
-        "duration": "10.0",
+        "duration": "12.0",
         "name": "blink_perf.css/LoadMaterializeStarterPage.html"
     },
     {
-        "duration": "10.0",
+        "duration": "11.0",
         "name": "blink_perf.css/LoadSemanticPageExample.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.css/PseudoClassSelectors.html"
     },
     {
@@ -536,11 +540,11 @@
         "name": "blink_perf.css/SelectorCountScaling.html"
     },
     {
-        "duration": "15.0",
+        "duration": "16.0",
         "name": "blink_perf.dom/custom-element-default-style-with-shadow.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.dom/custom-element-default-style.html"
     },
     {
@@ -572,27 +576,43 @@
         "name": "blink_perf.dom/select-single-remove.html"
     },
     {
-        "duration": "30.0",
+        "duration": "9.0",
         "name": "blink_perf.events/EventsDispatching.html"
     },
     {
         "duration": "8.0",
-        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedShadowTrees.html"
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV0ShadowTrees.html"
     },
     {
-        "duration": "17.0",
-        "name": "blink_perf.events/EventsDispatchingInShadowTrees.html"
+        "duration": "9.0",
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html"
+    },
+    {
+        "duration": "15.0",
+        "name": "blink_perf.events/EventsDispatchingInV0ShadowTrees.html"
+    },
+    {
+        "duration": "14.0",
+        "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html"
     },
     {
         "duration": "9.0",
         "name": "blink_perf.events/hit-test-lots-of-layers.html"
     },
     {
-        "duration": "17.0",
+        "duration": "8.0",
+        "name": "blink_perf.events/is-input-pending-all-events.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.events/is-input-pending-default-events.html"
+    },
+    {
+        "duration": "35.0",
         "name": "blink_perf.image_decoder/decode-gif.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.image_decoder/decode-jpeg.html"
     },
     {
@@ -600,11 +620,11 @@
         "name": "blink_perf.image_decoder/decode-lossless-webp.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.image_decoder/decode-lossy-webp.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
     },
     {
@@ -612,11 +632,11 @@
         "name": "blink_perf.image_decoder/decode-png-palette.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
         "name": "blink_perf.image_decoder/decode-png.html"
     },
     {
-        "duration": "14.0",
+        "duration": "9.0",
         "name": "blink_perf.layout/ArabicLineLayout.html"
     },
     {
@@ -624,7 +644,7 @@
         "name": "blink_perf.layout/Shapes/MultipleShapes.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/SimpleTextPathLineLayout.html"
     },
     {
@@ -648,7 +668,7 @@
         "name": "blink_perf.layout/change-text-css-contain.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/chapter-reflow-once-random.html"
     },
     {
@@ -672,10 +692,22 @@
         "name": "blink_perf.layout/character_fallback.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.layout/character_fallback_aat.html"
     },
     {
+        "duration": "7.0",
+        "name": "blink_perf.layout/contain-content-style-change.html"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-blocks.html"
+    },
+    {
+        "duration": "10.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-text.html"
+    },
+    {
         "duration": "8.0",
         "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
     },
@@ -688,11 +720,11 @@
         "name": "blink_perf.layout/flexbox-column-nowrap.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/flexbox-column-wrap.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html"
     },
     {
@@ -712,15 +744,15 @@
         "name": "blink_perf.layout/flexbox-row-wrap.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/flexbox-with-stretch-layout.html"
     },
     {
-        "duration": "7.0",
+        "duration": "6.0",
         "name": "blink_perf.layout/floats_100_100.html"
     },
     {
-        "duration": "7.0",
+        "duration": "6.0",
         "name": "blink_perf.layout/floats_100_100_nested.html"
     },
     {
@@ -744,11 +776,11 @@
         "name": "blink_perf.layout/floats_2_100_nested.html"
     },
     {
-        "duration": "5.0",
+        "duration": "4.0",
         "name": "blink_perf.layout/floats_50_100.html"
     },
     {
-        "duration": "5.0",
+        "duration": "4.0",
         "name": "blink_perf.layout/floats_50_100_nested.html"
     },
     {
@@ -760,11 +792,15 @@
         "name": "blink_perf.layout/japanese-kokoro-insert.html"
     },
     {
-        "duration": "8.0",
+        "duration": "9.0",
+        "name": "blink_perf.layout/large-grid.html"
+    },
+    {
+        "duration": "7.0",
         "name": "blink_perf.layout/large-spanning-grid-item.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html"
     },
     {
@@ -776,11 +812,11 @@
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html"
     },
     {
-        "duration": "35.0",
+        "duration": "37.0",
         "name": "blink_perf.layout/latin-ebook-resize.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "blink_perf.layout/latin-ebook.html"
     },
     {
@@ -792,6 +828,14 @@
         "name": "blink_perf.layout/layers_overlap_3d.html"
     },
     {
+        "duration": "3.0",
+        "name": "blink_perf.layout/line-layout-fit-content-break-word.html"
+    },
+    {
+        "duration": "4.0",
+        "name": "blink_perf.layout/line-layout-fit-content.html"
+    },
+    {
         "duration": "7.0",
         "name": "blink_perf.layout/line-layout-line-height.html"
     },
@@ -808,11 +852,11 @@
         "name": "blink_perf.layout/line-layout.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.layout/long-line-nowrap-collapse.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.layout/long-line-nowrap-spans-collapse.html"
     },
     {
@@ -832,11 +876,11 @@
         "name": "blink_perf.layout/multicol/deeply-nested-tables.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/multicol/lots-of-text-autofill.html"
     },
     {
@@ -852,7 +896,7 @@
         "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/multicol/tall-content-short-columns.html"
     },
     {
@@ -868,7 +912,7 @@
         "name": "blink_perf.layout/nested-percent-height-tables.html"
     },
     {
-        "duration": "47.0",
+        "duration": "39.0",
         "name": "blink_perf.layout/subtree-detaching.html"
     },
     {
@@ -888,31 +932,31 @@
         "name": "blink_perf.layout/word-wrap-break-word.html"
     },
     {
-        "duration": "15.0",
+        "duration": "16.0",
         "name": "blink_perf.owp_storage/blob-perf-files.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.owp_storage/blob-perf-ipc.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.owp_storage/blob-perf-shm.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.owp_storage/blob-perf-tiny.html"
     },
     {
-        "duration": "13.0",
+        "duration": "15.0",
         "name": "blink_perf.owp_storage/idb-load-docs.html"
     },
     {
-        "duration": "11.0",
+        "duration": "12.0",
         "name": "blink_perf.paint/appending-text.html"
     },
     {
-        "duration": "13.0",
+        "duration": "18.0",
         "name": "blink_perf.paint/color-changes.html"
     },
     {
@@ -920,11 +964,15 @@
         "name": "blink_perf.paint/complex-content-slow-scroll.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.paint/complex-iframe-filtered.html"
     },
     {
-        "duration": "12.0",
+        "duration": "28.0",
+        "name": "blink_perf.paint/contain-update-layer-tree.html"
+    },
+    {
+        "duration": "13.0",
         "name": "blink_perf.paint/containment-resize.html"
     },
     {
@@ -932,15 +980,15 @@
         "name": "blink_perf.paint/fixed-and-many-layers-scroll.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.paint/large-table-background-change-with-invisible-collapsed-borders.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.paint/large-table-background-change-with-visible-collapsed-borders.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.paint/large-table-background-change-with-zero-width-collapsed-borders.html"
     },
     {
@@ -948,7 +996,7 @@
         "name": "blink_perf.paint/large-table-collapsed-border-change-with-backgrounds.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.paint/large-table-collapsed-border-change-with-text.html"
     },
     {
@@ -956,11 +1004,11 @@
         "name": "blink_perf.paint/large-table-collapsed-border-change.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.paint/large-table-repaint.html"
     },
     {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "blink_perf.paint/move-text-with-mask.html"
     },
     {
@@ -969,22 +1017,26 @@
     },
     {
         "duration": "14.0",
+        "name": "blink_perf.paint/select-all-words.html"
+    },
+    {
+        "duration": "15.0",
         "name": "blink_perf.paint/transform-changes.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "blink_perf.parser/css-parser-yui.html"
     },
     {
-        "duration": "8.0",
+        "duration": "5.0",
         "name": "blink_perf.parser/html-parser-threaded.html"
     },
     {
-        "duration": "7.0",
+        "duration": "5.0",
         "name": "blink_perf.parser/html-parser.html"
     },
     {
-        "duration": "23.0",
+        "duration": "20.0",
         "name": "blink_perf.parser/html5-full-render.html"
     },
     {
@@ -1012,7 +1064,7 @@
         "name": "blink_perf.parser/query-selector-all-class-deep.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/query-selector-all-class-first.html"
     },
     {
@@ -1028,15 +1080,15 @@
         "name": "blink_perf.parser/query-selector-all-deep.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/query-selector-all-first.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/query-selector-all-id-deep.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/query-selector-all-id-first.html"
     },
     {
@@ -1052,11 +1104,11 @@
         "name": "blink_perf.parser/query-selector-deep.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/query-selector-first.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/query-selector-id-deep.html"
     },
     {
@@ -1068,7 +1120,7 @@
         "name": "blink_perf.parser/query-selector-last.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/simple-url.html"
     },
     {
@@ -1076,11 +1128,11 @@
         "name": "blink_perf.parser/textarea-parsing.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/tiny-innerHTML.html"
     },
     {
-        "duration": "8.0",
+        "duration": "9.0",
         "name": "blink_perf.parser/url-parser.html"
     },
     {
@@ -1104,11 +1156,11 @@
         "name": "blink_perf.shadow_dom/imperative-api-assigned-elements.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.shadow_dom/imperative-api-assigned-slot.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary-large.html"
     },
     {
@@ -1148,7 +1200,7 @@
         "name": "blink_perf.shadow_dom/shadow-style-share.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.shadow_dom/style-sheet-insert.html"
     },
     {
@@ -1168,7 +1220,7 @@
         "name": "blink_perf.shadow_dom/v0-changing-select-without-shadow-dom.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.shadow_dom/v0-content-reprojection.html"
     },
     {
@@ -1176,11 +1228,11 @@
         "name": "blink_perf.shadow_dom/v0-large-distribution-without-layout.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.shadow_dom/v0-multiple-insertion-points.html"
     },
     {
-        "duration": "3.0",
+        "duration": "2.0",
         "name": "blink_perf.shadow_dom/v0-shadow-reprojection.html"
     },
     {
@@ -1188,7 +1240,7 @@
         "name": "blink_perf.shadow_dom/v0-small-distribution-with-layout.html"
     },
     {
-        "duration": "12.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html"
     },
     {
@@ -1200,11 +1252,11 @@
         "name": "blink_perf.shadow_dom/v1-host-child-append.html"
     },
     {
-        "duration": "12.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html"
     },
     {
-        "duration": "22.0",
+        "duration": "18.0",
         "name": "blink_perf.shadow_dom/v1-large-deep-layout.html"
     },
     {
@@ -1224,11 +1276,11 @@
         "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-assigned-nodes.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-flatten.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-re-layout.html"
     },
     {
@@ -1276,11 +1328,11 @@
         "name": "blink_perf.svg/Cowboy.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.svg/CrawFishGanson.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.svg/Debian.html"
     },
     {
@@ -1308,11 +1360,11 @@
         "name": "blink_perf.svg/GearFlowers.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.svg/HarveyRayner.html"
     },
     {
-        "duration": "3.0",
+        "duration": "2.0",
         "name": "blink_perf.svg/HereGear.html"
     },
     {
@@ -1324,7 +1376,7 @@
         "name": "blink_perf.svg/Samurai.html"
     },
     {
-        "duration": "27.0",
+        "duration": "24.0",
         "name": "blink_perf.svg/SierpinskiCarpet.html"
     },
     {
@@ -1340,7 +1392,7 @@
         "name": "blink_perf.svg/SvgNestedUse.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.svg/UnderTheSee.html"
     },
     {
@@ -1352,7 +1404,7 @@
         "name": "blink_perf.svg/Worldcup.html"
     },
     {
-        "duration": "33.0",
+        "duration": "34.0",
         "name": "dromaeo/http://dromaeo.com?dom-attr"
     },
     {
@@ -1368,11 +1420,11 @@
         "name": "dromaeo/http://dromaeo.com?dom-traverse"
     },
     {
-        "duration": "3.0",
+        "duration": "2.0",
         "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html"
     },
     {
-        "duration": "172.0",
+        "duration": "173.0",
         "name": "jetstream/http://browserbench.org/JetStream/"
     },
     {
@@ -1380,607 +1432,607 @@
         "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "loading.desktop/24h_cold"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "loading.desktop/24h_warm"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "loading.desktop/AirBnB_cold"
     },
     {
-        "duration": "36.0",
+        "duration": "23.0",
         "name": "loading.desktop/AirBnB_warm"
     },
     {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "loading.desktop/Aljayyash_cold"
     },
     {
-        "duration": "17.0",
+        "duration": "9.0",
         "name": "loading.desktop/Aljayyash_warm"
     },
     {
-        "duration": "42.0",
+        "duration": "24.0",
         "name": "loading.desktop/AllRecipes_warm"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "loading.desktop/ArsTechnica_cold"
     },
     {
-        "duration": "40.0",
+        "duration": "23.0",
         "name": "loading.desktop/ArsTechnica_warm"
     },
     {
-        "duration": "15.0",
+        "duration": "7.0",
         "name": "loading.desktop/Baidu_cold"
     },
     {
-        "duration": "17.0",
+        "duration": "9.0",
         "name": "loading.desktop/Baidu_warm"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "loading.desktop/Bhaskar_cold"
     },
     {
-        "duration": "30.0",
+        "duration": "17.0",
         "name": "loading.desktop/Bhaskar_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "loading.desktop/Chosun_cold"
     },
     {
-        "duration": "23.0",
+        "duration": "11.0",
         "name": "loading.desktop/Chosun_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "10.0",
         "name": "loading.desktop/Colorado.edu_cold"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "loading.desktop/Colorado.edu_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "8.0",
         "name": "loading.desktop/Danawa_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "11.0",
         "name": "loading.desktop/Danawa_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "9.0",
         "name": "loading.desktop/Daum_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "loading.desktop/Daum_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "10.0",
         "name": "loading.desktop/Donga_cold"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "loading.desktop/Donga_warm"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "loading.desktop/Economist_cold"
     },
     {
-        "duration": "33.0",
+        "duration": "21.0",
         "name": "loading.desktop/Economist_warm"
     },
     {
-        "duration": "34.0",
+        "duration": "17.0",
         "name": "loading.desktop/Elmundo_cold"
     },
     {
-        "duration": "18.0",
+        "duration": "8.0",
         "name": "loading.desktop/FC2Blog_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "10.0",
         "name": "loading.desktop/FC2Blog_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "9.0",
         "name": "loading.desktop/FIFA_cold"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "loading.desktop/FIFA_warm"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "loading.desktop/FarsNews_cold"
     },
     {
-        "duration": "23.0",
+        "duration": "11.0",
         "name": "loading.desktop/FarsNews_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "9.0",
         "name": "loading.desktop/Flickr_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "loading.desktop/Flickr_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "8.0",
         "name": "loading.desktop/FlipKart_cold"
     },
     {
-        "duration": "19.0",
+        "duration": "11.0",
         "name": "loading.desktop/FlipKart_warm"
     },
     {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "loading.desktop/Free.fr_cold"
     },
     {
-        "duration": "17.0",
+        "duration": "9.0",
         "name": "loading.desktop/Free.fr_warm"
     },
     {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "loading.desktop/HTML5Rocks_cold"
     },
     {
-        "duration": "16.0",
+        "duration": "9.0",
         "name": "loading.desktop/HTML5Rocks_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "9.0",
         "name": "loading.desktop/Haraj_cold"
     },
     {
-        "duration": "17.0",
+        "duration": "9.0",
         "name": "loading.desktop/Haraj_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "11.0",
         "name": "loading.desktop/HatenaBookmark_cold"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "loading.desktop/HatenaBookmark_warm"
     },
     {
-        "duration": "20.0",
+        "duration": "10.0",
         "name": "loading.desktop/IGN_cold"
     },
     {
-        "duration": "24.0",
+        "duration": "12.0",
         "name": "loading.desktop/IGN_warm"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "loading.desktop/IMDB_cold"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "loading.desktop/IMDB_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "9.0",
         "name": "loading.desktop/IndiaTimes_cold"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "loading.desktop/IndiaTimes_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "loading.desktop/Kakaku_cold"
     },
     {
-        "duration": "25.0",
+        "duration": "12.0",
         "name": "loading.desktop/Kakaku_warm"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "loading.desktop/Kenh14_cold"
     },
     {
-        "duration": "53.0",
+        "duration": "20.0",
         "name": "loading.desktop/Kenh14_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "9.0",
         "name": "loading.desktop/Mercadolivre_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "11.0",
         "name": "loading.desktop/Mercadolivre_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "8.0",
         "name": "loading.desktop/Naver_cold"
     },
     {
-        "duration": "20.0",
+        "duration": "10.0",
         "name": "loading.desktop/Naver_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "8.0",
         "name": "loading.desktop/Pantip_cold"
     },
     {
-        "duration": "21.0",
+        "duration": "10.0",
         "name": "loading.desktop/Pantip_warm"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "loading.desktop/PremierLeague_cold"
     },
     {
-        "duration": "29.0",
+        "duration": "18.0",
         "name": "loading.desktop/PremierLeague_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "loading.desktop/QQ_cold"
     },
     {
-        "duration": "27.0",
+        "duration": "15.0",
         "name": "loading.desktop/QQ_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "10.0",
         "name": "loading.desktop/REI_cold"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "loading.desktop/REI_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "8.0",
         "name": "loading.desktop/Ruten_cold"
     },
     {
-        "duration": "19.0",
+        "duration": "10.0",
         "name": "loading.desktop/Ruten_warm"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "loading.desktop/Sina_cold"
     },
     {
-        "duration": "34.0",
+        "duration": "21.0",
         "name": "loading.desktop/Sina_warm"
     },
     {
-        "duration": "23.0",
+        "duration": "16.0",
         "name": "loading.desktop/Taobao_cold"
     },
     {
-        "duration": "33.0",
+        "duration": "23.0",
         "name": "loading.desktop/Taobao_warm"
     },
     {
-        "duration": "24.0",
-        "name": "loading.desktop/TheOnion_cold"
-    },
-    {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "loading.desktop/TheVerge_cold"
     },
     {
-        "duration": "34.0",
+        "duration": "19.0",
         "name": "loading.desktop/TheVerge_warm"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "loading.desktop/TicketMaster_cold"
     },
     {
-        "duration": "32.0",
+        "duration": "17.0",
         "name": "loading.desktop/TicketMaster_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "15.0",
         "name": "loading.desktop/Vietnamnet_cold"
     },
     {
-        "duration": "47.0",
+        "duration": "22.0",
         "name": "loading.desktop/Vietnamnet_warm"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "loading.desktop/Vnexpress_cold"
     },
     {
-        "duration": "38.0",
+        "duration": "19.0",
         "name": "loading.desktop/Vnexpress_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "8.0",
         "name": "loading.desktop/Yandex_cold"
     },
     {
-        "duration": "17.0",
+        "duration": "9.0",
         "name": "loading.desktop/Yandex_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "11.0",
         "name": "loading.desktop/amazon.co.jp_cold"
     },
     {
-        "duration": "29.0",
+        "duration": "17.0",
         "name": "loading.desktop/amazon.co.jp_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "8.0",
         "name": "loading.desktop/ja.wikipedia_cold"
     },
     {
-        "duration": "18.0",
+        "duration": "10.0",
         "name": "loading.desktop/ja.wikipedia_warm"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "loading.desktop/money.cnn_cold"
     },
     {
-        "duration": "37.0",
+        "duration": "22.0",
         "name": "loading.desktop/money.cnn_warm"
     },
     {
-        "duration": "16.0",
+        "duration": "8.0",
         "name": "loading.desktop/ru.wikipedia_cold"
     },
     {
-        "duration": "19.0",
+        "duration": "10.0",
         "name": "loading.desktop/ru.wikipedia_warm"
     },
     {
-        "duration": "29.0",
+        "duration": "14.0",
         "name": "loading.desktop/uol.com.br_cold"
     },
     {
-        "duration": "44.0",
+        "duration": "22.0",
         "name": "loading.desktop/uol.com.br_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "10.0",
         "name": "loading.desktop/yahoo.co.jp_cold"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "loading.desktop/yahoo.co.jp_warm"
     },
     {
-        "duration": "15.0",
+        "duration": "7.0",
         "name": "media.desktop/mse.html?media=aac_audio.mp4"
     },
     {
-        "duration": "18.0",
+        "duration": "9.0",
         "name": "media.desktop/mse.html?media=aac_audio.mp4,h264_video.mp4"
     },
     {
-        "duration": "18.0",
+        "duration": "8.0",
         "name": "media.desktop/mse.html?media=aac_audio.mp4,h264_video.mp4&waitForPageLoaded=true"
     },
     {
-        "duration": "17.0",
+        "duration": "8.0",
         "name": "media.desktop/mse.html?media=h264_video.mp4"
     },
     {
-        "duration": "21.0",
+        "duration": "7.0",
+        "name": "media.desktop/mse.html?media=tulip0.av1.mp4"
+    },
+    {
+        "duration": "13.0",
         "name": "media.desktop/video.html?src=crowd.ogg&type=audio"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "media.desktop/video.html?src=crowd1080.mp4"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "media.desktop/video.html?src=crowd1080.webm"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "media.desktop/video.html?src=crowd1080_vp9.webm"
     },
     {
-        "duration": "14.0",
+        "duration": "6.0",
         "name": "media.desktop/video.html?src=crowd1080_vp9.webm&seek"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "media.desktop/video.html?src=crowd720_vp9.webm"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "media.desktop/video.html?src=garden2_10s.mp4"
     },
     {
-        "duration": "17.0",
+        "duration": "8.0",
         "name": "media.desktop/video.html?src=garden2_10s.mp4&seek"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "media.desktop/video.html?src=garden2_10s.webm"
     },
     {
-        "duration": "15.0",
+        "duration": "7.0",
         "name": "media.desktop/video.html?src=garden2_10s.webm&seek"
     },
     {
-        "duration": "16.0",
+        "duration": "8.0",
         "name": "media.desktop/video.html?src=smpte_3840x2160_60fps_vp9.webm&seek"
     },
     {
-        "duration": "29.0",
+        "duration": "15.0",
+        "name": "media.desktop/video.html?src=tulip0.av1.mp4"
+    },
+    {
+        "duration": "8.0",
+        "name": "media.desktop/video.html?src=tulip0.av1.mp4&seek"
+    },
+    {
+        "duration": "21.0",
         "name": "media.desktop/video.html?src=tulip2.m4a&type=audio"
     },
     {
-        "duration": "29.0",
+        "duration": "21.0",
         "name": "media.desktop/video.html?src=tulip2.mp3&type=audio"
     },
     {
-        "duration": "13.0",
+        "duration": "6.0",
         "name": "media.desktop/video.html?src=tulip2.mp3&type=audio&seek"
     },
     {
-        "duration": "32.0",
+        "duration": "22.0",
         "name": "media.desktop/video.html?src=tulip2.mp4"
     },
     {
-        "duration": "33.0",
+        "duration": "22.0",
         "name": "media.desktop/video.html?src=tulip2.mp4&busyjs"
     },
     {
-        "duration": "14.0",
+        "duration": "6.0",
         "name": "media.desktop/video.html?src=tulip2.mp4&seek"
     },
     {
-        "duration": "29.0",
+        "duration": "21.0",
         "name": "media.desktop/video.html?src=tulip2.ogg&type=audio"
     },
     {
-        "duration": "13.0",
+        "duration": "6.0",
         "name": "media.desktop/video.html?src=tulip2.ogg&type=audio&seek"
     },
     {
-        "duration": "32.0",
+        "duration": "21.0",
         "name": "media.desktop/video.html?src=tulip2.vp9.webm"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "media.desktop/video.html?src=tulip2.vp9.webm&background"
     },
     {
-        "duration": "16.0",
+        "duration": "7.0",
         "name": "media.desktop/video.html?src=tulip2.vp9.webm&seek"
     },
     {
-        "duration": "32.0",
+        "duration": "22.0",
         "name": "media.desktop/video.html?src=tulip2.vp9.webm_WiFi"
     },
     {
-        "duration": "29.0",
+        "duration": "21.0",
         "name": "media.desktop/video.html?src=tulip2.wav&type=audio"
     },
     {
-        "duration": "14.0",
+        "duration": "6.0",
         "name": "media.desktop/video.html?src=tulip2.wav&type=audio&seek"
     },
     {
-        "duration": "28.0",
+        "duration": "22.0",
         "name": "memory.desktop/TrivialAnimationPageSharedPageState"
     },
     {
-        "duration": "28.0",
+        "duration": "22.0",
         "name": "memory.desktop/TrivialBlinkingCursorPageSharedPageState"
     },
     {
-        "duration": "28.0",
+        "duration": "22.0",
         "name": "memory.desktop/TrivialBlurAnimationPageSharedPageState"
     },
     {
-        "duration": "28.0",
+        "duration": "21.0",
         "name": "memory.desktop/TrivialCanvasPageSharedPageState"
     },
     {
-        "duration": "28.0",
+        "duration": "22.0",
         "name": "memory.desktop/TrivialFullscreenVideoPageSharedPageState"
     },
     {
-        "duration": "28.0",
+        "duration": "22.0",
         "name": "memory.desktop/TrivialGifPageSharedPageState"
     },
     {
-        "duration": "28.0",
+        "duration": "22.0",
         "name": "memory.desktop/TrivialScrollingPageSharedPageState"
     },
     {
-        "duration": "28.0",
+        "duration": "22.0",
         "name": "memory.desktop/TrivialWebGLPageSharedPageState"
     },
     {
-        "duration": "47.0",
+        "duration": "40.0",
         "name": "memory.desktop/WebWorker"
     },
     {
-        "duration": "177.0",
-        "name": "memory.long_running_idle_gmail_background_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "161.0",
-        "name": "memory.long_running_idle_gmail_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "38.0",
+        "duration": "40.0",
         "name": "octane/http://chromium.github.io/octane/index.html?auto=1"
     },
     {
-        "duration": "48.0",
+        "duration": "34.0",
         "name": "power.desktop/TrivialAnimationPageSharedPageState"
     },
     {
-        "duration": "43.0",
+        "duration": "39.0",
         "name": "power.desktop/TrivialBlinkingCursorPageSharedPageState"
     },
     {
-        "duration": "47.0",
+        "duration": "34.0",
         "name": "power.desktop/TrivialBlurAnimationPageSharedPageState"
     },
     {
-        "duration": "47.0",
+        "duration": "34.0",
         "name": "power.desktop/TrivialCanvasPageSharedPageState"
     },
     {
-        "duration": "45.0",
+        "duration": "35.0",
         "name": "power.desktop/TrivialFullscreenVideoPageSharedPageState"
     },
     {
-        "duration": "43.0",
+        "duration": "34.0",
         "name": "power.desktop/TrivialGifPageSharedPageState"
     },
     {
-        "duration": "46.0",
+        "duration": "34.0",
         "name": "power.desktop/TrivialScrollingPageSharedPageState"
     },
     {
-        "duration": "47.0",
+        "duration": "34.0",
         "name": "power.desktop/TrivialWebGLPageSharedPageState"
     },
     {
-        "duration": "51.0",
+        "duration": "43.0",
         "name": "power.desktop/abcnews"
     },
     {
-        "duration": "44.0",
+        "duration": "35.0",
         "name": "power.desktop/indiatimes"
     },
     {
-        "duration": "49.0",
+        "duration": "35.0",
         "name": "power.desktop/instagram"
     },
     {
-        "duration": "44.0",
+        "duration": "35.0",
         "name": "power.desktop/microsoft"
     },
     {
-        "duration": "50.0",
+        "duration": "39.0",
         "name": "power.desktop/sina"
     },
     {
-        "duration": "47.0",
+        "duration": "35.0",
         "name": "power.desktop/slideshare"
     },
     {
-        "duration": "61.0",
+        "duration": "38.0",
         "name": "power.desktop/uol"
     },
     {
@@ -1996,11 +2048,11 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html"
     },
     {
-        "duration": "10.0",
+        "duration": "11.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html"
     },
     {
@@ -2036,19 +2088,19 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html"
     },
     {
-        "duration": "22.0",
+        "duration": "23.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html"
     },
     {
-        "duration": "7.0",
+        "duration": "9.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html"
     },
     {
-        "duration": "17.0",
+        "duration": "13.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html"
     },
     {
@@ -2060,7 +2112,7 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html"
     },
     {
-        "duration": "19.0",
+        "duration": "17.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html"
     },
     {
@@ -2068,11 +2120,11 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html"
     },
     {
-        "duration": "23.0",
+        "duration": "25.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html"
     },
     {
-        "duration": "100.0",
+        "duration": "101.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html"
     },
     {
@@ -2084,999 +2136,967 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html"
     },
     {
-        "duration": "32.0",
+        "duration": "16.0",
         "name": "rendering.desktop/accu_weather_2018"
     },
     {
-        "duration": "13.0",
+        "duration": "16.0",
         "name": "rendering.desktop/accu_weather_pinch_2018"
     },
     {
-        "duration": "32.0",
+        "duration": "13.0",
         "name": "rendering.desktop/amazon_2018"
     },
     {
-        "duration": "14.0",
+        "duration": "10.0",
         "name": "rendering.desktop/amazon_pinch_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.desktop/analog_clock_svg"
     },
     {
-        "duration": "23.0",
+        "duration": "11.0",
         "name": "rendering.desktop/animometer_webgl"
     },
     {
-        "duration": "24.0",
+        "duration": "10.0",
+        "name": "rendering.desktop/animometer_webgl_attrib_arrays"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/animometer_webgl_multi_draw"
+    },
+    {
+        "duration": "12.0",
         "name": "rendering.desktop/aquarium"
     },
     {
-        "duration": "36.0",
+        "duration": "16.0",
         "name": "rendering.desktop/aquarium_20k"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rendering.desktop/background_color_animation"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "rendering.desktop/background_color_animation_with_gradient"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "rendering.desktop/balls_css_key_frame_animations"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.desktop/balls_css_key_frame_animations_composited_transform"
     },
     {
-        "duration": "28.0",
+        "duration": "14.0",
         "name": "rendering.desktop/balls_css_transition_2_properties"
     },
     {
-        "duration": "28.0",
+        "duration": "14.0",
         "name": "rendering.desktop/balls_css_transition_40_properties"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "rendering.desktop/balls_css_transition_all_properties"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.desktop/balls_javascript_canvas"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "rendering.desktop/balls_javascript_css"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/balls_svg_animations"
     },
     {
-        "duration": "22.0",
+        "duration": "11.0",
         "name": "rendering.desktop/blob"
     },
     {
-        "duration": "36.0",
+        "duration": "15.0",
         "name": "rendering.desktop/blogspot_2018"
     },
     {
-        "duration": "15.0",
+        "duration": "11.0",
         "name": "rendering.desktop/blogspot_pinch_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "8.0",
+        "name": "rendering.desktop/blur_rotating_background"
+    },
+    {
+        "duration": "10.0",
         "name": "rendering.desktop/booking.com_2018"
     },
     {
-        "duration": "13.0",
+        "duration": "10.0",
         "name": "rendering.desktop/booking_pinch_2018"
     },
     {
-        "duration": "18.0",
+        "duration": "8.0",
         "name": "rendering.desktop/bouncing_balls_15"
     },
     {
-        "duration": "19.0",
+        "duration": "8.0",
         "name": "rendering.desktop/bouncing_balls_shadow"
     },
     {
-        "duration": "18.0",
+        "duration": "9.0",
         "name": "rendering.desktop/bouncing_clipped_rectangles"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/bouncing_gradient_circles"
     },
     {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "rendering.desktop/bouncing_png_images"
     },
     {
-        "duration": "27.0",
+        "duration": "10.0",
         "name": "rendering.desktop/bouncing_svg_images"
     },
     {
-        "duration": "35.0",
+        "duration": "13.0",
         "name": "rendering.desktop/camera_to_webgl"
     },
     {
-        "duration": "22.0",
+        "duration": "10.0",
         "name": "rendering.desktop/canvas_05000_pixels_per_second"
     },
     {
-        "duration": "22.0",
+        "duration": "10.0",
         "name": "rendering.desktop/canvas_10000_pixels_per_second"
     },
     {
-        "duration": "19.0",
-        "name": "rendering.desktop/canvas_15000_pixels_per_second"
-    },
-    {
-        "duration": "17.0",
+        "duration": "7.0",
         "name": "rendering.desktop/canvas_20000_pixels_per_second"
     },
     {
-        "duration": "16.0",
-        "name": "rendering.desktop/canvas_30000_pixels_per_second"
-    },
-    {
-        "duration": "15.0",
+        "duration": "6.0",
         "name": "rendering.desktop/canvas_40000_pixels_per_second"
     },
     {
-        "duration": "15.0",
-        "name": "rendering.desktop/canvas_50000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
+        "duration": "6.0",
         "name": "rendering.desktop/canvas_60000_pixels_per_second"
     },
     {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "rendering.desktop/canvas_75000_pixels_per_second"
     },
     {
-        "duration": "15.0",
+        "duration": "5.0",
         "name": "rendering.desktop/canvas_90000_pixels_per_second"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/canvas_animation_no_clear"
     },
     {
-        "duration": "18.0",
+        "duration": "8.0",
         "name": "rendering.desktop/canvas_arcs"
     },
     {
-        "duration": "19.0",
+        "duration": "8.0",
         "name": "rendering.desktop/canvas_font_cycler"
     },
     {
-        "duration": "18.0",
+        "duration": "9.0",
         "name": "rendering.desktop/canvas_lines"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/canvas_to_blob"
     },
     {
-        "duration": "15.0",
+        "duration": "5.0",
         "name": "rendering.desktop/cats_unscaled"
     },
     {
-        "duration": "13.0",
+        "duration": "6.0",
         "name": "rendering.desktop/cats_viewport_width"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "rendering.desktop/cc_poster_circle"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "rendering.desktop/cc_scroll_text_only"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "rendering.desktop/chip_tune"
     },
     {
-        "duration": "32.0",
+        "duration": "13.0",
         "name": "rendering.desktop/cnn_2018"
     },
     {
-        "duration": "14.0",
+        "duration": "12.0",
         "name": "rendering.desktop/cnn_pinch_2018"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "rendering.desktop/compositor_heavy_animation"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "rendering.desktop/crafty_mind"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_animations_many_keyframes"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_animations_simultaneous_inline_style"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_animations_simultaneous_new_element"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_animations_simultaneous_style_element"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_animations_simultaneous_updating_class"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_animations_staggered_infinite_iterations"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_animations_staggered_inline_style"
     },
     {
-        "duration": "28.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_animations_staggered_new_element"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_animations_staggered_style_element"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_animations_staggered_updating_class"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_animations_triggered_inline_style"
     },
     {
-        "duration": "28.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_animations_triggered_new_element"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_animations_triggered_style_element"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_animations_triggered_updating_class"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "rendering.desktop/css_opacity_plus_n_layers_99"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_transitions_inline_style"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_transitions_new_element"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_transitions_staggered_inline_style"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_transitions_staggered_new_element"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_transitions_staggered_style_element"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_transitions_staggered_updating_class"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_transitions_style_element"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_transitions_triggered_inline_style"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_triggered_new_element"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_triggered_style_element"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_triggered_updating_class"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_transitions_updating_class"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_value_type_color"
     },
     {
-        "duration": "29.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_value_type_filter"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_value_type_length"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_value_type_length_complex"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_value_type_length_simple"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_value_type_path"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_value_type_shadow"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_value_type_transform_complex"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_value_type_transform_simple"
     },
     {
-        "duration": "23.0",
+        "duration": "11.0",
         "name": "rendering.desktop/dynamic_cube_map"
     },
     {
-        "duration": "22.0",
+        "duration": "10.0",
         "name": "rendering.desktop/earth"
     },
     {
-        "duration": "25.0",
+        "duration": "10.0",
         "name": "rendering.desktop/ebay_2018"
     },
     {
-        "duration": "13.0",
+        "duration": "15.0",
         "name": "rendering.desktop/ebay_pinch_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "rendering.desktop/effect_games"
     },
     {
-        "duration": "25.0",
+        "duration": "9.0",
         "name": "rendering.desktop/espn_2018"
     },
     {
-        "duration": "13.0",
+        "duration": "11.0",
         "name": "rendering.desktop/espn_pinch_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.desktop/extra_large_texture_uploads"
     },
     {
-        "duration": "23.0",
+        "duration": "10.0",
         "name": "rendering.desktop/facebook_2018"
     },
     {
-        "duration": "14.0",
+        "duration": "10.0",
         "name": "rendering.desktop/facebook_pinch_2018"
     },
     {
-        "duration": "19.0",
+        "duration": "10.0",
         "name": "rendering.desktop/fill_shapes"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "rendering.desktop/filter_terrain_svg"
     },
     {
-        "duration": "18.0",
+        "duration": "8.0",
         "name": "rendering.desktop/geo_apis"
     },
     {
-        "duration": "22.0",
+        "duration": "8.0",
         "name": "rendering.desktop/gmail_2018"
     },
     {
-        "duration": "53.0",
+        "duration": "21.0",
         "name": "rendering.desktop/gmail_move_2018"
     },
     {
-        "duration": "13.0",
+        "duration": "11.0",
         "name": "rendering.desktop/gmail_pinch_2018"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "rendering.desktop/google_calendar_2018"
     },
     {
-        "duration": "15.0",
+        "duration": "10.0",
         "name": "rendering.desktop/google_calendar_pinch_2018"
     },
     {
-        "duration": "34.0",
+        "duration": "13.0",
         "name": "rendering.desktop/google_docs_2018"
     },
     {
-        "duration": "15.0",
+        "duration": "10.0",
         "name": "rendering.desktop/google_image_pinch_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "10.0",
         "name": "rendering.desktop/google_image_search_2018"
     },
     {
-        "duration": "23.0",
+        "duration": "10.0",
         "name": "rendering.desktop/google_plus_2018"
     },
     {
-        "duration": "15.0",
+        "duration": "8.0",
         "name": "rendering.desktop/google_search_pinch_2018"
     },
     {
-        "duration": "21.0",
+        "duration": "9.0",
         "name": "rendering.desktop/google_web_search_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/guimark_vector_chart"
     },
     {
-        "duration": "21.0",
+        "duration": "10.0",
         "name": "rendering.desktop/hakim"
     },
     {
-        "duration": "35.0",
+        "duration": "24.0",
         "name": "rendering.desktop/ie_chalkboard"
     },
     {
-        "duration": "31.0",
+        "duration": "17.0",
         "name": "rendering.desktop/ie_pirate_mark"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "rendering.desktop/infinite_scroll_element_n_layers_99"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "rendering.desktop/infinite_scroll_root_fixed_n_layers_99"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "rendering.desktop/infinite_scroll_root_n_layers_99"
     },
     {
-        "duration": "24.0",
+        "duration": "10.0",
         "name": "rendering.desktop/jarro_doverson"
     },
     {
-        "duration": "33.0",
+        "duration": "17.0",
         "name": "rendering.desktop/js_full_screen_invalidation"
     },
     {
-        "duration": "29.0",
+        "duration": "16.0",
         "name": "rendering.desktop/js_opacity_plus_n_layers_99"
     },
     {
-        "duration": "30.0",
+        "duration": "16.0",
         "name": "rendering.desktop/js_paint_plus_n_layers_99"
     },
     {
-        "duration": "29.0",
+        "duration": "16.0",
         "name": "rendering.desktop/js_poster_circle"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "rendering.desktop/js_scroll_text_only"
     },
     {
-        "duration": "22.0",
+        "duration": "10.0",
         "name": "rendering.desktop/kevs_3d"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "rendering.desktop/keyframed_animations"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rendering.desktop/large_texture_uploads"
     },
     {
-        "duration": "25.0",
+        "duration": "10.0",
         "name": "rendering.desktop/linkedin_2018"
     },
     {
-        "duration": "14.0",
+        "duration": "11.0",
         "name": "rendering.desktop/linkedin_pinch_2018"
     },
     {
-        "duration": "23.0",
+        "duration": "9.0",
         "name": "rendering.desktop/man_in_blue"
     },
     {
-        "duration": "23.0",
+        "duration": "10.0",
         "name": "rendering.desktop/many_images"
     },
     {
-        "duration": "22.0",
+        "duration": "10.0",
         "name": "rendering.desktop/many_planets_deep"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "rendering.desktop/maps_move_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.desktop/maps_perf_test"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.desktop/medium_texture_uploads"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/megi_dish"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/microsoft_asteroid_belt"
     },
     {
-        "duration": "23.0",
+        "duration": "9.0",
         "name": "rendering.desktop/microsoft_fireflies"
     },
     {
-        "duration": "19.0",
+        "duration": "10.0",
         "name": "rendering.desktop/microsoft_fish_ie_tank"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
+        "name": "rendering.desktop/microsoft_performance"
+    },
+    {
+        "duration": "10.0",
         "name": "rendering.desktop/microsoft_snow"
     },
     {
-        "duration": "18.0",
+        "duration": "9.0",
         "name": "rendering.desktop/microsoft_speed_reading"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/microsoft_tweet_map"
     },
     {
-        "duration": "22.0",
+        "duration": "10.0",
         "name": "rendering.desktop/microsoft_video_city"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/microsoft_worker_fountains"
     },
     {
-        "duration": "18.0",
+        "duration": "9.0",
         "name": "rendering.desktop/mix_10k"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "rendering.desktop/mix_blend_mode_animation_difference"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "rendering.desktop/mix_blend_mode_animation_hue"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.desktop/mix_blend_mode_animation_propagating_isolation"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "rendering.desktop/mix_blend_mode_animation_screen"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/motion_mark_canvas_fill_shapes"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "rendering.desktop/motion_mark_canvas_stroke_shapes"
     },
     {
-        "duration": "30.0",
+        "duration": "16.0",
         "name": "rendering.desktop/new_tilings"
     },
     {
-        "duration": "23.0",
+        "duration": "10.0",
         "name": "rendering.desktop/nvidia_vertex_buffer_object"
     },
     {
-        "duration": "55.0",
+        "duration": "16.0",
         "name": "rendering.desktop/overlay_background_color_css_transitions_page"
     },
     {
-        "duration": "21.0",
+        "duration": "11.0",
         "name": "rendering.desktop/particles"
     },
     {
-        "duration": "26.0",
+        "duration": "10.0",
         "name": "rendering.desktop/pinterest_2018"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/put_get_image_data"
     },
     {
-        "duration": "23.0",
+        "duration": "10.0",
         "name": "rendering.desktop/raf"
     },
     {
-        "duration": "22.0",
+        "duration": "10.0",
         "name": "rendering.desktop/raf_animation"
     },
     {
-        "duration": "22.0",
+        "duration": "10.0",
         "name": "rendering.desktop/raf_canvas"
     },
     {
-        "duration": "22.0",
+        "duration": "10.0",
         "name": "rendering.desktop/raf_touch_animation"
     },
     {
-        "duration": "21.0",
+        "duration": "10.0",
         "name": "rendering.desktop/repaint_amazon_2018"
     },
     {
-        "duration": "20.0",
+        "duration": "10.0",
         "name": "rendering.desktop/repaint_cnn_2018"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/repaint_facebook_2018"
     },
     {
-        "duration": "18.0",
+        "duration": "9.0",
         "name": "rendering.desktop/repaint_google_search_2018"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/repaint_instagram_2018"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/repaint_reddit_2018"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/repaint_theverge_2018"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/repaint_twitter_2018"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/repaint_wikipedia_2018"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/repaint_yahoo_homepage_2018"
     },
     {
-        "duration": "19.0",
+        "duration": "8.0",
         "name": "rendering.desktop/runway"
     },
     {
-        "duration": "22.0",
+        "duration": "10.0",
         "name": "rendering.desktop/san_angeles"
     },
     {
-        "duration": "13.0",
+        "duration": "6.0",
         "name": "rendering.desktop/second_batch_js_heavy"
     },
     {
-        "duration": "15.0",
+        "duration": "7.0",
         "name": "rendering.desktop/second_batch_js_light"
     },
     {
-        "duration": "16.0",
+        "duration": "6.0",
         "name": "rendering.desktop/second_batch_js_medium"
     },
     {
-        "duration": "20.0",
+        "duration": "10.0",
         "name": "rendering.desktop/simple_text_page"
     },
     {
-        "duration": "15.0",
+        "duration": "7.0",
         "name": "rendering.desktop/simple_touch_drag"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.desktop/small_texture_uploads"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "rendering.desktop/smash_cat"
     },
     {
-        "duration": "17.0",
+        "duration": "9.0",
         "name": "rendering.desktop/spielzeugz"
     },
     {
-        "duration": "18.0",
+        "duration": "9.0",
         "name": "rendering.desktop/stroke_shapes"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/sync_scroll_offset"
     },
     {
-        "duration": "32.0",
+        "duration": "13.0",
         "name": "rendering.desktop/techcrunch_2018"
     },
     {
-        "duration": "21.0",
+        "duration": "10.0",
         "name": "rendering.desktop/text_05000_pixels_per_second"
     },
     {
-        "duration": "21.0",
+        "duration": "11.0",
         "name": "rendering.desktop/text_10000_pixels_per_second"
     },
     {
-        "duration": "18.0",
-        "name": "rendering.desktop/text_15000_pixels_per_second"
-    },
-    {
-        "duration": "16.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_20000_pixels_per_second"
     },
     {
-        "duration": "14.0",
-        "name": "rendering.desktop/text_30000_pixels_per_second"
-    },
-    {
-        "duration": "15.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_40000_pixels_per_second"
     },
     {
-        "duration": "14.0",
-        "name": "rendering.desktop/text_50000_pixels_per_second"
-    },
-    {
-        "duration": "13.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_60000_pixels_per_second"
     },
     {
-        "duration": "14.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_75000_pixels_per_second"
     },
     {
-        "duration": "16.0",
+        "duration": "9.0",
         "name": "rendering.desktop/text_90000_pixels_per_second"
     },
     {
-        "duration": "23.0",
+        "duration": "10.0",
         "name": "rendering.desktop/text_constant_full_page_raster_05000_pixels_per_second"
     },
     {
-        "duration": "22.0",
+        "duration": "10.0",
         "name": "rendering.desktop/text_constant_full_page_raster_10000_pixels_per_second"
     },
     {
-        "duration": "19.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_15000_pixels_per_second"
-    },
-    {
-        "duration": "18.0",
+        "duration": "8.0",
         "name": "rendering.desktop/text_constant_full_page_raster_20000_pixels_per_second"
     },
     {
-        "duration": "16.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_30000_pixels_per_second"
-    },
-    {
-        "duration": "17.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_constant_full_page_raster_40000_pixels_per_second"
     },
     {
-        "duration": "16.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_50000_pixels_per_second"
-    },
-    {
-        "duration": "15.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_constant_full_page_raster_60000_pixels_per_second"
     },
     {
-        "duration": "15.0",
+        "duration": "4.0",
         "name": "rendering.desktop/text_constant_full_page_raster_75000_pixels_per_second"
     },
     {
-        "duration": "15.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_constant_full_page_raster_90000_pixels_per_second"
     },
     {
-        "duration": "21.0",
+        "duration": "10.0",
         "name": "rendering.desktop/text_hover_05000_pixels_per_second"
     },
     {
-        "duration": "21.0",
+        "duration": "10.0",
         "name": "rendering.desktop/text_hover_10000_pixels_per_second"
     },
     {
-        "duration": "18.0",
-        "name": "rendering.desktop/text_hover_15000_pixels_per_second"
-    },
-    {
-        "duration": "17.0",
+        "duration": "9.0",
         "name": "rendering.desktop/text_hover_20000_pixels_per_second"
     },
     {
-        "duration": "16.0",
-        "name": "rendering.desktop/text_hover_30000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
+        "duration": "8.0",
         "name": "rendering.desktop/text_hover_40000_pixels_per_second"
     },
     {
-        "duration": "14.0",
-        "name": "rendering.desktop/text_hover_50000_pixels_per_second"
-    },
-    {
-        "duration": "14.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_hover_60000_pixels_per_second"
     },
     {
-        "duration": "13.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_hover_75000_pixels_per_second"
     },
     {
-        "duration": "14.0",
+        "duration": "4.0",
         "name": "rendering.desktop/text_hover_90000_pixels_per_second"
     },
     {
-        "duration": "20.0",
+        "duration": "10.0",
         "name": "rendering.desktop/touch_handler_scrolling"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/transform_transitions"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "rendering.desktop/transform_transitions_js_block"
     },
     {
-        "duration": "21.0",
+        "duration": "9.0",
         "name": "rendering.desktop/twitch_2018"
     },
     {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "rendering.desktop/twitch_pinch_2018"
     },
     {
-        "duration": "29.0",
+        "duration": "13.0",
         "name": "rendering.desktop/twitter_2018"
     },
     {
-        "duration": "14.0",
+        "duration": "10.0",
         "name": "rendering.desktop/twitter_pinch_2018"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animation_value_type_color"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animation_value_type_length_3d"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animation_value_type_length_complex"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animation_value_type_length_simple"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animation_value_type_path"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animation_value_type_shadow"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animation_value_type_transform_complex"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animation_value_type_transform_simple"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "rendering.desktop/web_animations_many_keyframes"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animations_set_current_time"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animations_simultaneous"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/web_animations_staggered_chaining"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animations_staggered_infinite_iterations"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/web_animations_staggered_triggering_page"
     },
     {
-        "duration": "27.0",
+        "duration": "12.0",
         "name": "rendering.desktop/wikipedia_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rendering.desktop/wordpress_2018"
     },
     {
-        "duration": "19.0",
+        "duration": "8.0",
         "name": "rendering.desktop/yahoo_answers_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "11.0",
         "name": "rendering.desktop/yahoo_news_2018"
     },
     {
-        "duration": "12.0",
+        "duration": "10.0",
         "name": "rendering.desktop/yahoo_news_pinch_2018"
     },
     {
-        "duration": "29.0",
+        "duration": "12.0",
         "name": "rendering.desktop/yahoo_sports_2018"
     },
     {
-        "duration": "16.0",
+        "duration": "11.0",
         "name": "rendering.desktop/yahoo_sports_pinch_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "8.0",
         "name": "rendering.desktop/youtube_2018"
     },
     {
-        "duration": "15.0",
+        "duration": "10.0",
         "name": "rendering.desktop/youtube_pinch_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "11.0",
         "name": "rendering.desktop/yuv_decoding"
     },
     {
-        "duration": "36.0",
+        "duration": "35.0",
         "name": "speedometer-future/http://browserbench.org/Speedometer/"
     },
     {
@@ -3084,1703 +3104,1607 @@
         "name": "speedometer/http://browserbench.org/Speedometer/"
     },
     {
-        "duration": "88.0",
+        "duration": "63.0",
         "name": "speedometer2-future/Speedometer2"
     },
     {
-        "duration": "67.0",
+        "duration": "61.0",
         "name": "speedometer2/Speedometer2"
     },
     {
-        "duration": "86.0",
+        "duration": "61.0",
         "name": "system_health.common_desktop/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "55.0",
+        "duration": "39.0",
         "name": "system_health.common_desktop/browse:media:googleplaystore:2018"
     },
     {
-        "duration": "133.0",
+        "duration": "73.0",
         "name": "system_health.common_desktop/browse:media:imgur"
     },
     {
-        "duration": "72.0",
+        "duration": "58.0",
         "name": "system_health.common_desktop/browse:media:pinterest"
     },
     {
-        "duration": "99.0",
+        "duration": "85.0",
         "name": "system_health.common_desktop/browse:media:pinterest:2018"
     },
     {
-        "duration": "119.0",
-        "name": "system_health.common_desktop/browse:media:tumblr"
-    },
-    {
-        "duration": "74.0",
+        "duration": "56.0",
         "name": "system_health.common_desktop/browse:media:tumblr:2018"
     },
     {
-        "duration": "84.0",
+        "duration": "59.0",
         "name": "system_health.common_desktop/browse:media:youtube"
     },
     {
-        "duration": "84.0",
+        "duration": "61.0",
         "name": "system_health.common_desktop/browse:media:youtube:2018"
     },
     {
-        "duration": "104.0",
+        "duration": "58.0",
         "name": "system_health.common_desktop/browse:news:cnn"
     },
     {
-        "duration": "67.0",
+        "duration": "44.0",
         "name": "system_health.common_desktop/browse:news:cnn:2018"
     },
     {
-        "duration": "60.0",
+        "duration": "44.0",
         "name": "system_health.common_desktop/browse:news:flipboard"
     },
     {
-        "duration": "59.0",
+        "duration": "44.0",
         "name": "system_health.common_desktop/browse:news:flipboard:2018"
     },
     {
-        "duration": "60.0",
+        "duration": "46.0",
         "name": "system_health.common_desktop/browse:news:hackernews"
     },
     {
-        "duration": "78.0",
+        "duration": "58.0",
         "name": "system_health.common_desktop/browse:news:hackernews:2018"
     },
     {
-        "duration": "108.0",
+        "duration": "68.0",
         "name": "system_health.common_desktop/browse:news:nytimes"
     },
     {
-        "duration": "96.0",
+        "duration": "68.0",
         "name": "system_health.common_desktop/browse:news:nytimes:2018"
     },
     {
-        "duration": "84.0",
+        "duration": "59.0",
         "name": "system_health.common_desktop/browse:news:reddit"
     },
     {
-        "duration": "81.0",
+        "duration": "47.0",
         "name": "system_health.common_desktop/browse:news:reddit:2018"
     },
     {
-        "duration": "58.0",
+        "duration": "46.0",
         "name": "system_health.common_desktop/browse:search:google"
     },
     {
-        "duration": "59.0",
+        "duration": "45.0",
         "name": "system_health.common_desktop/browse:search:google:2018"
     },
     {
-        "duration": "43.0",
+        "duration": "33.0",
         "name": "system_health.common_desktop/browse:search:google_india"
     },
     {
-        "duration": "43.0",
+        "duration": "31.0",
         "name": "system_health.common_desktop/browse:search:google_india:2018"
     },
     {
-        "duration": "85.0",
+        "duration": "61.0",
         "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "102.0",
+        "duration": "68.0",
         "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "106.0",
+        "duration": "66.0",
         "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "54.0",
+        "duration": "59.0",
+        "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "42.0",
         "name": "system_health.common_desktop/browse:social:twitter"
     },
     {
-        "duration": "55.0",
+        "duration": "43.0",
         "name": "system_health.common_desktop/browse:social:twitter:2018"
     },
     {
-        "duration": "82.0",
+        "duration": "61.0",
         "name": "system_health.common_desktop/browse:social:twitter_infinite_scroll:2018"
     },
     {
-        "duration": "89.0",
+        "duration": "61.0",
         "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "82.0",
+        "duration": "58.0",
         "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "77.0",
+        "duration": "51.0",
         "name": "system_health.common_desktop/browse:tools:earth"
     },
     {
-        "duration": "63.0",
+        "duration": "47.0",
         "name": "system_health.common_desktop/browse:tools:maps"
     },
     {
-        "duration": "34.0",
+        "duration": "22.0",
         "name": "system_health.common_desktop/browse_accessibility:media:youtube"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/browse_accessibility:tech:codesearch"
     },
     {
-        "duration": "36.0",
+        "duration": "25.0",
         "name": "system_health.common_desktop/browse_accessibility:tech:codesearch:2018"
     },
     {
-        "duration": "18.0",
+        "duration": "12.0",
         "name": "system_health.common_desktop/load:chrome:blank"
     },
     {
-        "duration": "22.0",
-        "name": "system_health.common_desktop/load:games:alphabetty"
-    },
-    {
-        "duration": "23.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:games:alphabetty:2018"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:games:bubbles"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "system_health.common_desktop/load:games:lazors"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:games:miniclip"
     },
     {
-        "duration": "33.0",
+        "duration": "20.0",
         "name": "system_health.common_desktop/load:games:miniclip:2018"
     },
     {
-        "duration": "30.0",
+        "duration": "19.0",
         "name": "system_health.common_desktop/load:games:spychase"
     },
     {
-        "duration": "30.0",
+        "duration": "19.0",
         "name": "system_health.common_desktop/load:games:spychase:2018"
     },
     {
-        "duration": "37.0",
+        "duration": "25.0",
         "name": "system_health.common_desktop/load:media:9gag"
     },
     {
-        "duration": "24.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:media:dailymotion"
     },
     {
-        "duration": "24.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:media:facebook_photos:2018"
     },
     {
-        "duration": "24.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:media:flickr:2018"
     },
     {
-        "duration": "22.0",
+        "duration": "14.0",
         "name": "system_health.common_desktop/load:media:google_images"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:media:google_images:2018"
     },
     {
-        "duration": "29.0",
+        "duration": "17.0",
         "name": "system_health.common_desktop/load:media:imgur"
     },
     {
-        "duration": "25.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:media:imgur:2018"
     },
     {
-        "duration": "31.0",
+        "duration": "18.0",
         "name": "system_health.common_desktop/load:media:soundcloud"
     },
     {
-        "duration": "28.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:media:soundcloud:2018"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:media:youtube"
     },
     {
-        "duration": "27.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:media:youtube:2018"
     },
     {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:news:bbc"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:news:bbc:2018"
     },
     {
-        "duration": "31.0",
+        "duration": "20.0",
         "name": "system_health.common_desktop/load:news:cnn"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "system_health.common_desktop/load:news:cnn:2018"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:news:flipboard"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "system_health.common_desktop/load:news:hackernews"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "system_health.common_desktop/load:news:hackernews:2018"
     },
     {
-        "duration": "28.0",
+        "duration": "17.0",
         "name": "system_health.common_desktop/load:news:nytimes"
     },
     {
-        "duration": "29.0",
+        "duration": "19.0",
         "name": "system_health.common_desktop/load:news:nytimes:2018"
     },
     {
-        "duration": "29.0",
+        "duration": "19.0",
         "name": "system_health.common_desktop/load:news:qq"
     },
     {
-        "duration": "29.0",
+        "duration": "17.0",
         "name": "system_health.common_desktop/load:news:qq:2018"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:news:reddit"
     },
     {
-        "duration": "28.0",
+        "duration": "17.0",
         "name": "system_health.common_desktop/load:news:reddit:2018"
     },
     {
-        "duration": "23.0",
+        "duration": "17.0",
         "name": "system_health.common_desktop/load:news:wikipedia"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:news:wikipedia:2018"
     },
     {
-        "duration": "24.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:search:amazon"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:search:amazon:2018"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "system_health.common_desktop/load:search:baidu"
     },
     {
-        "duration": "22.0",
+        "duration": "14.0",
         "name": "system_health.common_desktop/load:search:baidu:2018"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:search:ebay"
     },
     {
-        "duration": "25.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:search:ebay:2018"
     },
     {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:search:flipkart:2018"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:search:google"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:search:google:2018"
     },
     {
-        "duration": "24.0",
+        "duration": "38.0",
         "name": "system_health.common_desktop/load:search:taobao"
     },
     {
-        "duration": "25.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:search:taobao:2018"
     },
     {
-        "duration": "22.0",
+        "duration": "14.0",
         "name": "system_health.common_desktop/load:search:yahoo"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "system_health.common_desktop/load:search:yahoo:2018"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "system_health.common_desktop/load:search:yandex"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:search:yandex:2018"
     },
     {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:social:instagram"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:social:instagram:2018"
     },
     {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:social:pinterest"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:social:vk"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:social:vk:2018"
     },
     {
-        "duration": "42.0",
+        "duration": "20.0",
         "name": "system_health.common_desktop/load:tools:docs"
     },
     {
-        "duration": "34.0",
+        "duration": "19.0",
         "name": "system_health.common_desktop/load:tools:drive"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:tools:dropbox"
     },
     {
-        "duration": "28.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:tools:gmail"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:tools:stackoverflow"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:tools:stackoverflow:2018"
     },
     {
-        "duration": "32.0",
+        "duration": "19.0",
         "name": "system_health.common_desktop/load:tools:weather"
     },
     {
-        "duration": "27.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load_accessibility:media:wikipedia"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "system_health.common_desktop/load_accessibility:media:wikipedia:2018"
     },
     {
-        "duration": "24.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load_accessibility:shopping:amazon"
     },
     {
-        "duration": "24.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load_accessibility:shopping:amazon:2018"
     },
     {
-        "duration": "141.0",
+        "duration": "118.0",
         "name": "system_health.common_desktop/long_running:tools:gmail-background"
     },
     {
-        "duration": "555.0",
-        "name": "system_health.common_desktop/multitab:misc:typical24"
-    },
-    {
-        "duration": "310.0",
-        "name": "system_health.common_desktop/multitab:misc:typical24:2018"
-    },
-    {
-        "duration": "59.0",
+        "duration": "41.0",
         "name": "system_health.common_desktop/play:media:google_play_music"
     },
     {
-        "duration": "59.0",
+        "duration": "43.0",
         "name": "system_health.common_desktop/play:media:soundcloud"
     },
     {
-        "duration": "53.0",
+        "duration": "41.0",
         "name": "system_health.common_desktop/play:media:soundcloud:2018"
     },
     {
-        "duration": "43.0",
+        "duration": "36.0",
         "name": "system_health.memory_desktop/browse:media:googleplaystore:2018"
     },
     {
-        "duration": "70.0",
+        "duration": "63.0",
         "name": "system_health.memory_desktop/browse:media:imgur"
     },
     {
-        "duration": "62.0",
+        "duration": "55.0",
         "name": "system_health.memory_desktop/browse:media:pinterest"
     },
     {
-        "duration": "88.0",
+        "duration": "81.0",
         "name": "system_health.memory_desktop/browse:media:pinterest:2018"
     },
     {
-        "duration": "59.0",
+        "duration": "52.0",
         "name": "system_health.memory_desktop/browse:media:tumblr:2018"
     },
     {
-        "duration": "61.0",
+        "duration": "53.0",
         "name": "system_health.memory_desktop/browse:media:youtube"
     },
     {
-        "duration": "64.0",
+        "duration": "57.0",
         "name": "system_health.memory_desktop/browse:media:youtube:2018"
     },
     {
-        "duration": "56.0",
+        "duration": "57.0",
+        "name": "system_health.memory_desktop/browse:media:youtubetv:2019"
+    },
+    {
+        "duration": "48.0",
         "name": "system_health.memory_desktop/browse:news:cnn"
     },
     {
-        "duration": "43.0",
+        "duration": "37.0",
         "name": "system_health.memory_desktop/browse:news:cnn:2018"
     },
     {
-        "duration": "46.0",
+        "duration": "40.0",
         "name": "system_health.memory_desktop/browse:news:flipboard"
     },
     {
-        "duration": "45.0",
+        "duration": "40.0",
         "name": "system_health.memory_desktop/browse:news:flipboard:2018"
     },
     {
-        "duration": "58.0",
+        "duration": "52.0",
         "name": "system_health.memory_desktop/browse:news:hackernews:2018"
     },
     {
-        "duration": "61.0",
+        "duration": "60.0",
         "name": "system_health.memory_desktop/browse:news:nytimes"
     },
     {
-        "duration": "63.0",
+        "duration": "59.0",
         "name": "system_health.memory_desktop/browse:news:nytimes:2018"
     },
     {
-        "duration": "57.0",
+        "duration": "51.0",
         "name": "system_health.memory_desktop/browse:news:reddit"
     },
     {
-        "duration": "47.0",
+        "duration": "40.0",
         "name": "system_health.memory_desktop/browse:news:reddit:2018"
     },
     {
-        "duration": "48.0",
+        "duration": "42.0",
         "name": "system_health.memory_desktop/browse:search:google"
     },
     {
-        "duration": "48.0",
+        "duration": "41.0",
         "name": "system_health.memory_desktop/browse:search:google:2018"
     },
     {
-        "duration": "38.0",
+        "duration": "31.0",
         "name": "system_health.memory_desktop/browse:search:google_india"
     },
     {
-        "duration": "35.0",
+        "duration": "28.0",
         "name": "system_health.memory_desktop/browse:search:google_india:2018"
     },
     {
-        "duration": "63.0",
+        "duration": "56.0",
         "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "67.0",
+        "duration": "61.0",
         "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "65.0",
+        "duration": "57.0",
         "name": "system_health.memory_desktop/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "45.0",
+        "duration": "50.0",
+        "name": "system_health.memory_desktop/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "39.0",
         "name": "system_health.memory_desktop/browse:social:twitter"
     },
     {
-        "duration": "45.0",
+        "duration": "40.0",
         "name": "system_health.memory_desktop/browse:social:twitter:2018"
     },
     {
-        "duration": "63.0",
+        "duration": "56.0",
         "name": "system_health.memory_desktop/browse:social:twitter_infinite_scroll:2018"
     },
     {
-        "duration": "63.0",
+        "duration": "56.0",
         "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "60.0",
+        "duration": "54.0",
         "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "56.0",
+        "duration": "44.0",
         "name": "system_health.memory_desktop/browse:tools:earth"
     },
     {
-        "duration": "49.0",
+        "duration": "43.0",
         "name": "system_health.memory_desktop/browse:tools:maps"
     },
     {
-        "duration": "26.0",
+        "duration": "19.0",
         "name": "system_health.memory_desktop/browse_accessibility:media:youtube"
     },
     {
-        "duration": "22.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch"
     },
     {
-        "duration": "29.0",
+        "duration": "22.0",
         "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch:2018"
     },
     {
-        "duration": "16.0",
+        "duration": "10.0",
         "name": "system_health.memory_desktop/load:chrome:blank"
     },
     {
-        "duration": "19.0",
-        "name": "system_health.memory_desktop/load:games:alphabetty"
-    },
-    {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:games:alphabetty:2018"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:games:bubbles"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "system_health.memory_desktop/load:games:lazors"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:games:miniclip"
     },
     {
-        "duration": "25.0",
+        "duration": "17.0",
         "name": "system_health.memory_desktop/load:games:miniclip:2018"
     },
     {
-        "duration": "24.0",
+        "duration": "17.0",
         "name": "system_health.memory_desktop/load:games:spychase"
     },
     {
-        "duration": "24.0",
+        "duration": "17.0",
         "name": "system_health.memory_desktop/load:games:spychase:2018"
     },
     {
-        "duration": "29.0",
+        "duration": "22.0",
         "name": "system_health.memory_desktop/load:media:9gag"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:media:dailymotion"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:media:facebook_photos:2018"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:media:flickr:2018"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "system_health.memory_desktop/load:media:google_images"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:media:google_images:2018"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:media:imgur"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:media:imgur:2018"
     },
     {
-        "duration": "22.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:media:soundcloud"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:media:soundcloud:2018"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:media:youtube"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:media:youtube:2018"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:news:bbc"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:news:bbc:2018"
     },
     {
-        "duration": "24.0",
+        "duration": "17.0",
         "name": "system_health.memory_desktop/load:news:cnn"
     },
     {
-        "duration": "22.0",
+        "duration": "16.0",
         "name": "system_health.memory_desktop/load:news:cnn:2018"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:news:flipboard"
     },
     {
-        "duration": "18.0",
+        "duration": "12.0",
         "name": "system_health.memory_desktop/load:news:hackernews"
     },
     {
-        "duration": "18.0",
+        "duration": "12.0",
         "name": "system_health.memory_desktop/load:news:hackernews:2018"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:news:nytimes"
     },
     {
-        "duration": "23.0",
+        "duration": "16.0",
         "name": "system_health.memory_desktop/load:news:nytimes:2018"
     },
     {
-        "duration": "22.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:news:qq"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "system_health.memory_desktop/load:news:qq:2018"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:news:reddit"
     },
     {
-        "duration": "22.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:news:reddit:2018"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "system_health.memory_desktop/load:news:wikipedia"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "system_health.memory_desktop/load:news:wikipedia:2018"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:search:amazon"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:search:amazon:2018"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "system_health.memory_desktop/load:search:baidu"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:search:baidu:2018"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:search:ebay"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:search:ebay:2018"
     },
     {
-        "duration": "20.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:search:flipkart:2018"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:search:google"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:search:google:2018"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:search:taobao"
     },
     {
-        "duration": "21.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:search:taobao:2018"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "system_health.memory_desktop/load:search:yahoo"
     },
     {
-        "duration": "19.0",
+        "duration": "12.0",
         "name": "system_health.memory_desktop/load:search:yahoo:2018"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:search:yandex"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:search:yandex:2018"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:social:instagram"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:social:instagram:2018"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:social:pinterest"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "system_health.memory_desktop/load:social:vk"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:social:vk:2018"
     },
     {
-        "duration": "22.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:tools:docs"
     },
     {
-        "duration": "22.0",
+        "duration": "15.0",
         "name": "system_health.memory_desktop/load:tools:drive"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:tools:dropbox"
     },
     {
-        "duration": "22.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:tools:gmail"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:tools:stackoverflow"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:tools:stackoverflow:2018"
     },
     {
-        "duration": "24.0",
+        "duration": "16.0",
         "name": "system_health.memory_desktop/load:tools:weather"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load_accessibility:media:wikipedia"
     },
     {
-        "duration": "19.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load_accessibility:media:wikipedia:2018"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load_accessibility:shopping:amazon"
     },
     {
-        "duration": "20.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load_accessibility:shopping:amazon:2018"
     },
     {
-        "duration": "150.0",
-        "name": "system_health.memory_desktop/long_running:tools:gmail-background"
-    },
-    {
-        "duration": "147.0",
+        "duration": "124.0",
         "name": "system_health.memory_desktop/long_running:tools:gmail-foreground"
     },
     {
-        "duration": "136.0",
-        "name": "system_health.memory_desktop/multitab:misc:typical24"
-    },
-    {
-        "duration": "98.0",
-        "name": "system_health.memory_desktop/multitab:misc:typical24:2018"
-    },
-    {
-        "duration": "45.0",
+        "duration": "38.0",
         "name": "system_health.memory_desktop/play:media:soundcloud:2018"
     },
     {
-        "duration": "14.0",
+        "duration": "7.0",
         "name": "tracing.tracing_with_background_memory_infra/Facebook"
     },
     {
-        "duration": "15.0",
+        "duration": "6.0",
         "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
     },
     {
-        "duration": "12.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
-    },
-    {
-        "duration": "13.0",
+        "duration": "6.0",
         "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
     },
     {
-        "duration": "14.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
-    },
-    {
-        "duration": "13.0",
+        "duration": "3.0",
         "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
     },
     {
-        "duration": "13.0",
+        "duration": "10.0",
         "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
     },
     {
-        "duration": "15.0",
+        "duration": "5.0",
         "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
     },
     {
-        "duration": "14.0",
+        "duration": "8.0",
         "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
     },
     {
-        "duration": "128.0",
+        "duration": "64.0",
         "name": "v8.browsing_desktop-future/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "77.0",
+        "duration": "40.0",
         "name": "v8.browsing_desktop-future/browse:media:googleplaystore:2018"
     },
     {
-        "duration": "590.0",
+        "duration": "69.0",
         "name": "v8.browsing_desktop-future/browse:media:imgur"
     },
     {
-        "duration": "88.0",
-        "name": "v8.browsing_desktop-future/browse:media:pinterest"
-    },
-    {
-        "duration": "117.0",
+        "duration": "86.0",
         "name": "v8.browsing_desktop-future/browse:media:pinterest:2018"
     },
     {
-        "duration": "166.0",
-        "name": "v8.browsing_desktop-future/browse:media:tumblr"
-    },
-    {
-        "duration": "100.0",
+        "duration": "59.0",
         "name": "v8.browsing_desktop-future/browse:media:tumblr:2018"
     },
     {
-        "duration": "124.0",
-        "name": "v8.browsing_desktop-future/browse:media:youtube"
-    },
-    {
-        "duration": "122.0",
+        "duration": "63.0",
         "name": "v8.browsing_desktop-future/browse:media:youtube:2018"
     },
     {
-        "duration": "438.0",
-        "name": "v8.browsing_desktop-future/browse:news:cnn"
+        "duration": "62.0",
+        "name": "v8.browsing_desktop-future/browse:media:youtubetv:2019"
     },
     {
-        "duration": "100.0",
+        "duration": "45.0",
         "name": "v8.browsing_desktop-future/browse:news:cnn:2018"
     },
     {
-        "duration": "86.0",
+        "duration": "45.0",
         "name": "v8.browsing_desktop-future/browse:news:flipboard:2018"
     },
     {
-        "duration": "99.0",
+        "duration": "60.0",
         "name": "v8.browsing_desktop-future/browse:news:hackernews:2018"
     },
     {
-        "duration": "144.0",
+        "duration": "68.0",
         "name": "v8.browsing_desktop-future/browse:news:nytimes:2018"
     },
     {
-        "duration": "140.0",
+        "duration": "47.0",
         "name": "v8.browsing_desktop-future/browse:news:reddit:2018"
     },
     {
-        "duration": "72.0",
-        "name": "v8.browsing_desktop-future/browse:search:google"
-    },
-    {
-        "duration": "75.0",
+        "duration": "46.0",
         "name": "v8.browsing_desktop-future/browse:search:google:2018"
     },
     {
-        "duration": "51.0",
-        "name": "v8.browsing_desktop-future/browse:search:google_india"
-    },
-    {
-        "duration": "55.0",
+        "duration": "32.0",
         "name": "v8.browsing_desktop-future/browse:search:google_india:2018"
     },
     {
-        "duration": "134.0",
-        "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "528.0",
+        "duration": "68.0",
         "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "495.0",
+        "duration": "65.0",
         "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "68.0",
-        "name": "v8.browsing_desktop-future/browse:social:twitter"
+        "duration": "58.0",
+        "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll:2018"
     },
     {
-        "duration": "71.0",
+        "duration": "43.0",
         "name": "v8.browsing_desktop-future/browse:social:twitter:2018"
     },
     {
-        "duration": "132.0",
+        "duration": "63.0",
         "name": "v8.browsing_desktop-future/browse:social:twitter_infinite_scroll:2018"
     },
     {
-        "duration": "164.0",
-        "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "147.0",
+        "duration": "61.0",
         "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "123.0",
+        "duration": "52.0",
         "name": "v8.browsing_desktop-future/browse:tools:earth"
     },
     {
-        "duration": "89.0",
+        "duration": "48.0",
         "name": "v8.browsing_desktop-future/browse:tools:maps"
     },
     {
-        "duration": "126.0",
+        "duration": "64.0",
         "name": "v8.browsing_desktop/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "77.0",
+        "duration": "40.0",
         "name": "v8.browsing_desktop/browse:media:googleplaystore:2018"
     },
     {
-        "duration": "591.0",
-        "name": "v8.browsing_desktop/browse:media:imgur"
-    },
-    {
-        "duration": "87.0",
+        "duration": "60.0",
         "name": "v8.browsing_desktop/browse:media:pinterest"
     },
     {
-        "duration": "117.0",
-        "name": "v8.browsing_desktop/browse:media:pinterest:2018"
-    },
-    {
-        "duration": "165.0",
-        "name": "v8.browsing_desktop/browse:media:tumblr"
-    },
-    {
-        "duration": "99.0",
+        "duration": "59.0",
         "name": "v8.browsing_desktop/browse:media:tumblr:2018"
     },
     {
-        "duration": "124.0",
+        "duration": "61.0",
         "name": "v8.browsing_desktop/browse:media:youtube"
     },
     {
-        "duration": "121.0",
-        "name": "v8.browsing_desktop/browse:media:youtube:2018"
+        "duration": "62.0",
+        "name": "v8.browsing_desktop/browse:media:youtubetv:2019"
     },
     {
-        "duration": "452.0",
-        "name": "v8.browsing_desktop/browse:news:cnn"
-    },
-    {
-        "duration": "99.0",
+        "duration": "46.0",
         "name": "v8.browsing_desktop/browse:news:cnn:2018"
     },
     {
-        "duration": "85.0",
+        "duration": "46.0",
         "name": "v8.browsing_desktop/browse:news:flipboard:2018"
     },
     {
-        "duration": "96.0",
+        "duration": "59.0",
         "name": "v8.browsing_desktop/browse:news:hackernews:2018"
     },
     {
-        "duration": "426.0",
-        "name": "v8.browsing_desktop/browse:news:nytimes"
-    },
-    {
-        "duration": "142.0",
-        "name": "v8.browsing_desktop/browse:news:nytimes:2018"
-    },
-    {
-        "duration": "110.0",
+        "duration": "62.0",
         "name": "v8.browsing_desktop/browse:news:reddit"
     },
     {
-        "duration": "140.0",
-        "name": "v8.browsing_desktop/browse:news:reddit:2018"
-    },
-    {
-        "duration": "70.0",
+        "duration": "46.0",
         "name": "v8.browsing_desktop/browse:search:google"
     },
     {
-        "duration": "73.0",
+        "duration": "45.0",
         "name": "v8.browsing_desktop/browse:search:google:2018"
     },
     {
-        "duration": "50.0",
+        "duration": "34.0",
         "name": "v8.browsing_desktop/browse:search:google_india"
     },
     {
-        "duration": "55.0",
+        "duration": "32.0",
         "name": "v8.browsing_desktop/browse:search:google_india:2018"
     },
     {
-        "duration": "132.0",
+        "duration": "64.0",
         "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "515.0",
-        "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll:2018"
-    },
-    {
-        "duration": "499.0",
-        "name": "v8.browsing_desktop/browse:social:tumblr_infinite_scroll"
-    },
-    {
-        "duration": "68.0",
+        "duration": "43.0",
         "name": "v8.browsing_desktop/browse:social:twitter"
     },
     {
-        "duration": "71.0",
+        "duration": "43.0",
         "name": "v8.browsing_desktop/browse:social:twitter:2018"
     },
     {
-        "duration": "131.0",
-        "name": "v8.browsing_desktop/browse:social:twitter_infinite_scroll:2018"
-    },
-    {
-        "duration": "162.0",
+        "duration": "64.0",
         "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "146.0",
+        "duration": "61.0",
         "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "125.0",
+        "duration": "52.0",
         "name": "v8.browsing_desktop/browse:tools:earth"
     },
     {
-        "duration": "88.0",
+        "duration": "48.0",
         "name": "v8.browsing_desktop/browse:tools:maps"
     },
     {
-        "duration": "34.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/AdsAMPAds_cold"
     },
     {
-        "duration": "41.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/AdsAMPAds_hot"
     },
     {
-        "duration": "37.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/AdsAMPAds_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_cold"
     },
     {
-        "duration": "40.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_warm"
     },
     {
-        "duration": "31.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_cold"
     },
     {
-        "duration": "36.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_hot"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_cold"
     },
     {
-        "duration": "39.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "26.0",
         "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_cold"
     },
     {
-        "duration": "37.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_hot"
     },
     {
-        "duration": "34.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_cold"
     },
     {
-        "duration": "37.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_hot"
     },
     {
-        "duration": "34.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_cold"
     },
     {
-        "duration": "38.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_hot"
     },
     {
-        "duration": "35.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_cold"
     },
     {
-        "duration": "37.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_hot"
     },
     {
-        "duration": "34.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_warm"
     },
     {
-        "duration": "45.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_cold"
     },
     {
-        "duration": "77.0",
+        "duration": "53.0",
         "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_hot"
     },
     {
-        "duration": "60.0",
+        "duration": "42.0",
         "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_warm"
     },
     {
-        "duration": "37.0",
+        "duration": "26.0",
         "name": "v8.runtime_stats.top_25/http://edition.cnn.com_cold"
     },
     {
-        "duration": "51.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/http://edition.cnn.com_hot"
     },
     {
-        "duration": "44.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/http://edition.cnn.com_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_cold"
     },
     {
-        "duration": "37.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_hot"
     },
     {
-        "duration": "34.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_warm"
     },
     {
-        "duration": "34.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://inbox.google.com_cold"
     },
     {
-        "duration": "40.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://inbox.google.com_hot"
     },
     {
-        "duration": "37.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://inbox.google.com_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_cold"
     },
     {
-        "duration": "42.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_hot"
     },
     {
-        "duration": "38.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_warm"
     },
     {
-        "duration": "34.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://meta.discourse.org_cold"
     },
     {
-        "duration": "40.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/http://meta.discourse.org_hot"
     },
     {
-        "duration": "37.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://meta.discourse.org_warm"
     },
     {
-        "duration": "31.0",
+        "duration": "23.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_cold"
     },
     {
-        "duration": "36.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_hot"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_warm"
     },
     {
-        "duration": "31.0",
+        "duration": "23.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_cold"
     },
     {
-        "duration": "36.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_hot"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_warm"
     },
     {
-        "duration": "31.0",
+        "duration": "23.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_cold"
     },
     {
-        "duration": "36.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_hot"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_warm"
     },
     {
-        "duration": "31.0",
+        "duration": "23.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_cold"
     },
     {
-        "duration": "36.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_hot"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_warm"
     },
     {
-        "duration": "31.0",
+        "duration": "23.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_cold"
     },
     {
-        "duration": "36.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_hot"
     },
     {
-        "duration": "33.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_warm"
     },
     {
-        "duration": "34.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_cold"
     },
     {
-        "duration": "40.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_hot"
     },
     {
-        "duration": "38.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_warm"
     },
     {
-        "duration": "36.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/http://weibo.com_cold"
     },
     {
-        "duration": "43.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/http://weibo.com_hot"
     },
     {
-        "duration": "40.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://weibo.com_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/http://world.taobao.com_cold"
     },
     {
-        "duration": "39.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://world.taobao.com_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://world.taobao.com_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_cold"
     },
     {
-        "duration": "37.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_hot"
     },
     {
-        "duration": "34.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_cold"
     },
     {
-        "duration": "37.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_hot"
     },
     {
-        "duration": "34.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_warm"
     },
     {
-        "duration": "31.0",
+        "duration": "23.0",
         "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_cold"
     },
     {
-        "duration": "36.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_hot"
     },
     {
-        "duration": "33.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_warm"
     },
     {
-        "duration": "37.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_cold"
     },
     {
-        "duration": "46.0",
+        "duration": "31.0",
         "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_hot"
     },
     {
-        "duration": "41.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_warm"
     },
     {
-        "duration": "34.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_cold"
     },
     {
-        "duration": "40.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_hot"
     },
     {
-        "duration": "37.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_warm"
     },
     {
-        "duration": "37.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_cold"
     },
     {
-        "duration": "45.0",
+        "duration": "31.0",
         "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_hot"
     },
     {
-        "duration": "41.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_cold"
     },
     {
-        "duration": "40.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_warm"
     },
     {
-        "duration": "72.0",
+        "duration": "34.0",
         "name": "v8.runtime_stats.top_25/http://www.qq.com_cold"
     },
     {
-        "duration": "82.0",
+        "duration": "38.0",
         "name": "v8.runtime_stats.top_25/http://www.qq.com_hot"
     },
     {
-        "duration": "75.0",
+        "duration": "36.0",
         "name": "v8.runtime_stats.top_25/http://www.qq.com_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://www.reddit.com_cold"
     },
     {
-        "duration": "39.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://www.reddit.com_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://www.reddit.com_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_cold"
     },
     {
-        "duration": "41.0",
+        "duration": "31.0",
         "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_hot"
     },
     {
-        "duration": "37.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_cold"
     },
     {
-        "duration": "39.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_cold"
     },
     {
-        "duration": "39.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_cold"
     },
     {
-        "duration": "38.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_hot"
     },
     {
-        "duration": "35.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_warm"
     },
     {
-        "duration": "49.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/https://adwords.google.com_cold"
     },
     {
-        "duration": "66.0",
+        "duration": "36.0",
         "name": "v8.runtime_stats.top_25/https://adwords.google.com_hot"
     },
     {
-        "duration": "56.0",
+        "duration": "34.0",
         "name": "v8.runtime_stats.top_25/https://adwords.google.com_warm"
     },
     {
-        "duration": "31.0",
+        "duration": "23.0",
         "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_cold"
     },
     {
-        "duration": "35.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_hot"
     },
     {
-        "duration": "33.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_warm"
     },
     {
-        "duration": "35.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_cold"
     },
     {
-        "duration": "45.0",
+        "duration": "34.0",
         "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_hot"
     },
     {
-        "duration": "40.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_cold"
     },
     {
-        "duration": "41.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_hot"
     },
     {
-        "duration": "37.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_warm"
     },
     {
-        "duration": "34.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_cold"
     },
     {
-        "duration": "36.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_hot"
     },
     {
-        "duration": "33.0",
+        "duration": "26.0",
         "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_warm"
     },
     {
-        "duration": "34.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_cold"
     },
     {
-        "duration": "40.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_hot"
     },
     {
-        "duration": "37.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_warm"
     },
     {
-        "duration": "39.0",
+        "duration": "26.0",
         "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_cold"
     },
     {
-        "duration": "47.0",
+        "duration": "31.0",
         "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_hot"
     },
     {
-        "duration": "43.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_warm"
     },
     {
-        "duration": "37.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/https://www.youtube.com_cold"
     },
     {
-        "duration": "46.0",
+        "duration": "31.0",
         "name": "v8.runtime_stats.top_25/https://www.youtube.com_hot"
     },
     {
-        "duration": "42.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/https://www.youtube.com_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "8.0",
         "name": "wasm/WasmSpaceBuggy"
     },
     {
-        "duration": "27.0",
+        "duration": "17.0",
         "name": "wasm/WasmTanks"
     },
     {
-        "duration": "52.0",
+        "duration": "30.0",
         "name": "wasm/WasmZenGarden"
     },
     {
-        "duration": "44.0",
+        "duration": "21.0",
         "name": "webrtc/10s_datachannel_transfer"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "webrtc/canvas_capture_peer_connection"
     },
     {
-        "duration": "32.0",
+        "duration": "23.0",
         "name": "webrtc/codec_constraints_h264"
     },
     {
-        "duration": "32.0",
+        "duration": "23.0",
         "name": "webrtc/codec_constraints_vp8"
     },
     {
-        "duration": "32.0",
+        "duration": "23.0",
         "name": "webrtc/codec_constraints_vp9"
     },
     {
-        "duration": "20.0",
+        "duration": "13.0",
         "name": "webrtc/hd_local_stream_10s"
     },
     {
-        "duration": "71.0",
+        "duration": "31.0",
         "name": "webrtc/multiple_peerconnections"
     },
     {
-        "duration": "79.0",
+        "duration": "36.0",
         "name": "webrtc/pause_play_peerconnections"
     }
 ]
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/win_7_perf_timing.json b/tools/perf/core/shard_maps/timing_data/win_7_perf_timing.json
index 785fd24..0997d55a 100644
--- a/tools/perf/core/shard_maps/timing_data/win_7_perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/win_7_perf_timing.json
@@ -1,10 +1,14 @@
 [
     {
-        "duration": "23.0",
+        "duration": "24.0",
+        "name": "blink_perf.accessibility/line-breaks.html"
+    },
+    {
+        "duration": "21.0",
         "name": "blink_perf.accessibility/textarea-append.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "blink_perf.bindings/append-child.html"
     },
     {
@@ -32,11 +36,11 @@
         "name": "blink_perf.bindings/gc-mini-tree.html"
     },
     {
-        "duration": "15.0",
+        "duration": "13.0",
         "name": "blink_perf.bindings/gc-tree.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.bindings/get-attribute-rare.html"
     },
     {
@@ -68,11 +72,11 @@
         "name": "blink_perf.bindings/insert-before.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.bindings/named-property-enumerator.html"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "blink_perf.bindings/node-list-access.html"
     },
     {
@@ -96,7 +100,7 @@
         "name": "blink_perf.bindings/serialize-array.html"
     },
     {
-        "duration": "3.0",
+        "duration": "2.0",
         "name": "blink_perf.bindings/serialize-long-string.html"
     },
     {
@@ -108,11 +112,11 @@
         "name": "blink_perf.bindings/serialize-nested-array.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.bindings/set-attribute-rare.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.bindings/set-attribute.html"
     },
     {
@@ -160,11 +164,11 @@
         "name": "blink_perf.bindings/undefined-id-getter.html"
     },
     {
-        "duration": "3.0",
+        "duration": "2.0",
         "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html"
     },
     {
-        "duration": "16.0",
+        "duration": "18.0",
         "name": "blink_perf.bindings/worker-structured-clone-json-from-worker.html"
     },
     {
@@ -172,7 +176,7 @@
         "name": "blink_perf.bindings/worker-structured-clone-json-roundtrip.html"
     },
     {
-        "duration": "16.0",
+        "duration": "18.0",
         "name": "blink_perf.bindings/worker-structured-clone-json-to-worker.html"
     },
     {
@@ -184,15 +188,15 @@
         "name": "blink_perf.bindings/worker-structured-clone-workerDOM-Map-from-worker.html"
     },
     {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "blink_perf.bindings/worker-text-encoded-transferable-from-worker.html"
     },
     {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "blink_perf.bindings/worker-text-encoded-transferable-roundtrip.html"
     },
     {
-        "duration": "12.0",
+        "duration": "11.0",
         "name": "blink_perf.bindings/worker-text-encoded-transferable-to-worker.html"
     },
     {
@@ -400,7 +404,7 @@
         "name": "blink_perf.canvas/upload-webgl-to-texture_RAF.html?RAF"
     },
     {
-        "duration": "13.0",
+        "duration": "11.0",
         "name": "blink_perf.css/AttributeDescendantSelector.html"
     },
     {
@@ -420,15 +424,15 @@
         "name": "blink_perf.css/ChangeStyleChildClassSelector.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStyleChildElementSelectors.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.css/ChangeStyleElementSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "14.0",
         "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html"
     },
     {
@@ -436,11 +440,11 @@
         "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html"
     },
     {
-        "duration": "14.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html"
     },
     {
@@ -448,19 +452,19 @@
         "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.css/ChangeStyleShallowTree.html"
     },
     {
@@ -468,11 +472,11 @@
         "name": "blink_perf.css/ChangeStyleSingleClassSelector.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html"
     },
     {
@@ -488,7 +492,7 @@
         "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html"
     },
     {
-        "duration": "11.0",
+        "duration": "9.0",
         "name": "blink_perf.css/ClassDescendantSelector.html"
     },
     {
@@ -512,7 +516,7 @@
         "name": "blink_perf.css/CustomPropertiesVarAlias.html"
     },
     {
-        "duration": "10.0",
+        "duration": "8.0",
         "name": "blink_perf.css/FocusUpdate.html"
     },
     {
@@ -520,11 +524,11 @@
         "name": "blink_perf.css/LoadBootstrapBlog.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.css/LoadMaterializeStarterPage.html"
     },
     {
-        "duration": "11.0",
+        "duration": "13.0",
         "name": "blink_perf.css/LoadSemanticPageExample.html"
     },
     {
@@ -540,11 +544,11 @@
         "name": "blink_perf.dom/custom-element-default-style-with-shadow.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.dom/custom-element-default-style.html"
     },
     {
-        "duration": "17.0",
+        "duration": "15.0",
         "name": "blink_perf.dom/long-sibling-list.html"
     },
     {
@@ -572,35 +576,51 @@
         "name": "blink_perf.dom/select-single-remove.html"
     },
     {
-        "duration": "23.0",
+        "duration": "25.0",
         "name": "blink_perf.events/EventsDispatching.html"
     },
     {
         "duration": "9.0",
-        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedShadowTrees.html"
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV0ShadowTrees.html"
     },
     {
-        "duration": "16.0",
-        "name": "blink_perf.events/EventsDispatchingInShadowTrees.html"
+        "duration": "8.0",
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.events/EventsDispatchingInV0ShadowTrees.html"
+    },
+    {
+        "duration": "11.0",
+        "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html"
     },
     {
         "duration": "11.0",
         "name": "blink_perf.events/hit-test-lots-of-layers.html"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
+        "name": "blink_perf.events/is-input-pending-all-events.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.events/is-input-pending-default-events.html"
+    },
+    {
+        "duration": "23.0",
         "name": "blink_perf.image_decoder/decode-gif.html"
     },
     {
-        "duration": "15.0",
+        "duration": "14.0",
         "name": "blink_perf.image_decoder/decode-jpeg.html"
     },
     {
-        "duration": "18.0",
+        "duration": "16.0",
         "name": "blink_perf.image_decoder/decode-lossless-webp.html"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "blink_perf.image_decoder/decode-lossy-webp.html"
     },
     {
@@ -608,7 +628,7 @@
         "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
     },
     {
-        "duration": "14.0",
+        "duration": "13.0",
         "name": "blink_perf.image_decoder/decode-png-palette.html"
     },
     {
@@ -616,7 +636,7 @@
         "name": "blink_perf.image_decoder/decode-png.html"
     },
     {
-        "duration": "14.0",
+        "duration": "15.0",
         "name": "blink_perf.layout/ArabicLineLayout.html"
     },
     {
@@ -676,6 +696,18 @@
         "name": "blink_perf.layout/character_fallback_aat.html"
     },
     {
+        "duration": "9.0",
+        "name": "blink_perf.layout/contain-content-style-change.html"
+    },
+    {
+        "duration": "9.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-blocks.html"
+    },
+    {
+        "duration": "8.0",
+        "name": "blink_perf.layout/fit-content-change-available-size-text.html"
+    },
+    {
         "duration": "8.0",
         "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
     },
@@ -688,7 +720,7 @@
         "name": "blink_perf.layout/flexbox-column-nowrap.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/flexbox-column-wrap.html"
     },
     {
@@ -696,7 +728,7 @@
         "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html"
     },
     {
-        "duration": "10.0",
+        "duration": "11.0",
         "name": "blink_perf.layout/flexbox-lots-of-data.html"
     },
     {
@@ -712,15 +744,15 @@
         "name": "blink_perf.layout/flexbox-row-wrap.html"
     },
     {
-        "duration": "10.0",
+        "duration": "9.0",
         "name": "blink_perf.layout/flexbox-with-stretch-layout.html"
     },
     {
-        "duration": "8.0",
+        "duration": "6.0",
         "name": "blink_perf.layout/floats_100_100.html"
     },
     {
-        "duration": "8.0",
+        "duration": "6.0",
         "name": "blink_perf.layout/floats_100_100_nested.html"
     },
     {
@@ -736,7 +768,7 @@
         "name": "blink_perf.layout/floats_20_100_nested.html"
     },
     {
-        "duration": "4.0",
+        "duration": "3.0",
         "name": "blink_perf.layout/floats_2_100.html"
     },
     {
@@ -744,11 +776,11 @@
         "name": "blink_perf.layout/floats_2_100_nested.html"
     },
     {
-        "duration": "5.0",
+        "duration": "4.0",
         "name": "blink_perf.layout/floats_50_100.html"
     },
     {
-        "duration": "5.0",
+        "duration": "4.0",
         "name": "blink_perf.layout/floats_50_100_nested.html"
     },
     {
@@ -760,11 +792,15 @@
         "name": "blink_perf.layout/japanese-kokoro-insert.html"
     },
     {
+        "duration": "11.0",
+        "name": "blink_perf.layout/large-grid.html"
+    },
+    {
         "duration": "8.0",
         "name": "blink_perf.layout/large-spanning-grid-item.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html"
     },
     {
@@ -772,15 +808,15 @@
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html"
     },
     {
-        "duration": "48.0",
+        "duration": "52.0",
         "name": "blink_perf.layout/latin-ebook-resize.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.layout/latin-ebook.html"
     },
     {
@@ -792,6 +828,14 @@
         "name": "blink_perf.layout/layers_overlap_3d.html"
     },
     {
+        "duration": "3.0",
+        "name": "blink_perf.layout/line-layout-fit-content-break-word.html"
+    },
+    {
+        "duration": "5.0",
+        "name": "blink_perf.layout/line-layout-fit-content.html"
+    },
+    {
         "duration": "9.0",
         "name": "blink_perf.layout/line-layout-line-height.html"
     },
@@ -804,7 +848,7 @@
         "name": "blink_perf.layout/line-layout-repeat-append.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/line-layout.html"
     },
     {
@@ -836,7 +880,7 @@
         "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.layout/multicol/lots-of-text-autofill.html"
     },
     {
@@ -848,7 +892,7 @@
         "name": "blink_perf.layout/multicol/lots-of-text-balanced.html"
     },
     {
-        "duration": "8.0",
+        "duration": "7.0",
         "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html"
     },
     {
@@ -868,7 +912,7 @@
         "name": "blink_perf.layout/nested-percent-height-tables.html"
     },
     {
-        "duration": "50.0",
+        "duration": "39.0",
         "name": "blink_perf.layout/subtree-detaching.html"
     },
     {
@@ -876,15 +920,15 @@
         "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html"
     },
     {
-        "duration": "3.0",
+        "duration": "4.0",
         "name": "blink_perf.layout/word-break-break-all.html"
     },
     {
-        "duration": "3.0",
+        "duration": "4.0",
         "name": "blink_perf.layout/word-break-break-word.html"
     },
     {
-        "duration": "3.0",
+        "duration": "4.0",
         "name": "blink_perf.layout/word-wrap-break-word.html"
     },
     {
@@ -912,7 +956,7 @@
         "name": "blink_perf.paint/appending-text.html"
     },
     {
-        "duration": "15.0",
+        "duration": "18.0",
         "name": "blink_perf.paint/color-changes.html"
     },
     {
@@ -924,11 +968,15 @@
         "name": "blink_perf.paint/complex-iframe-filtered.html"
     },
     {
-        "duration": "14.0",
+        "duration": "28.0",
+        "name": "blink_perf.paint/contain-update-layer-tree.html"
+    },
+    {
+        "duration": "13.0",
         "name": "blink_perf.paint/containment-resize.html"
     },
     {
-        "duration": "14.0",
+        "duration": "13.0",
         "name": "blink_perf.paint/fixed-and-many-layers-scroll.html"
     },
     {
@@ -944,7 +992,7 @@
         "name": "blink_perf.paint/large-table-background-change-with-zero-width-collapsed-borders.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.paint/large-table-collapsed-border-change-with-backgrounds.html"
     },
     {
@@ -952,7 +1000,7 @@
         "name": "blink_perf.paint/large-table-collapsed-border-change-with-text.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.paint/large-table-collapsed-border-change.html"
     },
     {
@@ -960,15 +1008,19 @@
         "name": "blink_perf.paint/large-table-repaint.html"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "blink_perf.paint/move-text-with-mask.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "blink_perf.paint/paint-offset-changes.html"
     },
     {
-        "duration": "15.0",
+        "duration": "17.0",
+        "name": "blink_perf.paint/select-all-words.html"
+    },
+    {
+        "duration": "16.0",
         "name": "blink_perf.paint/transform-changes.html"
     },
     {
@@ -976,19 +1028,19 @@
         "name": "blink_perf.parser/css-parser-yui.html"
     },
     {
-        "duration": "9.0",
+        "duration": "5.0",
         "name": "blink_perf.parser/html-parser-threaded.html"
     },
     {
-        "duration": "10.0",
+        "duration": "6.0",
         "name": "blink_perf.parser/html-parser.html"
     },
     {
-        "duration": "30.0",
+        "duration": "26.0",
         "name": "blink_perf.parser/html5-full-render.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/iframe-append-remove.html"
     },
     {
@@ -1012,7 +1064,7 @@
         "name": "blink_perf.parser/query-selector-all-class-deep.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/query-selector-all-class-first.html"
     },
     {
@@ -1028,15 +1080,15 @@
         "name": "blink_perf.parser/query-selector-all-deep.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/query-selector-all-first.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/query-selector-all-id-deep.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/query-selector-all-id-first.html"
     },
     {
@@ -1068,7 +1120,7 @@
         "name": "blink_perf.parser/query-selector-last.html"
     },
     {
-        "duration": "7.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/simple-url.html"
     },
     {
@@ -1080,7 +1132,7 @@
         "name": "blink_perf.parser/tiny-innerHTML.html"
     },
     {
-        "duration": "9.0",
+        "duration": "8.0",
         "name": "blink_perf.parser/url-parser.html"
     },
     {
@@ -1120,7 +1172,7 @@
         "name": "blink_perf.shadow_dom/imperative-api-detail-summary-large.html"
     },
     {
-        "duration": "3.0",
+        "duration": "2.0",
         "name": "blink_perf.shadow_dom/imperative-api-detail-summary.html"
     },
     {
@@ -1168,7 +1220,7 @@
         "name": "blink_perf.shadow_dom/v0-changing-select-without-shadow-dom.html"
     },
     {
-        "duration": "3.0",
+        "duration": "2.0",
         "name": "blink_perf.shadow_dom/v0-content-reprojection.html"
     },
     {
@@ -1176,7 +1228,7 @@
         "name": "blink_perf.shadow_dom/v0-large-distribution-without-layout.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.shadow_dom/v0-multiple-insertion-points.html"
     },
     {
@@ -1188,7 +1240,7 @@
         "name": "blink_perf.shadow_dom/v0-small-distribution-with-layout.html"
     },
     {
-        "duration": "13.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html"
     },
     {
@@ -1196,15 +1248,15 @@
         "name": "blink_perf.shadow_dom/v1-distribution.html"
     },
     {
-        "duration": "3.0",
+        "duration": "2.0",
         "name": "blink_perf.shadow_dom/v1-host-child-append.html"
     },
     {
-        "duration": "13.0",
+        "duration": "6.0",
         "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html"
     },
     {
-        "duration": "25.0",
+        "duration": "18.0",
         "name": "blink_perf.shadow_dom/v1-large-deep-layout.html"
     },
     {
@@ -1212,7 +1264,7 @@
         "name": "blink_perf.shadow_dom/v1-large-shallow-distribution.html"
     },
     {
-        "duration": "3.0",
+        "duration": "2.0",
         "name": "blink_perf.shadow_dom/v1-large-shallow-layout.html"
     },
     {
@@ -1220,7 +1272,7 @@
         "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-re-layout.html"
     },
     {
-        "duration": "3.0",
+        "duration": "2.0",
         "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-assigned-nodes.html"
     },
     {
@@ -1228,7 +1280,7 @@
         "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-flatten.html"
     },
     {
-        "duration": "3.0",
+        "duration": "2.0",
         "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-re-layout.html"
     },
     {
@@ -1260,7 +1312,7 @@
         "name": "blink_perf.shadow_dom/v1-small-shallow-layout.html"
     },
     {
-        "duration": "4.0",
+        "duration": "5.0",
         "name": "blink_perf.svg/AzLizardBenjiPark.html"
     },
     {
@@ -1276,7 +1328,7 @@
         "name": "blink_perf.svg/Cowboy.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.svg/CrawFishGanson.html"
     },
     {
@@ -1288,11 +1340,11 @@
         "name": "blink_perf.svg/DropsOnABlade.html"
     },
     {
-        "duration": "3.0",
+        "duration": "2.0",
         "name": "blink_perf.svg/FlowerFromMyGarden.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.svg/FoodLeifLodahl.html"
     },
     {
@@ -1300,7 +1352,7 @@
         "name": "blink_perf.svg/France.html"
     },
     {
-        "duration": "3.0",
+        "duration": "2.0",
         "name": "blink_perf.svg/FrancoBolloGnomeEzechi.html"
     },
     {
@@ -1320,11 +1372,11 @@
         "name": "blink_perf.svg/MtSaintHelens.html"
     },
     {
-        "duration": "2.0",
+        "duration": "3.0",
         "name": "blink_perf.svg/Samurai.html"
     },
     {
-        "duration": "32.0",
+        "duration": "38.0",
         "name": "blink_perf.svg/SierpinskiCarpet.html"
     },
     {
@@ -1340,7 +1392,7 @@
         "name": "blink_perf.svg/SvgNestedUse.html"
     },
     {
-        "duration": "3.0",
+        "duration": "2.0",
         "name": "blink_perf.svg/UnderTheSee.html"
     },
     {
@@ -1360,15 +1412,15 @@
         "name": "dromaeo/http://dromaeo.com?dom-modify"
     },
     {
-        "duration": "49.0",
+        "duration": "48.0",
         "name": "dromaeo/http://dromaeo.com?dom-query"
     },
     {
-        "duration": "30.0",
+        "duration": "29.0",
         "name": "dromaeo/http://dromaeo.com?dom-traverse"
     },
     {
-        "duration": "3.0",
+        "duration": "2.0",
         "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html"
     },
     {
@@ -1380,607 +1432,607 @@
         "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html"
     },
     {
-        "duration": "21.0",
+        "duration": "9.0",
         "name": "loading.desktop/24h_cold"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "loading.desktop/24h_warm"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "loading.desktop/AirBnB_cold"
     },
     {
-        "duration": "40.0",
+        "duration": "23.0",
         "name": "loading.desktop/AirBnB_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "loading.desktop/Aljayyash_cold"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "loading.desktop/Aljayyash_warm"
     },
     {
-        "duration": "45.0",
+        "duration": "24.0",
         "name": "loading.desktop/AllRecipes_warm"
     },
     {
-        "duration": "31.0",
+        "duration": "15.0",
         "name": "loading.desktop/ArsTechnica_cold"
     },
     {
-        "duration": "48.0",
+        "duration": "28.0",
         "name": "loading.desktop/ArsTechnica_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "7.0",
         "name": "loading.desktop/Baidu_cold"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "loading.desktop/Baidu_warm"
     },
     {
-        "duration": "27.0",
+        "duration": "12.0",
         "name": "loading.desktop/Bhaskar_cold"
     },
     {
-        "duration": "35.0",
+        "duration": "17.0",
         "name": "loading.desktop/Bhaskar_warm"
     },
     {
-        "duration": "21.0",
+        "duration": "10.0",
         "name": "loading.desktop/Chosun_cold"
     },
     {
-        "duration": "26.0",
+        "duration": "12.0",
         "name": "loading.desktop/Chosun_warm"
     },
     {
-        "duration": "21.0",
+        "duration": "10.0",
         "name": "loading.desktop/Colorado.edu_cold"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "loading.desktop/Colorado.edu_warm"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "loading.desktop/Danawa_cold"
     },
     {
-        "duration": "25.0",
+        "duration": "11.0",
         "name": "loading.desktop/Danawa_warm"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "loading.desktop/Daum_cold"
     },
     {
-        "duration": "24.0",
+        "duration": "12.0",
         "name": "loading.desktop/Daum_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "10.0",
         "name": "loading.desktop/Donga_cold"
     },
     {
-        "duration": "28.0",
+        "duration": "14.0",
         "name": "loading.desktop/Donga_warm"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "loading.desktop/Economist_cold"
     },
     {
-        "duration": "37.0",
+        "duration": "22.0",
         "name": "loading.desktop/Economist_warm"
     },
     {
-        "duration": "38.0",
+        "duration": "18.0",
         "name": "loading.desktop/Elmundo_cold"
     },
     {
-        "duration": "20.0",
+        "duration": "8.0",
         "name": "loading.desktop/FC2Blog_cold"
     },
     {
-        "duration": "25.0",
+        "duration": "11.0",
         "name": "loading.desktop/FC2Blog_warm"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "loading.desktop/FIFA_cold"
     },
     {
-        "duration": "24.0",
+        "duration": "11.0",
         "name": "loading.desktop/FIFA_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "20.0",
         "name": "loading.desktop/FarsNews_cold"
     },
     {
-        "duration": "25.0",
+        "duration": "12.0",
         "name": "loading.desktop/FarsNews_warm"
     },
     {
-        "duration": "21.0",
+        "duration": "9.0",
         "name": "loading.desktop/Flickr_cold"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "loading.desktop/Flickr_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "loading.desktop/FlipKart_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "11.0",
         "name": "loading.desktop/FlipKart_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "8.0",
         "name": "loading.desktop/Free.fr_cold"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "loading.desktop/Free.fr_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "7.0",
         "name": "loading.desktop/HTML5Rocks_cold"
     },
     {
-        "duration": "18.0",
+        "duration": "9.0",
         "name": "loading.desktop/HTML5Rocks_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "8.0",
         "name": "loading.desktop/Haraj_cold"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "loading.desktop/Haraj_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "11.0",
         "name": "loading.desktop/HatenaBookmark_cold"
     },
     {
-        "duration": "28.0",
+        "duration": "15.0",
         "name": "loading.desktop/HatenaBookmark_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "10.0",
         "name": "loading.desktop/IGN_cold"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "loading.desktop/IGN_warm"
     },
     {
-        "duration": "23.0",
+        "duration": "9.0",
         "name": "loading.desktop/IMDB_cold"
     },
     {
-        "duration": "31.0",
+        "duration": "14.0",
         "name": "loading.desktop/IMDB_warm"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "loading.desktop/IndiaTimes_cold"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "loading.desktop/IndiaTimes_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "loading.desktop/Kakaku_cold"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "loading.desktop/Kakaku_warm"
     },
     {
-        "duration": "32.0",
+        "duration": "13.0",
         "name": "loading.desktop/Kenh14_cold"
     },
     {
-        "duration": "48.0",
+        "duration": "22.0",
         "name": "loading.desktop/Kenh14_warm"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "loading.desktop/Mercadolivre_cold"
     },
     {
-        "duration": "24.0",
+        "duration": "11.0",
         "name": "loading.desktop/Mercadolivre_warm"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "loading.desktop/Naver_cold"
     },
     {
-        "duration": "23.0",
+        "duration": "10.0",
         "name": "loading.desktop/Naver_warm"
     },
     {
-        "duration": "20.0",
+        "duration": "8.0",
         "name": "loading.desktop/Pantip_cold"
     },
     {
-        "duration": "24.0",
+        "duration": "11.0",
         "name": "loading.desktop/Pantip_warm"
     },
     {
-        "duration": "24.0",
+        "duration": "12.0",
         "name": "loading.desktop/PremierLeague_cold"
     },
     {
-        "duration": "33.0",
+        "duration": "18.0",
         "name": "loading.desktop/PremierLeague_warm"
     },
     {
-        "duration": "24.0",
+        "duration": "11.0",
         "name": "loading.desktop/QQ_cold"
     },
     {
-        "duration": "30.0",
+        "duration": "15.0",
         "name": "loading.desktop/QQ_warm"
     },
     {
-        "duration": "22.0",
+        "duration": "10.0",
         "name": "loading.desktop/REI_cold"
     },
     {
-        "duration": "28.0",
+        "duration": "15.0",
         "name": "loading.desktop/REI_warm"
     },
     {
-        "duration": "20.0",
+        "duration": "8.0",
         "name": "loading.desktop/Ruten_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "10.0",
         "name": "loading.desktop/Ruten_warm"
     },
     {
-        "duration": "30.0",
+        "duration": "16.0",
         "name": "loading.desktop/Sina_cold"
     },
     {
-        "duration": "37.0",
+        "duration": "23.0",
         "name": "loading.desktop/Sina_warm"
     },
     {
-        "duration": "24.0",
+        "duration": "12.0",
         "name": "loading.desktop/Taobao_cold"
     },
     {
-        "duration": "31.0",
+        "duration": "18.0",
         "name": "loading.desktop/Taobao_warm"
     },
     {
-        "duration": "23.0",
-        "name": "loading.desktop/TheOnion_cold"
-    },
-    {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "loading.desktop/TheVerge_cold"
     },
     {
-        "duration": "33.0",
+        "duration": "18.0",
         "name": "loading.desktop/TheVerge_warm"
     },
     {
-        "duration": "27.0",
+        "duration": "12.0",
         "name": "loading.desktop/TicketMaster_cold"
     },
     {
-        "duration": "46.0",
+        "duration": "18.0",
         "name": "loading.desktop/TicketMaster_warm"
     },
     {
-        "duration": "35.0",
+        "duration": "15.0",
         "name": "loading.desktop/Vietnamnet_cold"
     },
     {
-        "duration": "49.0",
+        "duration": "23.0",
         "name": "loading.desktop/Vietnamnet_warm"
     },
     {
-        "duration": "31.0",
+        "duration": "13.0",
         "name": "loading.desktop/Vnexpress_cold"
     },
     {
-        "duration": "43.0",
+        "duration": "20.0",
         "name": "loading.desktop/Vnexpress_warm"
     },
     {
-        "duration": "17.0",
+        "duration": "8.0",
         "name": "loading.desktop/Yandex_cold"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "loading.desktop/Yandex_warm"
     },
     {
-        "duration": "25.0",
+        "duration": "11.0",
         "name": "loading.desktop/amazon.co.jp_cold"
     },
     {
-        "duration": "33.0",
+        "duration": "17.0",
         "name": "loading.desktop/amazon.co.jp_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "loading.desktop/ja.wikipedia_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "11.0",
         "name": "loading.desktop/ja.wikipedia_warm"
     },
     {
-        "duration": "30.0",
+        "duration": "15.0",
         "name": "loading.desktop/money.cnn_cold"
     },
     {
-        "duration": "42.0",
+        "duration": "22.0",
         "name": "loading.desktop/money.cnn_warm"
     },
     {
-        "duration": "19.0",
+        "duration": "8.0",
         "name": "loading.desktop/ru.wikipedia_cold"
     },
     {
-        "duration": "22.0",
+        "duration": "10.0",
         "name": "loading.desktop/ru.wikipedia_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "14.0",
         "name": "loading.desktop/uol.com.br_cold"
     },
     {
-        "duration": "51.0",
+        "duration": "22.0",
         "name": "loading.desktop/uol.com.br_warm"
     },
     {
-        "duration": "21.0",
+        "duration": "9.0",
         "name": "loading.desktop/yahoo.co.jp_cold"
     },
     {
-        "duration": "25.0",
+        "duration": "13.0",
         "name": "loading.desktop/yahoo.co.jp_warm"
     },
     {
-        "duration": "18.0",
+        "duration": "6.0",
         "name": "media.desktop/mse.html?media=aac_audio.mp4"
     },
     {
-        "duration": "19.0",
+        "duration": "8.0",
         "name": "media.desktop/mse.html?media=aac_audio.mp4,h264_video.mp4"
     },
     {
-        "duration": "19.0",
+        "duration": "8.0",
         "name": "media.desktop/mse.html?media=aac_audio.mp4,h264_video.mp4&waitForPageLoaded=true"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "media.desktop/mse.html?media=h264_video.mp4"
     },
     {
-        "duration": "23.0",
+        "duration": "7.0",
+        "name": "media.desktop/mse.html?media=tulip0.av1.mp4"
+    },
+    {
+        "duration": "13.0",
         "name": "media.desktop/video.html?src=crowd.ogg&type=audio"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "media.desktop/video.html?src=crowd1080.mp4"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "media.desktop/video.html?src=crowd1080.webm"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "media.desktop/video.html?src=crowd1080_vp9.webm"
     },
     {
-        "duration": "17.0",
+        "duration": "7.0",
         "name": "media.desktop/video.html?src=crowd1080_vp9.webm&seek"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "media.desktop/video.html?src=crowd720_vp9.webm"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "media.desktop/video.html?src=garden2_10s.mp4"
     },
     {
-        "duration": "19.0",
+        "duration": "7.0",
         "name": "media.desktop/video.html?src=garden2_10s.mp4&seek"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "media.desktop/video.html?src=garden2_10s.webm"
     },
     {
-        "duration": "16.0",
+        "duration": "7.0",
         "name": "media.desktop/video.html?src=garden2_10s.webm&seek"
     },
     {
-        "duration": "19.0",
+        "duration": "8.0",
         "name": "media.desktop/video.html?src=smpte_3840x2160_60fps_vp9.webm&seek"
     },
     {
-        "duration": "32.0",
+        "duration": "15.0",
+        "name": "media.desktop/video.html?src=tulip0.av1.mp4"
+    },
+    {
+        "duration": "7.0",
+        "name": "media.desktop/video.html?src=tulip0.av1.mp4&seek"
+    },
+    {
+        "duration": "21.0",
         "name": "media.desktop/video.html?src=tulip2.m4a&type=audio"
     },
     {
-        "duration": "31.0",
+        "duration": "21.0",
         "name": "media.desktop/video.html?src=tulip2.mp3&type=audio"
     },
     {
-        "duration": "16.0",
+        "duration": "5.0",
         "name": "media.desktop/video.html?src=tulip2.mp3&type=audio&seek"
     },
     {
-        "duration": "33.0",
+        "duration": "21.0",
         "name": "media.desktop/video.html?src=tulip2.mp4"
     },
     {
-        "duration": "35.0",
+        "duration": "21.0",
         "name": "media.desktop/video.html?src=tulip2.mp4&busyjs"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "media.desktop/video.html?src=tulip2.mp4&seek"
     },
     {
-        "duration": "32.0",
+        "duration": "21.0",
         "name": "media.desktop/video.html?src=tulip2.ogg&type=audio"
     },
     {
-        "duration": "16.0",
+        "duration": "6.0",
         "name": "media.desktop/video.html?src=tulip2.ogg&type=audio&seek"
     },
     {
-        "duration": "34.0",
+        "duration": "21.0",
         "name": "media.desktop/video.html?src=tulip2.vp9.webm"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "media.desktop/video.html?src=tulip2.vp9.webm&background"
     },
     {
-        "duration": "18.0",
+        "duration": "9.0",
         "name": "media.desktop/video.html?src=tulip2.vp9.webm&seek"
     },
     {
-        "duration": "34.0",
+        "duration": "21.0",
         "name": "media.desktop/video.html?src=tulip2.vp9.webm_WiFi"
     },
     {
-        "duration": "32.0",
+        "duration": "21.0",
         "name": "media.desktop/video.html?src=tulip2.wav&type=audio"
     },
     {
-        "duration": "15.0",
+        "duration": "7.0",
         "name": "media.desktop/video.html?src=tulip2.wav&type=audio&seek"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "memory.desktop/TrivialAnimationPageSharedPageState"
     },
     {
-        "duration": "29.0",
+        "duration": "21.0",
         "name": "memory.desktop/TrivialBlinkingCursorPageSharedPageState"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "memory.desktop/TrivialBlurAnimationPageSharedPageState"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "memory.desktop/TrivialCanvasPageSharedPageState"
     },
     {
-        "duration": "30.0",
+        "duration": "22.0",
         "name": "memory.desktop/TrivialFullscreenVideoPageSharedPageState"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "memory.desktop/TrivialGifPageSharedPageState"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "memory.desktop/TrivialScrollingPageSharedPageState"
     },
     {
-        "duration": "30.0",
+        "duration": "21.0",
         "name": "memory.desktop/TrivialWebGLPageSharedPageState"
     },
     {
-        "duration": "53.0",
+        "duration": "44.0",
         "name": "memory.desktop/WebWorker"
     },
     {
-        "duration": "184.0",
-        "name": "memory.long_running_idle_gmail_background_tbmv2/https://mail.google.com/mail/"
-    },
-    {
-        "duration": "168.0",
-        "name": "memory.long_running_idle_gmail_tbmv2/https://mail.google.com/mail/"
-    },
-    {
         "duration": "42.0",
         "name": "octane/http://chromium.github.io/octane/index.html?auto=1"
     },
     {
-        "duration": "52.0",
+        "duration": "35.0",
         "name": "power.desktop/TrivialAnimationPageSharedPageState"
     },
     {
-        "duration": "46.0",
+        "duration": "34.0",
         "name": "power.desktop/TrivialBlinkingCursorPageSharedPageState"
     },
     {
-        "duration": "49.0",
+        "duration": "34.0",
         "name": "power.desktop/TrivialBlurAnimationPageSharedPageState"
     },
     {
-        "duration": "51.0",
+        "duration": "35.0",
         "name": "power.desktop/TrivialCanvasPageSharedPageState"
     },
     {
-        "duration": "47.0",
+        "duration": "35.0",
         "name": "power.desktop/TrivialFullscreenVideoPageSharedPageState"
     },
     {
-        "duration": "46.0",
+        "duration": "34.0",
         "name": "power.desktop/TrivialGifPageSharedPageState"
     },
     {
-        "duration": "49.0",
+        "duration": "43.0",
         "name": "power.desktop/TrivialScrollingPageSharedPageState"
     },
     {
-        "duration": "51.0",
+        "duration": "35.0",
         "name": "power.desktop/TrivialWebGLPageSharedPageState"
     },
     {
-        "duration": "52.0",
+        "duration": "45.0",
         "name": "power.desktop/abcnews"
     },
     {
-        "duration": "46.0",
+        "duration": "35.0",
         "name": "power.desktop/indiatimes"
     },
     {
-        "duration": "52.0",
+        "duration": "36.0",
         "name": "power.desktop/instagram"
     },
     {
-        "duration": "47.0",
+        "duration": "35.0",
         "name": "power.desktop/microsoft"
     },
     {
-        "duration": "51.0",
+        "duration": "39.0",
         "name": "power.desktop/sina"
     },
     {
-        "duration": "50.0",
+        "duration": "36.0",
         "name": "power.desktop/slideshare"
     },
     {
-        "duration": "64.0",
+        "duration": "38.0",
         "name": "power.desktop/uol"
     },
     {
@@ -1988,11 +2040,11 @@
         "name": "rasterize_and_record_micro.partial_invalidation/800_relpos_divs.html"
     },
     {
-        "duration": "19.0",
+        "duration": "20.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html"
     },
     {
-        "duration": "10.0",
+        "duration": "9.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html"
     },
     {
@@ -2000,7 +2052,7 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html"
     },
     {
-        "duration": "13.0",
+        "duration": "14.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html"
     },
     {
@@ -2040,15 +2092,15 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html"
     },
     {
-        "duration": "9.0",
+        "duration": "10.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html"
     },
     {
-        "duration": "8.0",
+        "duration": "9.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html"
     },
     {
-        "duration": "18.0",
+        "duration": "14.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html"
     },
     {
@@ -2060,7 +2112,7 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html"
     },
     {
-        "duration": "19.0",
+        "duration": "18.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html"
     },
     {
@@ -2068,91 +2120,99 @@
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html"
     },
     {
-        "duration": "23.0",
+        "duration": "25.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html"
     },
     {
-        "duration": "100.0",
+        "duration": "101.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html"
     },
     {
-        "duration": "87.0",
+        "duration": "88.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html"
     },
     {
-        "duration": "21.0",
+        "duration": "20.0",
         "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html"
     },
     {
-        "duration": "39.0",
+        "duration": "18.0",
         "name": "rendering.desktop/accu_weather_2018"
     },
     {
-        "duration": "16.0",
+        "duration": "18.0",
         "name": "rendering.desktop/accu_weather_pinch_2018"
     },
     {
-        "duration": "38.0",
+        "duration": "14.0",
         "name": "rendering.desktop/amazon_2018"
     },
     {
-        "duration": "17.0",
+        "duration": "9.0",
         "name": "rendering.desktop/amazon_pinch_2018"
     },
     {
-        "duration": "29.0",
+        "duration": "14.0",
         "name": "rendering.desktop/analog_clock_svg"
     },
     {
-        "duration": "14.0",
+        "duration": "12.0",
         "name": "rendering.desktop/animometer_webgl"
     },
     {
-        "duration": "12.0",
-        "name": "rendering.desktop/aquarium"
+        "duration": "13.0",
+        "name": "rendering.desktop/animometer_webgl_attrib_arrays"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/animometer_webgl_multi_draw"
     },
     {
         "duration": "14.0",
+        "name": "rendering.desktop/aquarium"
+    },
+    {
+        "duration": "15.0",
         "name": "rendering.desktop/aquarium_20k"
     },
     {
-        "duration": "31.0",
+        "duration": "14.0",
         "name": "rendering.desktop/background_color_animation"
     },
     {
-        "duration": "34.0",
+        "duration": "14.0",
         "name": "rendering.desktop/background_color_animation_with_gradient"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.desktop/balls_css_key_frame_animations"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "rendering.desktop/balls_css_key_frame_animations_composited_transform"
     },
     {
-        "duration": "32.0",
+        "duration": "14.0",
         "name": "rendering.desktop/balls_css_transition_2_properties"
     },
     {
-        "duration": "32.0",
+        "duration": "14.0",
         "name": "rendering.desktop/balls_css_transition_40_properties"
     },
     {
-        "duration": "32.0",
+        "duration": "14.0",
         "name": "rendering.desktop/balls_css_transition_all_properties"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "rendering.desktop/balls_javascript_canvas"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "rendering.desktop/balls_javascript_css"
     },
     {
-        "duration": "32.0",
+        "duration": "15.0",
         "name": "rendering.desktop/balls_svg_animations"
     },
     {
@@ -2160,463 +2220,455 @@
         "name": "rendering.desktop/blob"
     },
     {
-        "duration": "41.0",
+        "duration": "16.0",
         "name": "rendering.desktop/blogspot_2018"
     },
     {
-        "duration": "17.0",
+        "duration": "11.0",
         "name": "rendering.desktop/blogspot_pinch_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "12.0",
+        "name": "rendering.desktop/blur_rotating_background"
+    },
+    {
+        "duration": "11.0",
         "name": "rendering.desktop/booking.com_2018"
     },
     {
-        "duration": "15.0",
+        "duration": "10.0",
         "name": "rendering.desktop/booking_pinch_2018"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "rendering.desktop/bouncing_balls_15"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/bouncing_balls_shadow"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/bouncing_clipped_rectangles"
     },
     {
-        "duration": "19.0",
+        "duration": "9.0",
         "name": "rendering.desktop/bouncing_gradient_circles"
     },
     {
-        "duration": "18.0",
+        "duration": "8.0",
         "name": "rendering.desktop/bouncing_png_images"
     },
     {
-        "duration": "26.0",
+        "duration": "10.0",
         "name": "rendering.desktop/bouncing_svg_images"
     },
     {
-        "duration": "12.0",
+        "duration": "14.0",
         "name": "rendering.desktop/camera_to_webgl"
     },
     {
-        "duration": "25.0",
+        "duration": "10.0",
         "name": "rendering.desktop/canvas_05000_pixels_per_second"
     },
     {
-        "duration": "25.0",
+        "duration": "11.0",
         "name": "rendering.desktop/canvas_10000_pixels_per_second"
     },
     {
-        "duration": "22.0",
-        "name": "rendering.desktop/canvas_15000_pixels_per_second"
-    },
-    {
-        "duration": "20.0",
+        "duration": "7.0",
         "name": "rendering.desktop/canvas_20000_pixels_per_second"
     },
     {
-        "duration": "18.0",
-        "name": "rendering.desktop/canvas_30000_pixels_per_second"
-    },
-    {
-        "duration": "17.0",
+        "duration": "6.0",
         "name": "rendering.desktop/canvas_40000_pixels_per_second"
     },
     {
-        "duration": "17.0",
-        "name": "rendering.desktop/canvas_50000_pixels_per_second"
-    },
-    {
-        "duration": "17.0",
+        "duration": "6.0",
         "name": "rendering.desktop/canvas_60000_pixels_per_second"
     },
     {
-        "duration": "17.0",
+        "duration": "6.0",
         "name": "rendering.desktop/canvas_75000_pixels_per_second"
     },
     {
-        "duration": "16.0",
+        "duration": "6.0",
         "name": "rendering.desktop/canvas_90000_pixels_per_second"
     },
     {
-        "duration": "23.0",
+        "duration": "8.0",
         "name": "rendering.desktop/canvas_animation_no_clear"
     },
     {
-        "duration": "20.0",
+        "duration": "8.0",
         "name": "rendering.desktop/canvas_arcs"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/canvas_font_cycler"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/canvas_lines"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "rendering.desktop/canvas_to_blob"
     },
     {
-        "duration": "18.0",
+        "duration": "9.0",
         "name": "rendering.desktop/cats_unscaled"
     },
     {
-        "duration": "16.0",
+        "duration": "7.0",
         "name": "rendering.desktop/cats_viewport_width"
     },
     {
-        "duration": "29.0",
+        "duration": "16.0",
         "name": "rendering.desktop/cc_poster_circle"
     },
     {
-        "duration": "28.0",
+        "duration": "14.0",
         "name": "rendering.desktop/cc_scroll_text_only"
     },
     {
-        "duration": "26.0",
+        "duration": "12.0",
         "name": "rendering.desktop/chip_tune"
     },
     {
-        "duration": "41.0",
+        "duration": "16.0",
         "name": "rendering.desktop/cnn_2018"
     },
     {
-        "duration": "16.0",
+        "duration": "13.0",
         "name": "rendering.desktop/cnn_pinch_2018"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "rendering.desktop/compositor_heavy_animation"
     },
     {
-        "duration": "24.0",
+        "duration": "9.0",
         "name": "rendering.desktop/crafty_mind"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_animations_many_keyframes"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_animations_simultaneous_inline_style"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_animations_simultaneous_new_element"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_animations_simultaneous_style_element"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_animations_simultaneous_updating_class"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_animations_staggered_infinite_iterations"
     },
     {
-        "duration": "30.0",
+        "duration": "15.0",
         "name": "rendering.desktop/css_animations_staggered_inline_style"
     },
     {
-        "duration": "31.0",
+        "duration": "15.0",
         "name": "rendering.desktop/css_animations_staggered_new_element"
     },
     {
-        "duration": "31.0",
+        "duration": "15.0",
         "name": "rendering.desktop/css_animations_staggered_style_element"
     },
     {
-        "duration": "30.0",
+        "duration": "15.0",
         "name": "rendering.desktop/css_animations_staggered_updating_class"
     },
     {
-        "duration": "31.0",
+        "duration": "15.0",
         "name": "rendering.desktop/css_animations_triggered_inline_style"
     },
     {
-        "duration": "31.0",
+        "duration": "15.0",
         "name": "rendering.desktop/css_animations_triggered_new_element"
     },
     {
-        "duration": "29.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_animations_triggered_style_element"
     },
     {
-        "duration": "30.0",
+        "duration": "15.0",
         "name": "rendering.desktop/css_animations_triggered_updating_class"
     },
     {
-        "duration": "29.0",
+        "duration": "16.0",
         "name": "rendering.desktop/css_opacity_plus_n_layers_99"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_transitions_inline_style"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_transitions_new_element"
     },
     {
-        "duration": "28.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_staggered_inline_style"
     },
     {
-        "duration": "29.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_staggered_new_element"
     },
     {
-        "duration": "28.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_staggered_style_element"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_transitions_staggered_updating_class"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_transitions_style_element"
     },
     {
-        "duration": "29.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_triggered_inline_style"
     },
     {
-        "duration": "29.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_triggered_new_element"
     },
     {
-        "duration": "29.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_triggered_style_element"
     },
     {
-        "duration": "29.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_transitions_triggered_updating_class"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_transitions_updating_class"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_value_type_color"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_value_type_filter"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_value_type_length"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_value_type_length_complex"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_value_type_length_simple"
     },
     {
-        "duration": "28.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_value_type_path"
     },
     {
-        "duration": "28.0",
+        "duration": "14.0",
         "name": "rendering.desktop/css_value_type_shadow"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_value_type_transform_complex"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "rendering.desktop/css_value_type_transform_simple"
     },
     {
-        "duration": "15.0",
+        "duration": "12.0",
         "name": "rendering.desktop/dynamic_cube_map"
     },
     {
-        "duration": "15.0",
+        "duration": "12.0",
         "name": "rendering.desktop/earth"
     },
     {
-        "duration": "29.0",
+        "duration": "10.0",
         "name": "rendering.desktop/ebay_2018"
     },
     {
-        "duration": "17.0",
+        "duration": "15.0",
         "name": "rendering.desktop/ebay_pinch_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "9.0",
         "name": "rendering.desktop/effect_games"
     },
     {
-        "duration": "30.0",
+        "duration": "9.0",
         "name": "rendering.desktop/espn_2018"
     },
     {
-        "duration": "18.0",
+        "duration": "11.0",
         "name": "rendering.desktop/espn_pinch_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "14.0",
         "name": "rendering.desktop/extra_large_texture_uploads"
     },
     {
-        "duration": "28.0",
+        "duration": "10.0",
         "name": "rendering.desktop/facebook_2018"
     },
     {
-        "duration": "17.0",
+        "duration": "10.0",
         "name": "rendering.desktop/facebook_pinch_2018"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/fill_shapes"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "rendering.desktop/filter_terrain_svg"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/geo_apis"
     },
     {
-        "duration": "27.0",
+        "duration": "12.0",
         "name": "rendering.desktop/gmail_2018"
     },
     {
-        "duration": "58.0",
+        "duration": "23.0",
         "name": "rendering.desktop/gmail_move_2018"
     },
     {
-        "duration": "18.0",
+        "duration": "11.0",
         "name": "rendering.desktop/gmail_pinch_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "6.0",
         "name": "rendering.desktop/google_calendar_2018"
     },
     {
-        "duration": "17.0",
+        "duration": "10.0",
         "name": "rendering.desktop/google_calendar_pinch_2018"
     },
     {
-        "duration": "38.0",
+        "duration": "13.0",
         "name": "rendering.desktop/google_docs_2018"
     },
     {
-        "duration": "16.0",
+        "duration": "9.0",
         "name": "rendering.desktop/google_image_pinch_2018"
     },
     {
-        "duration": "31.0",
+        "duration": "12.0",
         "name": "rendering.desktop/google_image_search_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "12.0",
         "name": "rendering.desktop/google_plus_2018"
     },
     {
-        "duration": "16.0",
+        "duration": "8.0",
         "name": "rendering.desktop/google_search_pinch_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "8.0",
         "name": "rendering.desktop/google_web_search_2018"
     },
     {
-        "duration": "30.0",
+        "duration": "14.0",
         "name": "rendering.desktop/guimark_vector_chart"
     },
     {
-        "duration": "24.0",
+        "duration": "10.0",
         "name": "rendering.desktop/hakim"
     },
     {
-        "duration": "39.0",
+        "duration": "24.0",
         "name": "rendering.desktop/ie_chalkboard"
     },
     {
-        "duration": "33.0",
+        "duration": "17.0",
         "name": "rendering.desktop/ie_pirate_mark"
     },
     {
-        "duration": "29.0",
+        "duration": "15.0",
         "name": "rendering.desktop/infinite_scroll_element_n_layers_99"
     },
     {
-        "duration": "29.0",
+        "duration": "15.0",
         "name": "rendering.desktop/infinite_scroll_root_fixed_n_layers_99"
     },
     {
-        "duration": "29.0",
+        "duration": "15.0",
         "name": "rendering.desktop/infinite_scroll_root_n_layers_99"
     },
     {
-        "duration": "27.0",
+        "duration": "10.0",
         "name": "rendering.desktop/jarro_doverson"
     },
     {
-        "duration": "34.0",
+        "duration": "17.0",
         "name": "rendering.desktop/js_full_screen_invalidation"
     },
     {
-        "duration": "32.0",
+        "duration": "16.0",
         "name": "rendering.desktop/js_opacity_plus_n_layers_99"
     },
     {
-        "duration": "32.0",
+        "duration": "16.0",
         "name": "rendering.desktop/js_paint_plus_n_layers_99"
     },
     {
-        "duration": "32.0",
+        "duration": "16.0",
         "name": "rendering.desktop/js_poster_circle"
     },
     {
-        "duration": "28.0",
+        "duration": "16.0",
         "name": "rendering.desktop/js_scroll_text_only"
     },
     {
-        "duration": "25.0",
+        "duration": "9.0",
         "name": "rendering.desktop/kevs_3d"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.desktop/keyframed_animations"
     },
     {
-        "duration": "28.0",
+        "duration": "14.0",
         "name": "rendering.desktop/large_texture_uploads"
     },
     {
-        "duration": "29.0",
+        "duration": "10.0",
         "name": "rendering.desktop/linkedin_2018"
     },
     {
-        "duration": "16.0",
+        "duration": "11.0",
         "name": "rendering.desktop/linkedin_pinch_2018"
     },
     {
-        "duration": "24.0",
+        "duration": "9.0",
         "name": "rendering.desktop/man_in_blue"
     },
     {
-        "duration": "25.0",
+        "duration": "10.0",
         "name": "rendering.desktop/many_images"
     },
     {
@@ -2624,459 +2676,427 @@
         "name": "rendering.desktop/many_planets_deep"
     },
     {
-        "duration": "23.0",
+        "duration": "12.0",
         "name": "rendering.desktop/maps_move_2018"
     },
     {
-        "duration": "13.0",
+        "duration": "12.0",
         "name": "rendering.desktop/maps_perf_test"
     },
     {
-        "duration": "29.0",
+        "duration": "14.0",
         "name": "rendering.desktop/medium_texture_uploads"
     },
     {
-        "duration": "23.0",
+        "duration": "9.0",
         "name": "rendering.desktop/megi_dish"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "rendering.desktop/microsoft_asteroid_belt"
     },
     {
-        "duration": "23.0",
+        "duration": "9.0",
         "name": "rendering.desktop/microsoft_fireflies"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "rendering.desktop/microsoft_fish_ie_tank"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.desktop/microsoft_snow"
-    },
-    {
-        "duration": "21.0",
-        "name": "rendering.desktop/microsoft_speed_reading"
-    },
-    {
-        "duration": "22.0",
-        "name": "rendering.desktop/microsoft_tweet_map"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.desktop/microsoft_video_city"
-    },
-    {
-        "duration": "23.0",
-        "name": "rendering.desktop/microsoft_worker_fountains"
-    },
-    {
-        "duration": "20.0",
-        "name": "rendering.desktop/mix_10k"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/mix_blend_mode_animation_difference"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/mix_blend_mode_animation_hue"
-    },
-    {
-        "duration": "28.0",
-        "name": "rendering.desktop/mix_blend_mode_animation_propagating_isolation"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/mix_blend_mode_animation_screen"
-    },
-    {
-        "duration": "27.0",
-        "name": "rendering.desktop/motion_mark_canvas_fill_shapes"
-    },
-    {
-        "duration": "26.0",
-        "name": "rendering.desktop/motion_mark_canvas_stroke_shapes"
-    },
-    {
-        "duration": "33.0",
-        "name": "rendering.desktop/new_tilings"
-    },
-    {
-        "duration": "13.0",
-        "name": "rendering.desktop/nvidia_vertex_buffer_object"
-    },
-    {
-        "duration": "36.0",
-        "name": "rendering.desktop/overlay_background_color_css_transitions_page"
+        "duration": "14.0",
+        "name": "rendering.desktop/microsoft_performance"
     },
     {
         "duration": "10.0",
+        "name": "rendering.desktop/microsoft_snow"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.desktop/microsoft_speed_reading"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.desktop/microsoft_tweet_map"
+    },
+    {
+        "duration": "11.0",
+        "name": "rendering.desktop/microsoft_video_city"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.desktop/microsoft_worker_fountains"
+    },
+    {
+        "duration": "9.0",
+        "name": "rendering.desktop/mix_10k"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/mix_blend_mode_animation_difference"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/mix_blend_mode_animation_hue"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/mix_blend_mode_animation_propagating_isolation"
+    },
+    {
+        "duration": "13.0",
+        "name": "rendering.desktop/mix_blend_mode_animation_screen"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/motion_mark_canvas_fill_shapes"
+    },
+    {
+        "duration": "14.0",
+        "name": "rendering.desktop/motion_mark_canvas_stroke_shapes"
+    },
+    {
+        "duration": "17.0",
+        "name": "rendering.desktop/new_tilings"
+    },
+    {
+        "duration": "12.0",
+        "name": "rendering.desktop/nvidia_vertex_buffer_object"
+    },
+    {
+        "duration": "15.0",
+        "name": "rendering.desktop/overlay_background_color_css_transitions_page"
+    },
+    {
+        "duration": "12.0",
         "name": "rendering.desktop/particles"
     },
     {
-        "duration": "34.0",
+        "duration": "13.0",
         "name": "rendering.desktop/pinterest_2018"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/put_get_image_data"
     },
     {
-        "duration": "25.0",
+        "duration": "10.0",
         "name": "rendering.desktop/raf"
     },
     {
-        "duration": "25.0",
+        "duration": "10.0",
         "name": "rendering.desktop/raf_animation"
     },
     {
-        "duration": "25.0",
+        "duration": "10.0",
         "name": "rendering.desktop/raf_canvas"
     },
     {
-        "duration": "24.0",
+        "duration": "10.0",
         "name": "rendering.desktop/raf_touch_animation"
     },
     {
-        "duration": "24.0",
+        "duration": "11.0",
         "name": "rendering.desktop/repaint_amazon_2018"
     },
     {
-        "duration": "23.0",
+        "duration": "10.0",
         "name": "rendering.desktop/repaint_cnn_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "rendering.desktop/repaint_facebook_2018"
     },
     {
-        "duration": "21.0",
+        "duration": "9.0",
         "name": "rendering.desktop/repaint_google_search_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "rendering.desktop/repaint_instagram_2018"
     },
     {
-        "duration": "21.0",
+        "duration": "9.0",
         "name": "rendering.desktop/repaint_reddit_2018"
     },
     {
-        "duration": "23.0",
+        "duration": "9.0",
         "name": "rendering.desktop/repaint_theverge_2018"
     },
     {
-        "duration": "22.0",
+        "duration": "9.0",
         "name": "rendering.desktop/repaint_twitter_2018"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "rendering.desktop/repaint_wikipedia_2018"
     },
     {
-        "duration": "21.0",
+        "duration": "9.0",
         "name": "rendering.desktop/repaint_yahoo_homepage_2018"
     },
     {
-        "duration": "21.0",
+        "duration": "8.0",
         "name": "rendering.desktop/runway"
     },
     {
-        "duration": "15.0",
+        "duration": "12.0",
         "name": "rendering.desktop/san_angeles"
     },
     {
-        "duration": "16.0",
+        "duration": "8.0",
         "name": "rendering.desktop/second_batch_js_heavy"
     },
     {
-        "duration": "19.0",
+        "duration": "6.0",
         "name": "rendering.desktop/second_batch_js_light"
     },
     {
-        "duration": "17.0",
+        "duration": "6.0",
         "name": "rendering.desktop/second_batch_js_medium"
     },
     {
-        "duration": "24.0",
+        "duration": "10.0",
         "name": "rendering.desktop/simple_text_page"
     },
     {
-        "duration": "17.0",
+        "duration": "7.0",
         "name": "rendering.desktop/simple_touch_drag"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "rendering.desktop/small_texture_uploads"
     },
     {
-        "duration": "24.0",
+        "duration": "9.0",
         "name": "rendering.desktop/smash_cat"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/spielzeugz"
     },
     {
-        "duration": "20.0",
+        "duration": "9.0",
         "name": "rendering.desktop/stroke_shapes"
     },
     {
-        "duration": "23.0",
+        "duration": "9.0",
         "name": "rendering.desktop/sync_scroll_offset"
     },
     {
-        "duration": "37.0",
+        "duration": "13.0",
         "name": "rendering.desktop/techcrunch_2018"
     },
     {
-        "duration": "23.0",
+        "duration": "10.0",
         "name": "rendering.desktop/text_05000_pixels_per_second"
     },
     {
-        "duration": "24.0",
+        "duration": "10.0",
         "name": "rendering.desktop/text_10000_pixels_per_second"
     },
     {
-        "duration": "21.0",
-        "name": "rendering.desktop/text_15000_pixels_per_second"
-    },
-    {
-        "duration": "19.0",
+        "duration": "8.0",
         "name": "rendering.desktop/text_20000_pixels_per_second"
     },
     {
-        "duration": "18.0",
-        "name": "rendering.desktop/text_30000_pixels_per_second"
-    },
-    {
-        "duration": "17.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_40000_pixels_per_second"
     },
     {
-        "duration": "16.0",
-        "name": "rendering.desktop/text_50000_pixels_per_second"
-    },
-    {
-        "duration": "16.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_60000_pixels_per_second"
     },
     {
-        "duration": "15.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_75000_pixels_per_second"
     },
     {
-        "duration": "15.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_90000_pixels_per_second"
     },
     {
-        "duration": "26.0",
+        "duration": "11.0",
         "name": "rendering.desktop/text_constant_full_page_raster_05000_pixels_per_second"
     },
     {
-        "duration": "26.0",
+        "duration": "10.0",
         "name": "rendering.desktop/text_constant_full_page_raster_10000_pixels_per_second"
     },
     {
-        "duration": "23.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_15000_pixels_per_second"
-    },
-    {
-        "duration": "20.0",
+        "duration": "8.0",
         "name": "rendering.desktop/text_constant_full_page_raster_20000_pixels_per_second"
     },
     {
-        "duration": "20.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_30000_pixels_per_second"
-    },
-    {
-        "duration": "20.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_constant_full_page_raster_40000_pixels_per_second"
     },
     {
-        "duration": "19.0",
-        "name": "rendering.desktop/text_constant_full_page_raster_50000_pixels_per_second"
-    },
-    {
-        "duration": "18.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_constant_full_page_raster_60000_pixels_per_second"
     },
     {
-        "duration": "18.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_constant_full_page_raster_75000_pixels_per_second"
     },
     {
-        "duration": "16.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_constant_full_page_raster_90000_pixels_per_second"
     },
     {
-        "duration": "24.0",
+        "duration": "10.0",
         "name": "rendering.desktop/text_hover_05000_pixels_per_second"
     },
     {
-        "duration": "24.0",
+        "duration": "10.0",
         "name": "rendering.desktop/text_hover_10000_pixels_per_second"
     },
     {
-        "duration": "21.0",
-        "name": "rendering.desktop/text_hover_15000_pixels_per_second"
-    },
-    {
-        "duration": "19.0",
+        "duration": "8.0",
         "name": "rendering.desktop/text_hover_20000_pixels_per_second"
     },
     {
-        "duration": "18.0",
-        "name": "rendering.desktop/text_hover_30000_pixels_per_second"
-    },
-    {
-        "duration": "18.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_hover_40000_pixels_per_second"
     },
     {
-        "duration": "16.0",
-        "name": "rendering.desktop/text_hover_50000_pixels_per_second"
-    },
-    {
-        "duration": "17.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_hover_60000_pixels_per_second"
     },
     {
-        "duration": "15.0",
+        "duration": "7.0",
         "name": "rendering.desktop/text_hover_75000_pixels_per_second"
     },
     {
-        "duration": "16.0",
+        "duration": "6.0",
         "name": "rendering.desktop/text_hover_90000_pixels_per_second"
     },
     {
-        "duration": "22.0",
+        "duration": "10.0",
         "name": "rendering.desktop/touch_handler_scrolling"
     },
     {
-        "duration": "30.0",
+        "duration": "13.0",
         "name": "rendering.desktop/transform_transitions"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.desktop/transform_transitions_js_block"
     },
     {
-        "duration": "24.0",
+        "duration": "9.0",
         "name": "rendering.desktop/twitch_2018"
     },
     {
-        "duration": "16.0",
+        "duration": "11.0",
         "name": "rendering.desktop/twitch_pinch_2018"
     },
     {
-        "duration": "34.0",
+        "duration": "13.0",
         "name": "rendering.desktop/twitter_2018"
     },
     {
-        "duration": "18.0",
+        "duration": "10.0",
         "name": "rendering.desktop/twitter_pinch_2018"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animation_value_type_color"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animation_value_type_length_3d"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animation_value_type_length_complex"
     },
     {
-        "duration": "27.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animation_value_type_length_simple"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animation_value_type_path"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animation_value_type_shadow"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animation_value_type_transform_complex"
     },
     {
-        "duration": "28.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animation_value_type_transform_simple"
     },
     {
-        "duration": "28.0",
+        "duration": "15.0",
         "name": "rendering.desktop/web_animations_many_keyframes"
     },
     {
-        "duration": "28.0",
+        "duration": "14.0",
         "name": "rendering.desktop/web_animations_set_current_time"
     },
     {
-        "duration": "28.0",
+        "duration": "14.0",
         "name": "rendering.desktop/web_animations_simultaneous"
     },
     {
-        "duration": "30.0",
+        "duration": "15.0",
         "name": "rendering.desktop/web_animations_staggered_chaining"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "rendering.desktop/web_animations_staggered_infinite_iterations"
     },
     {
-        "duration": "30.0",
+        "duration": "15.0",
         "name": "rendering.desktop/web_animations_staggered_triggering_page"
     },
     {
-        "duration": "32.0",
+        "duration": "13.0",
         "name": "rendering.desktop/wikipedia_2018"
     },
     {
-        "duration": "31.0",
+        "duration": "13.0",
         "name": "rendering.desktop/wordpress_2018"
     },
     {
-        "duration": "21.0",
+        "duration": "9.0",
         "name": "rendering.desktop/yahoo_answers_2018"
     },
     {
-        "duration": "28.0",
+        "duration": "11.0",
         "name": "rendering.desktop/yahoo_news_2018"
     },
     {
-        "duration": "17.0",
+        "duration": "11.0",
         "name": "rendering.desktop/yahoo_news_pinch_2018"
     },
     {
-        "duration": "35.0",
+        "duration": "12.0",
         "name": "rendering.desktop/yahoo_sports_2018"
     },
     {
-        "duration": "17.0",
+        "duration": "11.0",
         "name": "rendering.desktop/yahoo_sports_pinch_2018"
     },
     {
-        "duration": "27.0",
+        "duration": "9.0",
         "name": "rendering.desktop/youtube_2018"
     },
     {
-        "duration": "17.0",
+        "duration": "9.0",
         "name": "rendering.desktop/youtube_pinch_2018"
     },
     {
-        "duration": "25.0",
+        "duration": "12.0",
         "name": "rendering.desktop/yuv_decoding"
     },
     {
-        "duration": "44.0",
+        "duration": "42.0",
         "name": "speedometer-future/http://browserbench.org/Speedometer/"
     },
     {
@@ -3084,559 +3104,555 @@
         "name": "speedometer/http://browserbench.org/Speedometer/"
     },
     {
-        "duration": "96.0",
+        "duration": "79.0",
         "name": "speedometer2-future/Speedometer2"
     },
     {
-        "duration": "83.0",
+        "duration": "78.0",
         "name": "speedometer2/Speedometer2"
     },
     {
-        "duration": "91.0",
+        "duration": "63.0",
         "name": "system_health.common_desktop/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "60.0",
+        "duration": "40.0",
         "name": "system_health.common_desktop/browse:media:googleplaystore:2018"
     },
     {
-        "duration": "149.0",
+        "duration": "76.0",
         "name": "system_health.common_desktop/browse:media:imgur"
     },
     {
-        "duration": "76.0",
+        "duration": "59.0",
         "name": "system_health.common_desktop/browse:media:pinterest"
     },
     {
-        "duration": "104.0",
+        "duration": "86.0",
         "name": "system_health.common_desktop/browse:media:pinterest:2018"
     },
     {
-        "duration": "126.0",
-        "name": "system_health.common_desktop/browse:media:tumblr"
-    },
-    {
-        "duration": "81.0",
+        "duration": "58.0",
         "name": "system_health.common_desktop/browse:media:tumblr:2018"
     },
     {
-        "duration": "95.0",
+        "duration": "64.0",
         "name": "system_health.common_desktop/browse:media:youtube"
     },
     {
-        "duration": "95.0",
+        "duration": "67.0",
         "name": "system_health.common_desktop/browse:media:youtube:2018"
     },
     {
-        "duration": "113.0",
+        "duration": "62.0",
         "name": "system_health.common_desktop/browse:news:cnn"
     },
     {
-        "duration": "73.0",
+        "duration": "44.0",
         "name": "system_health.common_desktop/browse:news:cnn:2018"
     },
     {
-        "duration": "62.0",
+        "duration": "42.0",
         "name": "system_health.common_desktop/browse:news:flipboard"
     },
     {
-        "duration": "61.0",
+        "duration": "43.0",
         "name": "system_health.common_desktop/browse:news:flipboard:2018"
     },
     {
-        "duration": "60.0",
+        "duration": "44.0",
         "name": "system_health.common_desktop/browse:news:hackernews"
     },
     {
-        "duration": "80.0",
+        "duration": "59.0",
         "name": "system_health.common_desktop/browse:news:hackernews:2018"
     },
     {
-        "duration": "105.0",
+        "duration": "71.0",
         "name": "system_health.common_desktop/browse:news:nytimes"
     },
     {
-        "duration": "102.0",
+        "duration": "69.0",
         "name": "system_health.common_desktop/browse:news:nytimes:2018"
     },
     {
-        "duration": "87.0",
+        "duration": "58.0",
         "name": "system_health.common_desktop/browse:news:reddit"
     },
     {
-        "duration": "57.0",
+        "duration": "41.0",
         "name": "system_health.common_desktop/browse:news:reddit:2018"
     },
     {
-        "duration": "62.0",
+        "duration": "46.0",
         "name": "system_health.common_desktop/browse:search:google"
     },
     {
-        "duration": "63.0",
+        "duration": "46.0",
         "name": "system_health.common_desktop/browse:search:google:2018"
     },
     {
-        "duration": "47.0",
+        "duration": "34.0",
         "name": "system_health.common_desktop/browse:search:google_india"
     },
     {
-        "duration": "47.0",
+        "duration": "32.0",
         "name": "system_health.common_desktop/browse:search:google_india:2018"
     },
     {
-        "duration": "89.0",
+        "duration": "62.0",
         "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "108.0",
+        "duration": "69.0",
         "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "116.0",
+        "duration": "70.0",
         "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "57.0",
+        "duration": "62.0",
+        "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "41.0",
         "name": "system_health.common_desktop/browse:social:twitter"
     },
     {
-        "duration": "58.0",
+        "duration": "42.0",
         "name": "system_health.common_desktop/browse:social:twitter:2018"
     },
     {
-        "duration": "86.0",
+        "duration": "62.0",
         "name": "system_health.common_desktop/browse:social:twitter_infinite_scroll:2018"
     },
     {
-        "duration": "93.0",
+        "duration": "61.0",
         "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "88.0",
+        "duration": "58.0",
         "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "18.0",
+        "duration": "19.0",
         "name": "system_health.common_desktop/browse:tools:earth"
     },
     {
-        "duration": "12.0",
+        "duration": "14.0",
         "name": "system_health.common_desktop/browse:tools:maps"
     },
     {
-        "duration": "37.0",
+        "duration": "22.0",
         "name": "system_health.common_desktop/browse_accessibility:media:youtube"
     },
     {
-        "duration": "29.0",
+        "duration": "17.0",
         "name": "system_health.common_desktop/browse_accessibility:tech:codesearch"
     },
     {
-        "duration": "40.0",
+        "duration": "25.0",
         "name": "system_health.common_desktop/browse_accessibility:tech:codesearch:2018"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "system_health.common_desktop/load:chrome:blank"
     },
     {
-        "duration": "24.0",
-        "name": "system_health.common_desktop/load:games:alphabetty"
-    },
-    {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:games:alphabetty:2018"
     },
     {
-        "duration": "28.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:games:bubbles"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "system_health.common_desktop/load:games:lazors"
     },
     {
-        "duration": "30.0",
+        "duration": "17.0",
         "name": "system_health.common_desktop/load:games:miniclip"
     },
     {
-        "duration": "35.0",
+        "duration": "20.0",
         "name": "system_health.common_desktop/load:games:miniclip:2018"
     },
     {
-        "duration": "34.0",
+        "duration": "20.0",
         "name": "system_health.common_desktop/load:games:spychase"
     },
     {
-        "duration": "33.0",
+        "duration": "20.0",
         "name": "system_health.common_desktop/load:games:spychase:2018"
     },
     {
-        "duration": "41.0",
+        "duration": "26.0",
         "name": "system_health.common_desktop/load:media:9gag"
     },
     {
-        "duration": "27.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:media:dailymotion"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:media:facebook_photos:2018"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:media:flickr:2018"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "system_health.common_desktop/load:media:google_images"
     },
     {
-        "duration": "24.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:media:google_images:2018"
     },
     {
-        "duration": "33.0",
+        "duration": "17.0",
         "name": "system_health.common_desktop/load:media:imgur"
     },
     {
-        "duration": "28.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:media:imgur:2018"
     },
     {
-        "duration": "34.0",
+        "duration": "19.0",
         "name": "system_health.common_desktop/load:media:soundcloud"
     },
     {
-        "duration": "32.0",
+        "duration": "17.0",
         "name": "system_health.common_desktop/load:media:soundcloud:2018"
     },
     {
-        "duration": "29.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:media:youtube"
     },
     {
-        "duration": "29.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:media:youtube:2018"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:news:bbc"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:news:bbc:2018"
     },
     {
-        "duration": "35.0",
+        "duration": "21.0",
         "name": "system_health.common_desktop/load:news:cnn"
     },
     {
-        "duration": "31.0",
+        "duration": "18.0",
         "name": "system_health.common_desktop/load:news:cnn:2018"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:news:flipboard"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "system_health.common_desktop/load:news:hackernews"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "system_health.common_desktop/load:news:hackernews:2018"
     },
     {
-        "duration": "31.0",
+        "duration": "17.0",
         "name": "system_health.common_desktop/load:news:nytimes"
     },
     {
-        "duration": "32.0",
+        "duration": "19.0",
         "name": "system_health.common_desktop/load:news:nytimes:2018"
     },
     {
-        "duration": "34.0",
+        "duration": "20.0",
         "name": "system_health.common_desktop/load:news:qq"
     },
     {
-        "duration": "32.0",
+        "duration": "17.0",
         "name": "system_health.common_desktop/load:news:qq:2018"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:news:reddit"
     },
     {
-        "duration": "28.0",
+        "duration": "17.0",
         "name": "system_health.common_desktop/load:news:reddit:2018"
     },
     {
-        "duration": "26.0",
+        "duration": "17.0",
         "name": "system_health.common_desktop/load:news:wikipedia"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:news:wikipedia:2018"
     },
     {
-        "duration": "27.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:search:amazon"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:search:amazon:2018"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "system_health.common_desktop/load:search:baidu"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "system_health.common_desktop/load:search:baidu:2018"
     },
     {
-        "duration": "28.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:search:ebay"
     },
     {
-        "duration": "29.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:search:ebay:2018"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:search:flipkart:2018"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:search:google"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:search:google:2018"
     },
     {
-        "duration": "27.0",
+        "duration": "33.0",
         "name": "system_health.common_desktop/load:search:taobao"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:search:taobao:2018"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "system_health.common_desktop/load:search:yahoo"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "system_health.common_desktop/load:search:yahoo:2018"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "system_health.common_desktop/load:search:yandex"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:search:yandex:2018"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:social:instagram"
     },
     {
-        "duration": "27.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:social:instagram:2018"
     },
     {
-        "duration": "28.0",
+        "duration": "18.0",
         "name": "system_health.common_desktop/load:social:pinterest"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "system_health.common_desktop/load:social:vk"
     },
     {
-        "duration": "26.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:social:vk:2018"
     },
     {
-        "duration": "47.0",
+        "duration": "20.0",
         "name": "system_health.common_desktop/load:tools:docs"
     },
     {
-        "duration": "43.0",
+        "duration": "19.0",
         "name": "system_health.common_desktop/load:tools:drive"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:tools:dropbox"
     },
     {
-        "duration": "32.0",
+        "duration": "17.0",
         "name": "system_health.common_desktop/load:tools:gmail"
     },
     {
-        "duration": "26.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:tools:stackoverflow"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load:tools:stackoverflow:2018"
     },
     {
-        "duration": "29.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load:tools:weather"
     },
     {
-        "duration": "30.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load_accessibility:media:wikipedia"
     },
     {
-        "duration": "27.0",
+        "duration": "15.0",
         "name": "system_health.common_desktop/load_accessibility:media:wikipedia:2018"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load_accessibility:shopping:amazon"
     },
     {
-        "duration": "27.0",
+        "duration": "16.0",
         "name": "system_health.common_desktop/load_accessibility:shopping:amazon:2018"
     },
     {
-        "duration": "138.0",
+        "duration": "119.0",
         "name": "system_health.common_desktop/long_running:tools:gmail-background"
     },
     {
-        "duration": "546.0",
-        "name": "system_health.common_desktop/multitab:misc:typical24"
-    },
-    {
-        "duration": "470.0",
-        "name": "system_health.common_desktop/multitab:misc:typical24:2018"
-    },
-    {
-        "duration": "61.0",
+        "duration": "41.0",
         "name": "system_health.common_desktop/play:media:google_play_music"
     },
     {
-        "duration": "63.0",
+        "duration": "43.0",
         "name": "system_health.common_desktop/play:media:soundcloud"
     },
     {
-        "duration": "55.0",
+        "duration": "41.0",
         "name": "system_health.common_desktop/play:media:soundcloud:2018"
     },
     {
-        "duration": "45.0",
+        "duration": "37.0",
         "name": "system_health.memory_desktop/browse:media:googleplaystore:2018"
     },
     {
-        "duration": "74.0",
+        "duration": "64.0",
         "name": "system_health.memory_desktop/browse:media:imgur"
     },
     {
-        "duration": "65.0",
+        "duration": "56.0",
         "name": "system_health.memory_desktop/browse:media:pinterest"
     },
     {
-        "duration": "91.0",
+        "duration": "82.0",
         "name": "system_health.memory_desktop/browse:media:pinterest:2018"
     },
     {
-        "duration": "63.0",
+        "duration": "53.0",
         "name": "system_health.memory_desktop/browse:media:tumblr:2018"
     },
     {
-        "duration": "66.0",
+        "duration": "57.0",
         "name": "system_health.memory_desktop/browse:media:youtube"
     },
     {
-        "duration": "73.0",
+        "duration": "62.0",
         "name": "system_health.memory_desktop/browse:media:youtube:2018"
     },
     {
-        "duration": "59.0",
-        "name": "system_health.memory_desktop/browse:news:cnn"
-    },
-    {
-        "duration": "46.0",
-        "name": "system_health.memory_desktop/browse:news:cnn:2018"
+        "duration": "58.0",
+        "name": "system_health.memory_desktop/browse:media:youtubetv:2019"
     },
     {
         "duration": "49.0",
-        "name": "system_health.memory_desktop/browse:news:flipboard"
-    },
-    {
-        "duration": "46.0",
-        "name": "system_health.memory_desktop/browse:news:flipboard:2018"
-    },
-    {
-        "duration": "58.0",
-        "name": "system_health.memory_desktop/browse:news:hackernews:2018"
-    },
-    {
-        "duration": "61.0",
-        "name": "system_health.memory_desktop/browse:news:nytimes"
-    },
-    {
-        "duration": "64.0",
-        "name": "system_health.memory_desktop/browse:news:nytimes:2018"
-    },
-    {
-        "duration": "57.0",
-        "name": "system_health.memory_desktop/browse:news:reddit"
-    },
-    {
-        "duration": "46.0",
-        "name": "system_health.memory_desktop/browse:news:reddit:2018"
-    },
-    {
-        "duration": "52.0",
-        "name": "system_health.memory_desktop/browse:search:google"
-    },
-    {
-        "duration": "50.0",
-        "name": "system_health.memory_desktop/browse:search:google:2018"
-    },
-    {
-        "duration": "41.0",
-        "name": "system_health.memory_desktop/browse:search:google_india"
+        "name": "system_health.memory_desktop/browse:news:cnn"
     },
     {
         "duration": "37.0",
+        "name": "system_health.memory_desktop/browse:news:cnn:2018"
+    },
+    {
+        "duration": "38.0",
+        "name": "system_health.memory_desktop/browse:news:flipboard"
+    },
+    {
+        "duration": "39.0",
+        "name": "system_health.memory_desktop/browse:news:flipboard:2018"
+    },
+    {
+        "duration": "51.0",
+        "name": "system_health.memory_desktop/browse:news:hackernews:2018"
+    },
+    {
+        "duration": "59.0",
+        "name": "system_health.memory_desktop/browse:news:nytimes"
+    },
+    {
+        "duration": "59.0",
+        "name": "system_health.memory_desktop/browse:news:nytimes:2018"
+    },
+    {
+        "duration": "48.0",
+        "name": "system_health.memory_desktop/browse:news:reddit"
+    },
+    {
+        "duration": "37.0",
+        "name": "system_health.memory_desktop/browse:news:reddit:2018"
+    },
+    {
+        "duration": "42.0",
+        "name": "system_health.memory_desktop/browse:search:google"
+    },
+    {
+        "duration": "42.0",
+        "name": "system_health.memory_desktop/browse:search:google:2018"
+    },
+    {
+        "duration": "32.0",
+        "name": "system_health.memory_desktop/browse:search:google_india"
+    },
+    {
+        "duration": "29.0",
         "name": "system_health.memory_desktop/browse:search:google_india:2018"
     },
     {
-        "duration": "65.0",
+        "duration": "57.0",
         "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "68.0",
+        "duration": "60.0",
         "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "67.0",
+        "duration": "59.0",
         "name": "system_health.memory_desktop/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "47.0",
+        "duration": "51.0",
+        "name": "system_health.memory_desktop/browse:social:tumblr_infinite_scroll:2018"
+    },
+    {
+        "duration": "38.0",
         "name": "system_health.memory_desktop/browse:social:twitter"
     },
     {
-        "duration": "47.0",
+        "duration": "39.0",
         "name": "system_health.memory_desktop/browse:social:twitter:2018"
     },
     {
-        "duration": "64.0",
+        "duration": "57.0",
         "name": "system_health.memory_desktop/browse:social:twitter_infinite_scroll:2018"
     },
     {
-        "duration": "64.0",
+        "duration": "56.0",
         "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "62.0",
+        "duration": "53.0",
         "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll:2018"
     },
     {
@@ -3648,1103 +3664,1059 @@
         "name": "system_health.memory_desktop/browse:tools:maps"
     },
     {
-        "duration": "28.0",
+        "duration": "19.0",
         "name": "system_health.memory_desktop/browse_accessibility:media:youtube"
     },
     {
-        "duration": "24.0",
+        "duration": "15.0",
         "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch"
     },
     {
-        "duration": "31.0",
+        "duration": "23.0",
         "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch:2018"
     },
     {
-        "duration": "18.0",
+        "duration": "10.0",
         "name": "system_health.memory_desktop/load:chrome:blank"
     },
     {
-        "duration": "21.0",
-        "name": "system_health.memory_desktop/load:games:alphabetty"
-    },
-    {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:games:alphabetty:2018"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:games:bubbles"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "system_health.memory_desktop/load:games:lazors"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:games:miniclip"
     },
     {
-        "duration": "27.0",
+        "duration": "17.0",
         "name": "system_health.memory_desktop/load:games:miniclip:2018"
     },
     {
-        "duration": "26.0",
+        "duration": "17.0",
         "name": "system_health.memory_desktop/load:games:spychase"
     },
     {
-        "duration": "26.0",
+        "duration": "17.0",
         "name": "system_health.memory_desktop/load:games:spychase:2018"
     },
     {
-        "duration": "31.0",
+        "duration": "22.0",
         "name": "system_health.memory_desktop/load:media:9gag"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:media:dailymotion"
     },
     {
-        "duration": "22.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:media:facebook_photos:2018"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:media:flickr:2018"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "system_health.memory_desktop/load:media:google_images"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:media:google_images:2018"
     },
     {
-        "duration": "26.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:media:imgur"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:media:imgur:2018"
     },
     {
-        "duration": "25.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:media:soundcloud"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:media:soundcloud:2018"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:media:youtube"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:media:youtube:2018"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:news:bbc"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:news:bbc:2018"
     },
     {
-        "duration": "27.0",
+        "duration": "17.0",
         "name": "system_health.memory_desktop/load:news:cnn"
     },
     {
-        "duration": "25.0",
+        "duration": "16.0",
         "name": "system_health.memory_desktop/load:news:cnn:2018"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:news:flipboard"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "system_health.memory_desktop/load:news:hackernews"
     },
     {
-        "duration": "20.0",
+        "duration": "12.0",
         "name": "system_health.memory_desktop/load:news:hackernews:2018"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "system_health.memory_desktop/load:news:nytimes"
     },
     {
-        "duration": "25.0",
+        "duration": "16.0",
         "name": "system_health.memory_desktop/load:news:nytimes:2018"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "system_health.memory_desktop/load:news:qq"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:news:qq:2018"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:news:reddit"
     },
     {
-        "duration": "23.0",
+        "duration": "15.0",
         "name": "system_health.memory_desktop/load:news:reddit:2018"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "system_health.memory_desktop/load:news:wikipedia"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:news:wikipedia:2018"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:search:amazon"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:search:amazon:2018"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "system_health.memory_desktop/load:search:baidu"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:search:baidu:2018"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:search:ebay"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:search:ebay:2018"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:search:flipkart:2018"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:search:google"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:search:google:2018"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:search:taobao"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:search:taobao:2018"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "system_health.memory_desktop/load:search:yahoo"
     },
     {
-        "duration": "21.0",
+        "duration": "12.0",
         "name": "system_health.memory_desktop/load:search:yahoo:2018"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:search:yandex"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:search:yandex:2018"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:social:instagram"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:social:instagram:2018"
     },
     {
-        "duration": "24.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:social:pinterest"
     },
     {
-        "duration": "22.0",
+        "duration": "12.0",
         "name": "system_health.memory_desktop/load:social:vk"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:social:vk:2018"
     },
     {
-        "duration": "25.0",
+        "duration": "15.0",
         "name": "system_health.memory_desktop/load:tools:docs"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:tools:drive"
     },
     {
-        "duration": "21.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:tools:dropbox"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:tools:gmail"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:tools:stackoverflow"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load:tools:stackoverflow:2018"
     },
     {
-        "duration": "24.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load:tools:weather"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load_accessibility:media:wikipedia"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load_accessibility:media:wikipedia:2018"
     },
     {
-        "duration": "22.0",
+        "duration": "13.0",
         "name": "system_health.memory_desktop/load_accessibility:shopping:amazon"
     },
     {
-        "duration": "23.0",
+        "duration": "14.0",
         "name": "system_health.memory_desktop/load_accessibility:shopping:amazon:2018"
     },
     {
-        "duration": "157.0",
+        "duration": "127.0",
         "name": "system_health.memory_desktop/long_running:tools:gmail-background"
     },
     {
-        "duration": "152.0",
+        "duration": "126.0",
         "name": "system_health.memory_desktop/long_running:tools:gmail-foreground"
     },
     {
-        "duration": "129.0",
-        "name": "system_health.memory_desktop/multitab:misc:typical24"
-    },
-    {
-        "duration": "101.0",
-        "name": "system_health.memory_desktop/multitab:misc:typical24:2018"
-    },
-    {
-        "duration": "47.0",
+        "duration": "39.0",
         "name": "system_health.memory_desktop/play:media:soundcloud:2018"
     },
     {
-        "duration": "16.0",
+        "duration": "9.0",
         "name": "tracing.tracing_with_background_memory_infra/Facebook"
     },
     {
-        "duration": "16.0",
+        "duration": "5.0",
         "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
     },
     {
-        "duration": "14.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
-    },
-    {
-        "duration": "14.0",
+        "duration": "9.0",
         "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
     },
     {
-        "duration": "14.0",
-        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
-    },
-    {
-        "duration": "14.0",
+        "duration": "4.0",
         "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
     },
     {
-        "duration": "17.0",
+        "duration": "6.0",
         "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
     },
     {
-        "duration": "16.0",
+        "duration": "9.0",
         "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
     },
     {
-        "duration": "18.0",
+        "duration": "8.0",
         "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
     },
     {
-        "duration": "136.0",
+        "duration": "67.0",
         "name": "v8.browsing_desktop-future/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "85.0",
+        "duration": "41.0",
         "name": "v8.browsing_desktop-future/browse:media:googleplaystore:2018"
     },
     {
-        "duration": "732.0",
+        "duration": "74.0",
         "name": "v8.browsing_desktop-future/browse:media:imgur"
     },
     {
-        "duration": "94.0",
-        "name": "v8.browsing_desktop-future/browse:media:pinterest"
-    },
-    {
-        "duration": "127.0",
+        "duration": "88.0",
         "name": "v8.browsing_desktop-future/browse:media:pinterest:2018"
     },
     {
-        "duration": "177.0",
-        "name": "v8.browsing_desktop-future/browse:media:tumblr"
-    },
-    {
-        "duration": "111.0",
+        "duration": "62.0",
         "name": "v8.browsing_desktop-future/browse:media:tumblr:2018"
     },
     {
-        "duration": "147.0",
-        "name": "v8.browsing_desktop-future/browse:media:youtube"
-    },
-    {
-        "duration": "142.0",
+        "duration": "71.0",
         "name": "v8.browsing_desktop-future/browse:media:youtube:2018"
     },
     {
-        "duration": "556.0",
-        "name": "v8.browsing_desktop-future/browse:news:cnn"
+        "duration": "63.0",
+        "name": "v8.browsing_desktop-future/browse:media:youtubetv:2019"
     },
     {
-        "duration": "109.0",
+        "duration": "47.0",
         "name": "v8.browsing_desktop-future/browse:news:cnn:2018"
     },
     {
-        "duration": "86.0",
+        "duration": "44.0",
         "name": "v8.browsing_desktop-future/browse:news:flipboard:2018"
     },
     {
-        "duration": "102.0",
+        "duration": "60.0",
         "name": "v8.browsing_desktop-future/browse:news:hackernews:2018"
     },
     {
-        "duration": "152.0",
+        "duration": "71.0",
         "name": "v8.browsing_desktop-future/browse:news:nytimes:2018"
     },
     {
-        "duration": "78.0",
+        "duration": "42.0",
         "name": "v8.browsing_desktop-future/browse:news:reddit:2018"
     },
     {
-        "duration": "79.0",
-        "name": "v8.browsing_desktop-future/browse:search:google"
-    },
-    {
-        "duration": "82.0",
+        "duration": "48.0",
         "name": "v8.browsing_desktop-future/browse:search:google:2018"
     },
     {
-        "duration": "57.0",
-        "name": "v8.browsing_desktop-future/browse:search:google_india"
-    },
-    {
-        "duration": "62.0",
+        "duration": "33.0",
         "name": "v8.browsing_desktop-future/browse:search:google_india:2018"
     },
     {
-        "duration": "145.0",
-        "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll"
-    },
-    {
-        "duration": "679.0",
+        "duration": "70.0",
         "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "665.0",
+        "duration": "69.0",
         "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "74.0",
-        "name": "v8.browsing_desktop-future/browse:social:twitter"
+        "duration": "62.0",
+        "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll:2018"
     },
     {
-        "duration": "76.0",
+        "duration": "43.0",
         "name": "v8.browsing_desktop-future/browse:social:twitter:2018"
     },
     {
-        "duration": "147.0",
+        "duration": "66.0",
         "name": "v8.browsing_desktop-future/browse:social:twitter_infinite_scroll:2018"
     },
     {
-        "duration": "178.0",
-        "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll"
-    },
-    {
-        "duration": "166.0",
+        "duration": "62.0",
         "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "20.0",
+        "duration": "19.0",
         "name": "v8.browsing_desktop-future/browse:tools:earth"
     },
     {
-        "duration": "13.0",
+        "duration": "15.0",
         "name": "v8.browsing_desktop-future/browse:tools:maps"
     },
     {
-        "duration": "135.0",
+        "duration": "67.0",
         "name": "v8.browsing_desktop/browse:media:flickr_infinite_scroll"
     },
     {
-        "duration": "85.0",
+        "duration": "42.0",
         "name": "v8.browsing_desktop/browse:media:googleplaystore:2018"
     },
     {
-        "duration": "743.0",
+        "duration": "76.0",
         "name": "v8.browsing_desktop/browse:media:imgur"
     },
     {
-        "duration": "94.0",
+        "duration": "62.0",
         "name": "v8.browsing_desktop/browse:media:pinterest"
     },
     {
-        "duration": "127.0",
+        "duration": "88.0",
         "name": "v8.browsing_desktop/browse:media:pinterest:2018"
     },
     {
-        "duration": "176.0",
+        "duration": "105.0",
         "name": "v8.browsing_desktop/browse:media:tumblr"
     },
     {
-        "duration": "111.0",
+        "duration": "63.0",
         "name": "v8.browsing_desktop/browse:media:tumblr:2018"
     },
     {
-        "duration": "146.0",
+        "duration": "68.0",
         "name": "v8.browsing_desktop/browse:media:youtube"
     },
     {
-        "duration": "142.0",
+        "duration": "71.0",
         "name": "v8.browsing_desktop/browse:media:youtube:2018"
     },
     {
-        "duration": "566.0",
+        "duration": "63.0",
+        "name": "v8.browsing_desktop/browse:media:youtubetv:2019"
+    },
+    {
+        "duration": "80.0",
         "name": "v8.browsing_desktop/browse:news:cnn"
     },
     {
-        "duration": "109.0",
+        "duration": "48.0",
         "name": "v8.browsing_desktop/browse:news:cnn:2018"
     },
     {
-        "duration": "86.0",
+        "duration": "45.0",
         "name": "v8.browsing_desktop/browse:news:flipboard:2018"
     },
     {
-        "duration": "100.0",
+        "duration": "62.0",
         "name": "v8.browsing_desktop/browse:news:hackernews:2018"
     },
     {
-        "duration": "583.0",
+        "duration": "71.0",
         "name": "v8.browsing_desktop/browse:news:nytimes"
     },
     {
-        "duration": "152.0",
+        "duration": "73.0",
         "name": "v8.browsing_desktop/browse:news:nytimes:2018"
     },
     {
-        "duration": "119.0",
+        "duration": "62.0",
         "name": "v8.browsing_desktop/browse:news:reddit"
     },
     {
-        "duration": "78.0",
+        "duration": "43.0",
         "name": "v8.browsing_desktop/browse:news:reddit:2018"
     },
     {
-        "duration": "78.0",
+        "duration": "48.0",
         "name": "v8.browsing_desktop/browse:search:google"
     },
     {
-        "duration": "81.0",
+        "duration": "47.0",
         "name": "v8.browsing_desktop/browse:search:google:2018"
     },
     {
-        "duration": "56.0",
+        "duration": "35.0",
         "name": "v8.browsing_desktop/browse:search:google_india"
     },
     {
-        "duration": "62.0",
+        "duration": "33.0",
         "name": "v8.browsing_desktop/browse:search:google_india:2018"
     },
     {
-        "duration": "144.0",
+        "duration": "66.0",
         "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll"
     },
     {
-        "duration": "680.0",
+        "duration": "72.0",
         "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll:2018"
     },
     {
-        "duration": "665.0",
+        "duration": "73.0",
         "name": "v8.browsing_desktop/browse:social:tumblr_infinite_scroll"
     },
     {
-        "duration": "73.0",
+        "duration": "43.0",
         "name": "v8.browsing_desktop/browse:social:twitter"
     },
     {
-        "duration": "76.0",
+        "duration": "43.0",
         "name": "v8.browsing_desktop/browse:social:twitter:2018"
     },
     {
-        "duration": "145.0",
+        "duration": "67.0",
         "name": "v8.browsing_desktop/browse:social:twitter_infinite_scroll:2018"
     },
     {
-        "duration": "177.0",
+        "duration": "66.0",
         "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll"
     },
     {
-        "duration": "165.0",
+        "duration": "62.0",
         "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll:2018"
     },
     {
-        "duration": "19.0",
+        "duration": "20.0",
         "name": "v8.browsing_desktop/browse:tools:earth"
     },
     {
-        "duration": "12.0",
+        "duration": "15.0",
         "name": "v8.browsing_desktop/browse:tools:maps"
     },
     {
-        "duration": "36.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/AdsAMPAds_cold"
     },
     {
-        "duration": "43.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/AdsAMPAds_hot"
     },
     {
-        "duration": "40.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/AdsAMPAds_warm"
     },
     {
-        "duration": "35.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_cold"
     },
     {
-        "duration": "43.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_hot"
     },
     {
-        "duration": "38.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "23.0",
         "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_cold"
     },
     {
-        "duration": "38.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_warm"
     },
     {
-        "duration": "35.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_cold"
     },
     {
-        "duration": "42.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_hot"
     },
     {
-        "duration": "39.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_warm"
     },
     {
-        "duration": "34.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_cold"
     },
     {
-        "duration": "40.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_hot"
     },
     {
-        "duration": "37.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_warm"
     },
     {
-        "duration": "34.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_cold"
     },
     {
-        "duration": "39.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_warm"
     },
     {
-        "duration": "35.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_cold"
     },
     {
-        "duration": "41.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_hot"
     },
     {
-        "duration": "37.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_warm"
     },
     {
-        "duration": "34.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_cold"
     },
     {
-        "duration": "40.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_hot"
     },
     {
-        "duration": "37.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_warm"
     },
     {
-        "duration": "46.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_cold"
     },
     {
-        "duration": "74.0",
+        "duration": "48.0",
         "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_hot"
     },
     {
-        "duration": "60.0",
+        "duration": "39.0",
         "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_warm"
     },
     {
-        "duration": "40.0",
+        "duration": "26.0",
         "name": "v8.runtime_stats.top_25/http://edition.cnn.com_cold"
     },
     {
-        "duration": "57.0",
+        "duration": "35.0",
         "name": "v8.runtime_stats.top_25/http://edition.cnn.com_hot"
     },
     {
-        "duration": "49.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://edition.cnn.com_warm"
     },
     {
-        "duration": "34.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_cold"
     },
     {
-        "duration": "39.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_hot"
     },
     {
-        "duration": "37.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_warm"
     },
     {
-        "duration": "36.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://inbox.google.com_cold"
     },
     {
-        "duration": "42.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://inbox.google.com_hot"
     },
     {
-        "duration": "39.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://inbox.google.com_warm"
     },
     {
-        "duration": "37.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_cold"
     },
     {
-        "duration": "44.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_hot"
     },
     {
-        "duration": "40.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_warm"
     },
     {
-        "duration": "36.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/http://meta.discourse.org_cold"
     },
     {
-        "duration": "43.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/http://meta.discourse.org_hot"
     },
     {
-        "duration": "40.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://meta.discourse.org_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "23.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_cold"
     },
     {
-        "duration": "39.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "23.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_cold"
     },
     {
-        "duration": "38.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_hot"
     },
     {
-        "duration": "35.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "23.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_cold"
     },
     {
-        "duration": "39.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_hot"
     },
     {
-        "duration": "35.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "23.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_cold"
     },
     {
-        "duration": "38.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "23.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_cold"
     },
     {
-        "duration": "38.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_hot"
     },
     {
-        "duration": "35.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_warm"
     },
     {
-        "duration": "37.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_cold"
     },
     {
-        "duration": "43.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_hot"
     },
     {
-        "duration": "40.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_warm"
     },
     {
-        "duration": "39.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/http://weibo.com_cold"
     },
     {
-        "duration": "46.0",
+        "duration": "31.0",
         "name": "v8.runtime_stats.top_25/http://weibo.com_hot"
     },
     {
-        "duration": "43.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://weibo.com_warm"
     },
     {
-        "duration": "36.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/http://world.taobao.com_cold"
     },
     {
-        "duration": "42.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/http://world.taobao.com_hot"
     },
     {
-        "duration": "39.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://world.taobao.com_warm"
     },
     {
-        "duration": "34.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_cold"
     },
     {
-        "duration": "40.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_hot"
     },
     {
-        "duration": "37.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_warm"
     },
     {
-        "duration": "34.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_cold"
     },
     {
-        "duration": "40.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_hot"
     },
     {
-        "duration": "37.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_cold"
     },
     {
-        "duration": "39.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_warm"
     },
     {
-        "duration": "41.0",
+        "duration": "26.0",
         "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_cold"
     },
     {
-        "duration": "51.0",
+        "duration": "31.0",
         "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_hot"
     },
     {
-        "duration": "45.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_warm"
     },
     {
-        "duration": "37.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_cold"
     },
     {
-        "duration": "43.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_hot"
     },
     {
-        "duration": "40.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_warm"
     },
     {
-        "duration": "40.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_cold"
     },
     {
-        "duration": "49.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_hot"
     },
     {
-        "duration": "45.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_warm"
     },
     {
-        "duration": "35.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_cold"
     },
     {
-        "duration": "43.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_hot"
     },
     {
-        "duration": "39.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_warm"
     },
     {
-        "duration": "73.0",
+        "duration": "35.0",
         "name": "v8.runtime_stats.top_25/http://www.qq.com_cold"
     },
     {
-        "duration": "86.0",
+        "duration": "40.0",
         "name": "v8.runtime_stats.top_25/http://www.qq.com_hot"
     },
     {
-        "duration": "79.0",
+        "duration": "38.0",
         "name": "v8.runtime_stats.top_25/http://www.qq.com_warm"
     },
     {
-        "duration": "35.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://www.reddit.com_cold"
     },
     {
-        "duration": "42.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/http://www.reddit.com_hot"
     },
     {
-        "duration": "39.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://www.reddit.com_warm"
     },
     {
-        "duration": "36.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_cold"
     },
     {
-        "duration": "44.0",
+        "duration": "31.0",
         "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_hot"
     },
     {
-        "duration": "40.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_warm"
     },
     {
-        "duration": "35.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_cold"
     },
     {
-        "duration": "43.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_hot"
     },
     {
-        "duration": "39.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_warm"
     },
     {
-        "duration": "36.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_cold"
     },
     {
-        "duration": "41.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_hot"
     },
     {
-        "duration": "38.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_warm"
     },
     {
-        "duration": "35.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_cold"
     },
     {
-        "duration": "41.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_hot"
     },
     {
-        "duration": "38.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_warm"
     },
     {
-        "duration": "45.0",
+        "duration": "31.0",
         "name": "v8.runtime_stats.top_25/https://adwords.google.com_cold"
     },
     {
-        "duration": "54.0",
+        "duration": "37.0",
         "name": "v8.runtime_stats.top_25/https://adwords.google.com_hot"
     },
     {
-        "duration": "54.0",
+        "duration": "33.0",
         "name": "v8.runtime_stats.top_25/https://adwords.google.com_warm"
     },
     {
-        "duration": "33.0",
+        "duration": "23.0",
         "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_cold"
     },
     {
-        "duration": "37.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_hot"
     },
     {
-        "duration": "35.0",
+        "duration": "27.0",
         "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_warm"
     },
     {
-        "duration": "38.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_cold"
     },
     {
-        "duration": "48.0",
+        "duration": "36.0",
         "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_hot"
     },
     {
-        "duration": "41.0",
+        "duration": "31.0",
         "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_warm"
     },
     {
-        "duration": "35.0",
+        "duration": "24.0",
         "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_cold"
     },
     {
-        "duration": "43.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_hot"
     },
     {
-        "duration": "39.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_warm"
     },
     {
-        "duration": "37.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_cold"
     },
     {
-        "duration": "39.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_hot"
     },
     {
-        "duration": "36.0",
+        "duration": "28.0",
         "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_warm"
     },
     {
-        "duration": "37.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_cold"
     },
     {
-        "duration": "44.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_hot"
     },
     {
-        "duration": "41.0",
+        "duration": "30.0",
         "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_warm"
     },
     {
-        "duration": "41.0",
+        "duration": "26.0",
         "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_cold"
     },
     {
-        "duration": "51.0",
+        "duration": "32.0",
         "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_hot"
     },
     {
-        "duration": "46.0",
+        "duration": "31.0",
         "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_warm"
     },
     {
-        "duration": "40.0",
+        "duration": "25.0",
         "name": "v8.runtime_stats.top_25/https://www.youtube.com_cold"
     },
     {
-        "duration": "49.0",
+        "duration": "31.0",
         "name": "v8.runtime_stats.top_25/https://www.youtube.com_hot"
     },
     {
-        "duration": "44.0",
+        "duration": "29.0",
         "name": "v8.runtime_stats.top_25/https://www.youtube.com_warm"
     },
     {
-        "duration": "12.0",
+        "duration": "13.0",
         "name": "wasm/WasmSpaceBuggy"
     },
     {
-        "duration": "20.0",
+        "duration": "22.0",
         "name": "wasm/WasmTanks"
     },
     {
@@ -4752,35 +4724,35 @@
         "name": "wasm/WasmZenGarden"
     },
     {
-        "duration": "52.0",
+        "duration": "24.0",
         "name": "webrtc/10s_datachannel_transfer"
     },
     {
-        "duration": "26.0",
+        "duration": "13.0",
         "name": "webrtc/canvas_capture_peer_connection"
     },
     {
-        "duration": "35.0",
+        "duration": "23.0",
         "name": "webrtc/codec_constraints_h264"
     },
     {
-        "duration": "35.0",
+        "duration": "23.0",
         "name": "webrtc/codec_constraints_vp8"
     },
     {
-        "duration": "34.0",
+        "duration": "23.0",
         "name": "webrtc/codec_constraints_vp9"
     },
     {
-        "duration": "23.0",
+        "duration": "13.0",
         "name": "webrtc/hd_local_stream_10s"
     },
     {
-        "duration": "80.0",
+        "duration": "33.0",
         "name": "webrtc/multiple_peerconnections"
     },
     {
-        "duration": "85.0",
+        "duration": "37.0",
         "name": "webrtc/pause_play_peerconnections"
     }
 ]
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/win-10-perf_map.json b/tools/perf/core/shard_maps/win-10-perf_map.json
index 4c4bffa..6ebb237 100644
--- a/tools/perf/core/shard_maps/win-10-perf_map.json
+++ b/tools/perf/core/shard_maps/win-10-perf_map.json
@@ -5,22 +5,26 @@
             "blink_perf.bindings": {},
             "blink_perf.canvas": {},
             "blink_perf.css": {},
-            "blink_perf.dom": {},
-            "blink_perf.events": {},
-            "blink_perf.image_decoder": {},
-            "blink_perf.layout": {
-                "end": 47
-            }
+            "blink_perf.dom": {}
         }
     },
     "1": {
         "benchmarks": {
-            "blink_perf.layout": {
-                "begin": 47
-            },
+            "blink_perf.events": {},
+            "blink_perf.image_decoder": {},
+            "blink_perf.layout": {},
             "blink_perf.owp_storage": {},
             "blink_perf.paint": {},
-            "blink_perf.parser": {},
+            "blink_perf.parser": {
+                "end": 6
+            }
+        }
+    },
+    "2": {
+        "benchmarks": {
+            "blink_perf.parser": {
+                "begin": 6
+            },
             "blink_perf.shadow_dom": {},
             "blink_perf.svg": {},
             "dromaeo": {},
@@ -29,247 +33,254 @@
             "jetstream": {},
             "kraken": {},
             "loading.desktop": {
-                "end": 2
-            }
-        }
-    },
-    "2": {
-        "benchmarks": {
-            "loading.desktop": {
-                "begin": 2,
-                "end": 38
+                "end": 16
             }
         }
     },
     "3": {
         "benchmarks": {
             "loading.desktop": {
-                "begin": 38,
-                "end": 67
+                "begin": 16,
+                "end": 59
             }
         }
     },
     "4": {
         "benchmarks": {
             "loading.desktop": {
-                "begin": 67,
-                "end": 96
+                "begin": 59
+            },
+            "media.desktop": {
+                "end": 4
             }
         }
     },
     "5": {
         "benchmarks": {
-            "loading.desktop": {
-                "begin": 96
+            "media.desktop": {
+                "begin": 4
             },
-            "media.desktop": {},
             "memory.desktop": {
-                "end": 2
+                "end": 8
             }
         }
     },
     "6": {
         "benchmarks": {
             "memory.desktop": {
-                "begin": 2
+                "begin": 8
+            },
+            "octane": {},
+            "power.desktop": {},
+            "rasterize_and_record_micro.partial_invalidation": {},
+            "rasterize_and_record_micro.top_25": {
+                "end": 23
             }
         }
     },
     "7": {
         "benchmarks": {
-            "octane": {},
-            "power.desktop": {},
-            "rasterize_and_record_micro.partial_invalidation": {},
-            "rasterize_and_record_micro.top_25": {},
+            "rasterize_and_record_micro.top_25": {
+                "begin": 23
+            },
             "rendering.desktop": {
-                "end": 5
+                "end": 81
             }
         }
     },
     "8": {
         "benchmarks": {
             "rendering.desktop": {
-                "begin": 5,
-                "end": 59
+                "begin": 81,
+                "end": 182
             }
         }
     },
     "9": {
         "benchmarks": {
             "rendering.desktop": {
-                "begin": 59,
-                "end": 118
-            }
-        }
-    },
-    "10": {
-        "benchmarks": {
-            "rendering.desktop": {
-                "begin": 118,
-                "end": 199
-            }
-        }
-    },
-    "11": {
-        "benchmarks": {
-            "rendering.desktop": {
-                "begin": 199
-            }
-        }
-    },
-    "12": {
-        "benchmarks": {
+                "begin": 182
+            },
             "speedometer": {},
             "speedometer-future": {},
             "speedometer2": {},
             "speedometer2-future": {},
             "system_health.common_desktop": {
-                "end": 23
+                "end": 11
             }
         }
     },
-    "13": {
+    "10": {
         "benchmarks": {
             "system_health.common_desktop": {
-                "begin": 23,
-                "end": 92
+                "begin": 11,
+                "end": 48
             }
         }
     },
-    "14": {
+    "11": {
         "benchmarks": {
             "system_health.common_desktop": {
-                "begin": 92
+                "begin": 48,
+                "end": 99
+            }
+        }
+    },
+    "12": {
+        "benchmarks": {
+            "system_health.common_desktop": {
+                "begin": 99
             },
             "system_health.memory_desktop": {
                 "end": 9
             }
         }
     },
-    "15": {
+    "13": {
         "benchmarks": {
             "system_health.memory_desktop": {
                 "begin": 9,
-                "end": 19
+                "end": 18
+            }
+        }
+    },
+    "14": {
+        "benchmarks": {
+            "system_health.memory_desktop": {
+                "begin": 18,
+                "end": 31
+            }
+        }
+    },
+    "15": {
+        "benchmarks": {
+            "system_health.memory_desktop": {
+                "begin": 31,
+                "end": 59
             }
         }
     },
     "16": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 19,
-                "end": 44
+                "begin": 59,
+                "end": 85
             }
         }
     },
     "17": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 44,
-                "end": 84
+                "begin": 85,
+                "end": 95
             }
         }
     },
     "18": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 84,
-                "end": 97
+                "begin": 95,
+                "end": 104
             }
         }
     },
     "19": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 97
+                "begin": 104
             },
             "tab_switching.typical_25": {},
-            "tracing.tracing_with_background_memory_infra": {},
-            "v8.browsing_desktop": {
+            "tracing.tracing_with_background_memory_infra": {
                 "end": 2
             }
         }
     },
     "20": {
         "benchmarks": {
-            "v8.browsing_desktop": {
+            "tracing.tracing_with_background_memory_infra": {
                 "begin": 2
+            },
+            "v8.browsing_desktop": {
+                "end": 24
             }
         }
     },
     "21": {
         "benchmarks": {
+            "v8.browsing_desktop": {
+                "begin": 24
+            },
             "v8.browsing_desktop-future": {
-                "end": 27
+                "end": 18
             }
         }
     },
     "22": {
         "benchmarks": {
             "v8.browsing_desktop-future": {
-                "begin": 27
+                "begin": 18
             },
             "v8.runtime_stats.top_25": {
-                "end": 29
+                "end": 17
             }
         }
     },
     "23": {
         "benchmarks": {
             "v8.runtime_stats.top_25": {
-                "begin": 29,
-                "end": 66
+                "begin": 17,
+                "end": 57
             }
         }
     },
     "24": {
         "benchmarks": {
             "v8.runtime_stats.top_25": {
-                "begin": 66,
-                "end": 105
+                "begin": 57,
+                "end": 99
             }
         }
     },
     "25": {
         "benchmarks": {
             "v8.runtime_stats.top_25": {
-                "begin": 105
+                "begin": 99
             },
             "wasm": {},
             "webrtc": {}
         }
     },
     "extra_infos": {
-        "num_stories": 2037,
-        "predicted_min_shard_time": 2696.0,
-        "predicted_min_shard_index": 19,
-        "predicted_max_shard_time": 2984.0,
-        "predicted_max_shard_index": 22,
-        "shard #0": 2856.0,
-        "shard #1": 2874.0,
-        "shard #2": 2816.0,
-        "shard #3": 2876.0,
-        "shard #4": 2776.0,
-        "shard #5": 2828.0,
-        "shard #6": 2910.0,
-        "shard #7": 2844.0,
-        "shard #8": 2822.0,
-        "shard #9": 2850.0,
-        "shard #10": 2864.0,
-        "shard #11": 2854.0,
-        "shard #12": 2872.0,
-        "shard #13": 2882.0,
-        "shard #14": 2816.0,
-        "shard #15": 2760.0,
-        "shard #16": 2850.0,
-        "shard #17": 2880.0,
-        "shard #18": 2916.0,
-        "shard #19": 2696.0,
-        "shard #20": 2858.0,
-        "shard #21": 2854.0,
-        "shard #22": 2984.0,
-        "shard #23": 2830.0,
-        "shard #24": 2794.0,
-        "shard #25": 2872.0
+        "num_stories": 1240,
+        "predicted_min_shard_time": 2316.0,
+        "predicted_min_shard_index": 17,
+        "predicted_max_shard_time": 2540.0,
+        "predicted_max_shard_index": 19,
+        "shard #0": 2386.0,
+        "shard #1": 2426.0,
+        "shard #2": 2418.0,
+        "shard #3": 2368.0,
+        "shard #4": 2448.0,
+        "shard #5": 2416.0,
+        "shard #6": 2360.0,
+        "shard #7": 2422.0,
+        "shard #8": 2414.0,
+        "shard #9": 2362.0,
+        "shard #10": 2454.0,
+        "shard #11": 2404.0,
+        "shard #12": 2364.0,
+        "shard #13": 2448.0,
+        "shard #14": 2346.0,
+        "shard #15": 2490.0,
+        "shard #16": 2376.0,
+        "shard #17": 2316.0,
+        "shard #18": 2358.0,
+        "shard #19": 2540.0,
+        "shard #20": 2452.0,
+        "shard #21": 2342.0,
+        "shard #22": 2444.0,
+        "shard #23": 2400.0,
+        "shard #24": 2394.0,
+        "shard #25": 2400.0
     }
-}
+}
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/win_7_nvidia_gpu_perf_map.json b/tools/perf/core/shard_maps/win_7_nvidia_gpu_perf_map.json
index ddeec132..c55e304 100644
--- a/tools/perf/core/shard_maps/win_7_nvidia_gpu_perf_map.json
+++ b/tools/perf/core/shard_maps/win_7_nvidia_gpu_perf_map.json
@@ -20,19 +20,19 @@
             "jetstream": {},
             "kraken": {},
             "loading.desktop": {},
-            "media.desktop": {},
-            "memory.desktop": {},
-            "octane": {},
-            "power.desktop": {
-                "end": 1
+            "media.desktop": {
+                "end": 25
             }
         }
     },
     "1": {
         "benchmarks": {
-            "power.desktop": {
-                "begin": 1
+            "media.desktop": {
+                "begin": 25
             },
+            "memory.desktop": {},
+            "octane": {},
+            "power.desktop": {},
             "rasterize_and_record_micro.partial_invalidation": {},
             "rasterize_and_record_micro.top_25": {},
             "rendering.desktop": {},
@@ -41,53 +41,53 @@
             "speedometer2": {},
             "speedometer2-future": {},
             "system_health.common_desktop": {
-                "end": 67
+                "end": 16
             }
         }
     },
     "2": {
         "benchmarks": {
             "system_health.common_desktop": {
-                "begin": 67
+                "begin": 16
             },
             "system_health.memory_desktop": {
-                "end": 90
+                "end": 39
             }
         }
     },
     "3": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 90
+                "begin": 39
             },
             "tab_switching.typical_25": {},
             "tracing.tracing_with_background_memory_infra": {},
-            "v8.browsing_desktop": {},
-            "v8.browsing_desktop-future": {
-                "end": 1
+            "v8.browsing_desktop": {
+                "end": 16
             }
         }
     },
     "4": {
         "benchmarks": {
-            "v8.browsing_desktop-future": {
-                "begin": 1
+            "v8.browsing_desktop": {
+                "begin": 16
             },
+            "v8.browsing_desktop-future": {},
             "v8.runtime_stats.top_25": {},
             "wasm": {},
             "webrtc": {}
         }
     },
     "extra_infos": {
-        "num_stories": 2056,
-        "predicted_min_shard_time": 19846.0,
-        "predicted_min_shard_index": 4,
-        "predicted_max_shard_time": 20282.0,
-        "predicted_max_shard_index": 3,
-        "shard #0": 20026.0,
-        "shard #1": 20062.0,
-        "shard #2": 20068.0,
-        "shard #3": 20282.0,
-        "shard #4": 19846.0
+        "num_stories": 1240,
+        "predicted_min_shard_time": 11350.0,
+        "predicted_min_shard_index": 1,
+        "predicted_max_shard_time": 11420.0,
+        "predicted_max_shard_index": 2,
+        "shard #0": 11370.0,
+        "shard #1": 11350.0,
+        "shard #2": 11420.0,
+        "shard #3": 11382.0,
+        "shard #4": 11364.0
     }
-}
+}
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/win_7_perf_map.json b/tools/perf/core/shard_maps/win_7_perf_map.json
index 3d07b860..44a88335 100644
--- a/tools/perf/core/shard_maps/win_7_perf_map.json
+++ b/tools/perf/core/shard_maps/win_7_perf_map.json
@@ -21,11 +21,16 @@
             "kraken": {},
             "loading.desktop": {},
             "media.desktop": {},
-            "memory.desktop": {}
+            "memory.desktop": {
+                "end": 1
+            }
         }
     },
     "1": {
         "benchmarks": {
+            "memory.desktop": {
+                "begin": 1
+            },
             "octane": {},
             "power.desktop": {},
             "rasterize_and_record_micro.partial_invalidation": {},
@@ -36,53 +41,53 @@
             "speedometer2": {},
             "speedometer2-future": {},
             "system_health.common_desktop": {
-                "end": 66
+                "end": 25
             }
         }
     },
     "2": {
         "benchmarks": {
             "system_health.common_desktop": {
-                "begin": 66
+                "begin": 25
             },
             "system_health.memory_desktop": {
-                "end": 90
+                "end": 57
             }
         }
     },
     "3": {
         "benchmarks": {
             "system_health.memory_desktop": {
-                "begin": 90
+                "begin": 57
             },
             "tab_switching.typical_25": {},
             "tracing.tracing_with_background_memory_infra": {},
-            "v8.browsing_desktop": {},
-            "v8.browsing_desktop-future": {
-                "end": 1
+            "v8.browsing_desktop": {
+                "end": 23
             }
         }
     },
     "4": {
         "benchmarks": {
-            "v8.browsing_desktop-future": {
-                "begin": 1
+            "v8.browsing_desktop": {
+                "begin": 23
             },
+            "v8.browsing_desktop-future": {},
             "v8.runtime_stats.top_25": {},
             "wasm": {},
             "webrtc": {}
         }
     },
     "extra_infos": {
-        "num_stories": 2056,
-        "predicted_min_shard_time": 21110.0,
-        "predicted_min_shard_index": 4,
-        "predicted_max_shard_time": 22282.0,
-        "predicted_max_shard_index": 3,
-        "shard #0": 21540.0,
-        "shard #1": 21628.0,
-        "shard #2": 21312.0,
-        "shard #3": 22282.0,
-        "shard #4": 21110.0
+        "num_stories": 1240,
+        "predicted_min_shard_time": 11786.0,
+        "predicted_min_shard_index": 0,
+        "predicted_max_shard_time": 11954.0,
+        "predicted_max_shard_index": 1,
+        "shard #0": 11786.0,
+        "shard #1": 11954.0,
+        "shard #2": 11848.0,
+        "shard #3": 11868.0,
+        "shard #4": 11832.0
     }
-}
+}
\ No newline at end of file
diff --git a/ui/accessibility/platform/ax_platform_node_auralinux.cc b/ui/accessibility/platform/ax_platform_node_auralinux.cc
index b8c945c..debf3cc 100644
--- a/ui/accessibility/platform/ax_platform_node_auralinux.cc
+++ b/ui/accessibility/platform/ax_platform_node_auralinux.cc
@@ -1899,11 +1899,12 @@
 }
 
 void Detach(AXPlatformNodeAuraLinuxObject* atk_object) {
-  if (atk_object->m_object) {
-    atk_object_notify_state_change(ATK_OBJECT(atk_object), ATK_STATE_DEFUNCT,
-                                   TRUE);
-  }
+  if (!atk_object->m_object)
+    return;
+
   atk_object->m_object = nullptr;
+  atk_object_notify_state_change(ATK_OBJECT(atk_object), ATK_STATE_DEFUNCT,
+                                 TRUE);
 }
 
 }  //  namespace atk_object
diff --git a/ui/base/mojo/clipboard.typemap b/ui/base/mojo/clipboard.typemap
index 034d9cbc..528a172 100644
--- a/ui/base/mojo/clipboard.typemap
+++ b/ui/base/mojo/clipboard.typemap
@@ -5,7 +5,7 @@
 mojom = "//ui/base/mojo/clipboard.mojom"
 public_headers = [ "//ui/base/clipboard/clipboard_types.h" ]
 traits_headers = [ "//ui/base/mojo/clipboard_struct_traits.h" ]
-deps = [
-  "//ui/base",
+public_deps = [
+  "//ui/base/clipboard:clipboard_types",
 ]
 type_mappings = [ "ui.mojom.ClipboardType=ui::ClipboardType" ]
diff --git a/ui/base/mojo/clipboard_blink.typemap b/ui/base/mojo/clipboard_blink.typemap
index b258c56..4402145 100644
--- a/ui/base/mojo/clipboard_blink.typemap
+++ b/ui/base/mojo/clipboard_blink.typemap
@@ -5,7 +5,7 @@
 mojom = "//third_party/blink/public/mojom/clipboard/clipboard.mojom"
 public_headers = [ "//ui/base/clipboard/clipboard_types.h" ]
 traits_headers = [ "//ui/base/mojo/clipboard_blink_struct_traits.h" ]
-deps = [
-  "//ui/base",
+public_deps = [
+  "//ui/base/clipboard:clipboard_types",
 ]
 type_mappings = [ "blink.mojom.ClipboardBuffer=ui::ClipboardType" ]
diff --git a/ui/file_manager/image_loader/piex/tests.html b/ui/file_manager/image_loader/piex/tests.html
index a20214f..09fce62 100644
--- a/ui/file_manager/image_loader/piex/tests.html
+++ b/ui/file_manager/image_loader/piex/tests.html
@@ -27,6 +27,9 @@
     }
 
     process(resolve, reject) {
+      if (this.length <= 0 || this.length >= Math.pow(2, 30))
+        return reject(new Error('invalid image length'));
+ 
       const memory = Module._malloc(this.length);
       if (!memory)
         return reject(new Error('image malloc failure'));
diff --git a/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.cc b/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.cc
index 3477f34c8..97d6fb4 100644
--- a/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.cc
+++ b/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.cc
@@ -129,6 +129,12 @@
   return std::make_unique<gfx::GpuFence>(gpu_fence_handle);
 }
 
+VkSemaphore VulkanImplementationGbm::CreateExternalSemaphore(
+    VkDevice vk_device) {
+  return VulkanImplementation::CreateExternalSemaphore(
+      vk_device, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT);
+}
+
 VkSemaphore VulkanImplementationGbm::ImportSemaphoreHandle(
     VkDevice vk_device,
     gpu::SemaphoreHandle sync_handle) {
diff --git a/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.h b/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.h
index 0fe36cb..abc67bef 100644
--- a/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.h
+++ b/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.h
@@ -31,6 +31,7 @@
   std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence(
       VkDevice vk_device,
       VkFence vk_fence) override;
+  VkSemaphore CreateExternalSemaphore(VkDevice vk_device) override;
   VkSemaphore ImportSemaphoreHandle(VkDevice vk_device,
                                     gpu::SemaphoreHandle handle) override;
   gpu::SemaphoreHandle GetSemaphoreHandle(VkDevice vk_device,
diff --git a/ui/ozone/platform/scenic/vulkan_implementation_scenic.cc b/ui/ozone/platform/scenic/vulkan_implementation_scenic.cc
index 54d52ac..fc76e8e 100644
--- a/ui/ozone/platform/scenic/vulkan_implementation_scenic.cc
+++ b/ui/ozone/platform/scenic/vulkan_implementation_scenic.cc
@@ -126,6 +126,13 @@
   return nullptr;
 }
 
+VkSemaphore VulkanImplementationScenic::CreateExternalSemaphore(
+    VkDevice vk_device) {
+  return VulkanImplementation::CreateExternalSemaphore(
+      vk_device,
+      VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_TEMP_ZIRCON_EVENT_BIT_FUCHSIA);
+}
+
 VkSemaphore VulkanImplementationScenic::ImportSemaphoreHandle(
     VkDevice vk_device,
     gpu::SemaphoreHandle handle) {
diff --git a/ui/ozone/platform/scenic/vulkan_implementation_scenic.h b/ui/ozone/platform/scenic/vulkan_implementation_scenic.h
index 3e245998..ba072af 100644
--- a/ui/ozone/platform/scenic/vulkan_implementation_scenic.h
+++ b/ui/ozone/platform/scenic/vulkan_implementation_scenic.h
@@ -35,6 +35,7 @@
   std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence(
       VkDevice vk_device,
       VkFence vk_fence) override;
+  VkSemaphore CreateExternalSemaphore(VkDevice vk_device) override;
   VkSemaphore ImportSemaphoreHandle(VkDevice vk_device,
                                     gpu::SemaphoreHandle handle) override;
   gpu::SemaphoreHandle GetSemaphoreHandle(VkDevice vk_device,